Techniques de programmation avancée LabVIEW : gestion des données de la locale vers la DVR

2,159 views

Published on

Journées techniques LabVIEW National Instruments
Présentation réalisée lors des Journées techniques LabVIEW, par Luc Desruelle - Technique de programmation avancée : gestion des données.

Sommaire :
Où trouver de l’aide?
Quelques règles de style, LabVIEW Style Checklist
Quelques techniques d’architecture sous LabVIEW, pour la gestion des données
Contrôle, Indicateur VS Locale VS Globale VS Nœud propriété
FGV : Functional Global Variable
AE : Action Engine
OOP et SM – QDMH : Object-Oriented Programming et structure
DVR : Data Value Reference

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,159
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
74
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Techniques de programmation avancée LabVIEW : gestion des données de la locale vers la DVR

  1. 1. Programmation Avancée sous LabVIEW Partie I : Gestion des données : De la Locale vers la DVR… Journée Technique LabVIEW du 15/10/2013 Luc DESRUELLE – Certifié LabVIEW Architect - MESULOG www.mesulog.fr
  2. 2. La société MESULOG en bref  Activité : Développement logiciel test et mesure  Compétences : LabVIEW (Windows, RT, DSC, PDA, FPGA), TestStand VeriStand  Localisation : Grenoble (Moirans, 38)  Partenaire National Instruments (2001)  Développeurs certifiés LabVIEW et TestStand  www.mesulog.fr (exemples de réalisation) Octobre 2013 Programmation Avancée sous LabVIEW 2
  3. 3. La société MESULOG en bref  www.mesulog.fr  Exemples de réalisation Réalisations  Exemples de présentation technique   LabVIEW TestStand Société -> Présentations techniques Octobre 2013 Programmation Avancée sous LabVIEW 3
  4. 4. La société MESULOG en bref  Ils nous ont fait confiance :                  Octobre 2013 AREVA NP ALSTOM Grid BEAMIND CEA (Commissariat à l'Énergie Atomique) CETIAT (Centre Technique des Industries Aérauliques et Thermiques) CNES (Centre National d'Études Spatiales) CNRS (Centre National de la Recherche Scientifique) EDF HONEYWELL Security LNE (Laboratoire National d'Essais) ONERA PECHINEY RADIALL RENAULT STMicroelectronics THALES Alenia Space THALES LCD ... Programmation Avancée sous LabVIEW 4
  5. 5. Le présentateur CLA FORUMS Chef Projet Luc DESRUELLE Octobre 2013 Programmation Avancée sous LabVIEW 5
  6. 6. Le constat Du code LabVIEW … au code Spaghetti Octobre 2013 Programmation Avancée sous LabVIEW 6
  7. 7. Certaines « erreurs » sont acceptables…  si « rares » Octobre 2013 Programmation Avancée sous LabVIEW 7
  8. 8. Syndrome du plat de spaghettis  Définition : Code qui ne permet pas de déterminer le qui, le quoi et le comment d'une prise de contrôle par une portion de programme  Code peu clair - complexe – pas documenté – pas maintenable – pas de mise au point  Le code est donc plus long à mettre à jour http://fr.wikipedia.org/wiki/Programmation_spaghetti Octobre 2013 Programmation Avancée sous LabVIEW 8
  9. 9. Le code LabVIEW le plus célèbre Spaghetti à la LabVIEW Octobre 2013 Programmation Avancée sous LabVIEW 9
  10. 10. Erreurs de « débutant » sous LabVIEW?  Ne pas savoir où trouver de l’aide  Ne pas connaître les « bonnes règles » de programmation  Pas d’Analyse - ni Test unitaire du code source  Pas de gestion d’erreur  Pas de sous fonction (sous vi’s)  Pas de documentation du code source  ….. Octobre 2013 Programmation Avancée sous LabVIEW 10
  11. 11. Erreurs de programmation 2 types  Le style (la forme) Octobre 2013  La technique ou architecture (le fond) Programmation Avancée sous LabVIEW 11
  12. 12. Sommaire  Où trouver de l’aide?  Quelques règles de style  Quelques techniques d’architecture sous LabVIEW, pour la gestion des données      Octobre 2013 Contrôle, Indicateur, Locale, Globale FGV : Functional Global Variable AE : Action Engine OOP et SM – QDMH DVR : Data Value Reference Programmation Avancée sous LabVIEW 12
  13. 13. Où trouver de l’aide ? Octobre 2013 Programmation Avancée sous LabVIEW 13
  14. 14. Où trouver de l’aide ?  La communauté travaille pour vous  2 Forums National Instruments Francophone    1 communauté Francophone    https://decibel.ni.com/content/community/regional/france/labview Rencontre développeurs : cf LUGE Mais aussi… l’ensemble des forums et communautés de NI    http://forums.ni.com/t5/Discussions-au-sujet-de-NI/bd-p/4171 http://forums.ni.com/t5/Discussions-au-sujet-des-autres/bd-p/4170 LabVIEW Development Best Practices Large Applications : ni.com/largeapps Des articles sur le site de NI + LAVA Octobre 2013 Programmation Avancée sous LabVIEW 14
  15. 15. LUGE - développeurs Rhône-Alpes  Via la Communauté Francophone   https://decibel.ni.com/content/community/regional/france/labview?view=all#/?tagSet=1850 En région : communauté LUGE (Rhône-Alpes)   Octobre 2013 https://decibel.ni.com/content/community/regional/france/labview?view=all#/?tagSet=1780 Rencontre - Echange entre développeurs Programmation Avancée sous LabVIEW 15
  16. 16. Quelques Règles de Style de Base… Octobre 2013 Programmation Avancée sous LabVIEW 16
  17. 17. L’indispensable « Checklist »  Document : LabVIEW Style Checklist Regroupe les points à vérifier    Octobre 2013 Front Panel Checklist Block Diagram Checklist VI Checklist Programmation Avancée sous LabVIEW 17
  18. 18. Quelques rappels  Ecriture du code de la gauche vers la droite  Gestion des erreurs Erreur In et Out  Connecteurs 4 x 2 x 2 X 4  Icône « explicite »  Remplir Aide Contextuelle ctrl + H  Commentaires développeur Octobre 2013 Programmation Avancée sous LabVIEW 18
  19. 19. Quelques Règles d’architecture Ma présentation … Dans les présentations du matin de l’équipe NI… Octobre 2013 Programmation Avancée sous LabVIEW 19
  20. 20. Quizz N°1  Pour transmettre la donnée « Data In », faut-il mieux connecter le contrôle sur : A. B. C. D. Octobre 2013 La variable locale de « Data Out » Le terminal de l’indicateur « Data Out » Le nœud de propriété implicite « value » de « Data Out » Le nœud de propriété par référence « value » de « Data Out » Programmation Avancée sous LabVIEW 20
  21. 21. Expliquer la réponse du Quizz N°1 L’explication de la réponse n’est pas si simple :  Définition : Les nœuds de propriété se synchronisent sur le thread « interface utilisateur »   UI : Seul système d’exécution pas multithread, donc si occupé provoque des lenteurs La face-avant du vi sera chargée en mémoire Lexique : UI : User Interface ou Interface Utilisateur ou IHM Article détaillé : Multitâche dans LabVIEW http://zone.ni.com/reference/fr-XX/help/371361K-0114/lvconcepts/multitasking_in_labview/ Octobre 2013 Programmation Avancée sous LabVIEW 21
  22. 22. Mise à jour d’une IHM en mémoire  Si l’IHM est en mémoire :  les commandes et indicateurs – sur la face-avant - ont leur propre copie des données Mise à jour de l’IHM Operate Buffer Copie données Buffer de transfert = protection Transfer Buffer Copie données Données exécution du code Octobre 2013 Execution Buffer Programmation Avancée sous LabVIEW 22
  23. 23. Résultat Quizz N°1  Nœud de propriété       Copie donnée « Transfert Buffer » Que Thread UI Copie donnée « Operate Buffer » Force IHM en mémoire Race Condition Octobre 2013 Locale  V.S.    Copie donnée « Transfert Buffer » Tout les Threads Copie donnée « Operate Buffer » seulement si IHM en mémoire Race condition Programmation Avancée sous LabVIEW 23
  24. 24. Réponse Quizz N°1 1. L’indicateur « Data Out » 2. La variable locale (copie buffer) 3. Le nœud de propriété implicite (thread UI + copie buffer) 4. Le nœud de propriété par référence (référence) Eviter 3. et 4. juste pour « value » Octobre 2013 Programmation Avancée sous LabVIEW 24
  25. 25. Quizz N°2  Pour transmettre la donnée, faut-il mieux connecter le contrôle « Data In » sur : A. B. Octobre 2013 La variable locale de « Data Out » La globale « Data » Programmation Avancée sous LabVIEW 25
  26. 26. Résultat Quizz N°2  Globale   Copie donnée « Transfert Buffer » V.S. Locale    Race Condition  Copie donnée « Transfert Buffer » Copie donnée « Operate Buffer » seulement si IHM en mémoire Race Condition Match Nul?  Eviter les variables Locale – Globale - nœud de propriété    Copie de données Pas de protection contre « Race Conditions » Pas de gestion d’erreur Octobre 2013 Programmation Avancée sous LabVIEW 26
  27. 27. Race condition  Situation de compétition ????????????? Octobre 2013 Programmation Avancée sous LabVIEW 27
  28. 28. Rappel « bug » Race condition  Situation de compétition  « Bug » Accès « concurrent » de 2 codes à la même variable.  Valeur « instable » de la variable X=0 et Y=0 Pas X=1 et Y=1 Data Out = ?? Octobre 2013 Programmation Avancée sous LabVIEW 28
  29. 29. Quizz N°3  Quelle est la différence entre une FGV et une AE?  FGV = Functional Global Variables = variable globale fonctionnelle  AE = Action Engine Octobre 2013 Programmation Avancée sous LabVIEW 29
  30. 30. Réponse Quizz N°3  FGV     Registre à décalage non initialisé, d’un vi non réentrant Mémorise une valeur sur un Set (Write) Retourne la valeur sur un Get (Read) AE  Octobre 2013 Ajoute des actions, principe de l'encapsulation Programmation Avancée sous LabVIEW 30
  31. 31. Exemple FGV - Réponse Quizz N°3  Exemple FGV = Remplace la globale Mémorisation 2 états : > Set = Ecriture > Get = Lecture Octobre 2013 Programmation Avancée sous LabVIEW 31
  32. 32. Exemple AE - Réponse Quizz N°3  Exemple AE   FGV + Actions Code autonome – réutilisable – Gestion erreur Liste des actions Mémorisation Code de l’action Octobre 2013 Programmation Avancée sous LabVIEW 32
  33. 33. Quizz N°4  La FGV évite-t-elle « le bug » des accès concurrents – Race Conditions? Data In X=0 Y= 0 Data Out = ?? X=? Y= ? Octobre 2013 Programmation Avancée sous LabVIEW 33
  34. 34. Résultat Quizz N°4  Non Démonstration code LabVIEW Code téléchargeable sur le site MESULOG >> Société >> Présentations Techniques www.mesulog.fr/presentations_techniques Octobre 2013 Programmation Avancée sous LabVIEW 34
  35. 35. Quizz N°5  L’AE évite-t-elle « le bug » des accès concurrents – Race Conditions? Data Out = ?? X=? Y= ? Data In X=0 Y= 0 Octobre 2013 Programmation Avancée sous LabVIEW 35
  36. 36. Résultat Quizz N°5  Oui Démonstration code LabVIEW Code téléchargeable sur le site MESULOG >> Société >> Présentations Techniques www.mesulog.fr/presentations_techniques Octobre 2013 Programmation Avancée sous LabVIEW 36
  37. 37. Quizz N°6  La DVR : Data Value Reference permet : A. B. Octobre 2013 D’éviter les copies de données De protéger contre les accès concurrents – Race Conditions Programmation Avancée sous LabVIEW 37
  38. 38. Résultat Quizz N°6  Oui Démonstration code LabVIEW Code téléchargeable sur le site MESULOG >> Société >> Présentations Techniques www.mesulog.fr/presentations_techniques Octobre 2013 Programmation Avancée sous LabVIEW 38
  39. 39. DVR : Data Value Reference  Manipulation de la référence de la donnée mais pas la données : pas de copie, pointeur zone mémoire Data Data Copy Reference Data Copy  Reference Reference Protection contre les accès concurrent Octobre 2013 Programmation Avancée sous LabVIEW 39
  40. 40. Questions Octobre 2013 Programmation Avancée sous LabVIEW 40

×