LUGE 2015 : Darwin appliqué à LabVIEW - l’évolution de la gestion des données

Par Luc Desruelle (MESULOG) · 2015

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

Télécharger le PDF Ouvrir dans le navigateur

LabVIEW : – diapositive 1

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

Avant de commencer – diapositive 2

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Le présentateur – diapositive 7

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

« Toujours » le constat – diapositive 8

Certaines « erreurs » sont acceptables… si « rares »

Diapositive 9

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 9

Le code LabVIEW le plus célèbre

Spaghetti à la LabVIEW

Votre avis

Votre avis – diapositive 10

Quelles sont les erreurs (programmation LabVIEW) ?

sous « LabVIEW »

sous « LabVIEW » – diapositive 11

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

Nous n’aborderons pas – diapositive 12

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

Nous aborderons – diapositive 13

.

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des 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

Où trouver de l’aide ?

Où trouver de l’aide ? – diapositive 16

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

Livre Français – diapositive 17

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 18

II] Histoire de la présentation

Histoire de Darwin

Histoire de Darwin – diapositive 19

»

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é à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Histoire – diapositive 22

Il était une fois…. Une donnée

Diapositive 23

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 23

II] Evolution famille « données »

Quizz N°1

Quizz N°1 – diapositive 24

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 26

Expliquer la réponse du Quizz N°1

Démonstration

Diapositive 27

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Résultat Quizz N°1 – diapositive 28

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

Réponse Quizz N°1 – diapositive 29

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

Quizz N°2 – diapositive 30

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

Résultat Quizz N°2 – diapositive 31

Match Nul(presque)

A éviter

A éviter – diapositive 32

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

A éviter – diapositive 33

Comment ????

Eviter les variables Locale – Globale - nœud de propriété

Diapositive 34

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Quizz N°3 – diapositive 35

Vous connaissez tous?

Pourquoi le nom FGV ou variable LV2?

Exemple FGV

Exemple FGV – diapositive 36

2 états :

Mémorisation

> Set = Ecriture

> Get = Lecture

Exemple FGV = Remplace la globale

Race condition

Race condition – diapositive 37

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

Diapositive 38

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Quizz N°4 – diapositive 39

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

Résultat Quizz N°4 – diapositive 40

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 41

Utilisation recommandée de la FGV

1 écriture

N Lectures

Race condition

Race condition – diapositive 42

N écritures

N Lectures

Comment éviter les Situations de compétition

?????????????

AE : Action Engine

AE : Action Engine – diapositive 43

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

Exemple AE – diapositive 44

Liste des

actions

Code de

l’action

FGV + Actions

Code autonome – réutilisable – Gestion erreur

Exemple AE

Mémorisation

Quizz N°5

Quizz N°5 – diapositive 45

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

Résultat Quizz N°5 – diapositive 46

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Quizz N°5 – diapositive 48

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ésultat Quizz N°5 – diapositive 49

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 51

Synthèse évolution « données »

Fonctionnalités - Performance

Simplicité

d’utilisation

Diapositive 52

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 52

Évolution structure application

Toutes les techniques permettent de gérer des données

Pas des applications

Diapositive 53

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

De l’action à l’état – diapositive 54

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Machine à états – diapositive 56

Tout le monde connait cette technique avec LabVIEW?

SM la Machine à états

SM la Machine à états – diapositive 57

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – diapositive 58

Exemple code LabVIEW de la SM

Démonstration

Diapositive 59

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Le modèle de projet QDMH – diapositive 61

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

OOP

Données

Evolution de la gestion des données vers OOP

Diapositive 63

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Quizz N°6 – diapositive 65

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

Résultat Quizz N°6 – diapositive 66

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 – diapositive 67

Objet by value vers by Ref

Objet by value vers by Ref – diapositive 68

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

Quizz N°7 – diapositive 69

OOP by Ref évite-t-elle « le bug » des accès concurrents –

Race Conditions?

Résultat Quizz N°7

Résultat Quizz N°7 – diapositive 70

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

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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

Liens – diapositive 72

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

Questions – diapositive 73

Annexe 1

Annexe 1 – diapositive 74

Annexe 1

Le modèle de projet QDMH

Le modèle de projet QDMH

Le modèle de projet QDMH – diapositive 75

Queue Driven Message Handler (QDMH)

LabVIEW 2012 : les modèles de projet LabVIEW via le gestionnaire

de projet.

Le modèle de projet QDMH

Le modèle de projet QDMH – diapositive 76

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

Améliorer le QDMH – diapositive 77

»

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

Votre Modèle – diapositive 78

Annexe 2

Annexe 2 – diapositive 79

Annexe 2

IHM est en mémoire

Diapositive 80

Darwin appliqué à LabVIEW : l’évolution de la gestion des données – 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 :