SlideShare uma empresa Scribd logo
1 de 30
D U C O N C E P T À L A R É A L I S A T I O N
ARCHITECTURE PLUG-IN AVEC
LABVIEW :
NIDays/ Paris / 03 Février 2015
SAPHIR
Architecture plug-in avec LabVIEW
Création en 1989
• 25 ans
• Partenaire Gold
21 personnes
• 15 développeurs certifiés
• + de 80% de l’équipe a plus de 3 ans d’ancienneté
En France
• Entre Chambéry et Grenoble
JANVIER 2015 : CRÉATION DE QMT GROUP
Architecture plug-in avec LabVIEW
L’expert en acquisition et traitement de signaux pour la
mesure, le test et le contrôle qualité
QUELS DOMAINES
Architecture plug-in avec LabVIEW
Système distribué,
Client-Serveur, Plug-
ins…
Applications sur mesure
Expertise / Accompagnement
Formations
Toolkits LabVIEW et application
88 %
du CA
2%
du CA
10%
du CA
DES COMPÉTENCES
Architecture plug-in avec LabVIEW
Système distribué,
Client-Serveur, Plug-
ins…
Acquisition et
traitement de
signaux
Pilotage de banc
de test,
supervision
Contrôle qualité en
chaine de
production
Systèmes
embarqués, Client-
Serveur…
INTRODUCTION
> Dans quels cas mettre en place une architecture plug-in ?
> Prérequis : quelques rappels sur la programmation objet
> Comment créer un plug-in ?
> Exemple concret : Métrolab
Architecture plug-in avec LabVIEW
QU’EST-CE QU’UNE ARCHITECTURE PLUG-IN ?
> Module d'extension qui complète un logiciel hôte pour lui apporter de
nouvelles fonctionnalités.
> Exemples : Google Chrome, Mozilla Firefox, Notepad++, LabVIEW…
Architecture plug-in avec LabVIEW
LE CHOIX D’UNE ARCHITECTURE PLUG-IN
> Modification/Ajout de fonctionnalités, sans recompiler l’ensemble du code
> Ouverture du développement de modules à d’autres développeurs
> Installation personnalisée
 Permet d’améliorer l’évolutivité, la maintenabilité et la qualité d’une
application
Architecture plug-in avec LabVIEW
PRÉ-REQUIS : OOP
> Une classe est un ensemble de propriétés (données) et de méthodes
(fonctions) qui interagissent sur ces données
> Un objet est une instance spécifique d’une classe
Architecture plug-ins avec LabVIEW
Classe Instrument
Propriétés
Identifiant
Numéro de série
Dernière valeur lue
Méthodes
Initialiser
Ecrire
Lire
Libérer
Objet 1
• AG34401
• B254255
• 1.4 V
Objet 2
• DPG 10
• DH1389B
• 1.1 bar
Objet 3
• CPC 6000
• PN001MENS
• 1088 Pa
PRÉ-REQUIS : HÉRITAGE
> Utilisation de la programmation objet pour bénéficier de l’héritage
> Les enfants héritent des méthodes et des propriétés du parent
> Les enfants peuvent ajouter des méthodes et des propriétés
Architecture plug-ins avec LabVIEW
Enfants
Parent Multimètre
AG 34401 AG 34970
PRÉ-REQUIS : REDÉFINITION
> Redéfinition : Capacité de modifier le comportement d’une méthode parente
Architecture plug-ins avec LabVIEW
Enfants
Parent Multimètre
AG 34401 AG 34970
EXEMPLE D’HÉRITAGE
Architecture plug-ins avec LabVIEW
Ancêtres
Descendants
Instrument
Multimètre
AG 34401 AG 34970
Multiplexeur
Keithley7002 AG 3499B
PRÉ-REQUIS : DISPATCH DYNAMIQUE
> Dispatch dynamique :
> LabVIEW décide lors de l’exécution quelle fonction appeler
> Le choix est dicté par le type de l’objet
> Possibilité de contraindre une classe fille à redéfinir une fonction
Architecture plug-ins avec LabVIEW
1.5V
2.34V
-0.8V
PLUG-INS : LE PRINCIPE
> Classe mère = INTERFACE = lien entre l’application et les plug-ins
> Classes filles = PLUG-INS
> Les classes filles redéfinissent les méthodes « interface » de leur mère
> Les classes filles sont chargées dynamiquement
> Le « dispatch dynamique » définit la méthode qui doit être appelée au
moment de l’exécution
Architecture plug-ins avec LabVIEW
CHARGEMENT DYNAMIQUE DES PLUG-INS
Architecture plug-in avec LabVIEW
Plug-in générique
Répertoire de stockage des
Plug-ins sur le disque
Objets chargés en mémoire
 Parent (Interface)
 Enfants ( Plug-ins)
PLUG-INS : DÉMO 1
> Exemple :
> Utilisation de l’interface (classe mère)
> Chargement dynamique des plug-ins (classes filles)
> Génération d’un exécutable
Architecture plug-in avec LabVIEW
PLUG-INS : PROBLÉMATIQUE DES DÉPENDANCES
> Problématique : Une fois construite, l’application ne connait pas à l’avance
les plug-ins à charger. Les plug-ins doivent donc contenir l’ensemble des
ressources nécessaires à leur exécution.
> Solution : distribuer les plug-ins sous forme de packed library (*.lvlibp)
> Packed library = code compilé (*.lvlibp) construit à partir d’une librairie
(*.lvlib), et contenant toutes ses dépendances
Architecture plug-in avec LabVIEW
DEMO : HARDWARE ABSTRACTION LAYER (HAL)
> Démo :
> création d’une interface « Instrument » et de plug-ins à partir d’une
« packed library »
Architecture plug-in avec LabVIEW
EXEMPLE : METROLAB
> Contexte : Pilotage d’un banc d’étalonnage pour capteurs de température et
pression
> Client : EDF-DTG, laboratoire MPSH (accrédité COFRAC)
> Application : Etalonnage des capteurs de pression et température des
centrales nucléaires
Architecture plug-in avec LabVIEW
METROLAB : PRINCIPE DE L’ÉTALONNAGE
Architecture plug-in avec LabVIEW
Etalonnage en température :
METROLAB : PLUG-IN INSTRUMENTS
> Contrainte numéro 1 :
> Evolutivité au niveau du matériel (ajout d’instruments « facile »)
> Installation personnalisée des instruments
« <L’application> devra se présenter sous forme modulaire,
permettant une installation partielle ou complète des fonctionnalités
demandées et surtout permettant une grande évolutivité, pour
l’intégration simplifiée de futurs équipements »
Architecture plug-in avec LabVIEW
METROLAB : PLUG-IN INSTRUMENTS
> Exemple : configuration d’un multimètre sur le banc de température
Architecture plug-in avec LabVIEW
METROLAB : PLUG-IN INSTRUMENTS
> Avantages :
Pour le client :
> Facilité pour ajouter/modifier/supprimer des instruments
> Installation personnalisée des instruments selon les bancs
Pour le développeur :
> Plug-in de simulation pour tests d’intégration sans matériel, pour chaque
instrument
Architecture plug-in avec LabVIEW
METROLAB : PLUG-IN INSTRUMENTS
> Architecture :
Architecture plug-in avec LabVIEW
METROLAB : PLUG-IN BANCS
> Contrainte numéro 2:
> Une application commune pour s’interfacer avec tous les types de bancs
(banc de température, banc de pression manuel, banc de pression
automatique)
> Possibilité d’installer seulement l’un ou plusieurs des bancs
Architecture plug-in avec LabVIEW
METROLAB : PLUG-IN BANCS
> Avantages :
Pour le client :
> Possibilité de personnaliser l’installation de l’application selon les besoins
(installation de un ou plusieurs bancs sur le même PC)
Pour le développeur :
> Code commun pour toutes les fonctionnalités communes entre les bancs
 gain en temps de développement et test
Architecture plug-in avec LabVIEW
METROLAB : INSTALLEUR
> L’installation des plug-ins doit être indépendante de l’installation du noyau
> Soit créer plusieurs installeurs avec LabVIEW
> Soit utiliser InnoSetup pour proposer un installeur plus évolué
Architecture plug-in avec LabVIEW
INSTALLEUR : INNO SETUP
> Possibilité de sélectionner les plug-ins à installer
> Possibilité de créer des configurations types d’installation
> Possibilité d’installer d’autres composants
> Multiples possibilités de personnalisation
Architecture plug-in avec LabVIEW
RETOUR D’EXPÉRIENCE
> Temps de développement :
> Gain pour toutes les fonctionnalités communes entre les plug-ins
> Attention au surcout engendré par la mise en place d’une Architecture
plug-in
> Attention aux dépendances (LV2012 en particulier, mais beaucoup
d’évolutions en LV2013 et LV2014 pour mieux gérer les dépendances)
> Pour faciliter le debug : mise en place d’un VI LabVIEW permettant
d’appeler la classe LV plug-in lors d’un appel en sources et la packed library
lors d’un appel en exécutable
> Architecture très structurée : facilité pour le travail en équipe, pour la
maintenabilité, l’évolutivité
Architecture plug-in avec LabVIEW
Par Mathilde VINCENT et Sylvain JOURDAN
mathilde.vincent@saphir.fr
sylvain.jourdan@saphir.fr
Stand NIDays numéro 28

Mais conteúdo relacionado

Destaque

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
 
GPS Tracking mit EXCON Satellite Guard
GPS Tracking mit EXCON Satellite GuardGPS Tracking mit EXCON Satellite Guard
GPS Tracking mit EXCON Satellite GuardBastian Bischof
 
Cronograma joga à bola
Cronograma joga à bolaCronograma joga à bola
Cronograma joga à bolaBruno Ferreira
 
Herbier Pierre, Nicolas, Robin
Herbier Pierre, Nicolas, RobinHerbier Pierre, Nicolas, Robin
Herbier Pierre, Nicolas, Robinsediapos
 
Randonnée Et Gps
Randonnée Et GpsRandonnée Et Gps
Randonnée Et GpsMONA
 
GPS - Manual do usuário
GPS - Manual do usuárioGPS - Manual do usuário
GPS - Manual do usuáriosilvamtt2003
 
Presente y futuro social media
Presente y futuro social mediaPresente y futuro social media
Presente y futuro social mediaIsmael El-Qudsi
 
Geografia virtual - las tiendas de Comida Rápida con mayor movimientos de B...
Geografia virtual - las tiendas  de Comida Rápida con mayor movimientos  de B...Geografia virtual - las tiendas  de Comida Rápida con mayor movimientos  de B...
Geografia virtual - las tiendas de Comida Rápida con mayor movimientos de B...Elife Brasil
 
Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?
Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?
Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?E.LIFE
 
Notice GPS Globe 850 globe4x4
Notice GPS Globe 850 globe4x4Notice GPS Globe 850 globe4x4
Notice GPS Globe 850 globe4x4GPS Globe 4X4
 
Auditoria De Proyecto De Vuelo
Auditoria De Proyecto De VueloAuditoria De Proyecto De Vuelo
Auditoria De Proyecto De VueloAna Zarco de Pablo
 

Destaque (20)

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
 
GPS Tracking mit EXCON Satellite Guard
GPS Tracking mit EXCON Satellite GuardGPS Tracking mit EXCON Satellite Guard
GPS Tracking mit EXCON Satellite Guard
 
Cronograma joga à bola
Cronograma joga à bolaCronograma joga à bola
Cronograma joga à bola
 
Herbier Pierre, Nicolas, Robin
Herbier Pierre, Nicolas, RobinHerbier Pierre, Nicolas, Robin
Herbier Pierre, Nicolas, Robin
 
Randonnée Et Gps
Randonnée Et GpsRandonnée Et Gps
Randonnée Et Gps
 
GPS - Manual do usuário
GPS - Manual do usuárioGPS - Manual do usuário
GPS - Manual do usuário
 
Trabalho sobre GPS III
Trabalho sobre GPS IIITrabalho sobre GPS III
Trabalho sobre GPS III
 
Presente y futuro social media
Presente y futuro social mediaPresente y futuro social media
Presente y futuro social media
 
Geografia virtual - las tiendas de Comida Rápida con mayor movimientos de B...
Geografia virtual - las tiendas  de Comida Rápida con mayor movimientos  de B...Geografia virtual - las tiendas  de Comida Rápida con mayor movimientos  de B...
Geografia virtual - las tiendas de Comida Rápida con mayor movimientos de B...
 
Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?
Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?
Foursquare: onde vão os digitais do Rio de Janeiro e São Paulo?
 
Notice GPS Globe 850 globe4x4
Notice GPS Globe 850 globe4x4Notice GPS Globe 850 globe4x4
Notice GPS Globe 850 globe4x4
 
Auditoria De Proyecto De Vuelo
Auditoria De Proyecto De VueloAuditoria De Proyecto De Vuelo
Auditoria De Proyecto De Vuelo
 

Semelhante a Architecture Plug-in en LabVIEW : de la conception à la réalisation

Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1Marc Bojoly
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3Benoit Fillon
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continueLeClubQualiteLogicielle
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsNicolas Mussat
 
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...Adrien Clerbois
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelAgile Montréal
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIRomain Cambien
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIslemoslideshare
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 

Semelhante a Architecture Plug-in en LabVIEW : de la conception à la réalisation (20)

Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Perf university
Perf universityPerf university
Perf university
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NI
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
RFID
RFIDRFID
RFID
 

Mais de SAPHIR - Signal Physique & Instrumentation (6)

Mesures vibratoires et acoustiques appliquées au contrôle qualité en production
Mesures vibratoires et acoustiques appliquées au contrôle qualité en productionMesures vibratoires et acoustiques appliquées au contrôle qualité en production
Mesures vibratoires et acoustiques appliquées au contrôle qualité en production
 
Vi analyzer gagnez en qualité en révisant vos codes LabVIEW régulièrement
Vi analyzer   gagnez en qualité en révisant vos codes LabVIEW régulièrementVi analyzer   gagnez en qualité en révisant vos codes LabVIEW régulièrement
Vi analyzer gagnez en qualité en révisant vos codes LabVIEW régulièrement
 
Coder plus vite avec LabVIEW
Coder plus vite avec LabVIEWCoder plus vite avec LabVIEW
Coder plus vite avec LabVIEW
 
Test materiel ni c rio-9068
Test materiel   ni c rio-9068Test materiel   ni c rio-9068
Test materiel ni c rio-9068
 
Démystifier la programmation avec LabVIEW FPGA
Démystifier la programmation avec LabVIEW FPGADémystifier la programmation avec LabVIEW FPGA
Démystifier la programmation avec LabVIEW FPGA
 
Saphir - Exemples de réalisations
Saphir - Exemples de réalisationsSaphir - Exemples de réalisations
Saphir - Exemples de réalisations
 

Architecture Plug-in en LabVIEW : de la conception à la réalisation

  • 1. D U C O N C E P T À L A R É A L I S A T I O N ARCHITECTURE PLUG-IN AVEC LABVIEW : NIDays/ Paris / 03 Février 2015
  • 2. SAPHIR Architecture plug-in avec LabVIEW Création en 1989 • 25 ans • Partenaire Gold 21 personnes • 15 développeurs certifiés • + de 80% de l’équipe a plus de 3 ans d’ancienneté En France • Entre Chambéry et Grenoble
  • 3. JANVIER 2015 : CRÉATION DE QMT GROUP Architecture plug-in avec LabVIEW L’expert en acquisition et traitement de signaux pour la mesure, le test et le contrôle qualité
  • 4. QUELS DOMAINES Architecture plug-in avec LabVIEW Système distribué, Client-Serveur, Plug- ins… Applications sur mesure Expertise / Accompagnement Formations Toolkits LabVIEW et application 88 % du CA 2% du CA 10% du CA
  • 5. DES COMPÉTENCES Architecture plug-in avec LabVIEW Système distribué, Client-Serveur, Plug- ins… Acquisition et traitement de signaux Pilotage de banc de test, supervision Contrôle qualité en chaine de production Systèmes embarqués, Client- Serveur…
  • 6. INTRODUCTION > Dans quels cas mettre en place une architecture plug-in ? > Prérequis : quelques rappels sur la programmation objet > Comment créer un plug-in ? > Exemple concret : Métrolab Architecture plug-in avec LabVIEW
  • 7. QU’EST-CE QU’UNE ARCHITECTURE PLUG-IN ? > Module d'extension qui complète un logiciel hôte pour lui apporter de nouvelles fonctionnalités. > Exemples : Google Chrome, Mozilla Firefox, Notepad++, LabVIEW… Architecture plug-in avec LabVIEW
  • 8. LE CHOIX D’UNE ARCHITECTURE PLUG-IN > Modification/Ajout de fonctionnalités, sans recompiler l’ensemble du code > Ouverture du développement de modules à d’autres développeurs > Installation personnalisée  Permet d’améliorer l’évolutivité, la maintenabilité et la qualité d’une application Architecture plug-in avec LabVIEW
  • 9. PRÉ-REQUIS : OOP > Une classe est un ensemble de propriétés (données) et de méthodes (fonctions) qui interagissent sur ces données > Un objet est une instance spécifique d’une classe Architecture plug-ins avec LabVIEW Classe Instrument Propriétés Identifiant Numéro de série Dernière valeur lue Méthodes Initialiser Ecrire Lire Libérer Objet 1 • AG34401 • B254255 • 1.4 V Objet 2 • DPG 10 • DH1389B • 1.1 bar Objet 3 • CPC 6000 • PN001MENS • 1088 Pa
  • 10. PRÉ-REQUIS : HÉRITAGE > Utilisation de la programmation objet pour bénéficier de l’héritage > Les enfants héritent des méthodes et des propriétés du parent > Les enfants peuvent ajouter des méthodes et des propriétés Architecture plug-ins avec LabVIEW Enfants Parent Multimètre AG 34401 AG 34970
  • 11. PRÉ-REQUIS : REDÉFINITION > Redéfinition : Capacité de modifier le comportement d’une méthode parente Architecture plug-ins avec LabVIEW Enfants Parent Multimètre AG 34401 AG 34970
  • 12. EXEMPLE D’HÉRITAGE Architecture plug-ins avec LabVIEW Ancêtres Descendants Instrument Multimètre AG 34401 AG 34970 Multiplexeur Keithley7002 AG 3499B
  • 13. PRÉ-REQUIS : DISPATCH DYNAMIQUE > Dispatch dynamique : > LabVIEW décide lors de l’exécution quelle fonction appeler > Le choix est dicté par le type de l’objet > Possibilité de contraindre une classe fille à redéfinir une fonction Architecture plug-ins avec LabVIEW 1.5V 2.34V -0.8V
  • 14. PLUG-INS : LE PRINCIPE > Classe mère = INTERFACE = lien entre l’application et les plug-ins > Classes filles = PLUG-INS > Les classes filles redéfinissent les méthodes « interface » de leur mère > Les classes filles sont chargées dynamiquement > Le « dispatch dynamique » définit la méthode qui doit être appelée au moment de l’exécution Architecture plug-ins avec LabVIEW
  • 15. CHARGEMENT DYNAMIQUE DES PLUG-INS Architecture plug-in avec LabVIEW Plug-in générique Répertoire de stockage des Plug-ins sur le disque Objets chargés en mémoire  Parent (Interface)  Enfants ( Plug-ins)
  • 16. PLUG-INS : DÉMO 1 > Exemple : > Utilisation de l’interface (classe mère) > Chargement dynamique des plug-ins (classes filles) > Génération d’un exécutable Architecture plug-in avec LabVIEW
  • 17. PLUG-INS : PROBLÉMATIQUE DES DÉPENDANCES > Problématique : Une fois construite, l’application ne connait pas à l’avance les plug-ins à charger. Les plug-ins doivent donc contenir l’ensemble des ressources nécessaires à leur exécution. > Solution : distribuer les plug-ins sous forme de packed library (*.lvlibp) > Packed library = code compilé (*.lvlibp) construit à partir d’une librairie (*.lvlib), et contenant toutes ses dépendances Architecture plug-in avec LabVIEW
  • 18. DEMO : HARDWARE ABSTRACTION LAYER (HAL) > Démo : > création d’une interface « Instrument » et de plug-ins à partir d’une « packed library » Architecture plug-in avec LabVIEW
  • 19. EXEMPLE : METROLAB > Contexte : Pilotage d’un banc d’étalonnage pour capteurs de température et pression > Client : EDF-DTG, laboratoire MPSH (accrédité COFRAC) > Application : Etalonnage des capteurs de pression et température des centrales nucléaires Architecture plug-in avec LabVIEW
  • 20. METROLAB : PRINCIPE DE L’ÉTALONNAGE Architecture plug-in avec LabVIEW Etalonnage en température :
  • 21. METROLAB : PLUG-IN INSTRUMENTS > Contrainte numéro 1 : > Evolutivité au niveau du matériel (ajout d’instruments « facile ») > Installation personnalisée des instruments « <L’application> devra se présenter sous forme modulaire, permettant une installation partielle ou complète des fonctionnalités demandées et surtout permettant une grande évolutivité, pour l’intégration simplifiée de futurs équipements » Architecture plug-in avec LabVIEW
  • 22. METROLAB : PLUG-IN INSTRUMENTS > Exemple : configuration d’un multimètre sur le banc de température Architecture plug-in avec LabVIEW
  • 23. METROLAB : PLUG-IN INSTRUMENTS > Avantages : Pour le client : > Facilité pour ajouter/modifier/supprimer des instruments > Installation personnalisée des instruments selon les bancs Pour le développeur : > Plug-in de simulation pour tests d’intégration sans matériel, pour chaque instrument Architecture plug-in avec LabVIEW
  • 24. METROLAB : PLUG-IN INSTRUMENTS > Architecture : Architecture plug-in avec LabVIEW
  • 25. METROLAB : PLUG-IN BANCS > Contrainte numéro 2: > Une application commune pour s’interfacer avec tous les types de bancs (banc de température, banc de pression manuel, banc de pression automatique) > Possibilité d’installer seulement l’un ou plusieurs des bancs Architecture plug-in avec LabVIEW
  • 26. METROLAB : PLUG-IN BANCS > Avantages : Pour le client : > Possibilité de personnaliser l’installation de l’application selon les besoins (installation de un ou plusieurs bancs sur le même PC) Pour le développeur : > Code commun pour toutes les fonctionnalités communes entre les bancs  gain en temps de développement et test Architecture plug-in avec LabVIEW
  • 27. METROLAB : INSTALLEUR > L’installation des plug-ins doit être indépendante de l’installation du noyau > Soit créer plusieurs installeurs avec LabVIEW > Soit utiliser InnoSetup pour proposer un installeur plus évolué Architecture plug-in avec LabVIEW
  • 28. INSTALLEUR : INNO SETUP > Possibilité de sélectionner les plug-ins à installer > Possibilité de créer des configurations types d’installation > Possibilité d’installer d’autres composants > Multiples possibilités de personnalisation Architecture plug-in avec LabVIEW
  • 29. RETOUR D’EXPÉRIENCE > Temps de développement : > Gain pour toutes les fonctionnalités communes entre les plug-ins > Attention au surcout engendré par la mise en place d’une Architecture plug-in > Attention aux dépendances (LV2012 en particulier, mais beaucoup d’évolutions en LV2013 et LV2014 pour mieux gérer les dépendances) > Pour faciliter le debug : mise en place d’un VI LabVIEW permettant d’appeler la classe LV plug-in lors d’un appel en sources et la packed library lors d’un appel en exécutable > Architecture très structurée : facilité pour le travail en équipe, pour la maintenabilité, l’évolutivité Architecture plug-in avec LabVIEW
  • 30. Par Mathilde VINCENT et Sylvain JOURDAN mathilde.vincent@saphir.fr sylvain.jourdan@saphir.fr Stand NIDays numéro 28

Notas do Editor

  1. Présentation Mathilde -> CLA Sylvain -> CLD Présenter SAPHIR…
  2. Aperçu des compétences de SAPHIR
  3. Architecture plugin => extension d’un noyau de base Qu’est-ce qu’une architecture plug-in ? (exemples concrets : ex : google chrome) Dans quels cas mettre en place une architecture plug-in ? Pré-requis : rappels (OOP, héritage, dispatch dynamique) Qu’est-ce qu’une packed library ? Comment créer un plug-in ? Hardware abstraction Layer (HAL) Exemple concret : Métrolab Installeur : InnoDB Retour d’expérience
  4. Une problématique sui revient souvent : le gestion d’instruments Dans la suite, nous prendrons cet exemple, le but est de créer une architecture plug’in pour les instruments afin d’avoir une couche d’abstraction matérielle Application stable qui doit évoluer (limitation de l’impact de modifications) Architecture permettant de définir une interface figée avec certains modules (permet de cadrer le développement) Installation personnalisée selon les utilisateurs, les bancs, … Attention : le choix doit être justifié ! Ouverture du développement de modules à d’autres développeurs : + Protection du noyau de l’application Qualité : factorisation du code  développé et testé une seule fois
  5. Demander : Qui développe en objet ou connait la POO en LV ?
  6. Rajout de propriétés et méthodes aux classes filles
  7. Redéfinition de méthodes
  8. Wahou!!!! : 3 fils différents buildé dans le même tableau Chargement dynamique des classes filles Contrainte de redéfinition : Bien pour cadrer le développement des plugins
  9. Basé sur une programmation orientée objet avec héritage : Différentes façons d’implémenter des plugins : choix de l’OOP
  10. Les VI publics d’une librairie compilée en packed library peuvent être appelés depuis un code source LabVIEW TODO LV2014 (Attention Dépendances classe mère en LV < 2014 => Obligation de builder la classe mère en LVLIBP)
  11. Attention : une packed library est compilée pour une version de LV Hal : Separate test application from the instrument hardware
  12. Principe d’un étalonnage : 1 sonde de température de référence (étalon) et N sondes à étalonner Toutes les sondes sont trempées dans un bain ou un four, avec un générateur de température + régulateur Le logiciel pilote des paliers de température et effectue des mesures via un multimètre et un multiplexeur sur l’ensemble des sondes. Le but étant de qualifier chacune des sondes à étalonner par rapport à la sonde étalon et de « classifier » ces sondes Idem en pression avec soit un étalonnage manuelle (balance avec des masses) soit un étalonnage automatique (le logiciel pilote un générateur de presssion) Expliquer étalonnage : Exemple en température : Profil de température (« paliers »), et à chaque palier de température comparaison par rapport à un sonde étalon Calculs de caractéristiques pour chaque sonde, classe de la sonde, incertitude Interface de mesure du banc de température + image rapport (données simulées) COFRAC : Comité Français d’Accréditation Le Comité français d’accréditation (Cofrac) est l'unique instance chargée de délivrer les accréditations aux organismes intervenant dans l'évaluation de la conformité en France. Les accréditations sont gérées par des sections spécialisées : La section "Laboratoires" assure l'accréditation pour les étalonnages en métrologie Gestion de processus d’étalonnage : - Traçabilité - Calculs d’incertitude - Répétabilité - Contraintes COFRAC
  13. Facilité pour ajouter/modifier/supprimer des instruments : évolutivité
  14. Interface : fait partie du noyau, qui est buildé en exe Plugins : chargé dynamiquement au moment de l’exécution HAL : couche d’abstraction matérielle
  15. Nombreux points communs entre les différents bancs
  16. Possibilité d’installer 1 ou plusieurs bancs : typiquement 1 banc sur chaque PC relié à une installation (température, pression manuelle ou pression automatique) + 1 PC spare avec tous les bancs Transition : Contrainte : fournir un installeur adapté à l’architecture plugin Pas facile avec l’installeur de base LabVIEW  Inno Setup
  17. Inno Setup : installeur plus évolué que celui proposé par National Instruments
  18. Attention : architecture plug’in à mettre en place seulement si le besoin est réel car surcout engendré par la mise en place d’une architecture plug-in (architecture complexe) Gain de développement pour toutes les fonctionnalités communes entre les plug-ins Attention au surcout engendré par la mise en place d’une Architecture plug-in : bien évaluer si ce besoin est nécessaire par rapport au temps gagné par le non développement de fonctionnalités communes Architecture Développement Debug Attention aux dépendances (LV2012 en particulier, mais beaucoup d’évolutions en LV2013 et LV2014 pour mieux gérer les dépendances) Pour faciliter le debug : mise en place d’un VI LV permettant d’appeler la classe LV plug-in lors d’un appel en sources et la packed library lors d’un appel en exe Architecture très structurée : facilité pour le travail en équipe, pour la maintenabilité, l’évolutivité