Académique Documents
Professionnel Documents
Culture Documents
LabVIEW - TP A1 - 2007 PDF
LabVIEW - TP A1 - 2007 PDF
Capteurs
Signal lectrique
Grandeur physique
Programme (Diagramme)
Conditionnement
Acquisition/commande
Enregistrement
Rseau
Dispositif
Tiers
Novembre 2007
Emmanuel Grolleau
PREMIER PAS............................................................................................................................................ 6
4.2.4
4.2.4.1
4.2.4.2
4.2.4.3
4.2.4.4
4.2.5
4.2.5.1
4.2.5.1.1
4.2.5.1.2
4.2.5.2
4.2.5.2.1
4.2.5.2.2
4.2.5.2.3
4.2.5.3
4.2.5.4
La structure conditionnelle...................................................................................................................28
La structure de choix if/then/else ....................................................................................................28
La structure choix multiple ..........................................................................................................30
La boucle For .......................................................................................................................................31
Indexation ou non des sorties..........................................................................................................32
Indexation des entres.....................................................................................................................32
Registre dcalage .........................................................................................................................33
La boucle faire tant que/faire jusqu...................................................................................................35
La squence..........................................................................................................................................37
4.3
UTILISATION AVANCEE ....................................................................................................................... 37
4.3.1
Utilisation de graphes ................................................................................................................... 37
4.3.1.1
4.3.1.2
4.3.1.3
4.3.2
Gestion de fichiers......................................................................................................................... 41
4.3.2.1
4.3.2.2
4.3.2.3
4.3.3
Graphe droulant..................................................................................................................................37
Graphe..................................................................................................................................................38
Graphe XY...........................................................................................................................................40
Utilisation de fichiers textes.................................................................................................................42
Utilisation de fichiers binaires..............................................................................................................43
Utilisation de fichiers pour grer une configuration.............................................................................43
Interface graphique....................................................................................................................... 46
4.3.3.1
Ractions aux vnements ...................................................................................................................46
4.3.3.2
IHM dapplication / bote de dialogue .................................................................................................48
4.3.3.3
Interface graphique dynamique............................................................................................................50
4.3.3.3.1
Nuds de proprits .......................................................................................................................50
4.3.3.3.2
Face-avant secondaire.....................................................................................................................51
4.3.3.3.3
Utilisation de rfrences sur les terminaux .....................................................................................52
4.3.4
4.3.5
5
CONCLUSION .......................................................................................................................................... 54
1 Origines de LabVIEW
LabVIEW pour Laboratory Virtual Instrumentation Engineering Workbench est un
environnement de dveloppement en langage G. Notons que lon crit LabVIEW et non pas
LabView ou Labview, etc.
Il a t cr en 1986, initialement pour Apple Macintosh, qui tait lpoque lun des
seuls ordinateurs proposant une interface graphique native. Lhistoire de LabVIEW explique
un vocabulaire spcifique, et explique encore certaines actions. A lorigine, LabVIEW
sexcute sur des crans noir et blancs, puis sur des crans 16 couleurs, 256, etc.
LabVIEW est un environnement de dveloppement propritaire (par opposition un
environnement ouvert, permettant plusieurs personnes de dvelopper des compilateurs
compatibles, comme pour C/C++, Ada, Java, Fortran, etc.) dvelopp et vendu par la socit
National Instruments (NI). Le premier mtier de NI est de fabriquer du matriel
dacquisition (notamment sur le protocole GPIB au dbut des annes 80) rapidement destin
au march des micro-ordinateurs (IBM PC, Apple Macintosh). Ainsi, la premire version de
LabVIEW sattache offrir un environnement de dveloppement dont le rle est de permettre
simplement lutilisateur de crer des instruments virtuels (virtual instrument, ou vi)
utilisant le matriel dacquisition NI pour reproduire sur un micro-ordinateur le comportement
dun instrument personnalis et personnalisable volont.
Signal lectrique
Grandeur physique
Circuit lectronique
Capteurs
Conditionnement
Capteurs
Signal lectrique
Grandeur physique
La Figure 2 montre que linstrument virtuel diffre dans les dernires tapes : en effet,
un dispositif dacquisition (carte dacquisition, priphrique) permet au micro-ordinateur
dacqurir le signal. En LabVIEW, nous verrons que 2 parties sont utilises lorsque lon
programme : le programme (diagramme dans la terminologie LabVIEW), qui reprsente le
traitement qui sur un instrument rel est pris en charge par un circuit lectronique, et
linterface graphique (face avant pour LabVIEW) qui, linstar de la face avant dun
instrument rel, permet dafficher lutilisateur et dinteragir avec lui. Le programme permet
deffectuer tout traitement automatisable (de lenregistrement, lutilisation dun rseau, en
passant par la commande).
Programme (Diagramme)
Conditionnement
Acquisition/commande
Enregistrement
Rseau
Dispositif
Tiers
3 Premier pas
Lorsquon lance LabVIEW
, lcran de dmarrage permet de dmarrer toutes les
oprations proposes par cet environnement de dveloppement (voir Figure 3).
Ouvrir un fichier/projet
4 Crer un nouveau vi
Que lon souhaite crer un programme ou un sous-programme, on cre un vi. Pour
LabVIEW tout vi est considr comme un instrument virtuel. Par consquent il a un
comportement (voir Figure 4) donn sur le diagramme (fentre blanche) et une interface
utilisateur nomme face-avant (fentre grise). De plus, un vi sera symbolis par son icne. Il
est important de retenir quun vi est stock dans un unique fichier .vi : 2 fentres, mais 1 seul
fichier.
Icne
Diagramme
Face avant
Figure 4 : un vi LabVIEW est compos dun diagramme (fentre blanche) et dune face avant (fentre
grise) et reprsent par une icne
Sur la face-avant, nous serons donc amens placer des lments graphiques (entres
du programme, linstar des boutons dun instrument, sorties linstar des lments affichs
sur un instrument, lments de dcoration,), alors que sur le diagramme nous placerons la
logique du programme, en gnral logique qui relie les entres aux sorties : comment calculer
les sorties partir des entres.
Figure 5 : palette de commandes : gauche sous forme de menu (click droit sur la face-avant), droite
sous forme de fentre (via menu droulant de la face avant, ou bien laide de la punaise)
rotatif ont la mme fonction pour le programme : permettre dentrer un numrique. Le choix
dune apparence na donc strictement aucune importance pour un vi qui sera utilis comme un
sous-programme (sa face-avant ne sera pas vue par lutilisateur). Ce choix aura bien entendu
son importance sur le ou les vi qui seront vus par lutilisateur du programme final.
La Figure 6 montre le vi aprs cration de deux commandes numriques ( Numrique
et Bouton rotatif ) et dun indicateur numrique ( vumtre ) sur la face-avant. On peut
voir qu chaque commande ou indicateur de la face-avant correspond une reprsentation
logique sur le diagramme. La diffrence entre une commande et un indicateur est
fondamentale : la commande fournit une donne au diagramme. Noter sur licne de la
commande dans le diagramme la flche droite allant vers lextrieur et reprsentant le
cheminement de la donne (de la commande vers le programme). Lindicateur, quant lui,
permet dafficher une donne, qui lui est fournie par le programme : noter sur son icne la
flche gauche de lextrieur vers licne (du programme vers lindicateur). Une autre
diffrence graphique utile dans les versions plus anciennes de LabVIEW (version 6 et
antrieure) est que le bord dun indicateur est en trait gras dans le diagramme, alors que celui
dune commande est en trait fin.
Reprsentation graphique et logique
dune commande numrique
10
menu, etc.), colorier, slectionner du texte, etc. Les principales fonctions de la souris sont les
suivantes :
Edition de texte
11
12
A faire : Lancer LabVIEW, crer un nouveau vi. Afficher la palette doutils, et slectionner
Slection automatique de loutil . Afficher sous forme de fentre la palette de commandes
et la palette de fonctions. Fermer la fentre diagramme du vi. La faire rapparatre en utilisant
le menu Fentre de la fentre face-avant ou bien le raccourci clavier Ctrl+E.
4.2
Cration du diagramme
Il nous faut commencer, pour le convertisseur, placer les fonctions ncessaires : une
addition, et une multiplication (F=1,8xC+32). Toutes les deux sont dans la palette
Numrique (tape 1 de la Figure 10). Ensuite, on utilise loutil
bobine pour cbler
lentre (la commande) C une entre de la fonction multiplication (tape 2). Il nous faut
alors multiplier cela la constante 1,8. Il y a diffrents moyens de crer une constante, mais le
13
plus simple, utiliser dans 99% des cas (sauf dans le cas de vi polymorphe), est de faire un
click droit sur lentre, puis de choisir Crer Constante . Une constante, du bon
type, est alors cre et relie cette entre. Le diagramme est enfin complt comme ltape
3. Pour excuter le vi, il faut cliquer sur le bouton Excuter
. Certains utiliseront
Excuter en continu , qui a pour effet dexcuter le vi sans arrt jusqu lappui sur le
bouton Abandonner lexcution
. Cependant, je dconseille de prendre cette habitude :
un programme bien fait contient une boucle dexcution au niveau le plus haut, et son propre
bouton darrt sur la face-avant
3
Figure 10 : tapes de la construction du diagramme
A partir dici, il convient dutiliser la fentre daide contextuelle (menu droulant Aide
Afficher laide contextuelle ou raccourci clavier Ctrl+H) afin dobtenir des
descriptions rapides des fonctions, ou bien savoir quel type de donnes passe sur un fil. Le
contenu de laide est mis jour en fonction de llment se trouvant sous le curseur de la
souris. Ainsi, si lon place la souris sur le nud x de la Figure 10, on obtient laide
contextuelle donne sur la Figure 11.
14
A faire : Crer le vi de conversion donn sur la Figure 10. Pour cela, sassurer que laide
contextuelle est active. Personnaliser sa face avant comme sur la Figure 8. Rechercher dans
laide dtaille ce qui se rapporte la gestion dunits. Modifier le vi afin dutiliser les units
de mesure et la conversion automatique par LabVIEW.
Note : on peut faire une diffrence entre vi standard et vi express. Les vi express sont
continue B, puis termine A, puis termine B. En fait, le programme est excut par diffrentes
tches du systme dexploitation (on parle de threads) ce qui fait de G un langage parallle
naturel.
Lune des rserves que certains opposent LabVIEW est la lenteur que ce type
dexcution graphique et parallle peut entraner. En ralit, lexcution, LabVIEW compile
les vi en code excutable. Lors de lexcution, part quelques optimisations qui pourraient
amliorer la vitesse, sa vitesse dexcution est tout fait comparable la vitesse dexcution
dun programme crit en C++. Il est dailleurs possible, afin dviter une compilation des vi et
ainsi acclrer le temps de chargement de compiler tous les vi dun rpertoire (menu
Outils Avanc Recompiler .
Quand elle concerne des flots de donnes, une erreur de syntaxe se traduit par le fait
que les fils concerns sont briss. Une commande trs utile se trouve dans le menu Edition
Supprimer les fils briss , ou raccourci clavier Ctrl+B. Sur la Figure 12 cela aura pour
effet de supprimer tous les fils briss.
En cliquant sur la flche brise, on obtient une fentre donnant la liste des erreurs (voir Figure
13).
16
4.2.3 Typage
LabVIEW est un langage typage fort. Toute donne a un type.
orange
17
violet
marron
Figure 14 : types de base
On peut remarquer que lorsquon cre un numrique, on ne contrle pas son type : il
sagit gnralement dun flottant double prcision quand on cre une commande ou un
indicateur sur la face-avant, et dun entier sign sur 32 bits lorsque lon place une constante.
On doit alors faire un click droit sur llment, et choisir le menu Reprsentation pour
changer son type en un autre type numrique (voir Figure 15).
multiplication, la donne venant de C , qui est un entier, est convertie en flottant double
prcision (type le plus large de lopration).
coercion
Flottant DBL
Entier I32
Flottant DBL
Figure 16 : coercion de type
4.2.3.2.1 Cluster
Le cluster correspond un type enregistrement (nomm record ou struct dans dautres
langages de programmation). Il sagit de grouper dans une seule donne diffrentes donnes
(appeles champs) pouvant tre de type diffrent. Lun des clusters qui est trs souvent utilis
est le cluster derreur. En effet LabVIEW utilise 3 valeurs pour caractriser une erreur :
un boolen status vrai si une erreur a eu lieu, faux sinon,
un entier code donnant le numro derreur, permettant dobtenir de plus amples
informations sur lerreur,
une chane de caractre source contenant gnralement le nom du vi dans lequel
lerreur sest produite.
La Figure 17 montre une utilisation typique du cluster derreur, et par cet exemple la
faon dont on extrait un champ dun cluster. Un fichier est ouvert ou cr, et son contenu est
remplac par le texte test . Ensuite le fichier est ferm. Tout ceci sil ny a pas eu derreur :
en effet, il y a de multiples possibilits derreurs lors de louverture, de lcriture, de la
fermeture : le fichier nest pas accessible, lutilisateur annule le choix du nom de fichier,
droits insuffisants pour modifier le fichier, dconnexion du rseau si le fichier est sur le
rseau, etc. Ainsi, si par exemple, louverture du fichier (premier vi de la chane de traitement)
dclenche une erreur, lcriture et la fermeture ne doivent rien faire puisque le fichier na pas
t ouvert. Cest le cas puisque les vi de LabVIEW ayant une entre Entre derreur
fonctionnent de la faon suivante : si il y a erreur, ne rien faire et propager lerreur (i.e.
recopier lentre derreur sur la sortie derreur). Sinon, faire le traitement, mais si erreur il y a
lenvoyer sur la sortie derreur, dans le cas contraire (aucune erreur en entre, aucune erreur
lors du traitement) renvoyer pas derreur (i.e. le champ status est la valeur faux) sur la
sortie derreur.
19
20
Bien que les exemples donns portent sur le cluster derreur (cest bien souvent le
premier cluster manipul), on peut assembler nimporte quelles donnes dans un cluster.
LabVIEW est trs souple quant lutilisation de clusters. Ainsi, lorsque des clusters ne sont
composs que de numriques, ils gardent la proprit numrique. Les oprations
arithmtiques sont alors possibles sur le cluster. Ainsi, sur la Figure 20, on additionne
directement deux clusters. Noter que les clusters numriques ont une couleur marron, alors
que les clusters non numriques (comme le cluster derreur) ont une couleur tirant vers le
kaki.
Il est aussi possible deffectuer une opration cluster/variable numrique (voir Figure
21) : dans ce cas, en ralit, une coercion du numrique est effectue et cest le mme type
dopration que sur la Figure 20.
4.2.3.2.2 Tableaux
Les tableaux regroupent un nombre variable dlments du mme type sur 1 ou
plusieurs dimensions. Toutes les oprations de manipulation des tableaux se trouvent dans la
Taille dun tableau . Notons que
palette tableau. La taille dun tableau est donne par
ce vi est polymorphe : il peut avoir nimporte quel tableau en entre (quel que soit le type des
lments contenus) 1 ou plusieurs dimensions. Si le tableau en entre a une dimension,
Taille dun tableau renvoie un entier (nombre dlments du tableau) alors que sil
possde plusieurs dimensions, il renvoie un tableau dentiers (1 entier par dimension, donnant
sa taille).
Les tableaux sont indexs de 0 taille_dimension-1 pour chaque dimension.
Ainsi, pour obtenir le 1er lment dun tableau 1 dimension, on utilise
Indexer un
tableau en demandant llment dindex 0. Notons que ce vi change dapparence en fonction
de la dimension du tableau donn en entre. Ainsi, pour un tableau 2 dimensions, son
, ce qui permet de donner lindice de la 1re et de la 2nde dimension. Si lon
apparence est
ne donne en entre que lindice de la 1re dimension, alors LabVIEW comprend que lon veut
accder au tableau. Cela est gnralisable un tableau de dimension n : si lon donne
uniquement la 1re valeur dindice (ou rien, ce qui quivaut entrer la valeur 0), on obtient le
tableau n-1 dimensions contenu cet indice.
21
En LabVIEW, labsence de valeur nexiste pas : si un flot est suppos sortir dun vi,
alors il y aura une valeur sur le flot. Pour les tableaux, cela signifie quaccder un tableau
dlments de type T au-del de la taille du tableau (aprs lindice taille_dimension-1), une
valeur sera tout de mme renvoye par Indexer un tableau . Cette valeur sera la valeur par
dfaut du type (par exemple, 0 pour un numrique, tableau vide si cest un tableau, etc.).
Un flot de donnes de type tableau est reprsent en fil pais (pour un tableau
unidimensionnel) et en double pour un tableau multidimensionnel. La couleur de base du trait
est celle du type dlment du tableau (exemple : orange pais signifie tableau 1 dimension
de nombres flottants).
Exercice d'application 3 : comprendre le fonctionnement des tableaux, voir la correspondance avec un
fichier tableur. Prendre conscience des problmes de localisation du sparateur dcimal (utilisation du
. ou de la , comme sparateur dcimal dans le tableur). Comprendre la faon dont LabVIEW gre
les noms de fichier et les vi de manipulation de noms de fichiers.
A faire : lancer une application tableur (MS Office, Ou StarOffice), et crer une feuille de
calcul avec 2 colonnes de nombres rels, qui sera enregistre sous le nom essai tableau 1.csv.
Le but du vi est dafficher sur un indicateur combien il y a de lignes et de colonnes, et
dafficher la moyenne des nombres de la 1re colonne.
Pour la lecture, on utilisera Lire un fichier tableur . Attention, peut entraner le remplissage
du tableau par ligne ou par colonne. Utiliser laide dtaille pour ce vi. Pour trouver un vi de
calcul de moyenne, utiliser la fonction rechercher de la palette de fonctions.
Lorsque le traitement fonctionne, essayer de mettre le nom du fichier tableur utilis en entre
sous la forme dune constante : il sagit dexprimer dans le diagramme que le fichier tableur
sappelle essai tableau 1.csv et se trouve dans le mme rpertoire que le vi (quil conviendra
donc denregistrer au mme endroit).
Remarque : le vi Lire un fichier tableur est polymorphe. En effet, il peut lire des
flottants (Double), des entiers, ou des chanes de caractres dans le fichier et ainsi slectionner
le type de donnes fournies en sortie (le tableau bidimensionnel de valeurs). Certains vi
polymorphes comprennent la forme quils doivent choisir grce leur entre (cest le cas par
exemple d indexer un tableau ), dautres, au contraire, ne peuvent la dterminer partir de
leur entre. Avant la version 8 de LabVIEW, il fallait faire un click droit sur un tel vi
polymorphe afin de trouver le menu et de slectionner la forme utiliser. Depuis la version 8,
le polymorphisme dun tel vi se traduit par un petit menu droulant se situant sous licne
(voir ).
4.2.3.2.3 Waveforms
Le type waveform est un type correspondant un cluster possdant un champ date
(absolue ou relative) t0, un champ flottant reprsentant lintervalle de temps dt sparant
chaque valeur, et un tableau de valeurs relles Y. Dans les versions rcentes de LabVIEW, un
champ additionnel de type variant permet certains priphriques dajouter des donnes
spcifiques. Nous verrons les waveforms lors de la partie acquisition de donnes. A notre
22
niveau actuel, ce qui est intressant est de voir que LabVIEW utilise lui-mme des types
composs qui pourront, comme les types de base, tre utiliss pour vrifier la cohrence du
diagramme.
4.2.3.2.5 Classes
La version 8 de LabVIEW a apport une rvolution attendue depuis longtemps par
nombre de programmeurs LabVIEW. Il sagit de la notion de classes. Il est possible de dfinir
un type comme tant une classe (on peut voir cela comme une sorte de cluster avec des
champs). On dfinit ensuite des mthodes comme des vis qui permettent de manipuler ce type.
Le type nest accessible que par les mthodes donnes, ce qui permet de contrler la faon
dont les variables de ce type (les objets) seront manipules. On parle de programmation objet.
Lavantage de la programmation objet est la notion dhritage et de polymorphisme de classe.
Illustrons le concept dhritage par un exemple : supposons quon dfinisse une classe
vhicule, avec un certains nombre dattributs (en fait les champs du cluster utilis pour
reprsenter un vhicule) et de mthodes (calculer le poids, le nombre de roues, etc.). On peut
crer une classe automobile et une classe avion qui hritent de la classe vhicule : il est alors
inutile dans chacune de ces classes de redfinir les attributs prsents dans vhicule puisquils
sont hrits de la classe mre. Les mthodes peuvent tre redfinies si besoin est, ou tout
simplement hrites de la classe vhicule. Des attributs et mthodes spcifiques un avion ou
une voiture seront ajouts. Le polymorphisme de classe consiste alors pouvoir dfinir des vi
prenant un vhicule en entre : lexcution, on pourra en fait passer une automobile en
entre, ou bien un avion, puisque tout ce qui existe, tout ce dont on pourrait avoir besoin, est
dfini sur ces classes. On peut donc passer indiffremment un vhicule, une automobile ou un
avion, ou tout classe qui hrite de vhicule la place du vhicule : do le polymorphisme.
Nous ne parlerons pas de programmation objet pendant cette formation, mais le lecteur
intress est invit lire la documentation et regarder les exemples fournis dans LabVIEW 8.
A faire : rechercher les vi existant dans LabVIEW concernant le mot alatoire . Cette
fonction gnre un nombre pseudo-alatoire uniforme sous forme dun flottant compris entre
0 et 1. Nous souhaitons crer un gnrateur alatoire qui prend en entre deux nombres entiers
I32 que nous appellerons min et max, et gnre un nombre pseudo-alatoire uniforme sur
lintervalle [min..max].
La formule mathmatique utiliser est :
nombre_alatoire = arrondi(nombre_aleatoire_entre_0_et_1*(max-min) )+ min
Sauvegarder le vi obtenu sous le nom Alatoire.vi (pas indispensable, mais toujours
bon).
Faire des tests avec diffrentes valeurs : min et max positifs, ngatifs, min positif, max
ngatif, min=max, max>min
23
Remarque : le but est de transformer ce vi tel quil soit utilisable en sous-vi, il serait donc
superflu de travailler outre mesure sur lapparence de la face-avant.
24
A partir dici, le vi peut tre utilis en tant que sous-vi. Cependant, il est fortement
conseill de lui donner une icne et une documentation.
Exercice d'application 5 : rendre un vi utilisable en tant que sous-vi
Entre de texte
Couleurs courantes
davant et darrire plan
25
26
Notons au passage que LabVIEW nautorise pas la rcursivit, ainsi un vi ne peut sappeler
lui-mme. Il existe des moyens dtourns mais assez complexes de contourner cette
limitation.
Il peut tre intressant, lorsquon utilise souvent certains vi personnels, de les avoir toujours
porte de main. On pourrait ainsi les placer dans la palette de fonctions. On peut personnaliser
de deux faons la palette de fonctions :
la faon la plus simple consiste faire apparatre son vi dans la palette Bibliothques
utilisateur . Pour ce faire, il suffit denregistrer son vi dans le dossier user.lib de
LabVIEW (LabVIEW se trouve gnralement, sous Windows, lemplacement
C:\Program Files\National Instruments\LabVIEWx.y o x.y est la version (en ce
moment 8.2). Noter quil faut pour cela avoir les permissions dcriture dans ce
dossier. LabVIEW doit tre redmarr pour que la palette soit mise jour, et prsente
les vi prsents dans ce dossier (voir Figure 28).
Figure 28 : dposer un vi dans user.lib le fait apparatre dans la palette Bibliothque utilisateur
une seconde manire, plus avanc (niveau expert) est utilise lorsque lon a cr
compltement une bibliothque. Elle consiste regrouper sa bibliothque dans une
arborescence de dossiers. Le dossier racine de cette arborescence est alors mis dans le
dossier vi.lib\addons du dossier de LabVIEW. Ensuite, on pourra utiliser ldition
de menus pour personnaliser le rsultat.
Par consquent, en gnral, on se contente de dposer les vi personnels dans user.lib
jusqu ce quon ait se poser la question de crer une bibliothque personnelle lorsque la
Bibliothque utilisateur contient trop de vi.
Exercice d'application 8 : connatre larborescence des fichiers LabVIEW
A faire : trouver le dossier LabVIEW avec lexplorateur de fichiers. Regarder ce qui se trouve
dans user.lib , et dans vi.lib .
27
28
Cas visualis
(ici cas o le boolen en entre est vrai)
Condition du test
(ici boolen => if/then/else)
Figure 29 : la structure de choix avec une condition boolenne en entre est un if/then/else
29
Figure 31 : une structure est comme tout nud LabVIEW, elle ne sexcute que lorsque toutes ses entres
sont disponibles
Exercice d'application 9 : crer une structure conditionnelle, utiliser Animer lexcution
A faire : implmenter le vi donn sur la Figure 31, excuter en mode Animer lexcution .
Les valeurs de A et B sont-elles lues ds le dbut, ou aprs 3 secondes ?
Exercice d'application 10 : utiliser une structure conditionnelle, utiliser un sous-vi personnel, utiliser une
bote de dialogue
30
31
Nombre ditrations
A faire : implmenter le vi donn sur la Figure 33, excuter en mode Animer lexcution :
constater que les valeurs ne sortent de la boucle qu la fin de son excution.
32
sortie. A la fin de la boucle, le tableau de sortie contient chaque lment du tableau dentre
auquel on a ajout 5.
Notons que lexemple donn ici est stupide puisque LabVIEW autorise les oprations
arithmtiques entre scalaires et tableaux (on peut donc directement ajouter 5 un tableau).
Exercice d'application 12 : utiliser une boucle For
33
Figure 36 : la rtroaction dans une boucle ne peut se faire via un flot de donnes classique
En ralit, ce que nous souhaitons reprsenter correspond la vue qui est donne sur la
Figure 37. Il ny a pas de cycle : le calcul dune itration est donn en entre de la suivante,
comme si le tunnel de sortie de litration tait reli au tunnel dentre de lautre. Cependant,
un tunnel ne sort pas de valeur aux la fin de chaque itration mais uniquement la fin de la
dernire itration.
1er lment
dernier lment
2me lment
N-1
LabVIEW offre pour pallier cela le registre dcalage. Sous ce nom barbare ne se
cache que relier la sortie dune itration lentre de la suivante . Dun point de vue
pratique, il suffit pour crer un registre dcalage de faire un click droit sur le tunnel quon
souhaite transformer en registre dcalage et de choisir Remplacer par un registre
dcalage . On est alors amen dsigner le tunnel correspondant (lentre si on a remplac la
sortie par un registre dcalage, la sortie si on a remplac lentre). Le vi correct de calcul de
moyenne est donn sur la Figure 38.
34
Notons au passage que le 0 en entre du registre dcalage donne sa valeur initiale, et que la
valeur du registre en sortie de boucle est la dernire valeur calcule (comme si ctait un
tunnel classique). Il est important de toujours donner une valeur initiale un registre
dcalage (sauf dans certains cas spcifiques). En effet, si on ne donne pas de valeur initiale, le
comportement est le suivant : lorsque le registre na jamais pris de valeur auparavant, il prend
la valeur par dfaut du type comme valeur initiale. Par contre, si le vi est appel plusieurs fois,
sa valeur initiale est la dernire valeur inscrite (c'est--dire lors de lappel prcdent).
Exercice d'application 13 : manipuler un registre dcalage, et un nud de rtroaction
A faire : sinspirer du vi donn sur la Figure 38 pour vrifier que la moyenne du gnrateur
alatoire est bien au milieu de lintervalle min..max (faire 1000 itrations). Remplacer le
registre dcalage par un nud de rtroaction (cest juste une reprsentation alternative du
registre dcalage). Ensuite, afin davoir le temps de voir Moyenne courante converger,
temporiser la boucle. Le principe est le suivant : une itration ne peut avoir lieu avant que
litration prcdente ne soit termine, il suffit donc de ralentir lexcution dune itration en
mettant une attente (voir Figure 31) en parallle du reste de litration.
35
Fonctionnement
identique
A faire : Placer le contenu de lExercice d'application 12 dans une boucle While. La condition
darrt est donne par la rponse de lutilisateur une bote de dialogue 2 boutons lui
demandant sil souhaite recommencer. Le comportement nest pas le comportement attendu,
pourquoi ?
36
4.2.5.4 La squence
La structure squence sert dans des cas comme celui de lExercice d'application 15 :
lorsque lon souhaite obliger un certain ordre dans les actions, mais quil ny a pas moyen
dutiliser les flots de donnes pour le forcer.
LabVIEW propose 2 structures squence : lune empile, lautre droule. Il ny a pas
de diffrence smantique, mais uniquement des diffrences de reprsentation entre les 2. La
squence droule tant plus lisible, et plus simple dutilisation, je conseillerais de lutiliser
dans toute situation. Pour crer une telle squence, on place une premire tape de squence,
puis laide dun click droit sur le bord de celle-ci (voir Figure 40) on peut ajouter dautres
tapes. Lide est quune tape ne peut commencer avant que ltape prcdente ne soit
termine.
37
On peut afficher plusieurs courbes comme sur la Figure 42 en plaant les points de
chaque courbe afficher dans un cluster.
Exercice d'application 17 : crer un graphe droulant multicourbe, personnaliser laffichage
4.3.1.2 Graphe
Un graphe ncessite un tableau de points ou un waveform par courbe affiche. Sur la
Figure 43, on utilise un vi de la palette Traitement du signal Gnration de signaux
qui donne un tableau de flottants en sortie.
38
Figure 43 : un graphe
39
4.3.1.3 Graphe XY
Le graphe XY permet de tracer des courbes paramtriques. Pour ce faire, il faut
envoyer un cluster contenant les points pour X, et les points pour Y sur chaque composante
du cluster en entre du graphe (voir Figure 46).
Figure 46 : un graphe XY
Pour afficher plusieurs courbes, on placera les clusters de chaque courbe dans un
tableau quon envoie sur le graphe XY (voir Figure 47).
40
ces traitements) ou encore des donnes pures (par exemple, sauvegarde des donnes
dun programme sous forme de leur type). Les fichiers textuels reprsentent la
plupart des fichiers utiliss couramment (fichier .csv, fichier texte, fichier de
configuration, etc.).
A la fin, on ferme le fichier. Si lon souhaite lutiliser ultrieurement, il faudra le rouvrir afin dobtenir un nouveau refnum.
On retiendra donc quil y a 3 tapes lors de la gestion dun fichier : ouverture, lecture/criture,
fermeture. Etant donn que LabVIEW sadresse diffrents types de programmeur, de
nombreux vi cachent ces 3 tapes en les intgrant directement (cest le cas de celui que nous
avons utilis dans lExercice d'application 3). De plus, LabVIEW propose plus que les
fichiers binaires ou textuels afin de faciliter les oprations courantes de manipulation des
fichiers :
Fichier tableur : lecture/criture de/vers le format .csv
Fichier de configuration : manipulation de fichiers au format .ini (comme par exemple
c:\windows\win.ini). Ces fichiers sont assez typiques pour grer la configuration des
programmes, bien quon commence utiliser le format XML de plus en plus pour
cela. Voici un exemple de fichier de configuration :
; ceci est un commentaire
[General]
; entre crochet on nomme une section
Language = fr
; les valeurs sont donnes sous la forme cl = valeur
BackGroundColor = red
Font = Times
Fontsize = 12
[Graph]
HistorySize = 10000
42
43
Une commande ne possde quune face avant, et permet de crer des commandes
lallure personnalise. Elle permet aussi et surtout de crer des types : lorsquun type strict
est utilis dans un vi, que ce soit sous forme de constante, de commande ou dindicateur, il
sera mis jour si le type est modifi. Cest exactement ce que nous voulons. La Figure 51
montre la dfinition dun tel type.
44
Icne personnalise
(conseil: choisir une icne homogne
pour les types)
45
Dans tous les cas, la valeur actuelle est envoye sur Config out . Un autre avantage
de cette technique est quen ouvrant la face avant de ce vi lexcution, on peut voir son
contenu (valeur de Config out ).
Exercice d'application 22 : crer un vi non rentrant de stockage de valeur globale, utiliser un type strict
A faire : crer un type strict numr dans le projet, contenant les valeurs lire et crire. Utiliser
les deux types stricts crs pour implmenter le vi de la Figure 52 qui sera aussi intgr au
projet. Le transformer en sous-vi tel que Action est une entre ncessaire.
La Figure 53 montre lenregistrement de la configuration dans un fichier appli.ini se
trouvant dans le mme dossier que le vi. Remarquer lutilisation du vi de stoackage.
A faire : Implmenter le vi donn sur la Figure 53, ainsi que le vi symtrique qui lit le fichier
appli.ini et, sil ny a pas derreur, crit la configuration dans le vi non-rentrant de stockage.
Notons que ce type de vi peut-tre utilis aussi pour faire communiquer deux parties parallles
dun programme : lun crirait des donnes, son rythme, et lautre les lierait. Cest ce type
de vi qui est utilis pour faire de la communication asynchrone.
46
Le moyen le plus simple de crer une IHM utilisant les vnements est dutiliser le
modle propos ( Fichier Nouveau puis choisir Application de haut niveau
utilisant les vnements ). Le vi obtenu est alors celui de la Figure 54.
Timeout
Evnement trait
La boucle montre est la boucle principale de lapplication (on aura la mme boucle
pour une bote de dialogue). La structure vnement attend quun vnement pris en compte
arrive, le vi est donc bloqu en labsence dvnement. Si lon souhaite faire quelque chose
mme en labsence dvnement, on cblera le Timeout de sorte quau bout du nombre de
millisecondes en entre, lvnement timeout aura lieu.
On peut rcuprer tout vnement : click sur un bouton, dplacement de la souris,
fermeture de fentre, de lapplication, etc. On peut diter et ajouter des vnements traiter
partir dune bote de dialogue comme celle prsente sur la Figure 55.
47
Evnements grs
Par la condition
48
A faire : placer les vi Alatoire.vi et le programme de test que nous avions fait lors de
lExercice d'application 18 (celui avec lhistogramme) dans le projet cr pour grer des
configurations. Ajouter dans le projet un nouveau vi cr partir du modle Bote de
dialogue utilisant les vnements , et le modifier de sorte quil soit similaire la Figure 57.
Le fonctionnement sous-jacent doit tre pour Recharger de remettre la valeur de
Configuration la configuration courante ( laide du vi non rentrant). Lors de lappui
sur le bouton Ok , on modifie la configuration courante, et on lenregistre dans le fichier
.ini.
Remarque : Configuration tant une commande, on pourra le modifier en utilisant une
variable locale.
49
Fermeture dsactive
A faire : dans le projet utilis dans lexercice prcdent, se baser sur le vi de lExercice
d'application 18 (histogramme) afin de crer une application base sur les vnements dont la
face avant est donne sur la Figure 58. Noter quelle possde un titre personnalis, pas de
barre doutils (mais conserve un menu droulant pour pouvoir larrter en cas de
plantage ). Appuyer sur le bouton Calculer lance un test du gnrateur alatoire, et
lappui sur le bouton Options ouvre la popup (fentre modale) de configuration faite lors
de lexercice prcdent. Attention, si le bouton Ok est appuy pour fermer cette fentre,
on utilise les nuds de proprit pour changer la couleur de la courbe et la taille de la police
de ltiquette de nom de laxe des X et des Y en fonction de la configuration (on ignorera le
paramtre TailleHistorique . La mme chose (appliquer les options lues dans le fichier .ini)
doit tre faite ds le lancement de lapplication.
50
Ajouter ensuite des onglets : le premier panneau affiche le contenu de la face-avant actuelle,
alors que le second affiche des lments statiques A propos de possdant des
informations sur le programme et son auteur.
Le problme est que trs rapidement, lorsque beaucoup dlments sont configurables,
le vi possdant lIHM de lapplication devient trs volumineux et presque inextricable. Nous
allons donc voir 2 techniques permettant de passer par des sous-vi : la premire consiste
utiliser un conteneur de face-avant secondaire, la seconde consiste utiliser des rfrences sur
les terminaux.
51
ressemble
pour un graphe.
52
Il suffit ensuite dutiliser des nuds de proprits acceptant des rfrences en entre
(palette Contrle dapplications ), c'est--dire des nuds qui ne sont attachs aucun
lment de face-avant. La modification des proprits du graphe peut donc tre effectue dans
un sous-vi comme sur la Figure 62.
53
5 Conclusion
Jespre que ces explications et exercices auront aid le lecteur, dbutant, ou
intermdiaire, progresser dans lutilisation du langage LabVIEW. De nombreux domaines
restent explorer : utilisation du rseau, optimisations, intgration dans le systme
(ActiveX,), cration et utilisation de DLL, cration de bibliothques compltes, utilisation
des classes, gestion fine du multitche, gestion des proprits dexcution des vi, cibles
spcifiques, gestion des sources et versions, etc. mais jespre que laccent port sur
lutilisation de la documentation et des recherches dexemples pousseront les curieux
trouver relativement simplement ce dont ils auront besoin lavenir.
54
55