• Like
Techniques de programmation avancée LabVIEW : gestion des données de la locale vers la DVR
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

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

  • 569 views
Published

Journées techniques LabVIEW National Instruments …

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
569
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
10
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 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. 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. 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. Le présentateur CLA FORUMS Chef Projet Luc DESRUELLE Octobre 2013 Programmation Avancée sous LabVIEW 5
  • 6. Le constat Du code LabVIEW … au code Spaghetti Octobre 2013 Programmation Avancée sous LabVIEW 6
  • 7. Certaines « erreurs » sont acceptables…  si « rares » Octobre 2013 Programmation Avancée sous LabVIEW 7
  • 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. Le code LabVIEW le plus célèbre Spaghetti à la LabVIEW Octobre 2013 Programmation Avancée sous LabVIEW 9
  • 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. Erreurs de programmation 2 types  Le style (la forme) Octobre 2013  La technique ou architecture (le fond) Programmation Avancée sous LabVIEW 11
  • 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. Où trouver de l’aide ? Octobre 2013 Programmation Avancée sous LabVIEW 13
  • 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. 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. Quelques Règles de Style de Base… Octobre 2013 Programmation Avancée sous LabVIEW 16
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Race condition  Situation de compétition ????????????? Octobre 2013 Programmation Avancée sous LabVIEW 27
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Questions Octobre 2013 Programmation Avancée sous LabVIEW 40