FLASH INFORMATIQUE FI



20 ans de LabView




Christophe SALZMANN


LabVIEW a fêté ses 20 ans l’année passée. De 1984 à 1986, une petite équipe d’une dizaine de développeurs emmenée par Jeff Kodosky avait pour ambition de fournir aux scientifiques et aux ingénieurs un outil qui serait l’équivalent d’un tableur pour les analystes financiers. La première version de cet outil, nommé LabVIEW, fonctionnait sur un MacPlus avec 1 MB de RAM. Depuis deux décennies, les principes de base pour la programmation d’instruments virtuels (VI) n’ont pas fondamentalement changé : la programmation se fait toujours de manière graphique, en utilisant la métaphore du front panel - diagram représentant la face avant d’un appareil et les fonctionnalités de celui-ci. L’utilisateur dessine son interface en plaçant des objets tels que des boutons et des cadrans sur la face avant et programme son instrument virtuel en connectant les icônes du diagramme (fig. 1).

JPEG - 15.4 ko
fig. 1
Les fronts panels et diagrams de LabVIEW 1.0 et de LabVIEW 8

Au fur et à mesure des mises à jour, un grand nombre d’améliorations a été apporté à LabVIEW. À commencer par le nombre de plates-formes supportées qui n’a cessé d’augmenter, du traditionnel PC/Mac aux processeurs embarqués et PDA, en passant par les FPGA et les solutions temps-réel. Toutes ces plates-formes peuvent être programmées depuis LabVIEW sans avoir à réapprendre un nouvel environnement ou un nouveau langage de programmation. Le même VI fonctionne en général de manière transparente d’une plate-forme à l’autre, avec toutefois les restrictions liées au matériel. Une version LabVIEW a également été adaptée pour permettre aux plus jeunes de programmer les robots LEGO® NXT (fig. 2).

JPEG - 24.8 ko
fig. 2
Une version adaptée de LabVIEW pour programmer le robot LEGO® NXT

Afin d’aider les utilisateurs novices dans la programmation de LabVIEW, National Instruments propose des wizards pour guider l’utilisateur dans ses choix initiaux, LabVIEW générant de manière automatique un squelette de programme que l’utilisateur viendra adapter à sa guise. Par exemple, le wizard Vision Builder pour le traitement d’images permet à un utilisateur d’appliquer une succession d’opérations (filtre, seuil, blob, OCR, etc.) à une image pour ensuite générer un instrument virtuel qui sera employé de manière répétitive ou intégré à une autre application. Il est également possible de concevoir le squelette d’un VI à l’aide d’outils permettant de définir des machines d’états (fig. 3a) ou à l’aide d’un modèle UML pour générer du code orienté objet (fig. 3b).

JPEG - 17.8 ko
fig. 3
à gauche : a) LabVIEW state diagram ; à droite : b) model UML

LabVIEW propose en outre un environnement de développement des plus complets. Un gestionnaire de projet regroupe tous les VIs d’une application, qu’ils soient présents sur la machine locale ou sur une machine distante. Ce gestionnaire permet également de gérer les dépendances lors du déploiement sur des plates-formes différentes. La gestion professionnelle de projets ne serait pas complète sans outils de gestions de versions et des outils d’audit de code. LabVIEW s’interface avec les principaux gestionnaires de versions. Il propose des outils pour visualiser les modifications faites à un VI (fig. 4a) ainsi que des outils pour analyser le contenu des VIs de manière automatique (fig. 4b).

JPEG - 24 ko
fig. 4
à gauche : a) diff tool et à droite : b) VI analyzer
Il existe également un mode debug où l’exécution d’un VI peut se faire pas à pas avec une visualisation graphique des flux de donnée au travers des connexions. Des sondes permettent de visualiser le contenu d’une connexion. Des conditions d’arrêts peuvent être associées aux sondes.
D’un outil destiné à l’acquisition et au traitement de données, LabVIEW a évolué vers un outil permettant de faire de la simulation et de la commande de processus. Des outils de simulation sont présents dans LabVIEW depuis plus d’une décennie. Cependant, les solutions proposées n’étaient pas forcément aussi conviviales qu’espéré, surtout au niveau de l’intégration de codes de simulation existants, souvent écrits en Matlab. Cette difficulté a été surmontée avec l’arrivée du MathScript Node qui permet l’import, l’export et l’exécution de manière complètement transparente de code Matlab/Scilab directement dans un diagramme LabVIEW (fig. 5). Le module MathScript peut également être employé de manière interactive.


JPEG - 23.7 ko
fig. 5
Le MathScript node contenant du code compatible Matlab
Relevons qu’une solution similaire est proposée pour l’intégration de scripts Sysquake (voir article Sysquake, 3D et LaTeX 4) dans LabVIEW (fig. 6).


JPEG - 11.4 ko
fig. 6
Le Sysquake Node permet l’exécution de scripts SQ
Il existe plusieurs solutions pour implémenter un algorithme de commande avec LabVIEW. La première est l’utilisation d’un PC/Mac et d’une carte d’acquisition. Dans cette configuration, les performances obtenues dépendront de l’OS utilisé. L’introduction des structures Timed Loop permet d’attribuer une priorité spécifique à certaines parties d’un VI et d’obtenir ainsi une meilleure régularité dans l’exécution de l’algorithme implanté (fig. 7).
JPEG - 13.3 ko
fig. 7
Les structure Timed Loops permettant de spécifier des fréquences d’horloge et/ou d’assigner des core pour l’exécution d’un VI
Dans le cas où la commande temps-réel requiert une exécution plus régulière et/ou plus rapide, LabVIEW peut être utilisé sur du matériel dédié (ex. PXI) fourni avec un OS supportant les contraintes temps-réel (RTOS). L’exécution des codes temps-réel peut être suivie à la trace à l’aide des outils fournis (fig. 8).

JPEG - 11.8 ko
fig. 8
LabVIEW RT trace toolkit

Le module LabVIEW FPGA offre des performances accrues au niveau de la vitesse d’exécution et du déterminisme. Cette extension génère à partir d’un VI du code VHDL qui sera ensuite compilé puis exécuté directement sur une FPGA, ceci de manière automatique. Il est par exemple possible de créer un VI pour interfacer les signaux d’un encodeur en quadrature afin de déterminer la position de son axe (fig. 9). Il existe cependant un inconvénient qui est sur le point d’être résolu : les calculs se font sur des entiers [3]. Il faut par conséquent réapprendre les astuces développées au siècle dernier. De manière similaire à la génération de codes VHDL pour FPGA, LabVIEW est capable de générer du code pour d’autres types de processeurs embarqués.

JPEG - 14.4 ko
fig. 9
Code LabVIEW FPGA pour calculer une position absolue à partir des signaux d’un encodeur incrémental

L’un des points forts de LabVIEW est la simplicité avec laquelle du code parallèle peut être écrit. LabVIEW supporte l’exécution de code multitâche depuis la version 1. La gestion des tâches parallèles était initialement faite de manière coopérative, avant de devenir, avec l’aide de l’OS, préemptive puis multithreaded. L’introduction de processeurs multicores permet une exécution parallèle au niveau du matériel. LabVIEW tire pleinement avantage des multiples cores présents, dans la mesure où le VI peut être découpé en sous-ensembles indépendants, chaque sous-ensemble s’exécutant de manière concurrente sur un core. Il faudra donc aider LabVIEW dans sa tâche en remaniant le code (fig. 10). Marc Page propose sur son blog une solution pour généraliser l’exécution parallèle de tâches identiques sur un jeu de données différente.

JPEG - 14.8 ko
fig. 10
Exemple de modification d’un VI pour processeurs multicores

Chaque nouvelle version de LabVIEW apporte aussi son lot de petites nouveautés. J’en ai sélectionné deux à titre d’exemple. La première est la possibilité de croiser les entrées d’une fonction en cliquant sur les entrées tout en maintenant la touche alt enfoncée (fig. 11).
JPEG - 27.9 ko
fig. 11
Alt-click inverser les entrées d’une fonction
Il faut préalablement avoir sélectionné l’outil bobine (wire). La deuxième nouveauté est la possibilité d’ajouter une condition d’arrêt dans les boucles for (fig. 12).

JPEG - 16 ko
fig. 12
Condition d’arrêt pour les boucles for

Les ressources relatives à LabVIEW et aux produits de National Instruments sont très nombreuses, le point de départ étant le site www.ni.com pour des informations sur les produits et le site zone.ni.com pour la partie développement. Il existe également plusieurs sites d’utilisateurs, des forums, des blogs ainsi qu’une liste de distribution. Une sélection de liens se trouve sur le site labview.epfl.ch. Pour finir, la version 8.5 de LabVIEW devrait être disponible sur Distrilog à l’heure où vous lisez ces lignes.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.