SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Downloaden Sie, um offline zu lesen
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
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
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
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
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
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
• ….
 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
« Toujours » le constat
 Certaines « erreurs » sont acceptables… si « rares »
Octobre 2013 Programmation Avancée sous LabVIEW 8
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 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
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
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
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
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.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
 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)
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
 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
 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
 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
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 « 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
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
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 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
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.
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 »
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
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 »)
 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
A éviter
 Eviter les variables Locale – Globale - nœud de propriété
Comment ????
Octobre 2013 Programmation Avancée sous LabVIEW 33
 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
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 = Ecriture
> Get = Lecture
Mémorisation
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.
 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
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
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
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 Programmation Avancée sous LabVIEW 42
 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
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
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
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
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
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
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
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
Synthèse évolution « données »
Octobre 2013 Programmation Avancée sous LabVIEW 51
Fonctionnalités - Performance
Simplicité
d’utilisation
Évolution structure application
Octobre 2013 Programmation Avancée sous LabVIEW 52
 Toutes les techniques permettent de gérer des données
 Pas des applications
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
 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
 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
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 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
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
 Point faible : peut perdre des états si en même temps
 Idées d’évolutions ?
Octobre 2013 Programmation Avancée sous LabVIEW 59
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
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.
V] Famille « Objet » : OOP
Octobre 2013 Programmation Avancée sous LabVIEW 62
 Evolution de la gestion des données vers OOP
Données
OOP
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
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
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
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
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 + OOP by data = by Ref
Octobre 2013 Programmation Avancée sous LabVIEW 68
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
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
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
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
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)
 LabVIEW 2012 : les modèles de projet LabVIEW via le gestionnaire
de projet.
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.
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«
 …
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
Nantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenantNantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenantJean-Michel Doudoux
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Jean-Michel Doudoux
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Jean-Michel Doudoux
 
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
 
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Jean-Michel Doudoux
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Intégration continue
Intégration continueIntégration continue
Intégration continueJohan Moreau
 
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
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeYann Caron
 

Was ist angesagt? (13)

Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Nantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenantNantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenant
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017
 
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
 
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
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
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridge
 

Andere mochten auch

Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewLuc Desruelle
 
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
 
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
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewLuc Desruelle
 
Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012SiemensFrance
 
Livre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et ApplicationsLivre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et ApplicationsLuc Desruelle
 
Livre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applicationsLivre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applicationsLuc Desruelle
 
Getting started with LabVIEW
Getting started with LabVIEWGetting started with LabVIEW
Getting started with LabVIEWYomna Eid
 
Wincc plant-intelligence
Wincc plant-intelligenceWincc plant-intelligence
Wincc plant-intelligenceAbdoul Karim
 
Certificate of completion
Certificate of completion Certificate of completion
Certificate of completion Bilal Jamjama
 
SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13Mohsen Sadok
 
Colaimo 140330083749-phpapp01
Colaimo 140330083749-phpapp01Colaimo 140330083749-phpapp01
Colaimo 140330083749-phpapp01Mss Med
 
Rapport de projet de fin d'études - SIEMENS 2016
Rapport de projet de fin d'études - SIEMENS 2016Rapport de projet de fin d'études - SIEMENS 2016
Rapport de projet de fin d'études - SIEMENS 2016Soufiane KALLIDA
 
Exemple de CV professionnel
Exemple de CV professionnelExemple de CV professionnel
Exemple de CV professionnelRAMZI EL IDRISSI
 
Presentation Android
Presentation AndroidPresentation Android
Presentation AndroidJean Collas
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebHarrathi Mohamed
 
Le télétravail chez Siemens au Luxembourg
Le télétravail chez Siemens au LuxembourgLe télétravail chez Siemens au Luxembourg
Le télétravail chez Siemens au LuxembourgNicole Turbé-Suetens
 

Andere mochten auch (20)

Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labview
 
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
 
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
 
Exemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labviewExemple de-code-oop-avec-labview
Exemple de-code-oop-avec-labview
 
Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012Pictures of the Future Siemens Printemps 2012
Pictures of the Future Siemens Printemps 2012
 
Livre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et ApplicationsLivre LabVIEW 2015 : Programme et Applications
Livre LabVIEW 2015 : Programme et Applications
 
Livre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applicationsLivre LabVIEW : Programmation et applications
Livre LabVIEW : Programmation et applications
 
Getting started with LabVIEW
Getting started with LabVIEWGetting started with LabVIEW
Getting started with LabVIEW
 
Wincc plant-intelligence
Wincc plant-intelligenceWincc plant-intelligence
Wincc plant-intelligence
 
Certificate of completion
Certificate of completion Certificate of completion
Certificate of completion
 
SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13SCADA Labview PLC TIA portal v13
SCADA Labview PLC TIA portal v13
 
Rapport cimat
Rapport cimatRapport cimat
Rapport cimat
 
Colaimo 140330083749-phpapp01
Colaimo 140330083749-phpapp01Colaimo 140330083749-phpapp01
Colaimo 140330083749-phpapp01
 
Rapport de projet de fin d'études - SIEMENS 2016
Rapport de projet de fin d'études - SIEMENS 2016Rapport de projet de fin d'études - SIEMENS 2016
Rapport de projet de fin d'études - SIEMENS 2016
 
Exemple de CV professionnel
Exemple de CV professionnelExemple de CV professionnel
Exemple de CV professionnel
 
Presentation Android
Presentation AndroidPresentation Android
Presentation Android
 
Decodage d'adresse
Decodage d'adresseDecodage d'adresse
Decodage d'adresse
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site Web
 
Le télétravail chez Siemens au Luxembourg
Le télétravail chez Siemens au LuxembourgLe télétravail chez Siemens au Luxembourg
Le télétravail chez Siemens au Luxembourg
 

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

Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyGuillaume Laforge
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimLaurent Broudoux
 
Croisière sur le data lake
Croisière sur le data lakeCroisière sur le data lake
Croisière sur le data lakeDavid Morel
 
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
 
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
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013Xavier NOPRE
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Xavier NOPRE
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns JavaVINOT Bernard
 
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
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet DrupalAdyax
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovyguest6e3bed
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
.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
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapresLaurent Tardif
 

Ähnlich wie Darwin appliqué à LabVIEW : l’évolution de la gestion des données (20)

Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec Groovy
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Croisière sur le data lake
Croisière sur le data lakeCroisière sur le data lake
Croisière sur le data lake
 
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)
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 
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
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet Drupal
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014 Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014
 
.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
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 

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

  • 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. 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. 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. 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. 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. 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.  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. « Toujours » le constat  Certaines « erreurs » sont acceptables… si « rares » Octobre 2013 Programmation Avancée sous LabVIEW 8
  • 9. Le code LabVIEW le plus célèbre Octobre 2013 Programmation Avancée sous LabVIEW 9 Spaghetti à la LabVIEW
  • 10. Votre avis Octobre 2013 Programmation Avancée sous LabVIEW 10  Quelles sont les erreurs (programmation LabVIEW) ?
  • 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. 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. 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. 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. I] Où trouver de l’aide ? Octobre 2013 Programmation Avancée sous LabVIEW 15
  • 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.  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. II] Histoire de la présentation Octobre 2013 Programmation Avancée sous LabVIEW 18
  • 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.  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.  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. Histoire  Il était une fois…. Une donnée Octobre 2013 Programmation Avancée sous LabVIEW 22
  • 23. II] Evolution famille « données » Octobre 2013 Programmation Avancée sous LabVIEW 23
  • 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. 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. Expliquer la réponse du Quizz N°1 Démonstration Octobre 2013 Programmation Avancée sous LabVIEW 26
  • 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. 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. 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. 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. Résultat Quizz N°2 Octobre 2013 Programmation Avancée sous LabVIEW 31 Match Nul(presque)
  • 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. A éviter  Eviter les variables Locale – Globale - nœud de propriété Comment ???? Octobre 2013 Programmation Avancée sous LabVIEW 33
  • 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. Quizz N°3  Vous connaissez tous?  Pourquoi le nom FGV ou variable LV2? Octobre 2013 Programmation Avancée sous LabVIEW 35
  • 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. Race condition  Situation de compétition ????????????? Octobre 2013 Programmation Avancée sous LabVIEW 37
  • 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. 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. 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. Utilisation recommandée de la FGV  1 écriture  N Lectures Octobre 2013 Programmation Avancée sous LabVIEW 41
  • 42. Race condition  Comment éviter les Situations de compétition ?????????????  N écritures  N Lectures Octobre 2013 Programmation Avancée sous LabVIEW 42
  • 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. 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. 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. 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. 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. 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. 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. 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. Synthèse évolution « données » Octobre 2013 Programmation Avancée sous LabVIEW 51 Fonctionnalités - Performance Simplicité d’utilisation
  • 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. 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.  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.  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. Machine à états  Tout le monde connait cette technique avec LabVIEW? Octobre 2013 Programmation Avancée sous LabVIEW 56
  • 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. Exemple code LabVIEW de la SM  Démonstration Octobre 2013 Programmation Avancée sous LabVIEW 58
  • 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. 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. 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. 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. 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. 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. 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. 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. Objet by value vers by Ref Octobre 2013 Programmation Avancée sous LabVIEW 67
  • 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. 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. 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. 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. 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. Questions Octobre 2013 Programmation Avancée sous LabVIEW 73
  • 74. Annexe 1  Annexe 1  Le modèle de projet QDMH Octobre 2013 Programmation Avancée sous LabVIEW 74
  • 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. 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. 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. 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. Annexe 2  Annexe 2  IHM est en mémoire Octobre 2013 Programmation Avancée sous LabVIEW 79
  • 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