I. INTRODUCTION▲
LabVIEW est un environnement de développement complet, graphique, compilé et particulièrement bien adapté au domaine de l'acquisition et de la mesure. Son approche totalement graphique offre une souplesse et une dimension intuitive inégalée. Comparativement aux langages textuels il offre la même puissance de programmation mais sans le côté abstrait et complexe lié à la syntaxe.
Orienté tests et mesures, il dispose de nombreuses fonctions permettant de piloter facilement des cartes d'acquisition et autres instruments, mais aussi de filtrer, d'analyser et de présenter les données. Ce langage est également appelé code G. Le code est représenté par un schéma composé de fonctions, de structures et de fils qui propagent les données. L'approche visuelle, l'interface entre le code et le développeur s'opposent sur la forme et la philosophie aux langages textuels, comme le C. LabVIEW est redoutable de puissance et n'a rien à envier aux autres langages.
Une des différences fondamentales de LabVIEW est que ce langage suit un modèle de flux de données, et non de flux d'instructions. Cela signifie que pour un langage textuel ce sont les instructions qui ont la priorité, alors qu'avec LabVIEW ce sont les données. Une fonction s'exécutera donc uniquement si elle dispose à ses entrées de toutes les données dont elle a besoin. Lorsqu'un langage classique est ainsi séquentiel, LabVIEW est naturellement prédisposé au parallélisme. Ce qui augmente encore sa puissance et la rapidité d'exécution du code.

En lisant ce livre, vous pourriez avoir le sentiment que LabVIEW est un outil uniquement dédié à l'acquisition et à la mesure. Certes, il propose un environnement qui facilite grandement cela, et les auteurs de ce livre ont fait délibérément le choix de mettre cette facilité à l'honneur. Mais ne vous y trompez pas, LabVIEW est infiniment plus que cela. C'est un langage à part entière manipulant une grande variété de concepts tels que le flux de données, la programmation objet, la gestion évènementielle, l'encapsulation, la modularité, le typage des données, etc. Il peut vous permettre d'implémenter n'importe quel type d'application.
En l'utilisant vous pourrez mesurer les données d'un capteur relié à une carte d'acquisition, analyser les informations provenant d'un instrument connecté par une liaison série, réaliser un rapport de test sous Microsoft Office, implémenter un PID sur une cible FPGA, contrôler précisément un procédé physique complexe dans une tâche déterministe sur une cible Temps Réel, trouver par le calcul matricielle la distance de Mahalanobis ... mais également solutionner un Rubik's cube, un Sudoku et même jouer aux échecs (un exemple de jeu d'échecs implémenté en langage G est abordé dans ce livre).
Ce langage s'adresse à tous les techniciens ou ingénieurs qui désirent développer une application de mesures, de tests, de supervision ou de contrôle/commande avec une interface utilisateur de très grande interactivité. Mais plus généralement à tous les développeurs qui désirent utiliser un langage intuitif, puissant et ouvert sur la totalité du génie logiciel.
I-A. LabVIEW dans le monde de l'instrumentation▲
LabVIEW est un des premiers langages de programmation graphique destiné au développement d'applications d'instrumentation. Un logiciel d'instrumentation pourrait être défini comme un programme permettant de contrôler depuis un ordinateur, un système allant du capteur à la chaine d'acquisition ou de commande jusqu'à l'édition du rapport final. Couplé à des cartes d'entrées/sorties, il permet de gérer des flux d'informations numériques ou analogiques et de créer ou de simuler des instruments de mesures (oscilloscope, compteur, multimètre, etc.). Le temps nécessaire à l'assemblage des composants de ce type de système est négligeable par rapport à celui nécessaire à sa programmation dans un langage classique (C, Pascal, Ada, etc.). Les interfaces utilisateurs, développées avec ces langages, sont le plus souvent obscures et incompréhensibles. Les utilisateurs disposent avec LabVIEW d'un puissant outil intégré d'acquisition, d'analyse et de présentation des données, une solution qui entraîne un gain notable de productivité comparable à celui obtenu par l'introduction des tableurs dans les logiciels financiers. Pour cela, le langage utilise toute la convivialité des interfaces interactives des ordinateurs actuels en fournissant des objets proches graphiquement des objets réels (voyants, curseurs, interrupteurs, boutons, graphes, etc.) mais aussi des commandes systèmes (pour une représentation plus standard) ainsi que des outils familiers et simples d'utilisation pour la programmation (structures de programmation, fonctions arithmétiques, fonctions logiques, comparateurs, etc.).
I-B. Organisation du livre▲
Cet ouvrage est divisé en six chapitres.
Le premier présente les concepts et l'intérêt de la programmation graphique. Le flux de données qui est une notion fondamentale à comprendre sous LabVIEW est définit, ainsi que les éléments nécessaires à sa propagation et son exploitation.
Le chapitre deux permet de décrire les éléments de base de l'environnement de programmation, illustrés avec des exemples simples. Le lecteur apprend à utiliser les objets pour réaliser une interface utilisateur mais aussi les structures de programmation et les bibliothèques de fonctions. Le langage de développement graphique LabVIEW est intuitif, mais cela ne doit pas faire oublier que, comme avec tous les langages, il faut respecter des règles.
Le chapitre trois aborde des aspects plus avancés de l'utilisation de l'environnement en définissant des techniques permettant au code d'être maintenable, évolutif, performant et compréhensible par d'autres utilisateurs. Il permet de décrire par des exemples concrets et détaillés les structures de programme à utiliser afin de permettre au lecteur de réaliser une application. L'utilisateur sera capable à la suite de ce chapitre de préparer la certification LabVIEW développeur.
Les trois derniers chapitres abordent les capacités spécifiques de LabVIEW pour l'acquisition, l'analyse et la présentation des données. Il est le langage de développement le plus efficace pour réaliser un tel système. Dans le chapitre quatre, le lecteur apprendra à construire un système de mesure ou de génération de signal, à base de carte d'acquisition (DAQ), d'instrument (IVI, VISA), de système Temps Réel (RT) ou de FPGA. Différentes méthodes de connexion seront envisagées (Série, GPIB, Ethernet, PCI, etc.), ainsi que la réalisation de driver dans les règles de l'art. Après cette collecte des données, dans le chapitre cinq l'utilisateur pourra à partir de bibliothèques intégrées réaliser un traitement du signal, une analyse mathématique ou un filtrage de l'information. Dans le dernier chapitre, nous illustrerons comment archiver et échanger les données ainsi traitées. Nous verrons comment finaliser son développement, en générant un exécutable autonome et en réalisant un rapport professionnel sous Microsoft Office, pour présenter ses données.
Ce livre n'a pas pour but d'être un ouvrage exhaustif. En effet il existe la documentation en ligne sur le site de National Instruments, également fournie avec le logiciel, qui est une description complète de l'ensemble des possibilités de LabVIEW. Mais cet ouvrage permet à son lecteur de s'initier aux bonnes règles de développement du logiciel LabVIEW, de comprendre et de les mettre rapidement en œuvre par des exemples concerts. Il permet aussi d'appréhender différents domaines d'applications du langage pour l'acquisition, l'analyse et la présentation des données.
I-C. Virtual Instrument (VI) ou Instrument virtuel sous LabVIEW▲
Un logiciel de mesure est un instrument de mesure qui est contrôlé depuis un ordinateur à la place des boutons sur sa face-avant.
Cette logique conduit à la notion d'instrument virtuel : instrument réel contrôlé depuis un ordinateur.
Un instrument virtuel est donc un programme qui présente une interface sous forme graphique (IHM) pour l'apparenter à un instrument physique. Les utilisateurs manipulent alors des instruments depuis l'ordinateur (virtuels) comme s'il s'agissait d'instruments physiques sur « étagère » (réels). Comme historiquement l'environnement de développement (IDE) est orienté « instrumentation », les inventeurs de LabVIEW ont donné l'extension .vi (Virtual Instrument : VI) au programme développé avec cette environnement.
Un programme ou VI, développé dans l'environnement LabVIEW, se compose principalement de deux éléments étroitement associés et regroupés sous le même nom « nom_application.vi » (l'extension .vi permet une reconnaissance immédiate par l'environnement LabVIEW). Ainsi nous avons :
· La « Face-avant » (Front panel) qui est l'interface utilisateur du programme au sens génie logiciel : définition des entrées/sorties de données accessibles par l'utilisateur du programme (figures 1.4, 1.5 et 1.18). Cette notion sera reprise en détail dans le chapitre 3.
· Le « Diagramme » (diagram) qui est le programme de l'application ou code source . Il écrit sous la forme d'un diagramme flux de données en langage G : ensemble des icônes et des liaisons entre ces icônes utilisées (figure 1.19). Cette partie de l'application est ce que l'on appelle le code source par opposition à l'interface utilisateur.
II. Programmation avancée▲
II-A. Méthodologie pour trouver de l'aide sous LabVIEW▲
Lorsqu'un développeur débute, il est normal qu'il se pose de nombreuses questions et qu'il ait besoin d'aide. S'il est le seul, comme c'est souvent le cas, il peut rapidement se trouver dans une impasse et perdre beaucoup de temps. Il est très important de connaître les bonnes méthodologies à appliquer pour trouver les bonnes réponses.
II-A-1. Recherche dans l'Aide Contextuelle▲
Sur une fonction de la palette, le moyen le plus simple est d'utiliser la fenêtre d'aide Contextuelle : menu Aide, puis Visualiser l'aide ou Ctrl-H : si cette aide est active, il suffit de placer le curseur sur un élément pour avoir une aide simplifiée. Dans la fenêtre, il est possible d'accéder à une aide plus détaillée en cliquant sur le lien hypertexte.
II-A-2. Recherche dans l'Aide LabVIEW▲
Pour vous procurer des informations sur les concepts de programmation LabVIEW, des instructions détaillées : Sélectionnez Aide puis Rechercher dans l'Aide LabVIEW.
II-A-3. Recherche d'exemples▲
Pour développer une nouvelle fonction, vous pouvez modifier un VI d'exemple pour l'adapter à votre application : Sélectionnez Aide puis Recherche d'exemples pour parcourir des centaines de VIs d'exemple (chapitre 4).
II-A-4. La communauté travaille pour vous▲
Internet et surtout le site de National Instruments, www.ni.com, regroupent des liens vers des cours et formations, solutions utilisateurs (voir paragraphe 6.6), VIs d'exemple, support technique, groupes utilisateurs et forum. Il est très riche en contenu et constitue une réelle source d'inspiration. À noter qu'il existe en langue française :
- Deux forums de discussions pour NI LabVIEW et autres sujets, avec des experts qui répondent rapidement à toutes les questions. Les forums francophones sont d'une très grande qualité. Pour les trouver, le plus simple est de faire une recherche sur Internet avec les mots-clés : « Discussions au sujet de NI LabVIEW » ;
- Une communauté très dynamique qui organise des rencontres développeurs pour le partage de techniques, d'informations et de convivialité.
II-A-5. Contacter un partenaire certifié du « Programme Alliance »▲
Pour une expertise, un besoin ponctuel ou pour sous-traiter un développement, nous vous conseillons de faire appel aux partenaires National Instruments du Programme Alliance. Ces partenaires ont reçu, après évaluation, l'agrément certifiant de leurs compétences en matière de programmation et de connaissances générales sur le logiciel LabVIEW. La liste est disponible sur le site de National Instruments. Vous aurez ainsi accès à des professionnels disposant des niveaux Certifié LabVIEW Développeur (CLD), voire Certifié LabVIEW Architecte (CLA). Ils seront les garants de la réussite de vos projets, avec un développement dans les règles de l'art. Pour les trouver, le plus simple est de faire une recherche sur Internet avec les mots-clés « partenaire alliance national instruments ».
II-B. La Gestion des erreurs sous LabVIEW▲
II-B-1. Définition▲
La gestion de l'erreur n'est jamais une option mais une obligation. Elle consiste à anticiper, détecter et résoudre les mises en garde et les erreurs. Sans cette gestion, le programme peut avoir un comportement incohérent, mais sans pouvoir en identifier la cause. Par exemple, sans gestion d'erreur, un programme pourrait réaliser une acquisition sur un instrument éteint, et sauvegarder sans problème les données sur un disque dur réseau qui n'existe pas. Un miracle ? Non un calvaire.
La structure de la donnée « erreur » au niveau de LabVIEW est un cluster formé des trois éléments suivants (figure 3.22) :
- Etat : un booléen qui est à l'état « Vrai » si une erreur s'est produite ;
- Code, un entier de 32 bits, qui contient le numéro de l'erreur ou « 0 » s'il n'y pas d'erreur. Un code d'erreur différent de zéro avec un état « Faux » signale une mise en garde. Une mise en garde n'empêche pas le code de tourner, mais LabVIEW attire votre attention sur un point qu'il lui semble anormal.
- Source : une chaîne de caractères identifiant l'endroit où l'erreur s'est produite.
II-B-2. Comprendre l'origine et la raison de l'erreur▲
En code source, pour résoudre le problème, il est possible de faire un clic droit sur le bord du cluster d'erreur et de sélectionner Expliquer l'erreur (figure 3.23). Une boîte de dialogue de gestion de l'erreur va s'ouvrir permettant de :
- Expliquer l'origine en visualisant le nom du VI qui a généré l'erreur, dans notre exemple « Mon Code Acquisition.vi » ;
- Proposer une ou des raisons possibles par rapport au code d'erreur, dans notre exemple LabVIEW propose la raison suivante : « La tâche spécifiée n'est pas valide ou n'existe pas », ce qui est le cas.
- L'origine et la cause permettent en général de comprendre le problème et de le résoudre. Si cela n'est pas le cas, il faut utiliser les outils de débogage, comme les sondes et les points d'arrêts.
II-B-3. Gestion dans les VIs▲
Tous les VIs posséderont donc obligatoirement un « cluster d'entrée erreur » et un « cluster de sortie erreur ». Une exception peut être faite concernant les VIs qui ne génèrent aucune erreur. Par exemple, un VI qui réalise le calcul « a²+b² ». Ce calcul est réalisé par des fonctions natives de LabVIEW qui ne génère pas d'erreur, le VI qui réalise ce code ne générera donc pas d'erreur. Cependant, même dans ce cas, il est intéressant d'ajouter à ce VI une entrée et une sortie « cluster d'erreur ». Cette entrée et cette sortie seront directement reliées entre elles. Ce « dispositif » permettra de positionner le VI dans le flux d'erreur global et donc de séquencer le code de la bonne façon.
Plus d'informations sur la gestion des erreurs avec LabVIEW dans le livre.
II-C. Création d'un objet personnalisé : exemple d'un GIF animé▲
Exemple : faire un GIF animé sous LabVIEW
Pour un aspect plus ergonomique, il est possible d'importer des images, par exemple en utilisant un menu déroulant d'images (picture Ring). Il est conseillé d'utiliser la fonction Édition → Importer une image dans le presse-papier afin de ne pas dégrader l'image, puis de sélectionner Ajouter un élément après par un clic droit sur le contrôle. L'état à afficher est disponible via la valeur de l'indicateur (figure 3.39).
Il est également possible d'ajouter une image animée pour signaler le déroulement d'une action en cours sans avoir besoin de saisir du code (figure 3.40). Par exemple, pour afficher une mise à jour, nous allons insérer un Gif animé dans l'état « vrai » d'un bouton, et aucune image dans l'état « faux ».
Cela permettra de visualiser cette mise à jour en affichant l'état « vrai » du bouton. La fin de la mise à jour correspondra à l'état « faux » du même bouton.
Après avoir réalisé ou téléchargé une image libre de droit au format Gif animé, positionnez une Commande de type Classique → Booléen → Bouton carré plat de la palette sur la « Face-avant ». Sélectionnez Personnaliser la commande (Customize Control…) du menu Édition (Edit). La fenêtre de l'éditeur de commande apparaît. Sélectionnez dans le menu : Édition → Importer une image dans le presse-papier afin de ne pas dégrader l'image, et sélectionnez l'image animée. Faites un clic droit sur le contrôle et sélectionnez Importer une image du presse-papiers → Vrai, nous avons modifié l'image du bouton pour l'état « Vrai ».
L'utilisation d'images et de couleurs permet de mieux respecter les critères subjectifs comme les conventions et la culture.
Plus d'informations sur la personnalisation des objets avec LabVIEW dans le livre.
II-D. Les 10 commandements du développeur LabVIEW▲
Le développeur LabVIEW devra suivre la synthèse des commandements suivants pour s'assurer que son code est conforme aux règles de développement.
1. Sur un seul écran ton code tiendra.
2. De gauche à droite tu coderas.
3. Les fils tu ne croiseras pas.
4. La gestion de l'erreur tu ne transgressas pas.
5. Le connecteur de type 4x4 toujours tu utiliseras.
6. Les contrôles, indicateurs et sous-VIs judicieux tu nommeras.
7. Le flux de données tu respecteras.
8. Ton code toujours et immédiatement tu documenteras.
9. Des sous-VIs tu feras.
10. La structure séquence empilée tu refuseras.
Plus d'informations sur les règles de style avec LabVIEW dans le livre.
II-E. Gestion des données : variable globale fonctionnelle▲
II-E-1. Indicateur VS Locale VS Globale VS Nœud de propriété▲
TODO
II-E-2. 3.3.2 Variable Globale Fonctionnelle ou VGF (FGV)▲
II-E-2-a. Histoire▲
Ce n'est qu'à partir de la version 2 que l'équipe de développement du logiciel LabVIEW a défini que la valeur d'un registre à décalage non initialisé conserverait sa valeur précédente. L'autre alternative aurait été qu'elle reprenne sa valeur par défaut. À cette époque il n'y avait pas de globale « native » dans le logiciel. Cette technique s'est logiquement imposée comme la méthode pour partager des données dans une application sous le nom de « Globale LV2 », pour LabVIEW version 2, ou « Variable Globale Fonctionnelle (VGF) ». Mais son appellation la plus communément répandue est son nom anglais Functional Global Variable (FGV). Même avec l'arrivée des globales dans la version 3 de LabVIEW, cette méthode de développement a été conservée car elle permet d'apporter des solutions aux problèmes des locales et globales que nous avons exposés au paragraphe précédent.
Pour reprendre la définition, une VGF (FGV) est composée :
- D'une boucle While, avec la condition d'arrêt qui est une constante « vraie » pour qu'elle ne s'exécute qu'une seule fois ;
- D'un registre à décalage non initialisé, qui mémorise la valeur précédente de la donnée ;
- D'une structure « condition », avec 2 états « Écriture » et « Lecture » ;
- D'une commande de type énumération (ou énum), avec 2 valeurs « Écriture » et « Lecture ».
II-E-2-b. Principe et bénéfice▲
Une FGV est donc un registre à décalage non initialisé d'un VI non réentrant, qui permet de mémoriser une valeur dans le registre lors d'une commande « Écriture » (noté souvent « Set »), et de la retourner sur un « Lecture » (noté souvent « Get »), comme illustré à la figure 3.51.

Les bénéfices apportés par cette technique
- Une meilleure gestion des données en mémoire car le stockage de l'information est unique, soit dans le registre à décalage du VI. Il supprime ainsi toutes les copies mémoires ou buffer, engendrées par la présence des globales et/ou locales. Cette méthode est d'un grand intérêt, surtout pour des structures de données complexes comme des tableaux de cluster.
- Possibilité d'ajouter une gestion de l'erreur, via le cluster d'erreur standard de LabVIEW et une structure condition. Il est ainsi possible d'éviter toute opération sur la FGV si une erreur est présente à son entrée. Il est à noter que cela est optionnel, mais conseillé.
Plus d'informations sur la gestion des données sous LabVIEW dans le livre.
II-F. Structure de programme (FrameWork) la machine d'états (States Machine)▲
II-F-1. Les règles d'architecture pour les applications et les modèles de conceptions les plus utilisées▲
Nous venons de voir que la gestion des données met en place des techniques de programmation particulières, type globale fonctionnelle ou Moteur d'action, afin d'optimiser la gestion mémoire, le flux de données et surtout la protection des ressources. Pour faire un programme, nous allons devoir assembler les sous-fonctions, gérer l'erreur, ajouter des structures, et autres. Que ce soit pour une boîte de dialogue ou un programme d'acquisition, il y a des techniques à connaître spécifiques au logiciel LabVIEW.
Ce chapitre aborde les modèles de conception, en anglais design pattern. Il s'agit de techniques reconnues et éprouvées comme étant les bonnes façons de résoudre des problèmes donnés. Ce sont des solutions standard et indépendantes du logiciel de développement. La plate-forme LabVIEW fournit des exemples en code G des conceptions les plus courantes. Elles sont à connaître pour permettre une lecture plus rapide du code. Les respecter permettra d'obtenir une implémentation plus rapide, standard, évolutive et maintenable par d'autres développeurs.
II-F-2. Ensemble de VIs simples▲
TODO
II-F-3. général▲
TODO
II-F-4. Machine à états▲
II-F-4-a. Définition générale▲
Le modèle « Machine à états », appelé machine de Moore, est basé sur l'existence d'un diagramme états-transitions. Chaque section de code détermine la « transition » suivante et donc l'état suivant à réaliser. Ce modèle permet un découpage et un séquençage clair des tâches à effectuer conformément au diagramme des états-transitions.
Il facilite l'insertion de nouvelles sections de code (état) ou le changement de l'ordre d'exécution des sections, le tout sans devoir modifier considérablement la structure de l'application. C'est un modèle fondamental du développement logiciel, surtout en LabVIEW.
II-F-4-b. Transcription en LabVIEW▲
Nous allons reprendre notre exemple précédent qui réalise une série de mesures de température, à la fréquence d'un point toutes les 5 secondes. Mais contrairement à l'exemple précédent nous voulons que notre application réagisse en 125 ms à l'appui sur le bouton Stop, pour arrêter le programme. Nous voulons donc traduire le diagramme fonctionnel de la figure 3.61.
Figure 3.61 - Diagramme fonctionnel du programme de pilotage de l'instrument de mesure avec une mesure toutes les 5 secondes.
Il existe plusieurs versions pour traduire ce concept en langage G, nous les verrons au fur et à mesure dans ce chapitre.
Elle est composée par :
1. Une boucle While, pour permettre l'exécution en continu du code ;
2. Une structure Condition : chacun de ses états va reprendre par complète analogie un état du diagramme fonctionnel (figure 3.61) : « Démarrage ; Attente ; Mesure Arrêter ».
3. La liste des états est représentée par les valeurs d'une énumération, qui sera déclarée comme une définition de type. Ce qui signifie :
Ø Définition de type, la mise à jour du modèle sera répercutée sur toutes ses instances dans le code. Donc des états pourront être rapidement ajoutés et appliqués partout dans le code, par exemple dans des constantes (figure 3.17). Pour éditer la définition de type, faites un clic droit sur l'énumération et sélectionnez Ouvrir la déf. de type.
Ø La commande de type énumération, ou énum, lorsqu'elle est câblée au terminal de sélection d'une structure Condition, fait correspondre les conditions à la liste des éléments de l'énum (ou énumération). Le code est donc auto-décrit. Si un état n'est pas présent dans la structure, le code ne sera pas exécutable.
4. Un registre à décalage, qui permet d'implémenter « chaque état définit l'état suivant ». Il est câblé au terminal de sélection de la structure condition, soit le symbole « ? ». À chaque itération de la boucle While, le contenu du registre à décalage définira donc, via la structure condition, l'état courant à exécuter. À la fin de l'exécution de chaque état, une constante de l'énumération d'états est câblée sur la sortie du registre à décalage, définissant ainsi le prochain état à exécuter.
II-F-4-c. Producteur/consommateur▲
TODO
II-F-4-d. Boite de dialogue ou interface utilisateur▲
TODO
II-F-4-e. Bien démarrer un projet LabVIEW avec le GMF (QMH)▲
Plus d'informations sur les modèles de conceptions avec LabVIEW dans le livre, mais aussi la présentation d'un modèle professionnel de projet « prêt à l'emploi » de type producteur consommateur avec structure événementielle, dont le code est disponible gratuitement en téléchargement.
III. Construire et piloter un système de mesure (DAQmx & VISA)▲
III-A. Comprendre les architectures logiciels des instruments d'E/S ▲
Les architectures des instruments E/S (figure 4.8) et des cartes DAQ (figure 4.7) font apparaître deux éléments communs que sont le driver et le logiciel d'application. Aucun système de mesure par ordinateur n'est complet sans logiciel. L'application est le code réalisé pour permettre à l'utilisateur de piloter la chaîne d'instrumentation, analyser, sauvegarder et présenter les données.
Le driver est le programme qui fait le lien entre le logiciel d'application et le matériel. Il est chargé de traduire les commandes LabVIEW pour les rendre compréhensibles par la carte ou l'instrument. Il facilite le travail des développeurs en évitant une programmation fastidieuse et spécifique dans les registres bas niveau de la carte. Voici quelques exemples.
- Les cartes d'acquisition et génération de signaux : National Instruments fournit un driver unique qui est compatible avec toutes les cartes, qui est NI-DAQmx. Nous détaillerons ces fonctionnalités dans le chapitre 4.2.
- Les instruments autonomes sur table : nous utiliserons le driver VISA ou IVI. Nous détaillerons ses fonctionnalités dans le chapitre 4.3.
- Les instruments modulaires : nous utiliserons le driver VISA ou IVI ou un driver spécifique livré par le fabricant avec le matériel.
Après avoir analysé l'ensemble de la chaîne d'instrumentation physique, il reste un élément à sélectionner : l'ordinateur et sa cible d'exécution. En effet, prenons l'exemple d'une machine de surveillance d'un laser effectuant une intervention chirurgicale sur la rétine d'un œil humain. Personne n'acceptera une telle intervention si l'ordinateur fonctionne sous un système d'exploitation Windows, alors que l'antivirus réalise une mise à jour. La mise à jour n'est bien évidemment qu'un exemple et permet de mettre en évidence que le système est susceptible d'être interrompu à tout moment. Un arrêt d'urgence ne peut pas être géré par un système « standard ». Pas plus qu'un système de surveillance réalisant une analyse pendant plusieurs mois et qui ne devra pas être redémarré par le service informatique de l'entreprise.
III-B. Pilotage des cartes d'acquisition et de génération de signaux de National Instruments avec le driver NI-DAQmx.▲
Les VIs NI-DAQmx dans LabVIEW
Le driver NI-DAQmx installe sous LabVIEW une API, Application Programming Interface, qui est une bibliothèque de fonctions, constituée de VIs et de propriétés. Cette API va permettre d'utiliser les fonctions du driver. La palette est disponible sous E/S de mesures → DAQmx (figure 4.12). Elle est très intuitive et contient un nombre réduit de VIs qui correspondent aux fonctionnalités principales, approximativement 90 % des besoins : lecture, écriture, cadencement, déclenchement. Ce sont les mêmes fonctions qui sont utilisées pour les signaux analogiques et numériques. Pour les fonctionnalités avancées, il faut utiliser les propriétés, mais nous n'en aurons pas besoin dans les exemples du livre.

La bibliothèque a un nombre limité de VIs car ils sont polymorphes, c'est-à-dire qu'ils s'adaptent à des types de données différents. C'est un ensemble de VIs qui a le même modèle de connecteur. Par exemple, il n'y a qu'une seule fonction « Lecture DAQmx » car elle s'adapte à la lecture des données de signaux de type analogique, numérique ou compteur, pour une voie unique ou multiple, en retournant un échantillon unique ou multiple, sous la forme d'un nombre ou d'une Waveform. Cette liste est accessible en cliquant dans le menu sous l'icône du VI (figure 4.13). Quelques exemples des possibilités des VIs LabVIEW DAQmx pour les fonctions lecture et écriture sont présentés dans les tableaux 4.6 et 4.7. Les données E/S sont soit une valeur scalaire, un tableau 1D, un tableau 2D, ou une Waveform.

III-C. Utilisation de Measurement & Automation Explorer (MAX), (configurer, créer, tester et diagnostiquer le matériel) ▲
Measurement & Automation Explorer, abréviation MAX, est un logiciel complémentaire qui s'installe avec le driver NI-DAQmx. Il va permettre de configurer, créer, tester et diagnostiquer l'ensemble du système d'entrées/sorties de données (figure 4.19). Il donne accès à l'ensemble du matériel et logiciels de National Instruments. Son utilisation est donc beaucoup plus large que celle décrite dans ce chapitre.
L'accès à ce logiciel de configuration se fait soit directement par l'icône du logiciel, soit dans une fenêtre LabVIEW à partir du menu Outils, puis Measurement & Automation Explorer (figure 4.18).

L'utilitaire présente sous forme d'une arborescence les éléments de configuration de votre ordinateur. Lors de la sélection d'un élément de l'arborescence, la partie droite de l'utilitaire présente des panneaux additionnels de configuration et/ou d'information.
Les éléments qui nous intéressent ici sont :
- Périphériques et interface : le matériel connecté à votre ordinateur est listé sous cette rubrique ;
- Voisinage de données : les tâches et voies virtuelles DAQmx configurées sur cet ordinateur ;
- Échelles : les échelles DAQmx qui sont configurées sur cet ordinateur.
Définitions paramètres DAQmx sous MAX
- Une voie physique est un terminal ou broche sur lequel vous pouvez mesurer ou générer un signal analogique ou numérique. Chaque voie physique a un nom unique.
- Une voie virtuelle est un ensemble de paramètres qui peuvent inclure un nom, une voie physique, des connexions d'entrée, le type de mesure ou de génération et des informations de mise à l'échelle.
- Une tâche se compose d'un ensemble d'une ou de plusieurs voies virtuelles et comprend le cadencement, le déclenchement et d'autres propriétés. Une tâche représente la mesure ou la génération que vous voulez réaliser.
Tester le fonctionnement de la carte
La première action consiste à vérifier le bon fonctionnement de la carte d'entrées/sorties, dans Périphériques et interfaces, qui permet de :
- Visualiser la configuration d'un périphérique existant ;
- Diagnostiquer son fonctionnement via « Panneaux de test » ;
- Créer un périphérique simulé. Cette possibilité est très utile pour le développeur quand le matériel n'est pas disponible. Il est donc possible de simuler le matériel que nous utilisons dans le livre et de réaliser tous les exemples ;
- Accéder au « Brochage du périphérique » pour connaître le câblage des voies sur la carte.
III-D. Utilisation du driver VISA pour piloter les instruments depuis LabVIEW▲
III-D-1. Les drivers d'instruments▲
TODO
III-D-2. Trouver un driver d'instrument : IDNet▲
TODO
III-D-3. Zoom sur les fonctionnalités de VISA▲
L'API du driver VISA, Virtual Instrumentation Software Architecture, installe sous LabVIEW une bibliothèque de fonctions constituées de VIs et de propriétés. Elle va servir à créer des applications pour les instruments de mesure. Cette bibliothèque est très intuitive, mais contrairement à la bibliothèque NI-DAQmx, elle contient un nombre important de VIs, avec des sous-bibliothèques spécifiques à chaque bus de communication. Dans la réalité, seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers (figure 4.54 et 4.55).

Ouverture, Fermeture de la communication et Timeout
Ces trois fonctions (ouverture, fermeture et timeout) sont disponibles dans la palette VISA avancée. Ce sont les trois paramètres de base de la communication avec un instrument de mesure :
N°1 Un driver commence toujours par un VISA Open qui permet d'ouvrir une session sur le périphérique spécifié, à faire une seule fois en début de programme ;
N°2 La fonction d'ouverture est toujours suivie par la configuration du TimeOut, qui est le temps d'attente maximum lors d'une interrogation sur l'instrument, par défaut 10 secondes. Elle est disponible au travers d'une propriété ;
N°3 Le code du driver se termine toujours par un VISA Close qui permet de fermer la session sur le périphérique (à faire une seule fois uniquement en fin de programme).
Écriture des données dans l'instrument
N°4 Pour écrire des données dans l'instrument, on utilise VI VISA Write. Nous utiliserons uniquement la communication basée sur des messages, c'est-à-dire avec l'envoi de chaînes de caractères ASCII, et pas celle basée sur l'écriture de registre.
Lecture des données dans l'instrument
N°5 Pour la lecture des données retournées par l'instrument, on utilise VI VISA Read. Il est très important de comprendre que cette fonction retourne les données contenues dans le buffer dès qu'une de ces 3 conditions est présente :
- Un caractère de terminaison est arrivé, par exemple dans le cas d'une communication sur un bus série (voir figure 4.57) ;
- Le nombre d'octets dans le buffer de réception est égal à celui passé en paramètre à la fonction VISA Read (voir figure 4.56) ;
- Le temps d'attente a dépassé le TimeOut configuré par la fonction VISA Open. Dans ce cas LabVIEW retourne un code d'erreur, 0xBFFF0015, le délai d'attente (timeout) a expiré avant que l'opération ne soit achevée.
Plus d'informations sur la création de driver d'instruments avec LabVIEW dans le livre, avec des exemples concrets et détaillés.
IV. Réaliser rapidement des rapports Microsoft Office Word et Excel avec LabVIEW et le Report Generation toolkit▲
Si vous avez besoin de réaliser des rapports plus complexe, il est possible d'ajouter des fonctionnalités grâce au « Toolkit Report Generation for Microsoft Office ». Il ajoute un ensemble étendu de VIs hauts niveaux pour générer des rapports par programmation dans Microsoft Word ou Excel. Un VI Express Microsoft Office Report permet de rapidement découvrir l'ensemble des possibilités. Il est également très facile de réaliser un classeur modèle sous Microsoft Excel, qui contient la présentation finalisée du rapport d'essai, et d'importer directement depuis LabVIEW au bon emplacement les mesures. Une autre possibilité est d'utiliser les fonctions bas niveaux pour générer complètement l'apparence du rapport. Cette méthode nécessite plus de code.
Un exemple très simple peut être rapidement construit en réalisant un classeur Excel modèle, à partir des mesures figures 6.5 et 6.8, dans lequel nous réalisons toute la mise en page (figure 6.26). La figure 6.27 présente le « Diagramme » d'une application qui permet d'importer les mesures dans ce classeur Modèle. Les fonctions utilisées sont « copier » un fichier, de la palette d'E/S sur fichier afin de dupliquer le classeur Excel modèle sous un nouveau nom. Les mesures sont dans un tableau à deux dimensions de numérique, qui doit être convertit en tableau de chaîne de caractères par la fonction « Nombre en chaîne fractionnaire ». Pour insérer les données dans le classeur, la fonction de haut niveau « nouveau Rapport », avec le paramètre « Excel », permet d'ouvrir le fichier. Puis la fonction spécifique « Excel insérer un tableau » copie les mesures à l'emplacement désiré, soit dans les cellules de coordonnées [2 ; 25]. L'appel de la fonction « Fermer le rapport » avec le paramètre « sauvegarder le classeur » finalise l'importation des données. Le rapport est alors complet, échangeable par email et peut être directement imprimé.
V. Accélérer votre productivité : Les outils gratuits et indispensables à vos développements LabVIEW ▲
Ce paragraphe permet de mettre en avant des outils indispensables, souvent gratuits, qui feront gagner beaucoup de temps de développement. Le réseau des outils LabVIEW (LabVIEW Tools Network) offre la possibilité de rechercher, de parcourir et d'acheter des compléments logiciels et des applications de la société National Instruments ou d'entreprise tiers. Ces produits vous permettent d'optimiser vos développements en étendant la fonctionnalité de la plate-forme LabVIEW. Tous les produits sont certifiés compatibles, ce qui garantit qu'ils ont été soumis à des essais et qu'ils s'intègrent bien avec les matériels et logiciels de NI. Les compléments logiciels et les applications couvrent un large éventail de produits allant des outils d'usage général jusqu'aux produits hautement spécialisés mis au point par des experts de l'industrie.
Le réseau des outils est directement intégré à l'environnement de développement LabVIEW, au travers du logiciel gratuit « VI Package Manager » ou VIPM, qui permet de rechercher, gérer et évaluer des compléments logiciels sans fermer l'environnement de développement. Il est accessible depuis le menu outil -> Rechercher les compléments logiciels de LabVIEW (figure 6.35). Une fenêtre s'ouvre permettant de sélectionner et télécharger directement les outils. Il y a tellement d'outils qu'il n'est pas recommandé de tous les télécharger.
Indispensable aux développeurs
De nombreux outils gratuits de ce réseau sont devenus indispensables au développeur LabVIEW car ils permettent de gagner beaucoup de temps. Après téléchargement depuis le VIPM, ils seront directement disponibles dans la palette LabVIEW


Les bibliothèques OpenG, les indispensables à télécharger
Les bibliothèques OpenG contiennent des centaines de VIs en open source créés par la communauté OpenG et partagés dans le cadre de la licence BSD-3-Clause (approuvée par Open Source Initiative). Cela permet une utilisation commerciale dans vos applications propriétaires. Ces bibliothèques sont indispensables pour vos projets LabVIEW, à télécharger gratuitement, elles contiennent des VIs réutilisables couvrant tous les domaines d'applications. Elles incluent :
- la manipulation de tableaux ;
- la manipulation de chaînes de caractères ;
- la gestion de fichiers ;
- la manipulation de données variant et aplaties ;
- etc.…
La figure 6.36 montre comment télécharger directement dans LabVIEW ces bibliothèques, en les sélectionnant depuis le logiciel VIPM, clic droit et installer.

Les sondes SAPHIR, incontournables pour la mise au point du code
Comme évoqué au chapitre 2.3.3, lors de la mise au point du code, l'utilisation de l'outil « Sonde » (probe) de la palette Outils permet de vérifier des valeurs intermédiaires dans un diagramme flux de données. LabVIEW propose un grand nombre de sondes pour permettre cette mise au point de votre code. Elles sont bien entendu très utiles, mais restent souvent basiques.
Les sondes personnalisées proposées par l'équipe des développeurs de la société SAPHIR proposent de nombreuses sondes alternatives. Installées facilement au travers du VIPM, elles permettent d'étudier le comportement de votre code en cours d'exécution de manière plus appropriée. Nous allons détailler quelques exemples des sondes les plus utilisées :
- La sonde « History » stocke les valeurs d'une chaine de caractères. À chaque appel de la sonde, la valeur de la chaine surveillée est ajoutée à une table, avec l'affichage de l'heure à laquelle la chaine a été lue. La sonde History permet à l'utilisateur de définir des filtres d'affichage à l'aide d'expressions rationnelles. Elle offre la possibilité de mettre en pause l'exécution du programme si la chaine de caractères remplit certaines conditions : contenir un motif particulier, atteindre une certaine longueur, etc. Cette sonde est utilisée pour la mise au point d'une machine à état pilotée par chaine de caractères, voir chapitre 3.4.3, ou la surveillance de données renvoyées par un instrument de mesure.
- La sonde « Delta » affiche sur un graphique déroulant l'évolution d'une valeur, ainsi que son écart avec la valeur précédente. De plus elle permet de mettre en pause l'exécution du programme si la valeur mesurée et/ou l'écart calculé dépassent un seuil défini par l'utilisateur. Cette sonde est utilisée pour la vérification de l'évolution d'une valeur (par exemple un delta temporel) au cours du temps
- La sonde « Chronographe » fournit des informations relatives aux durées d'exécution de vos programmes. Elle mesure les durées entre chaque appel de cette sonde ou entre les appels d'autres sondes du Toolkit VIBox Probes. Cette sonde est utilisée pour la vérification du cadencement d'une boucle ou la détection des parties de code consommatrice en temps processeur.
Plus d'informations au sujet des sondes SAPHIR via le LabVIEW Tools Network et en téléchargement sur le VI Package Manager.