Cours Labview

Débuter avec LabVIEW cours en pdf


Télécharger Débuter avec LabVIEW cours en pdf

★★★★★★★★★★5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Débuter avec LabVIEW cours complet

...

Labview est un langage de programmation graphique dont les programmes sont appelés Instruments Virtuels plus communément VI pour Virtual Instruments. Ces VIs comportent 3 composants : la Face Avant, la Fenêtre Diagramme et l’Icône et ses connecteurs.

Il existe de nombreuses fonctions définies dans labview sous forme de bibliothèques de VIs, aussi labview permettra de développer des applications complexes utilisant des fonctions mathématiques, de traitement de signal, d’analyse de données, et les moyens de communications actuels avec les instruments ( DAQ, GPIB, RS232, Ethernet, USB ...).

Le but de ce manuel est de vous aider à comprendre l’architecture de labview et de ses composants : outils (palettes, Vis intégrés), Face Avant (FA) et diagramme, options ... et d’être capable de réaliser à court terme des projets utilisant les principales capacités de programmation du logiciel, c'est-à-dire :

n             travailler avec des tableaux, clusters et les différentes structures

n             créer des Sub-Vis (sous programmes ou fonctions)

n             construire une application utilisant l’acquisition de données (DAQ) ou la communication avec un ou des instruments.

  1. Ouverture – Nouveau VI 2.1. Fenêtre de choix

Double cliquer sur le raccourci Labview sur le bureau s’il est présent sinon :

→ Démarrer

→ Programmes

→ National Instruments

→ Labview

Une fenêtre apparaît. Celle-ci vous permet de créer un nouveau VI ou un projet, d’ouvrir

un VI, de configurer Labview ou de rechercher de l’aide.

Figure 1 : Fenêtre ouverture

n             Cliquer sur VI à partir d’un modèle : une nouvelle fenêtre s’ouvre :

Figure 2 : Nouveau VI

A partir de cette fenêtre vous pouvez choisir quel type de VI vous allez créer, il existe différents modèles de VIs suivant le type de programme que vous voulez créer. Une description vous permet de comprendre le modèle. Dans ce manuel nous ne travaillerons pas à partir de modèles.

n             Fermer la fenêtre et développer le menu ‘Outils’.

Dans ce menu, l’utilisateur peut lancer Measurement and Automation eXplorer (MAX) qui est le logiciel «drivers» des cartes NI, pour l’instant cliquer sur Options Labview.

Les différentes options de labview peuvent être modifiées ici, notamment la représentation des palettes d’outils, le choix de visualiser ou non sous forme d’icônes les terminaux, le routage automatique.

Figure 3 : Fenêtre Option

n             Fermer la fenêtre et aller sur ‘Exemples’ ‘Recherche d’exemples’.

Une partie intéressante de labview est l’intégration d’une bibliothèque d’exemples. Cliquer sur Recherche d’exemples.

Figure 4 : Fenêtre Recherche d’exemples

Depuis cette fenêtre de nombreuses options s’offrent à vous, recherche d’exemples en parcourant divers types de programmes, recherche d’exemples par mots clés avec la possibilité d’inclure une recherche sur le site de NI et de soumettre vos exemples à NI. En programmation labview n’hésiter donc pas à rechercher des exemples pour les inclure dans vos programmes afin d’éviter une perte de temps dans la création d’un programme existant.

2.2. Nouveau VI

Ouvrir un VI vide : pour cela fermez l’outil de recherche d’exemple, aller sur ‘VI vide’. 2 fenêtres s’ouvrent, suivant les options choisies elles peuvent se superposer. Une des fenêtres est la Face Avant (FA) c'est-à-dire la fenêtre que verra l’utilisateur lorsque le programme fonctionnera, elle contient les Contrôles (Entrée utilisateur) et les Indicateurs (Sorties du code), ceux-ci se retrouvent sur le diagramme qui contient le code et les composants reliés entre eux par des «Fils».

 Figure 5 : Face-avant et diagramme

 Figure 6 : Bouton de commande du diagramme

Suivant la fenêtre sur laquelle vous vous trouvez 2 palettes sont disponibles : palette de contrôles pour la FA et palette de fonctions et d’outils pour le diagramme.

Figure 7 : Palettes de Fonctions - Contrôles et outils

La visualisation de ces palettes est différente suivant les options définies. Si les palettes ne sont pas visibles, click droit de la souris dans les fenêtres. (La palette présentée ici est la palette de la version 7 vous permettant de faire la relation entre icônes et fonctions), la version 8 apparaît comme l’utilisateur le veut.

 Figure 8 : Palette de Fonctions

2.3. Règles de connexion

Au niveau du diagramme quelques règles de connexion seront à respecter notamment en essayant de croiser le moins possible les câbles et à compacter le plus possible le code.

 Figure 9 : connexion

  1. CREATION D’UN VI 3.1 VI

Pour comprendre comment nous pouvons programmer sous labview nous allons étudier un exercice qui est le suivant :

Créer un VI simulant une prise de température à partir d’un capteur à sortie analogique linéaire 0-10Volts pour -15°C et 150°C. Ce VI affichera la température en °C, °F et K. (rappel : °F=°C*(9/5)+32).

L’algorithme sera le suivant :

Début

Lecture commande V

Tc=16.5 * V - 15 Tf=Tc * (9/5) + 32 Tk=Tc + 273.15

Fin

Il existe plusieurs façons de réaliser ce programme. De nombreuses fonctions sont disponibles, vous serez amenés à faire des choix basés sur votre connaissance des différentes fonctions.

Faire un click droit sur la face avant afin de créer une commande numérique, de la même façon placer 3 indicateurs numériques.

 Figure 10 : Placement de commandes et indicateurs

Observer que dès que vous créez une commande ou un indicateur en FA vous retrouvez cette commande ou indicateur au niveau du code. Observer bien la petite flèche noire qui vous indique si nous sommes en présence d’un indicateur (valeur à rentrer dans l’indicateur) ou d’une commande (valeur sortante de la commande) et le contour gras de la commande. Sous labview les couleurs, l’épaisseur des fils, le contour nous permettent d’avoir des informations essentielles. Se référer aux annexes.

Maintenant plusieurs méthodes s’offrent à vous, utilisez dans un premier temps les outils simples numériques, les nœuds d’expression puis la boite de calcul (la boite de calcul se situe dans les Structures).

Figure 14 : Code 3

Vous avez remarqué que les commandes ou indicateurs peuvent être de différentes couleurs ; sous Labview à chaque type est associée une couleur (se référer à la plaquette de ressource d’aide).

A ce stade nous pouvons penser que le programme est fini, nous simulons un capteur, or celui-ci est défini entre 0 et 10 V, pourtant l’utilisateur peut rentrer une commande inférieure à 0V et supérieure à 10V. Chaque commande possède des propriétés dont certaines sont directement accessibles à l’aide d’un click droit sur la commande.

n             Modifier les paramètres de la commande sortie capteur afin que l’utilisateur n’entre pas de données hors gamme.

→ Click droit sur la commande  ou          → Click droit sur la commande

→Propriétés     →Gamme des données

→Gamme

En programmation Labview ayez toujours l’aide contextuelle ouverte, cela vous facilitera la compréhension des fonctions. (CTRL+H).

3.2. Sous VI

Un sous VI est équivalent à un sous programme ou fonctions d’autres langages de programmation. Il permet l’utilisation d’un code récurrent dans le programme principal, de plus il requiert moins de mémoire, les sous VIs permettent de déboguer plus facilement un programme et peuvent être utilisés par plusieurs programmes. Ils permettent aussi de simplifier le diagramme.

Pour construire un sous VI, 2 solutions s’offrent à vous : (ne faites rien pour l’instant)

n             Sélectionnez la partie de code à mettre en sous programme puis Edition – Créer un sous - VI, le sous - VI est créé à l’intérieur du code avec ses connexions. Attention le sous - VI n’est pas enregistré.

n             Aller sur l’icône en haut à droite de la face avant, click droit Visualiser le connecteur, des connecteurs apparaissent, sélectionner l’outil Bobine, aller sur la FA, click gauche sur une commande puis un connecteur et cela pour les indicateurs aussi. Vous venez de créer directement un sous VI.

Ces solutions sont à utiliser suivant votre façon de programmer. Si vous êtes dans votre partie principale et vous vous apercevez que du code va être répétitif utilisez la première méthode. Si par contre dès le départ une fonction sera utilisée à de nombreuses reprises alors créez votre sous - VI comme un VI et reliez les connecteurs.



Les sous VI peuvent être des programmes à part entière, la différence réside dans le fait qu’un connecteur est créé. En double cliquant sur l’icône vous pouvez modifier la représentation de celui-ci.

n             Créer un sous VI à partir de votre programme. Sélectionnez la partie à mettre en sous programme : puis Edition - Créer un sous - VI

 Figure 15 : Création Sous VI à partir du diagramme VI principal

Une des particularités de labview est qu’il est multitâche, c'est-à-dire que plusieurs parties de code peuvent s’exécuter en même temps. Nous pouvons placer ce même sous VI plusieurs fois en parallèle dans le code pour qu’ils s’exécutent en même temps. Pour cela nous devons modifier une propriété d’exécution.

Figure 16 : Propriétés d’un VI ou sous VI

Le sous VI sera mis en Exécution réentrante ainsi plusieurs instances de celui-ci s’exécuteront en même temps si le code le demande.

 Nous pourrons visualiser en même temps les 3 sorties températures.

  1. LES STRUCTURES : While, For, Séquence, Condition, Evènement.

Figure 18 : Palette des Structures

4.1. While :repeat until

Même boucle que les autres langages de programmation tout en ayant des particularités supplémentaires : registre à décalage et indexation.

n             Reprendre votre programme et sélectionner la boucle pour entourer votre code.

Figure 19 : Boucle While

L’algorithme est le suivant :

Début

Repeat

Lecture capteur

Calcul des températures et affichage

Until Stop=true

Fin

Vous êtes obligés de créer une commande STOP pour pouvoir arrêter la boucle. Tant que STOP est faux la boucle continue. Les boutons STOP possèdent différentes actions mécaniques.

Figure 20 : Actions mécaniques de boutons

Si vous ouvrez le gestionnaire des tâches Windows pendant que votre VI est en exécution vous vous apercevez que 100% du CPU est utilisé (si monocoeur) du fait que Labview teste à chaque tour de boucle le plus rapidement possible le bouton STOP. Afin de libérer quelques ressources incluez dans la boucle une temporisation de 10 ms et observez le gestionnaire des tâches. Il serait intéressant d’avoir après la fin de la boucle toutes les valeurs de température, pour cela reliez vos indicateurs à la boucle While, un carré plein apparaît sur la boucle (tunnel), faites un click droit puis Activez l’indexation.

 Figure 21 : Indexation

Vous avez directement un tableau de toutes vos valeurs en sortie. Remarquez l’épaisseur du fil reliant le tableau. (Remarquez le carré plein devient un carré dans lequel se trouve des crochets indiquant que nous sommes en présence d’un tableau).

Figure 22 : Tableau en sortie d’indexation

Une autre particularité intéressante est le registre à décalage : click droit sur la boucle While, Créer un registre à décalage.

Réalisez le code suivant :

Figure 23 : Registre à décalage

Le registre à décalage nous permet ici de faire une moyenne sur les 3 dernières valeurs. Attention à initialiser les registres à décalage si nécessaire.

Figure 24 : Explication registre à décalage

Attention à la condition d’arrêt qui est traitée avant la fonction de la boucle, à l’appui sur le bouton Stop conduit à la fin de l’exécution en cours et à une autre exécution, ce comportement n’est pas un comportement souhaitable, pour résoudre ce problème nous utiliserons une structure If pour tester le bouton et permettre ou non l’exécution de la fonction.

Figure 25 : Condition d’arrêt

Attention aussi aux boucles infinies provoquées par une mauvaise compréhension du flux de données.

Figure 26 : Boucle infinie

4.2. FOR

La boucle For est comparable à la boucle While sauf que la fin de la boucle est connue, nous retrouvons l’indexation et les registres à décalages.

n             Réaliser le code suivant :

Figure 27 : Boucle For et propriétés

Création des tableaux :

→ diagramme

→fonctions tableaux

→ constante tableau

→ fonctions numériques

→ commande ou indicateur numérique suivant le cas.

Observez bien le résultat des indicateurs.

Conclusion : l’indexation sur les boucles For est prioritaire si N > au nombre de lignes des tableaux, le plus petit des tableaux est prioritaire sur les autres. Le nœud de rétroaction s’arrête à N-2 tandis que le registre à décalage à N-1.

N est le terminal de décompte qui indique combien de fois le diagramme doit être répété.

i est le terminal d’itération qui indique le nombre de fois que la boucle s’est exécutée.

4.3. Condition

La structure peut être considérée comme un IF ou un CASE, elle n’est pas limitée à un seul type de données, par contre vous devez définir un choix par défaut si toutes les conditions ne sont pas implémentées dans la structure.

Figure 28 : Condition

 4.4. Séquence

 La structure Séquence permet de séparer des parties de code qui devront s’exécuter séquentiellement, mais aussi de simplifier le code en superposant ces parties. 2 types de séquence existent depuis la version 7 : séquence empilée (ancienne version) et séquence déroulée. Afin de faire passer des variables d’une séquence à une autre il est possible de créer ce qui est appelé une variable locale de séquence (click droit sur la séquence Créer une variable locale de séquence).

Figure 29 : Types de Séquence

4.5. Structure événement

La structure évènement est une des structures devenue incontournable sous labview. Cette structure permet de gérer tout évènement utilisateur sur la FA. Elle attend qu’un évènement utilisateur se produise avant d’exécuter le code approprié ou se désactive après un time out défini. Chaque structure événement possède une file d’attente où seront stockés les événements qui seront traités l’un après l’autre. Sans cette structure votre programme est obligé d’interroger l’état des objets de la Face Avant dans une boucle pour vérifier si un changement a eu lieu, cette interrogation consomme du temps processeur et peut manquer des événements si ceux-ci se produisent trop rapidement.

Elle se présente ainsi :

Figure 30 : Structure événement

Le sablier en haut à gauche sert de temps d’attente avant de passer dans l’événement «timeout», si aucun temps n’est imposé la structure attend jusqu’à ce qu’un événement se produise.

Afin d’ajouter des conditions évènement click droit sur la structure – ajouter une condition d’évènement.

Figure 31 : Ajouter une condition

Figure 32 : Editer les événements

Vous voyez que certains événements sont en double, il existe pour certains événement une possibilité de filtrage (flèche rouge et ?) c'est-à-dire que vous avez la possibilité d’annuler l’événement en cours. Vous pouvez ou non verrouiller la Face Avant tant que l’exécution du diagramme de l’événement n’est pas terminée mais dans ce cas certaines commandes ne répondront plus à l’utilisateur.

Chaque structure événement possède une file d’attente, chaque événement sera exécuter l’un après l’autre, si un événement permis a lieu alors qu’un diagramme d’un autre événement est en exécution il sera mis en file d’attente. Il n’est pas possible de supprimer cette file d’attente.

 Exercice : utilisez la structure évènement dans votre programme capteur de sorte que l’utilisateur ferme la FA, une boite de dialogue s’ouvre demandant si nous voulons fermer ou pas la fenêtre. (boite de dialogue dans fonction Temps et Dialogue)

Figure 33 : Utilisation structure événement

Dans l’exercice si l’utilisateur répond NON alors la fenêtre ne se ferme pas.

Il existe plusieurs méthodes d’utilisation des structures événement qui ne seront pas développées ici, mais qui peuvent être vues grâce aux exemples. Il faudra absolument éviter d’utiliser 2 structures évènement dans la même boucle.

Attention :

Si vous verrouillez la Face Avant vous ne pourrez plus utiliser vos commandes etc... tant que le code dans l’événement ne sera pas fini, seules quelques fonctions de Face Avant subsisteront.



Si vous ne verrouillez pas Face Avant alors des événements pourront être mis en queue et s’exécuteront un par un une fois le code de chaque événement exécuté.

Cette structure événement peut gérer des événements dynamiques, les événements dynamiques vous laissent maître de décider quels événements seront générés, vous pouvez aussi modifier la génération d’événements ou supprimer des enregistrement d’événement. (Se référer à l’exemple «Enregistrement d’événement dynamique»).

Il est possible aussi de générer des événements utilisateur par programmation. (Se référer à l’exemple «Programmatically Fire Events»).

  1. LES GRAPHES

Il existe plusieurs types de graphes : déroulant, XY, simple, déroulant d’intensité, d’intensité, numérique et 3D. Tous ces graphes ont des particularités différentes mais sont tous paramétrables par un click droit (notamment la modification des axes, l’ajout d’échelle, modification de couleur ....).

Figure 34 : Graphe et légende

Figure 35 : Graphe déroulant

Figure 36 : Graphe simple 1 courbe

Figure 37 : Graphe simple 2 courbes

 Figure 38 : Graphe XY

Exercice : Ajoutez un graphe déroulant à l’intérieur de la boucle afin de visualiser les 3 températures. Puis ajoutez des échelles pour les 3 courbes; après la sortie de boucle affichez un graphe XY de l’évolution de la température en fonction du temps

Figure 39 : Insertion graphe déroulant

 Figure 40 : Graphe XY en sortie de boucle

  1. LES COMMANDES TABLEAUX, CHAINE DE CARACTERES, CLUSTERS.

6.1. Tableaux

Les tableaux sont un groupement ordonné d’éléments de même type, le type peut-être booléen, chaîne, waveform, cluster ... Ils sont de une à plusieurs dimensions et jusqu’à 2^31-1 éléments par dimension. (L’indexation commence à 0 et se termine à N-1, N étant le nombre d’élément.)

Figure 41 : Palette Tableau

Une panoplie de fonctions sur les tableaux existe, de plus des calculs simples sont possibles sur les tableaux car les fonctions sont polymorphiques. Si par exemple vous voulez sommer 2 tableaux vous pouvez sommer tous les éléments par un scalaire, ou sommer tous les éléments d’un tableau par tous les éléments d’un autre tableau.

Vous avez pu remarquer que nous avons déjà utilisé une fonction importante des tableaux : construire un tableau.

6.2. Chaîne de caractères

Figure 42 : Palette de Chaîne

Comme le nom l’indique ce sont des commandes ou des indicateurs où vous retrouvez une chaîne de caractères. Une des particularités est que nous pouvons afficher la chaîne d’une manière normale, ou bien avec ses codes (\s espace, \n retour à la ligne...), style mot de passe, et en hexadécimal, tout ceci trouve son utilité dans la gestion de commande d’instruments, des «login» avec mot de passe etc...

 De plus encore une fois il existe une panoplie de fonctions sur les chaînes de caractères que vous retrouverez souvent dans les Vis de commandes d’instruments.

Certains exemples sur les chaînes vous montrent comment utiliser les fonctions principales.

6.3. Clusters

Figure 43 : Palette Clusters

Les clusters peuvent être comparés aux ensembles en mathématiques (record en Pascal, et struct en C), ce sont des ensembles pouvant englober tout type de donnée, c'est-à-dire des valeurs numériques, booléennes, chaîne de caractères mais aussi des tableaux, des graphes ...

Ainsi donc les clusters seront très utiles pour transférer de nombreuses données d’une partie du code à une autre ou d’un VI à un autre.

Des fonctions existent sur les clusters notamment pour les créer et pour désassembler les données du cluster.

  1. ENTREE – SORTIE SUR FICHIER.

Une panoplie de fonctions plus ou moins évoluées est à votre disposition pour les entrées sorties sur fichiers, aussi bien des fichiers de types ASCII que binaire.

Attention aux fonctions de bas niveau qui regroupe à l’intérieur des fonctions avancées.

 Figure 44 : Palette Entrée Sortie sur Fichier

Ouvrir la fonction «Ecrire dans un fichier tableur» :

Double click sur ‘écrire une chaine..’

Figure 45 : Ecrire dans un Fichier Tableur

Vous observez que cette fonction dans un premier temps ouvre le fichier puis écrit et enfin le ferme. Elle est très pratique pour écrire des données en une seule fois mais s’avère contraignante si elle est insérée par exemple dans une boucle.

Pourquoi ? Le fait d’ouvrir et de fermer un fichier de chaînes de caractères peut être plus ou moins long suivant la taille de ce fichier, aussi on préfèrera dans une boucle utiliser les fonctions avancées, on ouvrira le fichier avant la boucle et le fermera à la fin de la boucle.

Si la vitesse ainsi que la taille du fichier sont primordiales, nous utiliserons les fichiers binaires.

  1. VARIABLES LOCALES, GLOBALES, NŒUDS DE PRORIETES, METHODE.

8.2. Variables locales et globales

Un objet de face avant possède qu’un seul terminal au niveau du code mais vous auriez besoin de lire ou de mettre à jour cet objet en différents endroits du code. En utilisant les variables locales vous pouvez avoir accès à cet objet en différents endroits du code et transmettre des données entre différentes structures qui ne peuvent pas être connectées par un câble.

Placer sur le diagramme 2 boucles «While» qui stopperont à l’appui de la même commande Stop.

Figure 46 : Variable Locale

Variable locale : fonction structure - variable locale ou click droit sur la commande puis créer variable locale (diagramme).

Attention à la commande STOP, en variable locale certaines actions mécaniques ne sont pas possibles. Ici dans ce VI un seul bouton nous permet de gérer 2 séquences. Toute action qui retourne à la position initiale ne peut être utilisée en utilisant les variables locales.

Une variable globale est une variable pouvant être utilisée simultanément par plusieurs Vis. Je ne parlerai pas des variables globales sous labview car celles-ci peuvent amener des bugs difficiles à discerner. Il faut donc préférer utiliser des variables globales VI.

Pour réaliser une variable globale par programmation, nous allons utiliser le registre à décalage non initialisé, ce qui permet de récupérer la valeur mise en mémoire dans le registre (ce sera la lecture de la variable), pour l’écriture il faudra mettre dans le registre la nouvelle valeur.

Réaliser le code suivant :

Figure 47 : Variable Globale

Transformez ce VI en sous - VI, vous venez d’écrire une variable globale par programmation, vous pouvez soit écrire une valeur soit la lire. Essayez d’utiliser cette variable globale dans un VI. Par cette méthode la mémoire utilisée lors de l’écriture ou la lecture de cette variable est immédiatement libérée après avoir été utilisée. Bien sûr cette méthode est plus longue à mettre en œuvre mais le gain de mémoire peut être très important.

8.3. Nœuds de propriété et de méthode

Le nœud de propriété permet de modifier l’apparence d’un objet de la FA. Par exemple changer la couleur d’un indicateur, faire clignoter un autre ... On peut créer un nœud de propriété à partir du terminal de la commande en faisant click droit – créer nœud de propriété, sur ce nœud créé vous pouvez choisir la ou les propriétés à lire ou écrire toujours à l’aide du click droit.

 Exercice : prendre une commande réservoir et placer la en FA, une commande LED (appelez-la visible - invisible) et une commande Boite de couleur (palette numérique).

Faites un code qui permette de rendre invisible ou visible le réservoir et de changer la couleur de remplissage.

Figure 48 : nœuds de propriétés

Suivant les commandes les propriétés sont différentes.

Le nœud de méthode permet de la même manière d’avoir accès à des «méthodes», fort utile pour par exemple, appeler à exécuter un VI par le code d’un autre VI etc ...

Dans ce programme intégrez un nœud de méthode pour visualiser l’image du réservoir dans une boîte image.



468