Document original : LUGE 2015 : Darwin appliqué à LabVIEW - l’évolution de la gestion des données (PDF, 8,4 Mo, 80 pages)

www.mesulog.fr
appliqué à
Evoluer pour s’adapter
Darwin
l’évolution de la gestion des données
Luc DESRUELLE – Certifié LabVIEW Architect - MESULOG
La loi du plus fort appliquée au concept « mémorisation » du flux de données :
contrôle vers indicateur - Locale - Globale - FGV - AE – SEQ - DVR - OOP – SM - QDMH
Avant de commencer

Faire évoluer la présentation en fonction de vous
Vous pouvez m’interrompre
Détailler en fonction de vos demandes
Mes excuses pour les
mots anglais = technique LV
Diapositive 3

(Windows, RT, PDA, DSC, FPGA),
La société MESULOG en bref
LabVIEW
TestStand
VeriStand
Programmation Avancée sous LabVIEW Partie II
Activité : Développement logiciel test et mesure
Compétences :
Localisation : Grenoble (Moirans, 38)
Partenaire National Instruments (2001)
Développeurs certifiés LabVIEW et TestStand
Juin 2014
Diapositive 4

La société MESULOG en bref
Réalisations
Société -> Présentations techniques
(article utilisateur)
LabVIEW
TestStand
VeriStand
Réalisations
Présentations techniques
www.mesulog.fr
Diapositive 5

La société MESULOG en bref
à l'Énergie Atomique)
Commissariat
ALSTOM Grid
AREVA NP
CEA (
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
...
Ils nous ont fait confiance :
Diapositive 6

Le présentateur
CLA
Logiciel
Architecte
NI Forums
Community
Luc DESRUELLE
Gif animé pour éviter du code
Luc_Desruelle
Fenêtre pas rectangulaire
Gestion IHM
Projet LabVIEW
OOP
Modbus
….
Community blogue
https://decibel.ni.com/content/blogs/
Le présentateur

du livre
Chapitres 1 et 2 : prise en main de l’outil avec des exemples simples
Chapitre 3 : programmation avancée avec des techniques et architectures
permettant au code d’être maintenable, évolutif, documenté et performant.
Chapitres 4, 5 et 6 : acquisition, analyse et présentation des données.
3iéme Édition, Dunod 05/2015
Lien internet
Auteurs : F. COTTET + M. PINARD + L. DESRUELLE
Co-auteur Livre « LabVIEW : programmation et applications »
« Toujours » le constat

Certaines « erreurs » sont acceptables… si « rares »
Diapositive 9

Le code LabVIEW le plus célèbre
Spaghetti à la LabVIEW
Votre avis

Quelles sont les erreurs (programmation LabVIEW) ?
sous « LabVIEW »

Erreur des Spaghettis
Pas de style!
Documentation
Trop de locale – Globale
Flux de données
Absence modèle de conception
Pas gestion d’erreur, Gestion arrêt du logiciel?
Version, SCC, bug, tâche
Test, analyse
Style, écriture du code
Technique, Gestion des données
Architecture, Structure application (Framework) :
Gestion Projet
1.
2.
3.
4.
Nous n’aborderons pas

Présentation LUGE 2013 et NIDays 2014 :
Les outils qui nous veulent du bien
Plus de temps pour développer en LabVIEW
Présentation LUGE 2016 et NIDays 2017:
Avoir du style avec LabVIEW
Nous n’aborderons pas la gestion « projet »:
Nous n’aborderons pas la gestion « style »
Nous aborderons

.
Chapitre 3 du livre LabVIEW…
Chapitre 6 du livre LabVIEW….
Mémoriser une donnée
Réutiliser une donnée déjà produite
Quand, comment, pourquoi utiliser certaines techniques ?
Entre processus;
Entre boucles;
Entre applications.
FIFO, notifier, Variable partagée, TCP, UDP, ActiveX, .Net,
Network streams, DMA, Web service…
Les différentes techniques de gestion des données
Pas les techniques d’échange de données :
Diapositive 14

Sommaire : Darwin appliqué à LabVIEW
Structures Application
Programmation Orientée Objet (OOP)
Où trouver de l’aide?
Histoire de la présentation
L’Evolution : Mémorisation des Données
L’Evolution :
L’Evolution :
I.
II.
III.
IV.
V.
I] Où trouver de l’aide ?
![I] Où trouver de l’aide ? – diapositive 15](/images/documents/luge-2015-darwin-applique-a-labview-l-evolution-de-la-gestion-des-donnees/diapo-15.webp)
Où trouver de l’aide ?

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
https://decibel.ni.com/content/community/regional/france/labview
Rencontre développeurs : cf LUGE
LabVIEW Development Best Practices
Large Applications : ni.com/largeapps
2 Forums National Instruments Francophone
1 communauté Francophone
Mais aussi… l’ensemble des forums et communautés de NI
La communauté travaille pour vous
Livre Français

Chapitre 3 du livre = cette
présentation (en plus court)
du livre
3iéme Édition, Dunod 05/2015
Lien internet
Livre LabVIEW : programmation et applications
Diapositive 18

II] Histoire de la présentation
Histoire de Darwin

»
un seul ancêtre
sont adaptés
et se
sélection naturelle
ont évolué
Charles Robert Darwin
Charles Robert Darwin ( 1809 – 1882)
Hypothèse : tous les êtres vivants ont
commun
Les « êtres vivants »
Processus connu sous le nom de «
(la loi du plus fort) ou théorie de l’évolution.
Diapositive 20

Darwin appliquée à LabVIEW
« être vivant » qui s’adapte (pour survire)
La gestion des données sous LabVIEW qui s’adapte (pour
éviter « les problèmes »)
Humour
« Personnellement j’aime » le // entre
Evoluer pour s’adapter aux besoins
Diapositive 21

LabVIEW
Contrôle (le)
À toutes les techniques de
mémorisation des Données
S’adapter pour Eviter les bugs
Ajouter des fonctionnalités
Darwin appliquée à LabVIEW
Darwin
Un seul ancêtre commun
à tous les êtres vivants
S’adapter pour Survivre
La loi du plus fort
Comment et pourquoi la Mémorisation des données
a-t-elle évoluée?
Histoire

Il était une fois…. Une donnée
Diapositive 23

II] Evolution famille « données »
Quizz N°1

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 »
A.
B.
C.
D.
Pour transmettre la donnée « Data In », faut-il mieux
connecter le contrôle sur :
Diapositive 25

Parce que
Expliquer la réponse du Quizz N°1
- 0 0 …
Vous faire sentir (la réponse) par une mesure
Vous pouvez me croire… ou pas
Comme démontrer
Avant de donner la véritable réponse :
L’explication de la réponse n’est pas si simple
Diapositive 26

Expliquer la réponse du Quizz N°1
Démonstration
Diapositive 27

)
)
Lenteur
les
)
Bloquant
plusieurs copies de
Expliquer la réponse du Quizz N°1
Se synchronisent sur le thread « interface utilisateur ». Seul
système d’exécution pas multithread (
Forcent à redessiner la face-avant à chaque appel (
Forcent la face-avant à être chargée en mémoire (
commandes et indicateurs auront
données supplémentaires – diagramme et face-avant
Définition Les nœuds de propriété :
Explication « simplifiée »
Résultat Quizz N°1

Copies donnée
Tout les Threads
Race condition
Locale
V.S.
Copies donnée
Que Thread UI
Lenteur, bloquant
Force IHM en mémoire
Race Condition
Nœud de propriété
Réponse Quizz N°1

Eviter 3. et 4. juste
pour « value »
L’indicateur « Data Out »
La variable locale (copie buffer)
Le nœud de propriété implicite (thread UI + copie buffer)
Le nœud de propriété par référence (référence)
1.
2.
3.
4.
Quizz N°2

La variable locale de « Data Out »
La globale « Data »
A.
B.
Pour transmettre la donnée, faut-il mieux connecter le
contrôle « Data In » sur :
Résultat Quizz N°2

Match Nul(presque)
A éviter

Copies des données (attention « Grosse Structure »)
Lenteurs
Pas de protection contre « Race Conditions »
Pas de gestion d’erreur
Eviter les variables Locale – Globale - nœud de propriété
1 fois (OK) mais L’exagération nuit à l’évolution
A éviter

Comment ????
Eviter les variables Locale – Globale - nœud de propriété
Diapositive 34

FGV : Functional Global Variable
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)
FGV : Functional Global Variable ou LV2
Quizz N°3

Vous connaissez tous?
Pourquoi le nom FGV ou variable LV2?
Exemple FGV

2 états :
Mémorisation
> Set = Ecriture
> Get = Lecture
Exemple FGV = Remplace la globale
Race condition

Situation de compétition ?????????????
Diapositive 38

Pas X=1 et Y=1
Data Out = ??
Rappel « bug » Race condition
Situation de compétition
« Bug » Accès « concurrent » de 2 codes à la même
variable.
Valeur « instable » de la variable
Y=0
X=0 et
Quizz N°4

X = ?
Y= ?
Data Out = ??
La FGV évite-t-elle « le bug » des accès concurrents –
Race Conditions?
X = 0
Y= 0
Data In
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
Diapositive 41

Utilisation recommandée de la FGV
1 écriture
N Lectures
Race condition

N écritures
N Lectures
Comment éviter les Situations de compétition
?????????????
AE : Action Engine

Evolution de la FGV en ajoutant des actions,
Principe de l'encapsulation
La donnée reste dans la fonction logicielle = protection
AE : Action Engine
Exemple AE

Liste des
actions
Code de
l’action
FGV + Actions
Code autonome – réutilisable – Gestion erreur
Exemple AE
Mémorisation
Quizz N°5

X = ?
Y= ?
Data Out = ??
X = 0
Y= 0
Data In
L’AE évite-t-elle « le bug » des accès concurrents – Race
Conditions?
Résultat Quizz N°5

Oui, via l’encapsulation : rassembler les données et les
méthodes au sein d'une même structure
Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations Techniques
www.mesulog.fr/presentations_techniques
Diapositive 47

Reference
Reference
Reference
DVR : Data Value Reference
pointeur zone mémoire
Data
Data Copy
Data Copy
Manipulation de la référence de la donnée mais pas la
données : pas de copie,
Protection contre les
accès concurrent
Quizz N°5

D’éviter les copies de données (« grosse structure »)
De protéger contre les accès concurrents – Race Conditions
De gérer les erreurs
A.
B.
C.
La DVR (Data Value Reference) permet-elle? :
Résultat Quizz N°5

Réponse A, B et C : Oui
Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations Techniques
www.mesulog.fr/presentations_techniques
Diapositive 50

Données
N écritures
Code autonome
Réutilisable
Gestion erreur personnalisée
S’adapter à un besoin
Synthèse évolution « données »
1 fois (OK) mais
L’exagération nuit à
l’évolution
Diapositive 51

Synthèse évolution « données »
Fonctionnalités - Performance
Simplicité
d’utilisation
Diapositive 52

Évolution structure application
Toutes les techniques permettent de gérer des données
Pas des applications
Diapositive 53

Données
Framework
IV] Famille « structure application »
Evolution techniques pour gérer les données vers une
structure pour gérer les applications
De l’action à l’état

Réalise une action sur la données (exemple X+1 ou Y+1)
Puis fin
Jusqu’au prochain appel de la fonction logicielle
Rappel l’Action Engine (AE) :
Diapositive 55

Pour une application : Machine à états
Etats = actions à réaliser
Chaque section de code détermine la transition suivante
Découpage clair des tâches à effectuer
Ne « sort » du code que si fin du programme principal
Modèle « Machine à états », basé sur diagramme états-
transitions:
Machine à états

Tout le monde connait cette technique avec LabVIEW?
SM la Machine à états

NEXT STATE
Etat
STATE =
STATE = Etat
l'état
code de
Execution du
Case structure = un pour chaque état
?
STATE
La Machine à états, ou State Machine (SM), est une
structure d’application
Registre à décalage pour les
transitions d’états
Registre à décalage pour la
mémorisation des données
Diapositive 58

Exemple code LabVIEW de la SM
Démonstration
Diapositive 59

Synthèse de la Machine à états
Fondamentale du développement logiciel LabVIEW
Code simple, documenté et intuitif
Point faible : peut perdre des états si en même temps
Idées d’évolutions ?
Diapositive 60

)
driven
)
Queue
Autres évolutions « Framework »
Producteur/consommateur avec File d’attente (
Boite de dialogue avec structure évènementielle (event
Gestionnaire de Messages dans une File d'attente (GMF en
Français ou QDMH en English) = INDISPENSABLE
Actor Framework
Quelques exemples disponibles
En Annexe : QDMH : indispensable pour vos projets
Le modèle de projet QDMH

Queue Driven Message Handler (QDMH)
LabVIEW 2012 : les modèles de projet LabVIEW via le gestionnaire
de projet.
V] Famille « Objet » : OOP
![V] Famille « Objet » : OOP – diapositive 62](/images/documents/luge-2015-darwin-applique-a-labview-l-evolution-de-la-gestion-des-donnees/diapo-62.webp)
OOP
Données
Evolution de la gestion des données vers OOP
Diapositive 63

Programmation Objet sous LabVIEW
Une classe est un ensemble de données (privées) et d’actions
(méthodes) qui permettent d’agir sur ces données
+ Concept : héritage, dispatch dynamique
+ Concept : encapsulation
Diapositive 64

OOP
Actions = méthodes = 1 vi
Action …
= case
Action 2
= case 2
Action 1
= case 1
Programmation Objet sous LabVIEW
AE = Action Engine
Donnée = registre
1.
Actions = états
2.
Registre à décalage devient données de la class
Actions devient Méthodes (encapsulation)
OOP évolution de l’ancêtre AE (Action Engine)
Quizz N°6

X = ?
Y= ?
Data Out = ??
X = 0
Y= 0
OOP évite-t-elle « le bug » des accès concurrents – Race
Conditions?
Data In
Résultat Quizz N°6

Non (by data)
Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations Techniques
www.mesulog.fr/presentations_techniques
Objet by value vers by Ref

Objet by value vers by Ref

DVR + OOP by data = by Ref
Remarque : par défaut by Value
Possibilité : Utiliser la DVR pour créer une référence
Quizz N°7

OOP by Ref évite-t-elle « le bug » des accès concurrents –
Race Conditions?
Résultat Quizz N°7

Oui (by ref)
Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations Techniques
www.mesulog.fr/presentations_techniques
Diapositive 71

OOP
Données
Framework
Conclusion : évolution pour LabVIEW
L’exagération nuit à l’évolution
S’adapter à un besoin pour éviter les bugs et ajouter des fonctionnalités
Liens

www.mesulog.fr/presentations_techniques
National Instruments : luc desruelle's Blogue
Tutoriels developpez.com : luc Desruelle
"LabVIEW programmation et applications" 3iéme édition, Dunod
Forum francophone NI LabVIEW
Forum francophone Autres produits NI
Communauté Francophone
Plus de présentations techniques
Plus de livres
Plus de National Instruments Francophone
Luc Desruelle | LinkedIn
Questions

Annexe 1

Annexe 1
Le modèle de projet QDMH
Le modèle de projet QDMH

Queue Driven Message Handler (QDMH)
LabVIEW 2012 : les modèles de projet LabVIEW via le gestionnaire
de projet.
Le modèle de projet QDMH

basée sur un modèle de machine
la structure évènementielle
capture les actions utilisateurs, sur la face-avant, et produit le «
message » via une FIFO
Le message est un cluster composé d’un état « case » et une
donnée facultative Data de type variant
la boucle productrice :
la boucle consommatrice :
à états, dépile sur apparition les données de la FIFO.
La structure repose sur un modèle producteur –
consommateur
Améliorer le QDMH

»
l’application sur « erreur
l’application sur « erreur »
quitte
quitte l’application sur « erreur
Affichage de l'erreur
Sauvegarde
Filtrage si l'utilisateur le décide.
Remplacer « Exit » par « Error »
Ajouter un état « Error » dans la "Boucle de gestion de messages".
Ajouter les VIs de gestion de version de LabVIEW
Remplacer par un vi qui transfère l'erreur à la "Boucle de gestion de
messages" via la FIFO
Gestion erreur : quitte
N’affiche pas la version du logiciel
La structure event driven sort sur erreur –
Supprimer le code "exemple«
…
Votre Modèle

Annexe 2

Annexe 2
IHM est en mémoire
Diapositive 80

Copie données
Copie données
Operate Buffer
Transfer Buffer
Execution Buffer
Mise à jour d’une IHM en mémoire
protection
Buffer de transfert =
du code
Mise à jour de l’IHM
Données exécution
les commandes et indicateurs – sur la face-avant - ont leur
propre copie des données
Si l’IHM est en mémoire :


