LabVIEW
![]() |
Cet article ne cite pas suffisamment ses sources (mai 2010). Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références » (modifier l'article, comment ajouter mes sources ?).
|
LabVIEW | ||
|
Développeur | National Instruments |
---|---|---|
Dernière version | Été 2015 | |
Environnement | Windows, Mac OS, Linux | |
Langue | Français, Anglais, Allemand, Japonais | |
Type | Atelier de génie logiciel, Chaine d'acquisition, Traitement du signal, Système embarqué | |
Politique de distribution | Vendu dans le commerce | |
Licence | Propriétaire | |
Site web | Site officiel | |
modifier ![]() |
LabVIEW (contraction de Laboratory Virtual Instrument Engineering Workbench) est le cœur d’une plate-forme de conception de systèmes de mesure et de contrôle, basée sur un environnement de développement graphique de National Instruments.
Le langage graphique utilisé dans cette plate-forme est appelé « G ». Créé à l’origine sur Apple Macintosh en 1986, LabVIEW est utilisé principalement pour la mesure par acquisition de données, pour le contrôle d’instruments et pour l’automatisme industriel. La plate-forme de développement s’exécute sous différents systèmes d’exploitation comme Microsoft Windows, Linux et Mac OS X. LabVIEW peut générer du code sur ces systèmes d’exploitation mais également sur des plates-formes temps réel, des systèmes embarqués ou des composants reprogrammables FPGA. La dernière version de LabVIEW est sortie en août 2015.
La programmation par flux de données
Le langage de programmation utilisé dans LabVIEW, nommé G, fonctionne par flux de données[1]. L’exécution d’un code est déterminée par l’architecture graphique d’un diagramme qui est le code source. Le programmeur connecte différentes fonctions sous forme d’icônes dans le diagramme par l’intermédiaire de fils dessinés entre les terminaisons des blocs d’icônes. Chaque fil propage les variables du code et chaque nœud s’exécute dès que toutes les entrées d’une fonction sous forme d’icône sont disponibles. Cette manière de programmer propose une capacité intrinsèque de dessiner des fonctions et fils en parallèle et ainsi LabVIEW permet l’exécution de code en multitâche. Sur des machines multicœur, LabVIEW répartit ces tâches de manière automatique sur les différents cœurs tout en exploitant la capacité multithread des systèmes d’exploitation.
Structure du langage graphique LabVIEW
Le diagramme de LabVIEW est lié à une interface utilisateur graphique nommée face-avant. Les programmes et sous-programmes sous forme d’icônes sont appelés des instruments virtuels (VI) et les fichiers source enregistrés sur disque ont l’extension de nom de fichier .VI
.
Chaque VI possède trois composants : un diagramme qui intègre le code graphique, une face-avant personnalisable par l’utilisateur et un panneau de connexions pour les icônes qui sert d’entrées/sorties pour les variables sous forme de fils.
Une fois un VI écrit, il devient une icône pour un programme de plus haut niveau et intégré dans le nouveau diagramme. Il devient alors un sous-VI appelé donc un sous programme. Chaque icône de sous-VI créé peut être personnalisée par un dessin représentant au plus près sa fonction.
La face-avant est construite en utilisant des objets dénommés commandes et indicateurs. Les commandes sont des entrées qui servent à saisir des valeurs à l’écran et les indicateurs sont des sorties qui servent à afficher des variables ou des résultats de calculs. Tous les objets de la face-avant (commandes et indicateurs) apparaissent sur le diagramme afin de les relier aux fonctions.
Le diagramme contient également des structures de contrôle (boucles, conditions, etc.) en plus des fonctions afin de d’effectuer des opérations identiques à un langage classique textuel. Tous les objets de commandes, indicateurs, fonctions, structures sont présents dans des palettes et menus attachés à la face-avant ou au diagramme. Une fois les fonctions sous forme d’icônes placées, elles deviennent des nœuds qui sont connectés par des fils d’entrées et de sorties. Par exemple, deux entrées pour une fonction d’addition et une sortie pour le résultat. Un instrument virtuel (VI) dans le diagramme peut être exécuté séparément même dans une arborescence de sous-VIs appartenant à un programme plus grand car chacun est indépendant et peut être testé de manière autonome.
La programmation graphique est prisée par les non-programmeurs afin de construire des programmes par simple glissé-déposé de fonctions représentant un équipement de mesure de laboratoire tel qu’il serait classiquement utilisé mais de manière virtuelle. LabVIEW est un environnement de développement par programmation qui intègre des exemples et de la documentation mais cet avantage de simplicité et d’intuitivité peut mettre en péril la qualité du programme généré par manque de rigueur et de règles simples de développement à suivre. Dans le cas d’algorithmes complexes, il est important que le programmeur possède quelques connaissances par exemple sur la syntaxe particulière et sur la gestion de la mémoire (qui est par défaut allouée de manière automatique). Des outils de génie logiciel sont mis à disposition dans l'environnement LabVIEW pour créer des applications de grande ampleur en équipe. Dans la version la plus avancée, le système de développement offre la possibilité de créer des fichiers exécutables ou des installeurs d’applications pour le déploiement sur d’autres machines.
Histoire
C'est en 1986 que la première version de LabVIEW voit le jour sur Macintosh. Il s'ensuit un travail incessant pour ajouter des fonctionnalités :
- 1986 : LabVIEW 1.0, sous Mac OS
- 1990 : LabVIEW 2.0, Langage compilé, optimisation des performances
- 1992 : LabVIEW 2.5, sous Windows 3.1 et Solaris
- 1993 : LabVIEW 3.0
- 1994 : LabVIEW 3.0.1, sous Windows NT
- 1994 : LabVIEW 3.1
- 1995 : LabVIEW 3.1.1, intégration de l'Application Builder
- 1996 : LabVIEW 4.0
- 1997 : LabVIEW 4.1
- 1998 : LabVIEW 5.0, multitâche, conteneurs ActiveX, assistant pour les cartes d'acquisition (DAQ) et assistant pour le contrôle d'instrument
- 1999 : LabVIEW 5.1, portage sous Linux; première version de LabVIEW temps réel
- 2000 : LabVIEW 6.0i, optimisation pour le partage d'interfaces sur internet, contrôles au look 3D, référence d'un contrôle
- 2001 : LabVIEW 6.1, optimisation et corrections
- 2003 : LabVIEW 7.0, VI Express, première version des toolkits pour FPGA, pour Palm OS et pour Windows Mobile
- 2004 : LabVIEW 7.1, traduit en Français, Allemand et Japonais
- 2005 : LabVIEW 8.0, Explorateur de projet, XControls, variables partagées
- 2006 : LabVIEW 8.20, programmation orientée objets
- 2007 : LabVIEW 8.5, première version du toolkit Statechart, gestion optimisée des machines multicœur
- 2008 : LabVIEW 8.6, nettoyage automatique des diagrammes, quick drop (déposé rapide), services Web
- 2009 : LabVIEW 2009 (9.0), extraits de VIs, récursivité native, nouvel éditeur d'icônes, boucles For parallélisables
- 2010 : LabVIEW 2010, Bibliothèques de projet empaquetées, Fonctions de flux réseau (Transfert de données en continu)
- 2011 : LabVIEW 2011
- 2012 : LabVIEW 2012
- 2013 : LabVIEW 2013
- 2014 : LabVIEW 2014
- 2015 : LabVIEW 2015
Un logiciel affecté à la programmation instrumentale
Les domaines d'application traditionnels de LabVIEW sont le contrôle/commande, la mesure, l'instrumentation ainsi que le test automatisé à partir d'un PC (acquisition de données, contrôle-commande, contrôle d'instruments de mesure, de dispositifs expérimentaux, de bancs de test). Cette vocation est consacrée par des bibliothèques de fonctions spécialisées (GPIB, VXI, PXI, cartes d'acquisition DAQ, traitement de données...), mais aussi par les particularités du langage G (parallélisme inhérent à l'exécution par flux de données) et de l'environnement de développement (pilotes de périphériques standards, assistants pour l'installation du matériel).
Le concept d'instrument virtuel qui a donné son nom à LabVIEW (Laboratory Virtual Instrument Engineering Workbench), se manifeste par la permanence d'une interface graphique pour chaque module (fonction) d'un programme. Les contrôles et les indicateurs de ce panneau avant constituent l'interface par laquelle le programme interagit avec l'utilisateur (lecture de commandes et de paramètres, affichage des résultats). Les fonctions de contrôle-commande de cartes ou d'instruments constituent l'interface par laquelle le programme interagit avec le montage.
Un programme LabVIEW permet donc d'automatiser un montage associant plusieurs appareils programmables, et réunit l'accès aux fonctionnalités de ce montage dans une interface utilisateur unique, véritable face avant d'un instrument virtuel.
Le langage G
Pour le développeur, un programme en langage G se présente comme un schéma, le diagramme, réunissant différentes icônes reliées par des fils de couleur. Chaque fil symbolise le passage d'une donnée depuis une source dont elle sort (comme résultat), vers une cible où elle entre (comme paramètre).
Les diagrammes du langage G ont donc une signification bien différente de celle des schémas électroniques qu'ils évoquent parfois. Dans un diagramme LabVIEW, la donnée ne transite dans le fil qu'au moment où elle est générée par son icône source. L'icône cible ne commencera son exécution que lorsque toutes ses données d'entrée seront disponibles. Ce modèle d'ordonnancement par flots de données détermine l'ordre d'exécution des traitements du programme. Une conséquence importante de cette règle est que les traitements qui n'échangent pas de données sont libres de s'exécuter en parallèle. Cette propriété du langage G facilite le développement d'applications multiprocessus, particulièrement intéressantes dans le cadre du contrôle de systèmes réactifs (embarqués ou non).
La conception des programmes en langage G conserve une approche essentiellement procédurale. Mariée à l'exécution par flots de données, cette approche procure de bons résultats dans le domaine de l'instrumentation. Elle est aussi la plus intuitive pour des ingénieurs ou des chercheurs souvent plus familiers des protocoles expérimentaux que des concepts informatiques.
Le support d'une conception orientée objet sous LabVIEW s'est développé de façon plutôt confidentielle avec tout d'abord le kit "GOOP" proposé par une société suédoise dès 1999, puis avec un support des notions de classe et d'héritage au sein même de l'environnement de développement 8.20, en 2006.
Évolution de LabVIEW
Créé par Jeff Kodosky et présenté pour la première fois sur Macintosh en 1986, LabVIEW a étendu son usage au PC et à divers systèmes d'exploitation (Microsoft Windows, UNIX, Linux, Mac OS X...), ainsi qu'aux PDA sous Palm OS et Pocket PC sous Windows Mobile. Il s'est également développé en direction des systèmes embarqués et temps réel, en s'ouvrant par exemple à la programmation de circuits intégrés (FPGA).
Toolkits
Il est possible d'étendre les fonctionnalités de LabVIEW en ajoutant des toolkits qui sont distribués séparément. La liste ci-dessous donne un inventaire de ses compléments :
- FPGA : pour la programmation de cartes FPGA
- myRIO : pour programmer sur matériel embarqué NI myRIO
- PDA : Module NI LabVIEW Mobile pour les matériels portables type PDA sousWindows Mobile et Palm OS
- Real Time : module pour la programmation temps-réel
- Applications embarquées : pour les DSP, ARM, ADI Blackfin
- Datalogging and Supervisory Control : pour le développement de superviseur pour les automates programmables industriels (Siemens, Télémécanique, Mitsubishi...)
- Touch Panel : gestion avancée des écrans tactiles
- Vision : traitement des images, reconnaissance de formes, OCR
- Statechart : génération de code à partir de diagrammes d'états
- Lego Mindstorms NXT : programmation des robots Mindstorms NXT de Lego sous LabVIEW
Alternatives à LabVIEW
En ce qui concerne le contrôle, le test et la mesure, on peut développer avec des logiciels tels que :
- LabWindows/CVI, de National Instruments, qui est un environnement de développement pour le langage C et qui offre les mêmes bibliothèques logicielles de fonctions.
- Measurement Studio, de National Instruments, qui est un ensemble de bibliothèques de fonctions et de contrôles graphiques pour Visual Studio, permettant ainsi de la programmation en C++, Visual Basic ou C sharp tout en profitant de fonctionnalités destinées au contrôle, test et mesure.
- TestStand et VeriStand, de National Instruments.
- Il est bien sûr possible de programmer les logiciels de test et mesure dans tous langages de programmation sans bénéficier des fonctions destinées à ce domaine. Le développement s'en trouvera plus long mais il pourra avoir le mérite d'être indépendant d'un produit commercial et fermé.
Notes et références
- ↑ Le flux de données dans LabVIEW
Voir aussi
Articles connexes
- TestStand
Liens externes
- Site web National Instrument
- (en) « LabVIEW Advanced Virtual Architects », sur lavag.org
- (fr) « Développez.com : Club des Développeurs et IT-Pro »
- Portail de la programmation informatique
- Portail du logiciel