Programmation Avancée sous LabVIEW
Partie I : Gestion des données : De la Locale vers la DVR…

Journée Technique LabVIEW d...
La société MESULOG en bref


Activité : Développement logiciel test et mesure



Compétences : LabVIEW (Windows, RT, DSC...
La société MESULOG en bref


www.mesulog.fr


Exemples de réalisation

Réalisations



Exemples de présentation
techniq...
La société MESULOG en bref


Ils nous ont fait confiance :



















Octobre 2013

AREVA NP
ALS...
Le présentateur

CLA
FORUMS

Chef
Projet

Luc DESRUELLE
Octobre 2013

Programmation Avancée sous LabVIEW

5
Le constat
Du code LabVIEW … au code Spaghetti

Octobre 2013

Programmation Avancée sous LabVIEW

6
Certaines « erreurs » sont acceptables…


si « rares »

Octobre 2013

Programmation Avancée sous LabVIEW

7
Syndrome du plat de spaghettis


Définition : Code qui ne permet pas de déterminer le
qui, le quoi et le comment d'une pr...
Le code LabVIEW le plus célèbre
Spaghetti à la LabVIEW

Octobre 2013

Programmation Avancée sous LabVIEW

9
Erreurs de « débutant » sous LabVIEW?


Ne pas savoir où trouver de l’aide



Ne pas connaître les « bonnes règles » de
...
Erreurs de programmation
2 types



Le style (la forme)

Octobre 2013



La technique ou
architecture (le fond)

Program...
Sommaire


Où trouver de l’aide?



Quelques règles de style



Quelques techniques d’architecture sous LabVIEW, pour
l...
Où trouver de l’aide ?

Octobre 2013

Programmation Avancée sous LabVIEW

13
Où trouver de l’aide ?


La communauté travaille pour vous


2 Forums National Instruments Francophone





1 communa...
LUGE - développeurs Rhône-Alpes


Via la Communauté Francophone




https://decibel.ni.com/content/community/regional/f...
Quelques Règles de Style
de Base…

Octobre 2013

Programmation Avancée sous LabVIEW

16
L’indispensable « Checklist »


Document : LabVIEW Style Checklist

Regroupe les points à vérifier




Octobre 2013

F...
Quelques rappels


Ecriture du code de la gauche vers la droite



Gestion des erreurs Erreur In et Out



Connecteurs ...
Quelques Règles d’architecture
Ma présentation …
Dans les présentations du matin de l’équipe NI…

Octobre 2013

Programmat...
Quizz N°1


Pour transmettre la donnée « Data In », faut-il mieux
connecter le contrôle sur :
A.
B.
C.
D.

Octobre 2013

...
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...
Mise à jour d’une IHM en mémoire


Si l’IHM est en mémoire :


les commandes et indicateurs – sur la face-avant - ont le...
Résultat Quizz N°1


Nœud de propriété










Copie donnée « Transfert
Buffer »
Que Thread UI
Copie donnée « Ope...
Réponse Quizz N°1
1.

L’indicateur « Data Out »

2.

La variable locale (copie buffer)

3.

Le nœud de propriété implicite...
Quizz N°2


Pour transmettre la donnée, faut-il mieux connecter le
contrôle « Data In » sur :
A.
B.

Octobre 2013

La var...
Résultat Quizz N°2


Globale




Copie donnée « Transfert
Buffer »

V.S.

Locale






Race Condition


Copie donné...
Race condition


Situation de compétition ?????????????

Octobre 2013

Programmation Avancée sous LabVIEW

27
Rappel « bug » Race condition


Situation de compétition



« Bug » Accès « concurrent » de 2 codes à la même
variable.
...
Quizz N°3


Quelle est la différence entre une FGV et une AE?


FGV = Functional Global Variables = variable globale
fon...
Réponse Quizz N°3


FGV






Registre à décalage non initialisé, d’un vi non réentrant
Mémorise une valeur sur un Se...
Exemple FGV - Réponse Quizz N°3


Exemple FGV = Remplace la globale

Mémorisation

2 états :
> Set = Ecriture
> Get = Lec...
Exemple AE - Réponse Quizz N°3


Exemple AE



FGV + Actions
Code autonome – réutilisable – Gestion erreur
Liste des
ac...
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...
Résultat Quizz N°4


Non

Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations ...
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=...
Résultat Quizz N°5


Oui

Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations ...
Quizz N°6


La DVR : Data Value Reference permet :
A.
B.

Octobre 2013

D’éviter les copies de données
De protéger contre...
Résultat Quizz N°6


Oui

Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations ...
DVR : Data Value Reference


Manipulation de la référence de la donnée mais pas la
données : pas de copie, pointeur zone ...
Questions

Octobre 2013

Programmation Avancée sous LabVIEW

40
Prochain SlideShare
Chargement dans…5
×

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

1 912 vues

Publié le

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

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 912
Sur SlideShare
0
Issues des intégrations
0
Intégrations
26
Actions
Partages
0
Téléchargements
47
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

×