SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
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
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
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
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
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 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
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
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
Erreurs de programmation
2 types



Le style (la forme)

Octobre 2013



La technique ou
architecture (le fond)

Programmation Avancée sous LabVIEW

11
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
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 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
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
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

Front Panel Checklist
Block Diagram Checklist
VI Checklist

Programmation Avancée sous LabVIEW

17
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
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
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
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
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
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
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
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
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
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.



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
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
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
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
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
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
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
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
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
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
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
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
Questions

Octobre 2013

Programmation Avancée sous LabVIEW

40

Contenu connexe

Tendances

Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineGeeks Anonymes
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséEmmanuel Hugonnet
 
Intégration continue
Intégration continueIntégration continue
Intégration continueJohan Moreau
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
Machine learning pour tous
Machine learning pour tousMachine learning pour tous
Machine learning pour tousDamien Seguy
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveFreddy Mallet
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 

Tendances (15)

Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Machine learning pour tous
Machine learning pour tousMachine learning pour tous
Machine learning pour tous
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 

En vedette

ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATUREARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATUREHajer Dahech
 
Projet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitaleProjet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitaleAbdo07
 
Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)Mohsen Sadok
 
présentation soutenance PFE 2016
présentation soutenance PFE 2016présentation soutenance PFE 2016
présentation soutenance PFE 2016Mohsen Sadok
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewLuc Desruelle
 
Cours15 commande d'un servo parpotentiomètre
Cours15   commande d'un servo parpotentiomètreCours15   commande d'un servo parpotentiomètre
Cours15 commande d'un servo parpotentiomètrelabsud
 
Cours13 lire un message sur la liaison série avec un bouton poussoir
Cours13   lire un message sur la liaison série avec un bouton poussoirCours13   lire un message sur la liaison série avec un bouton poussoir
Cours13 lire un message sur la liaison série avec un bouton poussoirlabsud
 
Cours16 ressources pour arduino
Cours16   ressources pour arduinoCours16   ressources pour arduino
Cours16 ressources pour arduinolabsud
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Hajer Dahech
 
Présentation arduino
Présentation arduinoPrésentation arduino
Présentation arduinoJeff Simon
 
Cours5 allumer une led extérieure à la carte arduino
Cours5   allumer une led extérieure à la carte arduinoCours5   allumer une led extérieure à la carte arduino
Cours5 allumer une led extérieure à la carte arduinolabsud
 
Les fenetres-labview-ne-sont-pas-toutes-rectangulaires
Les fenetres-labview-ne-sont-pas-toutes-rectangulairesLes fenetres-labview-ne-sont-pas-toutes-rectangulaires
Les fenetres-labview-ne-sont-pas-toutes-rectangulairesLuc Desruelle
 
Exemple code oop_labview
Exemple code oop_labviewExemple code oop_labview
Exemple code oop_labviewLuc Desruelle
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewLuc Desruelle
 
Distribuer Framework LabVIEW Personnalise par Luc Desruelle
Distribuer Framework LabVIEW Personnalise par Luc DesruelleDistribuer Framework LabVIEW Personnalise par Luc Desruelle
Distribuer Framework LabVIEW Personnalise par Luc DesruelleLuc Desruelle
 
Rapport Projet Application Web De Domotique Arduino - Liotard Roulleau
Rapport Projet Application Web De Domotique Arduino - Liotard RoulleauRapport Projet Application Web De Domotique Arduino - Liotard Roulleau
Rapport Projet Application Web De Domotique Arduino - Liotard RoulleauNicolas Roulleau
 
projet interface LabView avec conception prototype machine de tri
projet interface LabView avec conception prototype machine de tri projet interface LabView avec conception prototype machine de tri
projet interface LabView avec conception prototype machine de tri Moatez Amairi
 

En vedette (20)

ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATUREARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
ARDUINO + LABVIEW : CONTRÔLE DE LA TEMPÉRATURE
 
Projet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitaleProjet de fin d'etude :Control d’acces par empreintes digitale
Projet de fin d'etude :Control d’acces par empreintes digitale
 
Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)Rapport PFE Génie Electrique (2016)
Rapport PFE Génie Electrique (2016)
 
présentation soutenance PFE 2016
présentation soutenance PFE 2016présentation soutenance PFE 2016
présentation soutenance PFE 2016
 
Les systèmes embarqués arduino
Les systèmes embarqués arduinoLes systèmes embarqués arduino
Les systèmes embarqués arduino
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labview
 
Compteur ARDUINO
Compteur ARDUINOCompteur ARDUINO
Compteur ARDUINO
 
Cours15 commande d'un servo parpotentiomètre
Cours15   commande d'un servo parpotentiomètreCours15   commande d'un servo parpotentiomètre
Cours15 commande d'un servo parpotentiomètre
 
Cours13 lire un message sur la liaison série avec un bouton poussoir
Cours13   lire un message sur la liaison série avec un bouton poussoirCours13   lire un message sur la liaison série avec un bouton poussoir
Cours13 lire un message sur la liaison série avec un bouton poussoir
 
Cours16 ressources pour arduino
Cours16   ressources pour arduinoCours16   ressources pour arduino
Cours16 ressources pour arduino
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
Présentation arduino
Présentation arduinoPrésentation arduino
Présentation arduino
 
Cours5 allumer une led extérieure à la carte arduino
Cours5   allumer une led extérieure à la carte arduinoCours5   allumer une led extérieure à la carte arduino
Cours5 allumer une led extérieure à la carte arduino
 
Les fenetres-labview-ne-sont-pas-toutes-rectangulaires
Les fenetres-labview-ne-sont-pas-toutes-rectangulairesLes fenetres-labview-ne-sont-pas-toutes-rectangulaires
Les fenetres-labview-ne-sont-pas-toutes-rectangulaires
 
Exemple code oop_labview
Exemple code oop_labviewExemple code oop_labview
Exemple code oop_labview
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labview
 
Distribuer Framework LabVIEW Personnalise par Luc Desruelle
Distribuer Framework LabVIEW Personnalise par Luc DesruelleDistribuer Framework LabVIEW Personnalise par Luc Desruelle
Distribuer Framework LabVIEW Personnalise par Luc Desruelle
 
Rapport Projet Application Web De Domotique Arduino - Liotard Roulleau
Rapport Projet Application Web De Domotique Arduino - Liotard RoulleauRapport Projet Application Web De Domotique Arduino - Liotard Roulleau
Rapport Projet Application Web De Domotique Arduino - Liotard Roulleau
 
projet interface LabView avec conception prototype machine de tri
projet interface LabView avec conception prototype machine de tri projet interface LabView avec conception prototype machine de tri
projet interface LabView avec conception prototype machine de tri
 
LabVIEW™ real time programing
LabVIEW™ real time programingLabVIEW™ real time programing
LabVIEW™ real time programing
 

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

Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020Wiiisdom
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciellauraty3204
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Microsoft
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tousMicrosoft
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Jérôme Tamborini
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéZenika
 
Dea Presentation Pierre Marguerite 24 Juin 2003
Dea Presentation Pierre Marguerite 24 Juin 2003Dea Presentation Pierre Marguerite 24 Juin 2003
Dea Presentation Pierre Marguerite 24 Juin 2003Pierre Marguerite
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
 
Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6riyadadva
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! Marie-Alice Blete
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryFactoVia
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 

Similaire à Techniques de programmation avancée LabVIEW : gestion des données de la locale vers la DVR (20)

Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020Decouvrez Les Dernieres Innovations Tableau 2020
Decouvrez Les Dernieres Innovations Tableau 2020
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel
 
Linq Tech Days08 Lux
Linq Tech Days08 LuxLinq Tech Days08 Lux
Linq Tech Days08 Lux
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 
Dea Presentation Pierre Marguerite 24 Juin 2003
Dea Presentation Pierre Marguerite 24 Juin 2003Dea Presentation Pierre Marguerite 24 Juin 2003
Dea Presentation Pierre Marguerite 24 Juin 2003
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6Migration de Sage ligne 100 vers OpenERP v6
Migration de Sage ligne 100 vers OpenERP v6
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 

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

  • 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