INITIATION AU LOGICIEL D'INSTRUMENTATION LAB ABVIEW 1. INTRODUCTION Labview (Laboratery Virtual Instruments Engineering Workbench) est un environnement de développement d'applications fondé sur un langage de programmation graphique, le graphique G, pour créer un programme sous forme de diagramme. Labview est destiné au développement d'applications d'acquisition, d'analyse et de présentation de données. 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 appareils de laboratoire (e.g. oscilloscope, voltmètre). ACQUISITION ANALYSE PRÉSENTATION Contrôle d'instrument - GPIB IEEE 488 - RS-232 - VXI Acquisition de données - E/S Analogiques - E/S Numériques Traitement numérique - Génération de signaux - Filtrage, fenêtrage - Analyse fréquentielle Traitement statistique - Régression, lissage - Moyenne, écart type? Affichage des données - Interface interactives - Graphiques, courbes? Stockage des données - Archivage - Impression LabView est un outil d'aide à la conception et à la réalisation très puissant, le but étant de favoriser l'approche intuitive du programmeur ou de l'utilisateur. Pour cela, le langage utilise toute la convivialité des interfaces interactives des micros ordinateurs actuels en fournissant : des objets proches graphiquement des objets réels (e.g. voyants, curseurs, interrupteurs, boutons, graphes), des outils familiers et simple d'utilisation pour la programmation (e.g. structure de programme, fonctions arithmétiques, fonctions logiques, comparateurs) des fonctions plus complexes (e.g. transformée de Fourier rapide, filtre numérique). Grâce à Labview, on peut créer des programmes compilés qui offrent des vitesses d'exécution nécessaires pour des solutions d'acquisition de données, de test et mesures personnalisées. On peut également créer des exécutables autonomes. Ce document est réalisé à partir des documentations sur le logiciel LabVIEW de National Instruments et des rapports d'étudiants de maîtrise MIME, Le Mans. Responsable : ROGOZAN Alexandrina 1
2. LE PROGRAMATION GRAPHIQUE EN LANGAGE G Le langage G est le langage de programmation graphique propre à LabVIEW. Il fait également partie intégrante de BridgeVIEW, l'environnement de développement d'applications de National Instruments. Le langage G, tel que le langage C ou le langage Basic, est un système de programmation à usage général, disposant de bibliothèques de fonctions pour n'importe quelle tâche de programmation. Le langage G est accompagné de bibliothèques pour l'acquisition de données, le contrôle d'instruments sur bus GPIB et série, ainsi que l'analyse, la présentation et le stockage de données. Le langage G comprend également des outils conventionnels de développement permettant de définir des points d'arrêt, d'animer l'exécution pour observer la progression des données dans le programme et d'exécuter le programme pas à pas pour faciliter la mise au point et le développement. Le langage G diffère des autres langages de programmation dans le sens suivant : - Alors que les autres langages de programmation sont des langages textuels, le langage G est un langage graphique. - Un langage textuel suit des règles d'exécution séquentielle déterminée par la position des instructions dans le fichier source, tandis qu'un programme graphique s'exécute selon le principe de flux de donnée. Responsable : ROGOZAN Alexandrina 2
3. FONCTIONNEMENT DE LABVIEW Une application développée sous LabVIEW, est communément appelée instrument virtuel (Virtual Instrument : VI). Elle se compose d'une face avant et d'un diagramme. 3.1. Face avant La face avant est l'interface utilisateur graphique de la VI, elle permet de réceptionner les données acquises et d'afficher celles fournies en sortie par le programme. Cette face avant peut contenir des boutons rotatifs, des boutons poussoirs, des graphes. Cette fenêtre a pour titre nom_application.vi 3.2. Diagramme Le diagramme contient le code source graphique de la VI, il permet d'effectuer des traitements sur les entrées et sorties créées dans la face avant. Il utilise le langage de programmation graphique G. Ce langage utilise des icônes reliées entre elles par des connexions, ces icônes peuvent être de petites fonctions simples comme des tableaux, des chaînes de caractères, des graphiques ou des VI à part entière, ce qui permet une programmation hiérarchisé sur plusieurs niveaux. On peut placer des boucles, on peut déboguer le programme comme dans les langages conventionnels. Cette fenêtre a pour titre nom_application.vi Diagram. 4. EDITION DES INSTRUMENTS VIRTUELS (VI) Les VIs sont construits à l'aide des palettes et des menus. L'édition d'un VI se fait en choisissant des objets dans les palettes et en les plaçant sur la face-avant ou dans le diagramme. Ces objets peuvent être déplacés ou modifiés à l'aide des outils ou des menus. 4.1. Palette outil Cette palette rassemble dix fonctionnalités utilisables soit au niveau de la face avant, soit pour mettre au point le diagramme. Certaines fonctions sont utilisables sur les deux parties du VI : - L'outil doigt : utilisé sur la face avant du VI, permet de saisir les valeurs des commandes. - L'outil sélection : utilisé sur la face avant ou sur le diagramme, permet de sélectionner un élément particulier (ou un ensemble d'éléments) pour le déplacer, le copier, le redimensionner, etc. - L'outil texte : pour placer des commentaires sur la face avant du VI. - L'outil bobine : pour connecter des éléments du diagramme. - L'outil 'PopUp' : pour manipuler les palettes de contrôle et de fonctions. Responsable : ROGOZAN Alexandrina 3
- L'outil main : pour déplacer le contenu de la fenêtre avec comme référence le point cliqué. - L'outil point d'arrêt : permet de placer des points d'arrêt sur le diagramme. - L'outil sonde : assure la visualisation d'une variable lors de l'exécution du programme. Cet outil est utilisé pour 'deboguer' le code graphique (équivalent à la fonction "watch" des debogueurs courants). - Les outils de saisie et de placement de couleurs : pour personnaliser les couleurs de la face avant et du diagramme. 4.2. La palette contrôle : Commandes et indicateurs de la face-avant La palette contrôle rassemble tous les objets de type contrôle (ou commande) et indicateur. Les commandes et les indicateurs de la face-avant sont les terminaux interactifs d'entrée et respectivement de sortie du VI : Les commandes s'utilisent pour fournir des données à un VI. Les indicateurs affichent les données générées par le VI. Lorsqu'ils sont positionnées dans la fenêtre utilisateur, ces objets peuvent être adaptés à l'application en taille, en forme, en échelle, en aspect, etc. Commandes numériques : pour la saisie et l'affichage des quantités numériques. Les commandes et les indicateurs numériques sont soit des commandes numériques, des commandes à glissière, des commandes rotatives, des commandes de type menu déroulant, des commandes énumérées, des commandes à boîte de couleurs ou des commandes à rampe de couleurs. Commandes booléennes : pour la saisie et l'affichage des valeurs True/False. Commandes de chaîne de caractères & table : pour la saisie et l'affichage de texte. Commandes de type listes et menus déroulants : pour l'affichage et/ou la sélection d'une liste d'options. Commandes de type tableaux et clusters : pour le regroupement d'ensemble de données. Commandes de type graphe : pour le tracé de données numériques sous forme de graphe. Responsable : ROGOZAN Alexandrina 4
Commandes de type chemin et Refnum : pour la saisie et l'affichage des chemins de fichier et pour le transfert de refnums d'un VI à un autre. «Décorations» : pour l'ajout d'images afin de personnaliser la face-avant. Ces objets ne concernent que la décoration et n'affichent pas de données. Commandes utilisateurs : pour l'enregistrement automatique des commandes personnalisées dans le fichier user.lib. ActiveX : pour l'amélioration du support d'activex. Ces objets comprennent le Container ActiveX et la Variable ActiveX. Sélectionner une commande : pour choisir une commande personnalisée conçue par l'utilisateur. 4.3. Palette fonctions du diagramme Cette palette met à la disposition du programmeur, un ensemble de fonctions classées par type et permettant de manipuler les structures de données définis préalablement. - Structures : Les structures en G comportent des structures Boucle While, Boucle For, Condition et Séquence. Cette palette comprend également les noeuds de variables locales et globales et la boîte de calcul. - Fonctions numériques : Les fonctions numériques sont utilisées pour réaliser des opérations mathématiques complexes, logarithmiques, trigonométriques, des conversions et des opérations arithmétiques. - Fonctions booléennes : Les fonctions booléennes sont utilisées pour réaliser des opérations booléennes et logiques. - Fonctions de chaîne de caractères : Les fonctions de chaîne de caractères sont utilisées pour manipuler des chaînes de caractères et pour convertir des chaînes de caractères en nombre ou inversement. Cette palette comprend également des fonctions Chaîne vers Nombre supplémentaires et des fonctions de Conversion de chaîne. - Fonctions de tableau : Les fonctions de tableau sont utilisées pour rassembler, séparer et traiter des tableaux. Responsable : ROGOZAN Alexandrina 5
- Fonctions de groupes (cluster) : Les fonctions de groupe sont utilisées pour rassembler, accéder ou modifier des éléments d'un groupe. - Fonctions de comparaison : Les fonctions de comparaison sont utilisées pour comparer des données (supérieures à, inférieures à, etc.) et réaliser des opérations basées sur une comparaison (par exemple, trouver les gammes minimales et maximales pour un groupe ou un tableau de valeurs). - Fonctions Temps et Dialogue : Les fonctions Temps et Dialogue sont utilisées pour manipuler les fonctions temporelles et l'affichage des boîtes de dialogue. Cette palette comprend également les VIs du traitement des erreurs. - Fonctions d'e/s sur fichiers : Les fonctions d'e/s sur fichiers sont utilisées pour manipuler les fichiers et répertoires. Cette palette comprend également les sous-palettes Fonctions de fichiers avancées, VIs de fichiers binaires et Constantes de fichiers. - Fonctions avancées : Les fonctions avancées sont des fonctions hautement spécialisées. Le Code Interface Node est un exemple de cette fonction avancée. La palette comprend également les fonctions de contrôle de la fenêtre d'aide, les fonctions VI Serveur, les fonctions de manipulation de données et les fonctions d'occurrences. - Acquisition de données (DAQ) : Les VIs DAQ permettent de réaliser des opérations d'acquisition et de génération de données analogiques et numériques en temps réel, ainsi que des opérations de comptage. - E/S d'instruments : Les VIs d'e/s d'instrument communiquent avec les instruments par le biais de communications GPIB, VISA ou série. - Communications : Les VIs de communication permettent la mise en réseau de plusieurs applications par le biais de TCP/IP, DDE, ActiveX, Apple Events, PPC ou UDP. 5. VI ET SOUS-VI : CONCEPTION HIÉRARCHIQUE 5.1. Application hiérarchisée Une fois un VI créé, il peut être utilisé comme sous-vi dans le diagramme d'un VI de niveau supérieur. Un sous-vi est donc analogue à un sous-programme en C. Il n'existe aucune limite au nombre de VIs pouvant être utilisés dans un programme écrit en G. Un sous-vi peut également être appelé au sein d'un autre sous-vi. 5.2. Création de sous VI à partir de VI L'icône d'un VI en est sa représentation graphique. Le connecteur d'un VI affecte les commandes et indicateurs aux terminaux d'entrée et de sortie. Pour appeler Responsable : ROGOZAN Alexandrina 6
votre VI à partir du diagramme d'un autre VI, il faut d'abord créer une icône et un connecteur. Responsable : ROGOZAN Alexandrina 7
6. COMPILATION ET EXÉCUTION DES VIS 6.1. Modes d'exécutions Il existe comme dans la plupart des langages deux modes d'exécution d'un programme : le mode continu et le mode pas à pas. 6.1.1. Mode d'exécution continu du VI Il faut activez la face avant en cliquant n'importe où sur celle-ci. Lancez le VI en cliquant sur le bouton Exécution de la barre d'outils de la face avant. On remarque que l'on doit relancer le VI à chaque fois. Si l'on souhaite une exécution permanente, on doit cliquer sur le bouton Exécution permanente. Remarque : il suffit de cliquer une deuxième fois sur le bouton Exécution permanente pour le désactiver. Le VI termine alors l'exécution et se ferme. 6.1.2. Mode d'exécution pas à pas du VI Pour la mise au point, il est parfois préférable d'exécuter un diagramme noeud après noeud. Pour passer en mode Pas à pas, cliquez sur le bouton Exécution semi-détaillée qui se trouve dans la barre d'outils. Pour exécuter sans détailler une boucle ou un sous-vi, il faut cliquer sur le bouton Exécution semi-détaillée de la barre d'outils. Pour exécuter de façon détaillée une boucle ou un sous-vi cliquez sur le bouton Exécution détaillée de la barre d'outils. Pour sortir d'une boucle ou d'un sous-vi, il faut cliquer sur le bouton Sortie de la barre d'outils. Il est possible de définir le niveau d'exécution d'un VI et demander à ce que l'exécution s'interrompe à un instant donné en cliquant sur le bouton Sortie tout en maintenant le bouton de la souris enfoncé. Cette manipulation vous permet d'accéder à un menu local. Il est possible d'animer votre diagramme pendant l'exécution d'un VI en cliquant sur le bouton Ampoule de la barre d'outils. L'ampoule de ce bouton se transforme alors en une ampoule allumée. Vous pouvez utiliser le mode Animation en mode Pas à pas pour suivre le flux des données dans le diagramme. On peut compléter l'observation l'évolution des flux de données avec l'aide des fonctions de mise au point. 6.1.3. Fonctions de mise au point Des fonctions classiques de mise au point du programme sont offertes par LabView : les points d'arrêt et les sondes (ou fenêtres de watch dans d'autres langages). Il est possible de poser un point d'arrêt sur un élément (structure ou câble). Le programme sera arrêté quand l'élément recevra un flux de données en entrée. Il faut pour cela choisir l'outil Point d'arrêt de la palette Tools, placer le curseur Responsable : ROGOZAN Alexandrina 8
Point d'arrêt sur l'élément et cliquer dessus. Un cadre rouge encercle alors le noeud de l'élément visé. Il suffit de cliquer sur le curseur Point d'arrêt de l'élément pour supprimer le point d'arrêt. LabView contient également un outil Sonde qui permet de visualiser les données pendant qu'elles circulent dans les fils de connexion. Pour cela, il faut choisir l'outil Sonde dans la palette Tools, placer une sonde sur un câble. Une fenêtre libellée Probe 1 apparaît à l'écran. La fenêtre de la sonde apparaît à la fois dans la face-avant et dans le diagramme. On peut alors parcourir de nouveau le VI en mode Pas à pas. La fenêtre de la sonde affiche la valeur des données lorsqu'elles passent par la portion du fil sélectionnée. 7. PROGRAMMATION DU DIAGRAMME 7.1. Terminaux et n?uds Les diagrammes sont constitués de terminaux, de n?uds et de fils de liaison : Les terminaux sont des ports par lesquels les données passent entre le diagramme et la face-avant, ainsi qu'entre les n?uds et le diagramme. Ils sont également à la base des icônes de fonctions et de VIs. L'illustration suivante (cf. figure sur les structures de boucles) montre un exemple de terminal associé à une icône. Pour afficher les terminaux d'une fonction ou d'un VI, ouvrez un menu local sur l'icône et sélectionnez visualiser» Terminaux. Les n?uds sont des éléments d'exécution de programme. Ils sont analogues aux instructions, opérateurs, fonctions et sous-programmes des langages de programmation conventionnels. Les fils de liaison sont des chemins de données entre les terminaux d'entrée et de sortie. Dans un programme, pour faciliter la lecture du flux de données construit dans la fenêtre Diagram, le câblage, c'est à dire le fil reliant les icônes dans à l'intérieur d'une fenêtre, se présente sous forme différente suivant le type et la dimension de la donnée transmise. Le type de donnée est codé par le motif du fil (nombre entier : trait noir, booléen : trait pointillé, etc) et la dimension par l'épaisseur du fil. 7.2. Structures Responsable : ROGOZAN Alexandrina 9
On accède ici aux différentes structures de contrôle proposées par le langage G. Ces structures se divisent en trois types et permettent d'exprimer tous les algorithmes : la séquence (Sequence Structure) Contrôle du l'alternative Numéro (Case Structure) de la choix séquence la répétition (les structures de boucle : While Loop et For Loop) Toutes les icônes et flots de données, placées à l'intérieur du cadre de l'icône de la structure de contrôle, sont considérées comme propre à la structure de contrôle et donc soumis à l'évolution séquentielle (Sequence Structure), au choix (Case Structure) ou à la boucle (While / For Loop). 7.3. Autre objets de programmation Dans une fenêtre Diagram, on peut positionner à part les n?uds et les structures vus précédemment, d'autres objets de programmation disponibles sous forme d'icône (e.g. pilotes d'entrées / sorties) ou créés par l'utilisateur. Exemple : boîtes de calculs à l'intérieur desquelles on définit des relations mathématiques liant les entrées de la boîte avec ses sorties. Responsable : ROGOZAN Alexandrina 10
Une boîte de calcul permet d'entrer des formules directement dans un diagramme. Placez la boîte de calcul sur le diagramme en la sélectionnant dans Fonctions»Structures. Cette fonction est utile lorsqu'une équation possède de nombreuses variables ou s'avère complexe. Grâce aux boîtes de calcul, il est possible d'entrer directement une ou plusieurs formules compliquées, au lieu de créer des sous-sections du diagramme. Il faut entrer les formules en utilisant l'outil Texte. Pour créer des terminaux d'entrée et de sortie de la boîte de calcul, ouvrez le menu local sur la bordure du n?ud et choisissez Ajouter une entrée (Ajouter une sortie). Entrez le nom de la variable dans la boîte. Les variables font la différence entre majuscules et minuscules. Entrez la ou les formules dans la boîte. Chaque déclaration de formule doit se terminer par un point virgule. 7.4. Variables locales et globales L'utilisation des variables globales permet d'accéder facilement à un jeu de valeurs à partir de plusieurs VIs. Les variables locales ont la même fonction, mais sont utilisées à l'intérieur d'un seul VI. Les variables locales et globales sont des concepts avancés du G. Une variable globale est un objet intégré au G. Lorsque vous créez une variable globale, un type spécial de VI est automatiquement créé. Vous ajoutez à ce VI des commandes de face-avant qui définissent les types de données des variables globales qu'il contient. Une variable locale vous permet d'écrire ou de lire une des commandes ou un des indicateurs de la face-avant de votre VI. L'écriture dans une variable locale revient au même que de transmettre des données à un terminal, excepté le fait que vous pouvez y écrire même si c'est une commande ou la lire même si c'est un indicateur. De même, le nombre de références des variables locales n'est pas limité pour une commande de face-avant donnée et certaines peuvent être en mode écriture et d'autres en mode lecture. En fait, vous pouvez utiliser une commande de face-avant comme une entrée et une sortie grâce à une référence de variable locale. 8. INTERFAÇAGE AVEC DU CODE PROVENANT D'AUTRES LANGAGES Pour les applications qui nécessitent les meilleures performances possibles, ou si vous voulez transmettre des structures de données arbitraires en code C, vous pouvez créer un CIN (Code Interface Node). Par le biais des CIN, vous pouvez appeler un code écrit spécifiquement pour des VIs en langage G. Le CIN est une méthode commune d'appel du code C à partir du G. Vous pouvez arbitrairement entrer ou sortir des structures de données complexes d'un CIN. Dans certains cas, vous obtiendrez de meilleures performances en utilisant des CIN, les structures de données étant transmises au CIN au même format que leur stockage dans le G. Responsable : ROGOZAN Alexandrina 11
Toutefois, pour obtenir ce niveau de performance, vous devez apprendre à créer un CIN. Pour cela, vous devez être un bon développeur C et disposer de suffisamment de temps pour créer le CIN souhaité. De même, étant donné que les CIN sont étroitement liés au G, vous ne pourrez pas utiliser n'importe quel compilateur. 9. AUTRES PERFORMANCES DU LOGICIEL Le logiciel LabView offre d'autres possibilités, comme par exemple : d'utiliser des contrôles Active X et de faire appel à des fonctions DLL, de faire de l'acquisition/restitution à l'aide de cartes propriétaires, d'exploiter des outils de contrôle du protocole GPIB, de communiquer avec les services réseaux proposés (UDP, TCP,?), d'utiliser un outil de visualisation des performances des Vis, afin d'optimiser les temps d'exécution, d'utiliser des outils d'analyse en traitement du signal (FFT, filtrages, convolutions, etc.). Responsable : ROGOZAN Alexandrina 12