www.mesulog.fr
Darwin appliqué à LabVIEW :
l’évolution de la gestion des données
Luc DESRUELLE – Certifié LabVIEW Architec...
Avant de commencer
 Faire évoluer la présentation en fonction de vous
 Vous pouvez m’interrompre
 Détailler en fonction...
La société MESULOG en bref
 Activité : Développement logiciel test et mesure
 Compétences : LabVIEW (Windows, RT, PDA, D...
La société MESULOG en bref
 www.mesulog.fr
 Réalisations (article utilisateur)
 Présentations techniques
 LabVIEW
 Te...
La société MESULOG en bref
 Ils nous ont fait confiance :
 ALSTOM Grid
 AREVA NP
 CEA (Commissariat à l'Énergie Atomiq...
Luc DESRUELLE
Architecte
Logiciel
NI Forums
Community
CLA
Le présentateur
Octobre 2013 Programmation Avancée sous LabVIEW ...
 Co-auteur Livre « LabVIEW : programmation et applications »
 3iéme Édition, Dunod 05/2015
 Lien internet du livre
 Au...
« Toujours » le constat
 Certaines « erreurs » sont acceptables… si « rares »
Octobre 2013 Programmation Avancée sous Lab...
Le code LabVIEW le plus célèbre
Octobre 2013 Programmation Avancée sous LabVIEW 9
Spaghetti à la LabVIEW
Votre avis
Octobre 2013 Programmation Avancée sous LabVIEW 10
 Quelles sont les erreurs (programmation LabVIEW) ?
Erreur des Spaghettis sous « LabVIEW »
1. Style, écriture du code
 Pas de style!
 Documentation
2. Technique, Gestion de...
Nous n’aborderons pas
 Nous n’aborderons pas la gestion « projet »:
Présentation LUGE 2013 et NIDays 2014 :
Les outils qu...
Nous aborderons
 Les différentes techniques de gestion des données
 Mémoriser une donnée
 Réutiliser une donnée déjà pr...
Sommaire : Darwin appliqué à LabVIEW
I. Où trouver de l’aide?
II. Histoire de la présentation
III. L’Evolution : Mémorisat...
I] Où trouver de l’aide ?
Octobre 2013 Programmation Avancée sous LabVIEW 15
Où trouver de l’aide ?
 La communauté travaille pour vous
 2 Forums National Instruments Francophone
 http://forums.ni....
 Livre LabVIEW : programmation et applications
 3iéme Édition, Dunod 05/2015
 Lien internet du livre
Livre Français
Oct...
II] Histoire de la présentation
Octobre 2013 Programmation Avancée sous LabVIEW 18
Histoire de Darwin
 Charles Robert Darwin ( 1809 – 1882)
 Hypothèse : tous les êtres vivants ont un seul ancêtre
commun
...
 Humour
 « Personnellement j’aime » le // entre
 « être vivant » qui s’adapte (pour survire)
 La gestion des données s...
 Comment et pourquoi la Mémorisation des données
a-t-elle évoluée?
Darwin appliquée à LabVIEW
Octobre 2013 Programmation ...
Histoire
 Il était une fois…. Une donnée
Octobre 2013 Programmation Avancée sous LabVIEW 22
II] Evolution famille « données »
Octobre 2013 Programmation Avancée sous LabVIEW 23
Quizz N°1
 Pour transmettre la donnée « Data In », faut-il mieux
connecter le contrôle sur :
A. La variable locale de « D...
Expliquer la réponse du Quizz N°1
L’explication de la réponse n’est pas si simple
 Comme démontrer 𝑥 × 0 = 0 … Parce que
...
Expliquer la réponse du Quizz N°1
Démonstration
Octobre 2013 Programmation Avancée sous LabVIEW 26
Expliquer la réponse du Quizz N°1
Explication « simplifiée »
 Définition Les nœuds de propriété :
 Se synchronisent sur ...
Résultat Quizz N°1
 Nœud de propriété
 Copies donnée
 Que Thread UI
 Lenteur, bloquant
 Force IHM en mémoire
 Race C...
Réponse Quizz N°1
1. L’indicateur « Data Out »
2. La variable locale (copie buffer)
3. Le nœud de propriété implicite (thr...
Quizz N°2
 Pour transmettre la donnée, faut-il mieux connecter le
contrôle « Data In » sur :
A. La variable locale de « D...
Résultat Quizz N°2
Octobre 2013 Programmation Avancée sous LabVIEW 31
Match Nul(presque)
A éviter
 Eviter les variables Locale – Globale - nœud de propriété
 Copies des données (attention « Grosse Structure »)...
A éviter
 Eviter les variables Locale – Globale - nœud de propriété
Comment ????
Octobre 2013 Programmation Avancée sous ...
 FGV : Functional Global Variable ou LV2
 Registre à décalage non initialisé, d’un vi non réentrant
 Mémorise une valeu...
Quizz N°3
 Vous connaissez tous?
 Pourquoi le nom FGV ou variable LV2?
Octobre 2013 Programmation Avancée sous LabVIEW 35
Exemple FGV
 Exemple FGV = Remplace la globale
Octobre 2013 Programmation Avancée sous LabVIEW 36
2 états :
> Set = Ecrit...
Race condition
 Situation de compétition ?????????????
Octobre 2013 Programmation Avancée sous LabVIEW 37
Rappel « bug » Race condition
 Situation de compétition
 « Bug » Accès « concurrent » de 2 codes à la même
variable.
 V...
Quizz N°4
 La FGV évite-t-elle « le bug » des accès concurrents –
Race Conditions?
Octobre 2013 Programmation Avancée sou...
Résultat Quizz N°4
 Non
Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présentations Te...
Utilisation recommandée de la FGV
 1 écriture
 N Lectures
Octobre 2013 Programmation Avancée sous LabVIEW 41
Race condition
 Comment éviter les Situations de compétition
?????????????
 N écritures
 N Lectures
Octobre 2013 Progra...
 AE : Action Engine
 Evolution de la FGV en ajoutant des actions,
 Principe de l'encapsulation
 La donnée reste dans l...
Exemple AE
 Exemple AE
 FGV + Actions
 Code autonome – réutilisable – Gestion erreur
Octobre 2013 Programmation Avancée...
Quizz N°5
 L’AE évite-t-elle « le bug » des accès concurrents – Race
Conditions?
Octobre 2013 Programmation Avancée sous ...
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émons...
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...
Quizz N°5
 La DVR (Data Value Reference) permet-elle? :
A. D’éviter les copies de données (« grosse structure »)
B. De pr...
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é...
Synthèse évolution « données »
Octobre 2013 Programmation Avancée sous LabVIEW 50
Données
1 fois (OK) mais
L’exagération n...
Synthèse évolution « données »
Octobre 2013 Programmation Avancée sous LabVIEW 51
Fonctionnalités - Performance
Simplicité...
Évolution structure application
Octobre 2013 Programmation Avancée sous LabVIEW 52
 Toutes les techniques permettent de g...
IV] Famille « structure application »
Octobre 2013 Programmation Avancée sous LabVIEW 53
 Evolution techniques pour gérer...
 Rappel l’Action Engine (AE) :
 Réalise une action sur la données (exemple X+1 ou Y+1)
 Puis fin
 Jusqu’au prochain ap...
 Modèle « Machine à états », basé sur diagramme états-
transitions:
 Etats = actions à réaliser
 Chaque section de code...
Machine à états
 Tout le monde connait cette technique avec LabVIEW?
Octobre 2013 Programmation Avancée sous LabVIEW 56
SM la Machine à états
Octobre 2013 Programmation Avancée sous LabVIEW 57
 La Machine à états, ou State Machine (SM), est ...
Exemple code LabVIEW de la SM
 Démonstration
Octobre 2013 Programmation Avancée sous LabVIEW 58
Synthèse de la Machine à états
 Fondamentale du développement logiciel LabVIEW
 Code simple, documenté et intuitif
 Poi...
Autres évolutions « Framework »
 Quelques exemples disponibles
 Producteur/consommateur avec File d’attente (Queue)
 Bo...
Le modèle de projet QDMH
Octobre 2013 Programmation Avancée sous LabVIEW 61
 Queue Driven Message Handler (QDMH)
 LabVIE...
V] Famille « Objet » : OOP
Octobre 2013 Programmation Avancée sous LabVIEW 62
 Evolution de la gestion des données vers O...
Programmation Objet sous LabVIEW
 Une classe est un ensemble de données (privées) et d’actions
(méthodes) qui permettent ...
Programmation Objet sous LabVIEW
 OOP évolution de l’ancêtre AE (Action Engine)
 Registre à décalage devient données de ...
Quizz N°6
 OOP évite-t-elle « le bug » des accès concurrents – Race
Conditions?
Octobre 2013 Programmation Avancée sous L...
Résultat Quizz N°6
 Non (by data)
Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présen...
Objet by value vers by Ref
Octobre 2013 Programmation Avancée sous LabVIEW 67
Objet by value vers by Ref
 Remarque : par défaut by Value
 Possibilité : Utiliser la DVR pour créer une référence
 DVR...
Quizz N°7
 OOP by Ref évite-t-elle « le bug » des accès concurrents –
Race Conditions?
Octobre 2013 Programmation Avancée...
Résultat Quizz N°7
 Oui (by ref)
Démonstration code LabVIEW
Code téléchargeable sur le site MESULOG >> Société >> Présent...
Conclusion : évolution pour LabVIEW
L’exagération nuit à l’évolution
S’adapter à un besoin pour éviter les bugs et ajouter...
Liens
Plus de présentations techniques
www.mesulog.fr/presentations_techniques
National Instruments : luc desruelle's Blog...
Questions
Octobre 2013 Programmation Avancée sous LabVIEW 73
Annexe 1
 Annexe 1
 Le modèle de projet QDMH
Octobre 2013 Programmation Avancée sous LabVIEW 74
Le modèle de projet QDMH
Octobre 2013 Programmation Avancée sous LabVIEW 75
 Queue Driven Message Handler (QDMH)
 LabVIE...
Le modèle de projet QDMH
Octobre 2013 Programmation Avancée sous LabVIEW 76
 La structure repose sur un modèle producteur...
Améliorer le QDMH
Octobre 2013 Programmation Avancée sous LabVIEW 77
 Gestion erreur : quitte l’application sur « erreur ...
Votre Modèle
Octobre 2013 Programmation Avancée sous LabVIEW 78
 Distribuer votre modèle
 Partie 2/3 : Distribuer des mo...
Annexe 2
 Annexe 2
 IHM est en mémoire
Octobre 2013 Programmation Avancée sous LabVIEW 79
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...
Prochain SlideShare
Chargement dans…5
×

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

377 vues

Publié le

Ma présentation du LabVIEW User Group LUGE 3.0 « Darwin appliqué à LabVIEW : l’évolution de la gestion des données » ou « Evoluer pour s’adapter ».
Elle traite de l’évolution du concept « mémorisation » du flux de données, avec Contrôle vers indicateur -Locale -Globale -FGV -AE –SEQ -DVR -OOP –SM –QDMH.
Pour ceux qui liront la présentation, la technique SEQ n’est pas traité. La prochaine fois, ou pour les plus curieux.
La présentation permet de répondre à la question simple... pourquoi éviter la locale, globale, nœud de propriété... et surtout comment faire!
LabVIEW de National Instruments, technique de programmation avancée, CLD, CLA

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

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

Aucune remarque pour cette diapositive

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

  1. 1. www.mesulog.fr Darwin appliqué à LabVIEW : l’évolution de la gestion des données Luc DESRUELLE – Certifié LabVIEW Architect - MESULOG Evoluer pour s’adapter 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
  2. 2. 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 Octobre 2013 Programmation Avancée sous LabVIEW 2
  3. 3. La société MESULOG en bref  Activité : Développement logiciel test et mesure  Compétences : LabVIEW (Windows, RT, PDA, DSC, FPGA), TestStand VeriStand  Localisation : Grenoble (Moirans, 38)  Partenaire National Instruments (2001)  Développeurs certifiés LabVIEW et TestStand Juin 2014 Programmation Avancée sous LabVIEW Partie II 3
  4. 4. La société MESULOG en bref  www.mesulog.fr  Réalisations (article utilisateur)  Présentations techniques  LabVIEW  TestStand  VeriStand Octobre 2013 Programmation Avancée sous LabVIEW 4 Réalisations Société -> Présentations techniques
  5. 5. La société MESULOG en bref  Ils nous ont fait confiance :  ALSTOM Grid  AREVA NP  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 ... Octobre 2013 Programmation Avancée sous LabVIEW 5
  6. 6. Luc DESRUELLE Architecte Logiciel NI Forums Community CLA Le présentateur Octobre 2013 Programmation Avancée sous LabVIEW 6 Community blogue https://decibel.ni.com/content/blogs/ Luc_Desruelle • Gif animé pour éviter du code • Fenêtre pas rectangulaire • Gestion IHM • Projet LabVIEW • OOP • Modbus • ….
  7. 7.  Co-auteur Livre « LabVIEW : programmation et applications »  3iéme Édition, Dunod 05/2015  Lien internet du livre  Auteurs : F. COTTET + M. PINARD + L. DESRUELLE  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. Le présentateur Octobre 2013 Programmation Avancée sous LabVIEW 7
  8. 8. « Toujours » le constat  Certaines « erreurs » sont acceptables… si « rares » Octobre 2013 Programmation Avancée sous LabVIEW 8
  9. 9. Le code LabVIEW le plus célèbre Octobre 2013 Programmation Avancée sous LabVIEW 9 Spaghetti à la LabVIEW
  10. 10. Votre avis Octobre 2013 Programmation Avancée sous LabVIEW 10  Quelles sont les erreurs (programmation LabVIEW) ?
  11. 11. Erreur des Spaghettis sous « LabVIEW » 1. Style, écriture du code  Pas de style!  Documentation 2. Technique, Gestion des données  Trop de locale – Globale  Flux de données 3. Architecture, Structure application (Framework) :  Absence modèle de conception  Pas gestion d’erreur, Gestion arrêt du logiciel? 4. Gestion Projet  Version, SCC, bug, tâche  Test, analyse Octobre 2013 Programmation Avancée sous LabVIEW 11
  12. 12. Nous n’aborderons pas  Nous n’aborderons pas la gestion « projet »: Présentation LUGE 2013 et NIDays 2014 : Les outils qui nous veulent du bien Plus de temps pour développer en LabVIEW  Nous n’aborderons pas la gestion « style » Présentation LUGE 2016 et NIDays 2017: Avoir du style avec LabVIEW Octobre 2013 Programmation Avancée sous LabVIEW 12
  13. 13. Nous aborderons  Les différentes techniques de gestion des données  Mémoriser une donnée  Réutiliser une donnée déjà produite  Quand, comment, pourquoi utiliser certaines techniques ? Chapitre 3 du livre LabVIEW….  Pas les techniques d’échange de données :  Entre processus;  Entre boucles;  Entre applications. FIFO, notifier, Variable partagée, TCP, UDP, ActiveX, .Net, Network streams, DMA, Web service… Chapitre 6 du livre LabVIEW…. Octobre 2013 Programmation Avancée sous LabVIEW 13
  14. 14. Sommaire : Darwin appliqué à LabVIEW I. Où trouver de l’aide? II. Histoire de la présentation III. L’Evolution : Mémorisation des Données IV. L’Evolution : Structures Application V. L’Evolution : Programmation Orientée Objet (OOP) Octobre 2013 Programmation Avancée sous LabVIEW 14
  15. 15. I] Où trouver de l’aide ? Octobre 2013 Programmation Avancée sous LabVIEW 15
  16. 16. Où trouver de l’aide ?  La communauté travaille pour vous  2 Forums National Instruments Francophone  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  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  LabVIEW Development Best Practices  Large Applications : ni.com/largeapps Octobre 2013 Programmation Avancée sous LabVIEW 16
  17. 17.  Livre LabVIEW : programmation et applications  3iéme Édition, Dunod 05/2015  Lien internet du livre Livre Français Octobre 2013 Programmation Avancée sous LabVIEW 17 Chapitre 3 du livre = cette présentation (en plus court)
  18. 18. II] Histoire de la présentation Octobre 2013 Programmation Avancée sous LabVIEW 18
  19. 19. Histoire de Darwin  Charles Robert Darwin ( 1809 – 1882)  Hypothèse : tous les êtres vivants ont un seul ancêtre commun  Les « êtres vivants » ont évolué et se sont adaptés  Processus connu sous le nom de « sélection naturelle » (la loi du plus fort) ou théorie de l’évolution. Octobre 2013 Programmation Avancée sous LabVIEW 19
  20. 20.  Humour  « Personnellement j’aime » le // entre  « être vivant » qui s’adapte (pour survire)  La gestion des données sous LabVIEW qui s’adapte (pour éviter « les problèmes »)  Evoluer pour s’adapter aux besoins Darwin appliquée à LabVIEW Octobre 2013 Programmation Avancée sous LabVIEW 20
  21. 21.  Comment et pourquoi la Mémorisation des données a-t-elle évoluée? Darwin appliquée à LabVIEW Octobre 2013 Programmation Avancée sous LabVIEW 21 Darwin LabVIEW Un seul ancêtre commun Contrôle (le) à tous les êtres vivants À toutes les techniques de mémorisation des Données S’adapter pour Survivre S’adapter pour Eviter les bugs La loi du plus fort Ajouter des fonctionnalités
  22. 22. Histoire  Il était une fois…. Une donnée Octobre 2013 Programmation Avancée sous LabVIEW 22
  23. 23. II] Evolution famille « données » Octobre 2013 Programmation Avancée sous LabVIEW 23
  24. 24. Quizz N°1  Pour transmettre la donnée « Data In », faut-il mieux connecter le contrôle sur : A. La variable locale de « Data Out » B. Le terminal de l’indicateur « Data Out » C. Le nœud de propriété implicite « value » de « Data Out » D. Le nœud de propriété par référence « value » de « Data Out » Octobre 2013 Programmation Avancée sous LabVIEW 24
  25. 25. Expliquer la réponse du Quizz N°1 L’explication de la réponse n’est pas si simple  Comme démontrer 𝑥 × 0 = 0 … Parce que  Avant de donner la véritable réponse :  Vous faire sentir (la réponse) par une mesure  Vous pouvez me croire… ou pas Octobre 2013 Programmation Avancée sous LabVIEW 25
  26. 26. Expliquer la réponse du Quizz N°1 Démonstration Octobre 2013 Programmation Avancée sous LabVIEW 26
  27. 27. Expliquer la réponse du Quizz N°1 Explication « simplifiée »  Définition Les nœuds de propriété :  Se synchronisent sur le thread « interface utilisateur ». Seul système d’exécution pas multithread (Bloquant)  Forcent à redessiner la face-avant à chaque appel (Lenteur)  Forcent la face-avant à être chargée en mémoire (les commandes et indicateurs auront plusieurs copies de données supplémentaires – diagramme et face-avant) Octobre 2013 Programmation Avancée sous LabVIEW 27
  28. 28. Résultat Quizz N°1  Nœud de propriété  Copies donnée  Que Thread UI  Lenteur, bloquant  Force IHM en mémoire  Race Condition Octobre 2013 Programmation Avancée sous LabVIEW 28  Locale  Copies donnée  Tout les Threads  Race condition V.S.
  29. 29. 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) Octobre 2013 Programmation Avancée sous LabVIEW 29 Eviter 3. et 4. juste pour « value »
  30. 30. Quizz N°2  Pour transmettre la donnée, faut-il mieux connecter le contrôle « Data In » sur : A. La variable locale de « Data Out » B. La globale « Data » Octobre 2013 Programmation Avancée sous LabVIEW 30
  31. 31. Résultat Quizz N°2 Octobre 2013 Programmation Avancée sous LabVIEW 31 Match Nul(presque)
  32. 32. A éviter  Eviter les variables Locale – Globale - nœud de propriété  Copies des données (attention « Grosse Structure »)  Lenteurs  Pas de protection contre « Race Conditions »  Pas de gestion d’erreur  1 fois (OK) mais L’exagération nuit à l’évolution Octobre 2013 Programmation Avancée sous LabVIEW 32
  33. 33. A éviter  Eviter les variables Locale – Globale - nœud de propriété Comment ???? Octobre 2013 Programmation Avancée sous LabVIEW 33
  34. 34.  FGV : Functional Global Variable ou LV2  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 Octobre 2013 Programmation Avancée sous LabVIEW 34
  35. 35. Quizz N°3  Vous connaissez tous?  Pourquoi le nom FGV ou variable LV2? Octobre 2013 Programmation Avancée sous LabVIEW 35
  36. 36. Exemple FGV  Exemple FGV = Remplace la globale Octobre 2013 Programmation Avancée sous LabVIEW 36 2 états : > Set = Ecriture > Get = Lecture Mémorisation
  37. 37. Race condition  Situation de compétition ????????????? Octobre 2013 Programmation Avancée sous LabVIEW 37
  38. 38. Rappel « bug » Race condition  Situation de compétition  « Bug » Accès « concurrent » de 2 codes à la même variable.  Valeur « instable » de la variable Octobre 2013 Programmation Avancée sous LabVIEW 38 Pas X=1 et Y=1 Data Out = ?? X=0 et Y=0
  39. 39. Quizz N°4  La FGV évite-t-elle « le bug » des accès concurrents – Race Conditions? Octobre 2013 Programmation Avancée sous LabVIEW 39 Data Out = ?? X = ? Y= ? Data In X = 0 Y= 0
  40. 40. 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 40
  41. 41. Utilisation recommandée de la FGV  1 écriture  N Lectures Octobre 2013 Programmation Avancée sous LabVIEW 41
  42. 42. Race condition  Comment éviter les Situations de compétition ?????????????  N écritures  N Lectures Octobre 2013 Programmation Avancée sous LabVIEW 42
  43. 43.  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 Octobre 2013 Programmation Avancée sous LabVIEW 43
  44. 44. Exemple AE  Exemple AE  FGV + Actions  Code autonome – réutilisable – Gestion erreur Octobre 2013 Programmation Avancée sous LabVIEW 44 Code de l’action Liste des actions Mémorisation
  45. 45. Quizz N°5  L’AE évite-t-elle « le bug » des accès concurrents – Race Conditions? Octobre 2013 Programmation Avancée sous LabVIEW 45 Data Out = ?? X = ? Y= ? Data In X = 0 Y= 0
  46. 46. 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 Octobre 2013 Programmation Avancée sous LabVIEW 46
  47. 47. 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 Octobre 2013 Programmation Avancée sous LabVIEW 47 Data Copy Data Copy Data  Protection contre les accès concurrent Reference Reference Reference
  48. 48. Quizz N°5  La DVR (Data Value Reference) permet-elle? : A. D’éviter les copies de données (« grosse structure ») B. De protéger contre les accès concurrents – Race Conditions C. De gérer les erreurs Octobre 2013 Programmation Avancée sous LabVIEW 48
  49. 49. 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 Octobre 2013 Programmation Avancée sous LabVIEW 49
  50. 50. Synthèse évolution « données » Octobre 2013 Programmation Avancée sous LabVIEW 50 Données 1 fois (OK) mais L’exagération nuit à l’évolution S’adapter à un besoin • N écritures • Code autonome • Réutilisable • Gestion erreur personnalisée
  51. 51. Synthèse évolution « données » Octobre 2013 Programmation Avancée sous LabVIEW 51 Fonctionnalités - Performance Simplicité d’utilisation
  52. 52. Évolution structure application Octobre 2013 Programmation Avancée sous LabVIEW 52  Toutes les techniques permettent de gérer des données  Pas des applications
  53. 53. IV] Famille « structure application » Octobre 2013 Programmation Avancée sous LabVIEW 53  Evolution techniques pour gérer les données vers une structure pour gérer les applications Framework Données
  54. 54.  Rappel l’Action Engine (AE) :  Réalise une action sur la données (exemple X+1 ou Y+1)  Puis fin  Jusqu’au prochain appel de la fonction logicielle De l’action à l’état Octobre 2013 Programmation Avancée sous LabVIEW 54
  55. 55.  Modèle « Machine à états », basé sur diagramme états- transitions:  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 Pour une application : Machine à états Octobre 2013 Programmation Avancée sous LabVIEW 55
  56. 56. Machine à états  Tout le monde connait cette technique avec LabVIEW? Octobre 2013 Programmation Avancée sous LabVIEW 56
  57. 57. SM la Machine à états Octobre 2013 Programmation Avancée sous LabVIEW 57  La Machine à états, ou State Machine (SM), est une structure d’application STATE Registre à décalage pour les transitions d’états Case structure = un pour chaque état STATE = Etat ? Registre à décalage pour la mémorisation des données Execution du code de l'état NEXT STATE
  58. 58. Exemple code LabVIEW de la SM  Démonstration Octobre 2013 Programmation Avancée sous LabVIEW 58
  59. 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 ? Octobre 2013 Programmation Avancée sous LabVIEW 59
  60. 60. Autres évolutions « Framework »  Quelques exemples disponibles  Producteur/consommateur avec File d’attente (Queue)  Boite de dialogue avec structure évènementielle (event driven)  Gestionnaire de Messages dans une File d'attente (GMF en Français ou QDMH en English) = INDISPENSABLE  Actor Framework  En Annexe : QDMH : indispensable pour vos projets Octobre 2013 Programmation Avancée sous LabVIEW 60
  61. 61. Le modèle de projet QDMH Octobre 2013 Programmation Avancée sous LabVIEW 61  Queue Driven Message Handler (QDMH)  LabVIEW 2012 : les modèles de projet LabVIEW via le gestionnaire de projet.
  62. 62. V] Famille « Objet » : OOP Octobre 2013 Programmation Avancée sous LabVIEW 62  Evolution de la gestion des données vers OOP Données OOP
  63. 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 Octobre 2013 Programmation Avancée sous LabVIEW 63
  64. 64. Programmation Objet sous LabVIEW  OOP évolution de l’ancêtre AE (Action Engine)  Registre à décalage devient données de la class  Actions devient Méthodes (encapsulation) Octobre 2013 Programmation Avancée sous LabVIEW 64 Action 1 = case 1 Action 2 = case 2 Action … = case 1. Donnée = registre 2. Actions = états Actions = méthodes = 1 vi AE = Action Engine OOP
  65. 65. Quizz N°6  OOP évite-t-elle « le bug » des accès concurrents – Race Conditions? Octobre 2013 Programmation Avancée sous LabVIEW 65 Data Out = ?? X = ? Y= ? Data In X = 0 Y= 0
  66. 66. 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 Octobre 2013 Programmation Avancée sous LabVIEW 66
  67. 67. Objet by value vers by Ref Octobre 2013 Programmation Avancée sous LabVIEW 67
  68. 68. Objet by value vers by Ref  Remarque : par défaut by Value  Possibilité : Utiliser la DVR pour créer une référence  DVR + OOP by data = by Ref Octobre 2013 Programmation Avancée sous LabVIEW 68
  69. 69. Quizz N°7  OOP by Ref évite-t-elle « le bug » des accès concurrents – Race Conditions? Octobre 2013 Programmation Avancée sous LabVIEW 69
  70. 70. 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 Octobre 2013 Programmation Avancée sous LabVIEW 70
  71. 71. Conclusion : évolution pour LabVIEW L’exagération nuit à l’évolution S’adapter à un besoin pour éviter les bugs et ajouter des fonctionnalités Octobre 2013 Programmation Avancée sous LabVIEW 71 Framework Données OOP
  72. 72. Liens Plus de présentations techniques www.mesulog.fr/presentations_techniques National Instruments : luc desruelle's Blogue Tutoriels developpez.com : luc Desruelle Plus de livres "LabVIEW programmation et applications" 3iéme édition, Dunod Plus de National Instruments Francophone Forum francophone NI LabVIEW Forum francophone Autres produits NI Communauté Francophone Luc Desruelle | LinkedIn Octobre 2013 Programmation Avancée sous LabVIEW 72
  73. 73. Questions Octobre 2013 Programmation Avancée sous LabVIEW 73
  74. 74. Annexe 1  Annexe 1  Le modèle de projet QDMH Octobre 2013 Programmation Avancée sous LabVIEW 74
  75. 75. Le modèle de projet QDMH Octobre 2013 Programmation Avancée sous LabVIEW 75  Queue Driven Message Handler (QDMH)  LabVIEW 2012 : les modèles de projet LabVIEW via le gestionnaire de projet.
  76. 76. Le modèle de projet QDMH Octobre 2013 Programmation Avancée sous LabVIEW 76  La structure repose sur un modèle producteur – consommateur  la boucle productrice : 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 consommatrice : basée sur un modèle de machine à états, dépile sur apparition les données de la FIFO.
  77. 77. Améliorer le QDMH Octobre 2013 Programmation Avancée sous LabVIEW 77  Gestion erreur : quitte l’application sur « erreur »  Remplacer « Exit » par « Error »  Ajouter un état « Error » dans la "Boucle de gestion de messages".  Affichage de l'erreur  Sauvegarde  Filtrage si l'utilisateur le décide.  N’affiche pas la version du logiciel  Ajouter les VIs de gestion de version de LabVIEW  La structure event driven sort sur erreur –  Remplacer par un vi qui transfère l'erreur à la "Boucle de gestion de messages" via la FIFO  Supprimer le code "exemple«  …
  78. 78. Votre Modèle Octobre 2013 Programmation Avancée sous LabVIEW 78  Distribuer votre modèle  Partie 2/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - version Simple  Partie 3/3 : Distribuer son Framework de projet, modèle de projet personnalisé, avec le gestionnaire de projet LabVIEW - version distribution personnalisée
  79. 79. Annexe 2  Annexe 2  IHM est en mémoire Octobre 2013 Programmation Avancée sous LabVIEW 79
  80. 80. 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 Octobre 2013 Programmation Avancée sous LabVIEW 80 Copie données Operate Buffer Transfer Buffer Execution Buffer Buffer de transfert = protection Mise à jour de l’IHM Données exécution du code Copie données

×