Académique Documents
Professionnel Documents
Culture Documents
V123 PDF
V123 PDF
LABVIEW
Edition 2011
R. Decourt
SOMMAIRE
1. Introduction LabVIEW
15
LabVIEW
16
17
Environnement LabVIEW
18
Aide et Manuels
Aide contextuelle
Aide LabVIEW
18
19
20
20
20
20
20
21
22
23
23
26
26
26
27
28
28
29
29
29
29
30
30
31
32
33
33
33
33
33
33
34
34
34
35
35
38
SOMMAIRE
3. Crer un sous VI
41
Sous VI
42
Icne et connecteur
43
Cration de licne
Dfinir le connecteur
Slectionner ou modifier le motif du connecteur
Affectation de terminaux aux commandes et aux indicateurs
43
43
44
44
47
47
49
50
Boucles For
Auto Indexation
51
52
52
53
58
59
59
61
63
64
64
64
64
65
Boucles et tableaux 2D
65
66
Polymorphisme et tableaux
Clusters
Crer des clusters sur la face avant
67
69
69
70
71
73
73
SOMMAIRE
Les Squences
Variable locale de squence
Comment viter lutilisation des squences
73
73
75
75
75
77
79
80
80
80
82
84
84
85
86
86
86
88
89
89
89
91
Manipulation de chanes
Chanes et Nombres
91
91
93
Les VI express
8. Programmation multithread
Introduction au multithreading sous LabVIEW.
Gnralits.
Avantages
93
93
93
94
95
98
101
102
102
102
SOMMAIRE
Modle de programmation
Modle matre/esclaves (Master/Slaves)
Modle parallle
Exemple : Traitement parallle de donnes concurrentes
Traitement srie par lot dun flot de donnes (pipeline)
Exemple : ACQUISITION-TRAITEMENT-ENREGISTREMENT
102
103
103
103
103
103
103
103
103
104
104
104
104
104
104
105
106
106
106
106
107
107
109
109
109
112
114
114
115
115
115
116
117
117
117
117
119
Introduction
120
Chargement dynamique de VI
121
Prambule
Rfrencement dun VI
Chargement dun VI
Lancement et transmission des paramtres
121
121
121
122
SOMMAIRE
10.
Visualisation et contrle
Via le serveur WEB
Activation du serveur WEB
Cration de la page HTML
Prise de contrle
Suivi des connexions
Via LabView
Mode manuel.
Mode programm
Applications partages
Transmission de donnes
Variables partages
Data Sockets
Protocoles TCP/UDP
Connexion au VI server
Principe
11.
Amlioration de linterface
123
124
124
124
124
124
125
125
126
126
128
128
128
129
129
132
132
135
136
137
Edition.
Gestion.
Menus des objets de face avant
Structure dvnement
Dfinition
Gestion
Evnement provenant dautres VI
Enregistrement dvnements utilisateur
Changement du nom dvnement
Les CommandeX
Gnralit
137
137
138
139
139
139
140
142
143
144
144
144
144
144
144
145
145
145
148
148
SOMMAIRE
Cration
12.
148
Aperu
La programmation oriente objet
Modles objets
La classe
Lencapsulation
Lhritage
Polymorphisme
Cration dobjets
Les bibliothques
Les Proprits (ATTRIBUTS)
Les mthodes
Dynamique versus Statique
Accesseurs et mutateurs
Accs aux ATTRIBUTS
Droits daccs aux mthodes
151
152
152
152
152
152
152
153
154
154
154
155
156
156
156
156
157
157
157
157
158
159
159
160
161
161
162
162
162
163
164
165
166
167
168
168
168
168
169
170
170
SOMMAIRE
Aspects cosmtiques
Les fils
Les icnes
13.
171
171
174
174
174
Acquisition de donnes
Aperu
175
176
Configuration matrielle
VIs dacquisition
176
178
178
178
182
182
DAQ Assistant
184
Sorties analogiques
186
Gnration de Waveform
14.
Contrle dinstruments
186
187
189
Gnralits
190
191
Architecture du logiciel
Configuration du logiciel
191
191
194
194
194
195
197
197
197
198
200
Driver dinstrument
202
202
10
SOMMAIRE
15.
205
205
205
205
208
208
209
209
209
210
210
213
Introduction
214
215
Alarmes et vnements
Types dalarmes
Changement des proprits dalarmes
Rcupration et visualisation des alarmes
Alarmes Utilisateurs
Base de donnes
Enregistrement des donnes
Changement du nom de base
Activation de lenregistrement dune variable
215
218
218
220
221
222
223
223
223
224
224
224
224
224
224
225
226
228
228
228
228
229
231
231
231
231
SOMMAIRE
Serveurs dE/S
231
232
233
Serveurs Standards
Serveurs de donnes
Serveur dimpression
Serveur denregistrement par lots
Serveurs personnels
233
233
233
233
234
236
16.
Le module StateChart
236
237
237
237
238
239
Introduction
240
241
242
Etat
tat initial, tat final
Evnement
Transitions
Entre tats
Internes
JonctionS
Etats compos
Transitions dans les etats composs
Historiques
Synchronisation
242
242
242
243
243
243
243
244
244
245
245
246
246
247
247
248
250
250
250
250
251
251
251
11
12
SOMMAIRE
Cration
Cration des transitions
Synchrone ou asynchrone
Excution du statechart
Variables de sortie
Dboggage
17.
Labview FPGA
Introduction
Quest-ce un FPGA ?
Labview et les FPGA
Les cibles supportes
Labview RT et FPGA
Carte support des exemples
Prparation de lenvironnement
Utilisation des voies numriques
Organisation du projet
Communication entre les diffrentes parties.
Communication et FPGA et RT
Communication entre cible RT et Supervision
Premiers programmes
Un programme 100% FPGA
Cration dun VI FPGA
Palette doutils
Programme
Compilation
Communications entre VI FPGA et VI RT
Excution en parallle
Exemple : Un priode- mtre
251
252
252
253
254
255
257
257
257
257
258
259
259
259
259
259
259
260
260
261
261
261
261
262
262
262
262
263
263
264
264
265
266
266
266
267
267
267
267
267
268
268
268
SOMMAIRE
268
269
269
269
270
270
270
270
271
272
272
272
274
275
276
276
276
277
277
277
278
279
279
279
280
Protocole I2C
Lignesbidirectionelles
Envoie rception de donnes
Ecriture dune trame
Domaines temporels
horloges drives
Cration
Utilisation
Violation temporelles
Communication entre domaines temporels
281
281
282
282
284
284
284
284
284
284
285
286
287
287
287
287
287
288
13
14
SOMMAIRE
Annexes
Connections de la carte prototype
Bouton poussoir
LED
BNC
Afficheurs
ADC
DAC
Rappel sur lI2C.
289
289
289
289
289
289
289
290
291
INTRODUCTION A LABVIEW
1. INTRODUCTION A LABVIEW
15
16
INTRODUCTION A LABVIEW
LABVIEW
LabView (Laboratory Virtual Instrument Engineering Workbench) est un langage de programmation ddi au
contrle dinstruments et lanalyse de donnes. Contrairement la nature squentielle des langages textuels,
LabView est bas sur un environnement de programmation graphique utilisant la notion de flot de donnes pour
ordonnancer les oprations.
LabView intgre lacquisition, lanalyse, le traitement et la prsentation de donnes.
Pour lacquisition de donnes et le contrle dinstruments, LabView supporte les standards RS-232/422, USB, IEEE
488 (GPIB) et VXI/PXI, ainsi que les cartes dacquisition de donnes.
Pour lanalyse et le traitement des donnes, la bibliothque danalyse tendue contient les fonctions pour la
gnration et le traitement de signaux, les filtres, les fentres, les statistiques, la rgression, lalgbre linaire et
larithmtique matricielle.
LabView intgre un grand nombre dlments de prsentation tels les graphes droulants, des graphes XY, des
abaques de Smith, jauges, cadrans aiguille
INTRODUCTION A LABVIEW
17
Chaque objet dpos sur la face avant gnre dans le diagramme un symbole appel Terminal. Ce terminal
contient la valeur de lobjet graphique correspondant. Le symbole reprsente le type de la donne
(par ex. DBL pour double), le sens du flot, (maigre avec une flche droite sil sagit dun indicateur,
gras avec une flche gauche sil sagit dune commande)
Le diagramme contient les terminaux, les sous VIs,
les fonctions, les constantes, les structures ainsi
que les fils qui relient les diffrents objets pour
leur transmettre les donnes.
Aprs avoir construit la face avant et le diagramme, vous pouvez crer son icne et son connecteur. Si ce VI est
utilis dans un autre VI, il devient un Sous VI, il correspond une routine dans un langage
classique, le connecteur reprsente alors les paramtres entrant et sortant de la routine.
Licne identifiera le VI comme le ferait le nom de la routine. La hirarchisation des
Figure 1-3 L'icone et son
connecteur
18
INTRODUCTION A LABVIEW
ENVIRONNEMENT LABVIEW
Au lancement de lapplication, la boite de dialogue suivante apparat.
Elle permet les actions suivantes:
Dans la zone New il est possible douvrir un
nouveau VI ou un nouveau projet. Loption More
permet de crer dautres types dobjets LabVIEW
(des contrles personnaliss, des variables
globales, des VIs polymorphes, des VI pr-remplis
partir de modles).
La zone Open permet douvrir un VI existant.
La zone de droite donne accs laide et aux
exemples ainsi quaux diffrentes ressources
daide disponibles sur la toile.
INTRODUCTION A LABVIEW
19
Note Le bouton stop ne doit servir darrt que lors des phases de mise au point, il faut prvoir une
structure de programmation capable de finir correctement lexcution du VI !
Suspend lexcution du VI, licne devient rouge pour indiquer que le Vi est en pause, Appuyer de
nouveau sur le bouton pour continuer lexcution.
Permet de choisir la fonte, la graisse, la couleurdun champ contenant du texte.
Permet daligner des objets, den galiser lespacement et la taille.
Change le plan dun objet, pour permettre des superpositions.
Cache ou affiche laide contextuelle.
20
INTRODUCTION A LABVIEW
Fait apparatre le flot de donnes sur les fils et sur les connexions des VI.
Entre dans une structure ou dans un sous VI, lors de lexcution pas pas. Chaque structure ou sous
VI se met clignoter lorsquil est prt tre excut.
Saute lexcution dtaille dune structure ou un VI lors de lexcution pas pas.
Termine lexcution dtaille dun boucle ou dun sous VI.
Dnote un problme dexcution potentiel, mais nempchant pas le programme dtre excut.
Cette option nest pas naturellement active, on y accde par OutilsOptionsDboguage.
MENUS CONTEXTUELS
La plupart des objets prsents dans les fentres de face avant et de diagramme possdent des menus contextuels
accessibles par un clic droit de souris.
MENUS
Une partie des menus contient des fonctions classiques denregistrement, ddition, de changement de fentres .
Dautres sont spcifiques LabView.
Note : les menus sont parfois inhibs lorsque le VI est en cours dexcution.
PALETTES
LabVIEW possde trois palettes flottantes respectivement nommes: Outils, Commandes, et Fonctions.
PALETTE DOUTILS
La palette doutils existe sur le diagramme et sur la face avant. Elle permet de modifier des valeurs, des couleurs,
mais aussi de cbler les entres et les sorties des icnes entre elles, de poser des points darrt, des sondes
INTRODUCTION A LABVIEW
21
Active la slection automatique des outils. Dans ce mode, LabVIEW choisit loutils adapt en fonction
de lemplacement du curseur (pas toujours trs pratique). On peut lui prfrer le raccourci clavier
touche espace , qui commute les deux outils des plus utiliss (slection et doigt dans la face
avant, slection et bobine dans le diagramme) ou la touche Tab qui propose successivement les
quatre outils les plus courants.
Loutil doigt change la valeur dune commande, slectionne un texte, Le curseur adopte la forme
lorsquil est plac dans une zone contenant des caractres.
Loutil flche slectionne, dplace, redimensionne les objets. Il adopte lune des formes suivantes
lorsquil est sur langle dun objet redimensionnable.
Loutil dition de texte permet de changer les tiquettes, dditer des objets de type caractre et
de placer du texte libre dans une fentre.
Loutil bobine sert au cblage des VIs.
Accde au menu contextuel par un clic gauche (utilit douteuse !).
Pour se dplacer dans une fentre sans les ascenseurs.
Loutil point darrts dfinit lemplacement sur le diagramme o le programme passera en pause
pour permettre le dboguage.
Loutil sonde visualise la valeur de connections particulires.
Loutil pipette mesure la couleur dun point.
Le pinceau colorie un objet.
PALETTE DE COMMANDES
La palette de commandes est disponible dans la fentre de face avant. Elle apparat fugitivement lors dun clic
droit dans un endroit vierge de la fentre, ou par Fentre Afficher la palette de commandes. Elle contient tous
22
INTRODUCTION A LABVIEW
les lments graphiques disponibles pour crer linterface utilisateur. Ceux-ci sont hirarchiss par type de
donnes ou par grandes familles dobjets. Vous apercevez ci-dessous la palette de commandes.
PALETTE DE FONCTIONS
Elle est accessible dans le diagramme par les mmes mthodes que celle de commandes. Elle contient lensemble
des fonctions de LabVIEW regroupes par type de fonctionnalits (Programmation, acquisition, traitement
mathmatiques, connectivit.).
INTRODUCTION A LABVIEW
CHARGEMENT DE VIS
Lors du chargement la boite de dialogue suivante apparat (parfois trs furtivement).
Le champ Chargement du panneau ci-dessus affiche le VI en cours de chargement et comptabilise les VIs en
mmoire.
Si LabVIEW ne trouve pas un sous VI, il le cherche dans les chemins spcifis dans le menu OutilsOptionsItem
Chemin du menu droulant.
23
24
INTRODUCTION A LABVIEW
Utilisez loutil Doigt pour changer la valeur des commandes, soit en tournant les boutons, (en
cliquant sur la marque dindex et en faisant tourner), soit en cliquant sur les flches gauche des
commandes, ou en entrant une valeur numrique dans lafficheur numrique.
Lorsque vous entrez une valeur numrique, celle-ci nest prise en compte quaprs validation par le
bouton Entrer, ou par la touche Entr du pav numrique (pas la touche Entre de la zone alpha qui
introduit un retour chariot sil sagit dune zone texte).
Relancez le VI de nouveau pour constater les changements effectus.
DIAGRAMME
Visualisez la diagramme par le biais du menu Fentre Diagramme ou par le raccourci <Ctrl-E>
INTRODUCTION A LABVIEW
Vous y voyez la plupart des lments disponibles sur un diagramme, des fonctions, des sous VIs, des structures,
des constantes...Ces notions seront dtailles dans ce cours.
En double-cliquant avec loutil de slection sur le sous VI suivant. Vous ouvrez la face avant du sous
VI nomm Demo Fluke 8840A
La face avant est conue pour ressembler lappareil rel cest pourquoi les applications LabView sont nommes
instruments virtuels. La hirarchisation des applications en sous VIs permet damliorer la rutilisation du code.
Fermez le sous-VI Demo Fluke 8840A, et gardez le VI Frequency Response en mmoire.
Fin de lexercice 1-1
25
26
INTRODUCTION A LABVIEW
AIDE ET MANUELS
LabVIEW possde une aide classique, et une aide contextuelle.
AIDE CONTEXTUELLE
Elle saffiche soit par le menu AideAide contextuelle soit par le raccourci <Ctrl-H> ou enfin en
cliquant sur licne. La fentre daide affiche continment une information sur lobjet situ sous le
curseur. Ce peut tre une information sur la nature dune liaison, le type de donnes fournir un
indicateur, le fonctionnement dun sous VI ou dune fonction.
Ci-dessous un exemple de contenu dune aide contextuelle.
AIDE LABVIEW
Laide de LabView dtaille lensemble des fonctionnalits de lapplication. National Instruments fournit galement
des tutoriaux et des manuels au format PDF. Le site www.ni.com contient de nombreux exemples, des notes
dapplications, des liens
27
28
CREATION DUN VI
Les VI comportent trois parties la face avant, le diagramme ainsi que licne et son connecteur. Se rfrer au
chap. 3, Cration dun sous VI, pour plus dinformation concernant licne et le connecteur associ.
FACE AVANT
La face avant comporte des indicateurs et des contrles qui sont les entres et les sorties du VI.
Les boutons poussoirs ou rotatifs sont par dfaut des contrles.
Les graphiques, voyants, vumtres sont par dfaut des indicateurs.
Les contrles simulent les entres des instruments virtuels et fournissent les donnes au diagramme. Les
indicateurs simulent la rponse des instruments et affichent les donnes acquises ou engendres par les VIs.
Utilisez la palette de commandes pour placer contrles et indicateurs sur la face avant.
CONTROLES ET INDICATEURS NUMERIQUES
Les deux objets les plus couramment utiliss sont les contrles et les indicateurs numriques, reprsents cidessous
Pour saisir ou modifier la valeur dun contrle numrique, on peut utiliser les flches dincrment ou entrer une
valeur avec loutil texte.
CONTROLES ET INDICATEURS BOOLEENS
A utiliser pour saisir et afficher des valeurs binaires. Les objets boolens les plus communs sont les interrupteurs
bascules et les diodes LED.
DIAGRAMME
Le diagramme est compos de nuds, terminaux, connexions comme le montre la figure suivante :
NUDS
Les nuds sont des objets sur le diagramme. Ils possdent des entres et/ou des sorties et effectuent des tches
spcifiques lorsquun VI fonctionne. Ils sont quivalents des fonctions dans les langages textuels.
TERMINAUX
Les objets situs dans la face avant apparaissent comme des terminaux dans le diagramme. Les
terminaux refltent le type de donnes du contrle ou de lindicateur. Ainsi le terminal situ
gauche reprsente un contrle numrique, dfini comme un rel en double prcision.
Les terminaux sont des ports de communication entre la face avant et le diagramme. Ils sont
quivalents aux paramtres et aux constantes dans les langages textuels. Les donnes rentres dans
les contrles de la face avant (A et B Fig. 2-1) entrent dans le diagramme par les terminaux. La
fonction addition produit une nouvelle donne qui arrive sur le terminal de lindicateur et saffiche
dans la face avant.
Les connecteurs des oprateurs peuvent tre visualiss en slectionnant loption Terminaux visibles
du menu contextuel.
FILS
Les fils transfrent les donnes dans le diagramme, ils sont ainsi analogues aux variables dans les langages
textuels. Chaque fil provient dune seule source mais peut tre runi beaucoup de VIs ou de fonctions destines
les traiter.
29
30
Type de la
donne
Scalaire
Tableau 1D
Tableau 2D
Couleur
Orange (rel)
Numrique
Bleu (entier)
Boolen
Vert
Chane
Rose
Tableau 2-1 types de fils
31
32
DIAGRAMME
Afficher le diagramme (FentreAfficher le diagramme)
Choisir les fonctions Multiplication et Addition dans la
palette fonctions numriques. Si celle ci nest pas visible,
cliquer dans le diagramme dans une zone libre
Placer deux constantes numriques dans le diagramme.
Lors de son placement initial, celle-ci est en surbrillance
indiquant quune valeur peut y tre directement saisie.
Quand la bobine passe sur un terminal celui-ci clignote, indiquant quun clic effectuerait la connexion. De plus un
message prcisant le nom du terminal apparat.
Pour supprimer un fil en cours de cration, appuyer sur <Echap>, cliquer droite ou gauche sur la source du fil.
Afficher la face avant
Enregistrer le VI car il servira plus tard.
Choisir FichierEnregistrer, Aller en c:\exercises\LV Basics I.
Note Enregistrer tous les VIs de ce cours dans le rpertoire c:\exercises\LV Basics I.
Enregistrer sous le nom Convert C to F.vi.
Entrer un nombre dans le contrle numrique et lancer le VI.
A laide de loutil contrle ou de loutil dcriture saisir un nouveau nombre. Essayer plusieurs
nombres et relancer le VI.
Fin de lexercice 2-1
TECHNIQUES DE MODIFICATION
Diverses mthodes permettent dinsrer des objets et de modifier les faces avant et les diagrammes
CREATION DOBJETS
La cration dobjets est possible partir de la palette de contrle mais galement en effectuant un clic droite sur
le terminal dun nud puis en slectionnant loption Crer.
La suppression des contrles et des indicateurs nest possible que depuis la face avant. Les terminaux
correspondants disparaissent alors automatiquement du diagramme.
SELECTION DOBJETS
Utiliser la flche de position pour slectionner un objet. Une fois slectionn lobjet est entour dun pointill.
Pour slectionner plusieurs objets, enfoncer la touche <majuscule> puis cliquer sur les objets concerns. On peut
galement cliquer dans une zone dpourvue dobjets, puis dplacer la souris jusqu entourer les objets
slectionner.
DEPLACEMENT DOBJETS
Pour dplacer un objet, le slectionner puis le tirer jusqu la position choisie ou le dplacer laide des flches.
Le dplacement peut tre limit une seule direction (horizontale ou verticale) en appuyant sur la touche <
majuscule> pendant la translation.
33
34
Segment
Branche
2 clics slection
dune branche
Jonction
3 clics slection de
tous les fils
Changement de
direction
FILS CASSES
Un fil cass apparat en pointill. Cela arrive si lon tente de relier 2 objets vhiculant des donnes incompatibles.
En plaant la bobine de fil sur un fil cass, un message apparat dcrivant lorigine du conflit. Pour supprimer un fil,
effectuer un triple clic dessus et frapper la touche <Suppr>. Pour supprimer tous les fils casss utiliser le raccourci
<CTRL>+B
35
36
FACE AVANT
Dposez sur la face avant trois interrupteurs bascules et trois LED sans vous soucier de leurs labels ni de leurs
positions. Vous pouvez utiliser le clonage avec la touche <CTRL>.
37
38
MODIFICATIONS
Tirer et lcher les contrles et les indicateurs de la face avant vers le diagramme pour crer des
constantes et vice-versa.
Cloner un objet en appuyant sur la touche <Ctrl> et en le tirant jusqu sa position finale.
Limiter le dplacement dun objet en appuyant sur la touche <Maj.> lors de son dplacement.
Maintenir la proportionnalit dun objet lors de sa rduction en appuyant sur la touche <Maj.>.
Pour retoucher symtriquement la taille dun objet, appuyer sur la touche <Ctrl> en ltirant.
Pour remplacer plutt queffacer, utiliser le menu <Remplacer> depuis le menu contextuel.
Pour terminer la frappe dune tiquette, taper < Maj.-Entre> ou <Entre> du pav numrique.
Pour cloner la couleur dun objet utiliser loutil copier la couleur (pipette de la palette outils) et
repeindre la cible avec le pinceau.
Pour revenir en arrire, choisir les menus Annuler/Rtablir.
Pour crer de lespace libre dans une zone du diagramme : enfoncer <CTRL> en mme temps que
loutil flche dessine un rectangle sur le diagramme.
CABLAGE
Pour savoir quels terminaux cbler, afficher laide contextuelle , en frappant <CRTL>+H. Les
connexions obligatoires sont en gras, celles qui sont recommandes en normal, les autres en gris.
Pou slectionner tout ou partie dun fil cliquer 1, 2ou 3 fois.
Pour couder un fil, lancrer par un clic de souris avant de changer de direction.
Pour matrialiser la jonction des fils par des points, aller dans le menu Outils>>Option>>Diagramme
>>Points aux jonctions.
Pour bouger un objet dun pixel utiliser les flches du pav numrique. Pour le dplacer de plusieurs
appuyer simultanment sur <Majuscules>.
Pour supprimer un fil en cours de cration appuyer sur <Echap>.
39
CREER UN SOUS VI
3. CREER UN SOUS VI
41
42
CREER UN SOUS VI
SOUS VI
Aprs avoir cre un VI, son icne et son connecteur, il est possible de lutiliser dans un autre VI.
Un VI inclus dans un autre VI est appel sous VI. Il correspond une fonction dans un langage
textuel.
Le nud dappel du sous VI correspond lappel de la fonction. Lusage de sous VI augmente la
lisibilit, la rutilisation de code et le dboguage.
La comparaison entre le code ci dessous et le diagramme montre lanalogie entre les approches.
CREER UN SOUS VI
ICONE ET CONNECTEUR
Aprs avoir cr une face avant et son diagramme, il faut personnaliser licne associe et son
connecteur.
CREATION DE LICONE
Chaque VI possde une icne dans le coin suprieur droit de la face avant et du diagramme.
Licne est la reprsentation graphique du VI. Si un VI est utilis en tant que sous VI, il est
identifi par son icne.
Licne par dfaut est reprsente gauche. Utilisez lditeur dicne pour personnaliser licne
en slectionnant Editer licne dans le menu contextuel de licne par dfaut.
Utilisez les outils situs sur la droite pour concevoir licne dans la zone ddition. Lditeur
dicones permet de concevoir des icones a partir de motif prdfinis, dajouter du texte, des
images dune bibliothque, de concevoir licne partir de plusieurs couches avec des
transparences bref normalement de faire quelque chose de beau !
DEFINIR LE CONNECTEUR
Pour utiliser un sous VI il faut dfinir un connecteur. Le connecteur est un ensemble de
terminaux qui correspondent tout ou partie des contrles et indicateurs du VI la faon des
paramtres passs dans lappel dune fonction en langage textuel. Le connecteur dfinit ainsi les
entres/sorties du VI.
Pour visualiser les bornes du connecteur, effectuer un clic droit sur licne dans la face avant,
choisir loption Visualiser le connecteur. Chaque rectangle sur le connecteur reprsente une
connexion. Le nombre de connexions par dfaut est gal au nombre de contrles et dindicateurs
de la face avant. Dans lexemple ci-dessous, on distingue trois contrles et un indicateur
43
44
CREER UN SOUS VI
CREER UN SOUS VI
OBJECTIF: CREER UNE ICONE ET UN CONNECTEUR POUR UTILISER CE VI EN TANT QUE SOUS VI
Suivre les tapes suivantes pour crer une icne et un connecteur pour le VI dj existant qui transforme des C
en Fahrenheit
Afficher la Face avant
Ouvrir Convert C to F.vi
Truc Lappel du menu FichierFichiers rcemment Ouverts permet daccder aux derniers
fichiers utiliss.
Dessiner licne
45
46
CREER UN SOUS VI
Sauvez le VI.
Fin de lexercice 3-1
CREER UN SOUS VI
47
48
CREER UN SOUS VI
CREER UN SOUS VI
49
50
CREER UN SOUS VI
51
52
LES
GRAPHES DEROULANTS
Les graphes droulants sont des indicateurs numriques destins afficher lvolution dune (ou
plusieurs) variable(s) sur une (ou plusieurs) courbe(s). Laxe des X a donc pour chelle un numro
dordre darrive du point. Les graphes droulants sont situs dans la palette Graphes. La figure
Le graphe droulant est une fentre dans laquelle lensemble des donnes est dcal dun point
vers la gauche chaque nouvelle arrive. Loscillographe efface compltement la fentre
chaque nouveau remplissage du buffer. Enfin le graphe balayage efface les anciennes donnes
chaque nouvelle arrive, une barre spare les anciennes des nouvelles, faon cran radar.
53
54
Ralisez les tapes suivantes pour simuler un suivi et une acquisition de temprature.
FACE AVANT
Crez une nouvelle face avant ci-dessous.
Prenez un interrupteur bascule verticale, il servira arrter le programme. Il se situe dans la palette
Commandes Boolen. Positionnez le vers haut laide de loutil doigt, dun clic droit. Imposez cette position
comme position par dfaut, depuis le menu contextuel : Opration sur les donnesDsigner les valeurs
actuelles comme dfaut
A laide de loutil Texte, entrez Stop comme label du bouton puis les commentaires Marche
et Arrt. La validation se fait en cliquant sur licne Entre ou par la touche Entr. du pav
numrique
Placez un graphe droulant, modifiez les labels daxe, de lgende et de graphe en consquence.
Le VI est sens mesurer la temprature de la pice, changez (directement sur laxe) du graphe les valeurs
minimum et maximum de laxe Y en 0 et 50
DIAGRAMME
Passez la fentre diagramme (CTRL-E).
Rajoutez une boucle While autour des deux terminaux prsents (Eventuellement les rapprocher avant). Pour
cela :
Modifiez laction mcanique de linterrupteur pour quil revienne seul en position par dfaut lorsquil est
appuy.
Enregistrez et lancez lexcution.
AJOUTER UNE TEMPORISATION
Lors que le VI sexcute dans la boucle, il tourne aussi vite que possible, il est possible de ralentir lexcution de
la boucle laide dune temporisation. Nous utiliserons une temporisation de 0.5s.
55
56
Placez la fonction Attendre un Multiple de ms situe dans la palette Fonctions Temps &
Dialogues. Cette fonction bloque le programme jusqu ce que lhorloge interne atteigne un
multiple entier de son entre, en loccurrence 500 ms.
Note: si le temps dexcution des autres VIs de la boucle est < 500 ms, cette fonction assure un
timing parfait. De plus, la fonction met cette partie de code dans un tat idle (inhib) ce qui
rend du temps processeur pour les autres parties du programme.
Pour placer trs simplement une constante lentre dun VI donn, cliquez droite au niveau
de la connexion dentre, et choisissez CrerConstante
Enregistrez et lancez lexcution.
Fin de lexercice 4-1
Configurez linterrupteur pour quil revienne en position marche chaque dpart dexcution, dfinissez les
graduations du bouton ( connexion jusquau relchement) , les labels
Construisez le diagramme en suivant les recommandations suivantes :
Utiliser Gnrer un nombre alatoire situ dans Fonctions Numrique pour fabriquer le donnes.
Multiplier la valeur du bouton rotatif par 1000 pour obtenir des ms, unit utilise par le timer.
Enregistrez votre VI et lexcuter changez la temporisation durant lexcution et vrifiez son effet.
Fin de lexercice 4-2
Nombre obtenir est le nombre que vous voulez voir sortir au tirage.
Tirage actuel est le nombre compris entre 0 et 100 000 que lordinateur vient de choisir.
Nombre ditrations est le nombre de coups ncessaires pour obtenir le tirage.
Gamme des donnes.
Utilisez la proprit Gamme des donnes des objets numriques pour limiter ltendue des valeurs possibles.
Par un clic droit, ouvrez la proprit Gamme des donnes de la commande Nombre obtenir. Slectionnez les
options suivantes. (U32 pour Unsigned 32 bits)
DIAGRAMME
Construisez le diagramme, en vous aidant des indications suivantes :
Gnrer un nombre alatoire fournit un nombre compris entre 0 et 1, il faut donc le multiplier
pour obtenir un nombre entre 0 et 100 000.
FonctionsNumriqueArrondir lentier le plus proche permet darrondir la valeur obtenue
aprs multiplication.
FonctionsComparaisonDiffrent retourne une valeur boolenne capable darrter lexcution
de la boucle While.
Ce terminal contient le numro de litration courante (attention la premire itration a le
numro 0 !). Il faut sortir cette valeur de la boucle en la connectant un tunnel cr
57
58
REGISTRES A DECALAGES
Les registres dcalages sont prsents uniquement dans les boucles, et permettent une itration I, de
connatre la valeur dune variable value litration I-1 (mais aussi I-2, I-3).On insre un registre dcalage
en cliquant droite, laide la bobine, sur le cot dune boucle et en choisissant loption Ajouter un registre
dcalage.
Les registres dcalage apparaissent sous la forme dune paire de terminaux. Le registre de
droite reoit des donnes de lintrieur de la boucle, elles sont transfres au registre de gauche
au dbut de litration suivante. Le registre de gauche est alors une source de donnes pour les
lments de lintrieur de la boucle.
Lillustration suivante montre le fonctionnement du registre dcalage
Au temps 0, la valeur initiale est transfre dans le registre dcalage. Au temps 1, premier tour
de boucle, la valeur initiale 0 est transfre pour tre incrmente, la valeur 1 est stocke dans
la partie droite du registre. Lorsque tout le code contenu dans la boucle a t excut, la valeur 1
est transfre de la partie droite la partie gauche du registre dcalage. Au temps 2, deuxime
tour de boucle, la valeur 1 est extraite du registre gauche puis incrmente, le rsultat 2 est
stock dans la partie droite du registre lorsque la boucle se termine, la dernire valeur peut
sortir de la boucle par une connexion du registre extrieure la boucle.
Il est possible de rajouter des lments aux registres de gauche pour obtenir les valeurs t-1, t-2,
t-3. comme lillustre la figure ci aprs.
Les nuds de rtroactions ont des options de configuration que dpassent le cadre dune
initiation. Sachez que lon peut les initialiser, et quils ne peuvent avoir quune sortie (par dfaut
t-1). Les noeuds de rtroactions peuvent tre cabls hors dun boucle, dans ce cas, tout se
passe comme sils taient dans une boucle avec un condition de fin toujours vraie.
59
60
BOUCLES FOR
La boucle ditration (boucle For) reprsente gauche excute un nombre de fois dtermin la
partie de diagramme quelle englobe. Ce type de boucle est accessible dans :
FonctionsStructuresBoucles For. Une fois lance, il est possible darrter litration
prmaturment (quivalent du break), il faut au pralable afficher le terminal de condition
darrt avec un click droit en bordure du cadre de la boucle.
Lentre N correspond au nombre ditrations faire. Le terminal i, au numro de litration en
cours.
La boucle suivante tire 100 nombres alatoires.
61
62
63
64
LES TABLEAUX
Les tableaux sont des groupements ordonns de donnes de mme type. La dimension dun tableau est le
nombre dindices dfinissant un lment. (1 dimension, le tableau contient 1 seule colonne, 2 dimensions :
ligne/ colonne, 3 dimensions : ligne/ colonne/ profondeur). Chaque lment est ainsi repr de faon unique
par ses coordonnes.
Les tableaux peuvent contenir nimporte quel type dlments (diodes, interrupteurs), except dautres
tableaux.
Vous pouvez changer la taille de laffichage des lments, ainsi que le nombre dlments visibles. Lindex
indique le numro du premier lment affich.
TABLEAUX DE CONSTANTES
Mme mthode, mais dans le diagramme : Fonctions Tableau Constante tableau puis placer une
constante du type voulu dans la structure vide.
AUTO INDEXATION
Lorsque lon cble une connexion vers lextrieur dune boucle FOR, LabVIEW stocke automatiquement les
valeurs successives dans un tableau, cest Auto Indexation. De faon rciproque, un tableau connect
lentre dune boucle sera automatiquement dsindex ( les lments sont passs un un), et la boucle sera
excute autant de fois quil y a dlments dans le tableau. Lillustration suivante illustre ce mcanisme.
Lauto indexation est dsactive en cliquant droite sur le tunnel et en slectionnant Dsactiver
lindexation.
Note Parce que les boucles FOR sont plus spcifiquement ddies lexploration des tableaux,
lauto indexation y est automatiquement active, en revanche dans les boucles While, elle ne
lest pas, il faut agir comme ci-dessus en slectionnant Activer lindexation.
BOUCLES ET TABLEAUX 2D
Pour construire un tableau 2D, il suffit dimbriquer deux boucles FOR. La boucle intrieure cre les colonnes, la
boucle extrieure, les lignes. Notez, laugmentation de lpaisseur des fils de liaisons avec le nombre de
dimensions du tableau. Le tableau 2D peut tre galement cr en ajoutant les lignes les unes aux autres (cf
exo 5.1)
65
66
Permet de :
Placer des lments dans un tableau. Sil sagit de scalaires spars, le rsultat est un tableau
1D (tableau A ci-dessous) ; sil sagit de plusieurs tableaux 1D, le rsultat obtenu est un tableau
2D (Tableau B). Mettre alors le Vi dans une boucle.
Ajouter en dbut ou fin dun tableau, un lment (Tableau D).
concatner des tableaux de mmes dimensions, en un tableau unique de mmes dimensions
(Tableau C)
La concatnation est active en cochant loption Concatner les entres du menu contextuel.
Permet de:
Extraire un lment du tableau dentre.
Extraire une ligne (ou une colonne) dun tableau 2D
POLYMORPHISME ET TABLEAUX
Les fonctions arithmtiques sont valides pour les calculs sur les tableaux. Toutes ces fonctions sont
polymorphiques, cest dire quelles oprent sur des variables de types diffrents.
Par exemple, la fonction multiplier, peut multiplier les lments du tableau 1 avec les lments du tableau 2
cbls ses entres. Si un tableau et un scalaire sont relis aux entres, lensemble des lments du tableau
est multipli par le scalaire.
DIAGRAMME
67
68
Les graphes sont accessibles par CommandeGraphes. Les graphes inscrivent les points en donnant une
abscisse initiale et un incrment chaque nouveau point, cela suppose donc des points rgulirement
distribus sur laxe des X (par ex. toutes les secondes, tous les C). Les graphes de type XY ncessitent un
tableau de valeurs dX, et peuvent donc afficher des points pris non rgulirement. Ces deux graphes sont
capables dafficher des courbes multiples.
LES GRAPHES
Les graphes acceptent :
En mono courbe
Soit un tableau 1D, dans ce cas, laxe des X est gradu, par dfaut de 1 en 1 partir de 0. On peut
modifier ces valeurs partir du menu contextuel Echelle des XFormatage
Soit un cluster contenant la valeur de X0, la valeur de x, et le tableau dY ncessaires la
construction de la forme dondes (waveform)
Multi courbes
Soit un tableau 2D, chaque ligne correspond une courbe. Dans ce cas, laxe des X est gradu,
par dfaut de 1 en 1 partir de 0. On peut modifier ces valeurs en prenant au clic droit Echelle
des XFormatage
69
70
LES GRAPHES XY
Les graphes XY acceptent :
En mono courbe
Un couple de tableau dX et dY assembls dans un cluster par la fonction ClusterAssembler.
Multi courbes
Un tableau 1D, dont chaque colonne contient les donnes (portes en abscisse) dune courbe.
Exercice 5-2 : Graphe
OBJECTIF: FAIRE UNE BOUCLE POUR CREER UN TABLEAU 1D ET AFFICHER LE RESULTAT SUR UN GRAPHE (DE
TYPE GRAPHE ET PAS GRAPHE XY).
On se propose de tracer lvolution dune temprature (simule) durant 100 points dacquisition comme dans
lexercice 4-1. Vous utiliserez une boucle For.
FACE AVANT
Vous devriez obtenir quelque chose comme (il sagit dun objet de type GRAPHE) :
DIAGRAMME
71
72
DIAGRAMME
Utilisez les lments nouveaux suivants : (Pour les dtails, utilisez laide en ligne)
Tableau Max & Min dun tableau pour rechercher les extrema du tableau de temprature.
Fonctions Analyse Mathmatiques Probabilit et Statistiques Moyenne pour calculer la
moyenne des valeurs du tableau de temprature.
MathmatiquesAjustement de courbesAjustement polynomial gnral pour calculer le
tableau de valeurs ajustes. Le tableau dX que rclame la fonction sera cr le plus simplement
possible Lordre de rgression est de 8. Vous procderez comme prcdemment pour ajouter la
courbe rgresse au graphe.
Enregistrez le VI sous le nom analysetemprature.vi et lancer lexcution du code.
Fin de lexercice 5-3
CLUSTERS
Les clusters sont des assemblages dlments disparates qui sont lquivalent des structures en langage C. Ils
permettent de rassembler dans une mme connexion des donnes de types diffrents ayant une relation plus
ou moins proche entre elles (prfrable pour lanalyse !), par exemple Nom, Prnom, Age.
Il est important dutiliser les clusters pour deux raisons :
Regrouper les donnes dans des ensembles structurellement cohrents
Diminuer le nombre des connexions des VIs, limit 28.
Notes : Il est impossible de regrouper des contrles et des indicateurs dans le mme cluster. Il est
possible dassembler et de dsassembler les lments dun cluster, soit comme en C, par leur
nom, soit par leur ordre.
Pour crer un cluster sur la face avant, slectionnez Tableau & ClusterCluster depuis le menu contextuel/
Commandes. Une fois le cadre pos, dposez lintrieur les diffrents lments constitutifs. Lordre de
placement sera lordre des lments dans le cluster leur position physique ne change rien lordre, les
tiquettes seront le nom des lments du cluster. Tous les lments sont dplaables, et modifiables, la taille
du cluster peut tre ajuste la main ou automatiquement. Cependant, un cluster tant un ensemble, cet
ensemble est, soit une commande, soit un indicateur. Les lments le constituant sont ainsi tous des
commandes, ou tous des indicateurs.
73
74
Chaque lment voit son numro dordre apparatre droite de la commande, en gris sur fond blanc, lordre
avant modification, sur fond noir lordre actuel. Il suffit de cliquer sur chaque commande dans lordre souhait
pour rordonner le cluster.
Attention, changer lordre dun cluster peut rendre le programme non excutable : si llment n tait une
chane, et quune fois rordonn il sagisse dun nombre, toutes les liaisons entre cet lment et les fonctions
qui lutilisent, seront brises. De fait, nous recommandons vivement dutiliser lassemblage et le
dsassemblage par nom qui vite cet inconvnient, mais qui est cependant plus lourd utiliser.
75
76
fonction du nombre dlments extraire, loutil doigt permettant de slectionner le nom des
lments.
Lexemple suivant montre lutilisation des fonctions de dsassemblage, notez que le dsassemblage par nom
permet dextraire le nombre souhait dlments et dans lordre le plus pratique pour le cblage. Le caractre
\s apparaissant dans les constantes chanes est le caractre dchappement correspondant espace .
Les fonctions les plus droite sont des fonctions de concatnation de chane.
Dsassemblage
par nom.
Insre un espace
Vrai
Faux
Cluster N1
Donnes
Cluster N2
Rsultats
DIAGRAMME
77
78
Le diagramme nutilise pas de fonctions nouvelles particulires, il est conseill dutiliser les fonctions
dassemblage et de dsassemblage par nom.
Enregistrer le VI sous le nom Cluster manip.vi puis lexcuter.
Fin de lexercice 5-4
79
80
STRUCTURE DE CHOIX
La structure de choix correspond la structure if...then...else utilise dans les
langages textuels.
Elle comporte un slecteur de choix dans sa partie centrale suprieur (le case du C) et une
entre de slection (le Switch du C) en forme de point dinterrogation. Les flches de part
et dautre du slecteur de choix, permettent de faire dfiler les divers cas possibles.
Le code de chaque cas est crit dans la case correspondante, une seule case est visible la fois lcran, elles
sont dtailles limpression.
Par dfaut, lentre de slection est boolenne, il est cependant possible dy connecter des entiers, des
numrations (collection dentiers et de labels disponibles dans CommandeMenu droulant & enum) et des
chanes. Le slecteur de choix sadapte automatiquement au type dentre connecte.
Un <cas par dfaut> doit tre spcifi si lensemble des cas possibles correspondant lentre de slection
nest pas dcrit (ex : lentre de slection est relie un entier ou un chane). On spcifie le <cas par dfaut> en
slectionnant Designer cette condition par dfaut, dans le menu contextuel du slecteur de cas. Ce menu
permet aussi dajouter, denlever ou de dupliquer des cas.
TUNNELS DENTREE/SORTIE
Il est possible de crer des tunnels dentre et de sortie sur une structure de choix. Cependant,
les connexions de sorties doivent tre values dans tous les cas. Ainsi tant quun tunnel de
sortie nest pas cbl pour tous les cas du slecteur, lintrieur du cadre du tunnel reste blanc, et
la flche dexcution est brise.
EXEMPLES
Les exemples suivants exposent les diffrents types de variables connectables lentre de slection. Chaque
exemple est identique et opre soit une addition, soit une soustraction en fonction dune variable de choix.
Note : apparition dun cas par Dfaut, pour dfinir les oprations faire dans les cas non prvus.
Structure de choix sur chane
81
82
Fonction
chane de programmation
Voltmtre
F0X
Ampremtre
F1X
Ohmmtre
F2X
FACE AVANT
Elle contient une commande de type numration et un indicateur de type chane de caractre.
Les numrations sont des ensembles finis de valeurs, associant un entier un label texte. Vous
les trouverez dans la palette CommandesMenu droulant & Enum. Ceci permet doffrir un
choix de valeurs limites lutilisateur.
La face avant peut ressembler :
Les labels de lnumration sont entrs laide de loutil texte, il est possible dajouter avant ou aprs la
position actuelle des lments, et den retirer dans le menu contextuel de lnumration.
DIAGRAMME
Le diagramme ne contient quune structure de choix, vous constaterez que le slecteur de la structure connat
automatiquement les choix de lnumration une fois lentre de slection relie.
Enregistrez le VI sous le nom MotPrg.vi et excutez le.
FIN DE Lexercice 6-2
83
84
LES SEQUENCES
Une squence est un artifice pour imposer lordre dexcution de VI nayant pas de liaison (sil y
avait des liaisons, lordre dexcution serait impos par le flux de donnes). Sur le plan graphique,
son cadre ressemble une diapositive, les diapositives sont places les unes derrires les autres ;
lexcution commence par le code contenu dans la premire (n0) puis continue dans lordre 1, 2,
3...
Un slecteur de squences permet dcrire le code dans la squence choisie, il est possible
denlever, dajouter, de dplacer des squences par le biais du menu contextuel du slecteur.
Il
existe aussi des squences plat qui offrent une vision plus claire des oprations
squentielles, mais plus encombrante ! Il est possible via le menu local de passer dune
reprsentation lautre.
Nous recommandons lutilisation dune structure de type case dans une boucle While ou For, comme dans
lexemple ci-dessous. Notez la possibilit de ne pas excuter certains cas en modifiant la constante tableau,
sans pour autant supprimer le code qui leurs est associ.
Cest ce que lon appelle une machine dtat
85
86
NUDS DEXPRESSION
Cet outil est trs utile pour calculer une valeur fonction dune seule variable, il se situe dans les Fonctions/
Numriques. On y entre une expression mathmatique, les oprateurs et leurs priorits sont explicits dans
laide. X reprsente dans la formule la grandeur dentre. (Attention : pas de ; en fin dexpression).
BOITES DE CALCUL
Elles sont utilises dans les oprations multi-variables, ds que les expressions sont un peu
complexes ou lorsque lon reprend un code de calcul crit en C. Elles sont accessibles par la
palette Fonctions/ Structure.
Le menu contextuel permet de crer des entres et des sorties qui seront nommes laide de loutil texte.
Les botes de calcul ont une syntaxe comparable celle du C. On peut y effectuer de multiples oprations, y
compris des structures de boucles ou de choix, consultez laide pour de plus amples informations. Lexemple
suivant vous montre un tri bulle, comme vous pouvez le constater, le code est excutable en C.
FACE AVANT
La face avant est prsente ci-dessous.
Attention le sparateur
dcimal doit tre un
point
Dmarrer/Paramtre/
panneau de
config/option
rgionale/ sparateur
DIAGRAMME
Utilisez une boucle FOR lintrieur de laquelle est place la bote de calcul. La bote possde trois terminaux,
une entre, lindice de boucle, deux sorties, sinus(x)/x, et x.
Attention aux points-virgules en fin de lignes
Vous pouvez dclarer des variables intermdiaires pour clarifier le calcul
Les botes de calcul distinguent minuscules et majuscules (syntaxe du C).
FIN DE Lexercice 6-3
87
88
CHAINES
Les chanes sont des suites de caractres ASCII, affichables ou non. Elles permettent de transfrer facilement
des donnes entre des matriels quelconques. Les fonctions principales dans cette optique sont :
Crer et manipuler des chanes.
Convertir des nombres en chanes et rciproquement.
Enregistrer et lire des fichiers ASCII.
Par dfaut, le mode daffichage interprte les codes ASCII et les transforment en caractres. Pour
visualiser ou entrer des caractres non imprimables, vous disposez du mode Affichage des codes
\ qui affiche les caractres dchappement comme en C :
\00 - \FF
TABLES
Les tableaux de chanes peuvent tre crs comme les autres tableaux, cependant, un type
spcial de commande existe dans la palette Liste et Tables, ces sont les tables. Une table est un
tableau 2D de chanes, auquel il est possible dadjoindre des enttes de lignes et de colonnes, des
barres de dfilement, de donner un style de caractres pour chaque case, de changer la largeur
dune colonne ou la hauteur dune ligne, bref de faire comme dans un tableur. Les doubles lignes
de sparation sont obtenues en slectionnant En-tte de ligne et En-tte de colonne dans
le menu contextuel.
89
90
MANIPULATION DE CHAINES
Longueur dune chanerenvoie le nombre total de caractres dune chane (y compris les
caractres non imprimables).
Concatner des chanespermet de coller bout bout des chanes. Cette fonction est
redimensionnable.
Sous-ensemble dune chanepermet dextraire une sous chane dune chane de dpart, en
spcifiant le point de dpart et le nombre de caractres de la sous chane.
Rechercher une expressionrecherche un motif dans une chane et extrait la chane prcdant
le motif, le motif, la chane suivant le motif.
En majuscule/En minusculechange la casse dune chane.
Constantes de type chane pour crer des constantes, ou obtenir des caractres non
imprimables chane vide , retour chariot CR , saut de ligne LF , CR/LF , et
tabulation .
Note : il existe dautres fonctions de manipulation de chanes, accessibles par fonctions de
chanes supplmentaires depuis la palette des chanes.
CHAINES ET NOMBRES
Les fonctions Balayer une chane et Formater une chane (quivalentes aux fonctions Fmt et Scan du C)
permettent dclater une chane en lments spars ou de composer une chane partir dlments spars.
Formater une chane : convertit des arguments de tous types en une chane.
Balayer une chane : extrait dune chane des variables de tous types.
Ces deux fonctions utilisent une chane de format comme les fonctions Scan et Fmt du C pour spcifier les
types de donnes convertir, leur longueur ... Consultez laide en ligne LabVIEW pour de plus amples
renseignements. Lexemple ci-dessous illustre une utilisation de ces fonctions. Le nombre darguments de ces
fonctions est modifiable en slectionnant Ajouter/Supprimer un paramtre dans le menu contextuel.
91
92
Pour des conversions moins sophistiques, vous disposez dune palette doutils dans ChaneConversion
chanes/nombres qui ne ncessitent pas de chanes de format.
EXERCICE 7-1 : EXTRACTION DE DONNEES
OBJECTIF: UTILISER QUELQUES FONCTIONS DE MANIPULATION DE CHAINES.
Une centrale dacquisition automatique renvoie des donnes au format suivant :
SCANxx:yy.yyyEySCANxx:yy.yyyEySCANxx:yy.yyyEy etc. o xx est un entier correspondant
au numro de la voie, et yy.yyyEy, un nombre en virgule flottante reprsentant la valeur lue sur la voie
correspondante. On se propose de raliser un VI capable dextraire les couples Voie/Valeur dans un tableau 2D.
FACE AVANT
Elle se prsente comme suit :
DIAGRAMME
Le VI utilise une boucle WHILE et un registre dcalage. Il recherche la squence SCAN pour extraire
ensuite le numro de la voie et la valeur. Les fonctions de manipulation de chane utilises sont :
Rechercher une expression, cette fonction recherche une expression dans une chane de
caractre, elle renvoie la sous chane avant lexpression, lexpression, la sous chane aprs
lexpression et loffset pour lequel la correspondance est trouve. Si aucune correspondance
nest trouve, elle renvoie -1 dans loffset.
Balayer une chane vous permettra de convertir la squence xx:yy.yyyEy en deux nombres.
( Cf. la fin de laide en ligne de la fonction : exemples de balayage de chanes)
Enregistrez votre VI sous le nom Extraitvaleurs.vi, entrez une chane au format souhait et
excutez votre VI.
FIN DE Lexercice 7-1
FONCTIONS DE BASE
Une opration standard sur fichier opre ainsi :
Cration ou ouverture dun ficher.
Lecture ou criture des donnes (ventuellement formatage).
Fermeture du ficher.
Les VI suivants permettent ces oprations :
Ouvrir/crer/Remplacer un fichierrenvoie un Refnum (un handler en C) qui identifie le
canal de communication vers le ficher. Si le nom de fichier nest pas spcifi dans les entres du
VI, une bote de dialogue Windows standard souvre.
Lire un ficherextrait un nombre de caractres dun ficher, identifi par son Refnum partir
dun emplacement spcifi.
Ecrire dans un ficherenvoie une suite de caractres dans un ficher lemplacement spcifi.
Ces deux fonctions travaillent sur des chanes (ou des binaires aprs un changement de type)
Balayer partir dun ficher et formater dans un ficher, permettent deffectuer les oprations de
lecture/criture en mme temps que la transformation des donnes.
93
94
Les commandes de type Chemin daccs sont dans la palette Chanes&chemins. Licne droite du champ
ouvre une bote de dialogue fichier de Windows.
DIAGRAMME
Le diagramme utilise les lments suivants.
Ouvrir/crer/Remplacer un fichier permet de slectionner le mode douverture, choisissez
. Elle renvoie aussi le nombre de caractres contenus dans le fichier ; il vous
sera utile lors de la lecture.
Ecrire dans un fichier permet dcrire une chane de caractre partir de la position spcifie.
Choisissez le mode pos adquat.
Lire un fichier rcupre un certain nombre doctets partir dune position donne.
Longueur dune chane vous permettra de calculer le nombre de caractre lire dans le fichier,
connaissant sa taille louverture et le nombre de caractres ajouts.
Fermer un fichier permet de clore la communication avec le periphrique de stockage
correspondant.
Noubliez le Gestionnaire derreurs pour afficher dventuels problmes daccs.
Enregistrez votre VI sous le nom demofichier.vi et vrifiez son fonctionnement.
FIN DE Lexercice 7-2
95
96
Lire dans un fichier tableur Pour relire le fichier tableur, retourne un tableau 2D. Il est possible
de ne lire quun certain nombre de lignes partir dune ligne donne.
Ecrire des caractres dans un fichierEcrit une chane dans un nouveau fichier ou lajoute un
fichier existant.
Lire des caractres dans un fichier Lit un certain nombre de caractres dans un fichier partir
dune position donne.
Lire des lignes dans un fichier Identique, mais par ligne entire.
VIs de fichiers binairesLecture/Ecriture binaire dentiers ou de rels simple prcision (gain de
place important).
EXERCICE 7-3 : EXEMPLE DENREGISTREMENT TABLEUR
OBJECTIF: ENREGISTRER UN TABLEAU 2D DANS UN FICHIER TEXTE TABULE.
Dans cet exercice, vous crez trois formes dondes, Sinus, Carr et Triangle (128pts, Amplitude 1, frquence
E
7.81 -3 (1/128)). Ces signaux seront prsents sur un graphe, dans une table puis enregistrs au format tableur
dans un fichier.
FACE AVANT
En voici une reprsentation, lindicateur gauche est une table (rappel : disponible dans la palette Liste&tables
indicateur de type texte, choisir dans le menu contextuel lments visibles/entte).
DIAGRAMME
Le diagramme ne contient pas de structure, les signaux seront gnrs par les fonctions
danalyse. Vous aurez besoin principalement des lments suivants :
Signal sinus / Signal carr / Signal triangulaire. Ces VIs gnrent des formes dondes dans un
tableau, elles sont disponibles dans la palette AnalyseTraitement du signalGnration de
signaux.
Transposer un tableau 2D permet de renverser lignes/colonnes en effet une fois les trois
tableaux 1D (sinus, carr, triangle) convertis en un tableau 2D, vous obtenez un tableau 3 lignes,
128 colonnes, et il est plus classique de prsenter laffichage en colonnes.
Ecrire dans un fichier tableur vous permettra lenregistrement du tableau 2D. Limiter, par une
chane de format, lenregistrement 2 chiffres aprs la virgule.
Les outils de conversion nombre -> chane sont dans la palette ChaneConversions
chanes/nombres.
Enregistrer le VI sous le nom onde.VI et excuter le. Donner le nom fichier.txt au fichier tableur,
puis importer le dans Excel.
FIN DE Lexercice 7-3
Truc Pour rajouter une entte un tableau 2D, obtenu par un VI write to spread sheet, on peut
crer une chane avec des tabulations ( \t) via une criture dans un fichier standard (VI : Write
File) .
97
98
LES VI EXPRESS
Depuis la version 7, LabVIEW sest enrichie du concept de VI express. Les VIs express sont des VIs
de trs haut niveau paramtrables par lutilisateur. Ils sont regroups dans la palette Express, et
se retrouvent aussi dans diverses palettes. Lorsque lon pose un VI express sur le diagramme, on
peut le configurer par un double clic avec loutil flche. La fentre suivante est le panneau de
configuration du VI Formater en texte
Vous pouvez constater la polyvalence de loutil, puisquil est possible de changer le nombre de variables
dentres, leur type, de crer des justifications trs labores...
Voici le diagramme utilisant la configuration ci-dessus :
Certains VI express sont poss sur le diagramme en mme temps quun objet de la face avant ; tel est le cas des
tables express et des graphes express. La figure ci-dessous reprsente le diagramme dun VI contenant une
table express lisible sur sa face avant.
Le code gagne en lisibilit, mais ces macro-outils ne sont pas toujours trs bien adapts au cas prcis quil
faut traiter. Ceci oblige soit se contenter de ce que fait le VI express, ou den reprendre le code en
slectionnant Ouvrir la face avant dans le menu contextuel du VI. Cette opration convertit un VI express
en VI standard, ce qui permet den modifier le code pour ladapter au mieux. Licne passe alors du bleu au
jaune, indiquant la conversion
.
Ces fonctionnalits engendrent malheureusement un code trs lourd. Les VI express dacquisition, de gestion
de fichiers, et de traitement du signal sont parmi les plus utiles
EXERCICE 7-4 : EXEMPLE DENREGISTREMENT TABLEUR EXPRESS
OBJECTIF: ENREGISTRER UN TABLEAU 2D DANS UN FICHIER TEXTE TABULE.
Reprenez lexercice prcdent pour le transformer en une version express. Explorez, notamment, les
fonctionnalits du VI denregistrement fichier qui est des plus performant.
FIN DE Lexercice 7-4
99
PROGRAMMATION MULTITHREAD
8. PROGRAMMATION MULTITHREAD
101
REF _REF102
PROGRAMMATION MULTITHREAD
AVANTAGES
MEILLEURE UTILISATION DU CPU
Les processus lgers ont t surtout conus pour faciliter la programmation parallle. Dans la grande majorit
des applications LabView il existe des tches dacquisition peu coteuses en ressource CPU mais lentes. Dans
ce cas le programme reste bloqu par cette tche et ne peut effectuer autre chose. Une approche multithread
permet de garder actives dautres parties du code (calcul, affichage, communications ...)
PROGRAMMATION MULTITHREAD
FACILITE DE PROGRAMMATION
Les programmes dont la structure implique une certaine concurrence entre les parties du code sont adapts
pour les processus lgers. L'utilisation des processus lgers facilite l'criture d'un programme complexe o
chaque type de traitement est ralis par un fil d'excution spcifique. Ainsi, chaque fil d'excution a une tche
simple raliser.
CONTRAINTES
COMMUNICATIONS INTER THREADS
Du fait que les threads sexcutent de manire asynchrones, voir sur des processeurs distincts, ou sur des
machines distantes, il est impossible de cbler des communications au sens LabVIEW de flux de donnes
entres eux. Il faut donc recourir dautres types de communications. Les processus lgers dun mme contexte
communiquent au travers despaces mmoire partags (variables globales/ partages). Pour les processus dun
contexte diffrent (rpartis entre plusieurs processeurs, ou sur des machines distantes) il est possible dutiliser,
des messages, des files dattentes, des variables partages, les datasockets, et les communications TCP/UDP
SYNCHRONISATION DE THREADS
Comme rien nest jamais parfait, il est souvent ncessaire de synchroniser des tches asynchrones ! En effet,
une squence dinitialisation, de mesure, une fin de programme doivent souvent soit commencer dans un
certain ordre, ou au mme moment ; soit se terminer lorsque tous les acteurs ont finis. Cest la synchronisation
des threads. Dans la mesure du possible il faut viter, par le biais du cblage des VI de lancer des excutions
parallles non concurrentes.
103
REF _REF104
PROGRAMMATION MULTITHREAD
Lutilisation de smaphores (compteur daccs) ou de mutex (verrou dexclusion mutuelle) permet de grer ces
partages.
DEADLOCK
Un deadlock est un blocage du systme d deux rservations exclusives de ressources. Un thread attend que
lautre libre une ressource pour continuer et vice versa. Cette situation peut arriver frquemment
(notamment dans les transactions rseau). Il existe des algorithmes de rservation qui peuvent prvenir ou
dtecter des deadlock.
PRIORITES DEXECUTION
Par dfaut tous les threads ont la mme priorit dexcution ; il est possible den changer par deux moyens :
CHANGEMENT DE PRIORITE
Dans les proprits du VI on trouvera 6 niveaux de priorit dexcution, de background (la plus faible)
subroutine (la plus forte), les VIs de plus forte priorit sont placs en tte de la file dattente dexcution, le
squenceur dexcution bascule le CPU entre tous les VIs ayant la plus haute priorit, tous les autres sont en
attente !
Deux problmes peuvent se poser :
Si un thread de priorit haute est bloqu (boucle infinie, attente dun vnement extrieur) tout
le systme est bloqu !
Famine (starvation) : un thread, prt tre excut, est toujours devanc par un autre plus
prioritaire.
ATTENTE DE LIBERATION
Le squenceur de LabVIEW tant coopratif, si deux tches ont la mme priorit elles ont le mme temps
processeur. Une attente (icne Wait) dans le VI le moins utile enlve momentanment le VI de la liste
dattente et libre du temps processeur pour les autres threads. Cest un moyen moins beau mais plus sr que
PROGRAMMATION MULTITHREAD
de changer les priorits dexcutions. Une attente de quelques dizaines de ms dans une interface utilisateur
passe inaperue et libre du temps machine pour des tches plus importantes.
NOEUDS SYNCHRONE
Un certain nombre de nuds sont synchrones, c'est--dire quils ne font pas de multitches avec les autres
nuds.
Il sagit principalement des nuds de proprit et de mthode qui sont synchrones avec le thread daffichage
ce qui peut entraner des ralentissements trs importants si par exemple on utilise des proprits (value) pour
changer la valeur dindicateurs alors que laffichage traite de grandes quantits de donnes
Les nuds de code (appels de DLL externes) sexcutent galement de faon synchrone. Il faut les configurer
comme non rentrants pour tre certain quun seul thread excute le code de la DLL la fois.
105
REF _REF106
PROGRAMMATION MULTITHREAD
MODELE DE PROGRAMMATION
Il existe quelques modles de programmation particulirement adapts aux processus lger.
MODELE PARALLELE
Dans le modle parallle, chaque processus lger ralise les traitements de faon concurrents sans tre
command par un matre. Chaque processus lger reconnat et traite ses propres requtes.
Ce modle convient aux applications ayant des traitements prdfinis raliser (gnration dune rampe de
temprature, un balayage en frquence...).
PROGRAMMATION MULTITHREAD
On remarque une file dattente relie tous les VIs et un smaphore de protection mmoire.
EXEMPLE : ACQUISITION-TRAITEMENT-ENREGISTREMENT
Etudions une tche dacquisition classique, ACQUISITION-TRAITEMENT-ENREGISTREMENT. Dans une approche
classique, les icnes seraient excutes squentiellement.
Pour obtenir des chemins dexcution parallles il faut videmment que les VI ne se passent pas directement
des donnes, un nud ne pouvant tre excut que lorsque toutes ses entres ont t values. Dans
lexemple suivant le VI ACQ ne peut commencer son excution avant que le VI ACQ INIT ne soit excut.
Cependant, si lon suppose que ACQ prend chaque tour de boucle quelques donnes brutes, que ANYS soit
capable de traiter le flot, paquets par paquets, et que, SAVE puisse enregistrer les donnes traites par lot, les
107
REF _REF108
PROGRAMMATION MULTITHREAD
trois VI tourneront en parallle dans le thread dexcution. Une telle approche peut augmenter la performance
de lapplication, notamment si la tche dacquisition ne consomme pas de ressource systme.
PROGRAMMATION MULTITHREAD
VARIABLES GLOBALES
Les variables globales sont des variables contenues dans une face avant dun VI spcial ne contenant pas de
diagramme. Le VI est charg en mmoire et lensemble des VI y faisant rfrence peut y crire ou y lire. Il est
prfrable de regrouper les variables relevant un intrt commun dans un seul VI pour amliorer la vitesse
dexcution. On les trouve dans la palette de structure. Ces variables ne font pas lobjet de protection de
corruption mmoire !
Lopration dcriture ou de lecture est slectionne par le menu contextuel de la variable. Si plusieurs
variables globales sont regroupes sur la mme face avant, il est possible de les slectionner laide de loutil
doigt, ou du menu contextuel de la variable.
VARIABLES PARTAGEES
109
REF _REF110
PROGRAMMATION MULTITHREAD
Les variables partages tendent la notion de global au rseau grce un moteur de publication appel NI
Publish-Subscribe Protocol (NI-PSP). Il semble, du fait du mcanisme de publication, quelles soient protges
des corruptions mmoires. Elles sont dclares dans le gestionnaire de projets par New>Variable . Une
variable partage appartient ncessairement une bibliothque LabVIEW.
Publie par
La fentre de proprit de la variable permet de slectionner le type de donne (entier, rel...). Le type de
variable, publie sur le rseau, ou local la machine. En local il est possible dactiver une fonction dhorodatage
qui enregistre la dernire date de publication de la variable, cette fonction est ncessairement active en cas
de publication.
PROGRAMMATION MULTITHREAD
Lier la source : Lie (Bind) la variable partage une variable partage existante localement, ou
une variable dj publie par une autre machine. En clair cela revient crire a :=b, mais avec
une variable b prsente sur machine distante.
La variable est place sur le diagramme soit partir de la palette structure, soit par un dplac lch depuis le
gestionnaire de projet. Si cette variable est publie sur le rseau elle peut tre directement attache un
contrle sur une face avant distante (attention aux configurations des passerelles). Dans le cas de flots de
donnes trs importants entre des threads distants (vido) il est prfrable, moyennant une programmation
plus complexe dutiliser des canaux TCP ou UDP propres ces changes. Quoiquil en soit nesprez aucun
dterminisme temporel sur une liaison LAN surtout si elle est partage !
Lutilisation ne pose pas de problmes, la vitesse est un peu infrieure, en local, la vitesse des globales. En
distant, cela dpend de beaucoup de la machine et du rseau.
REFERENCES ET PROPRIETES
Tous les objets de la face avant possdent des proprits, on y accde via un nud de proprit situ dans la
palette application control ; ce nud reoit une rfrence obtenue en droulant le menu contextuel de
lobjet et en slectionnant Create reference . Il est possible daccder ainsi toutes les proprits de lobjet,
et notamment sa valeur.
111
REF _REF112
PROGRAMMATION MULTITHREAD
La rfrence de lobjet tant statique, il est possible de la transmettre tous les VI ayant besoin daccder
une proprit de lobjet.
Comme indiqu plus haut ce nud est synchrone au thread daffichage. Il nest pas recommand
dutiliser souvent les nuds de proprit sauf videment pour laffichage sur des objets de la
face avant. La vitesse de lecture/criture est plusieurs milliers de fois plus faible que pour des
variables globales.
EXERCICE:8 1
OBJECTIF : COMPARER LES VITESSES DACCES AUX DIFFERENTS TYPES DE VARAIBLES PARTAGEES
Crer un Vi capable de compter le nombre doprations de Lecture/Ecriture possible durant 10 secondes pour
des variables globales, partages, locales, nuds de proprit et registres dcalage. Dans un premier temps
sur un rel en double prcision, puis sur un tableau de 10000 rels. Ceux qui aiment laventure peuvent essayer
de dployer une variable partage rseau entre deux machines. Lorsque la premire variable est cre, il faut la
dployer en slectionnant litem Tout dployer du menu contextuel de la bibliothque contenant la
variable. Elle est alors disponible pour la liaison au niveau de toutes les autres machines.
MESSAGES
Les messages peuvent servir de communication inter threads, mais il faut les voir plus comme des passages
dordres (dans une vision matre/esclave) que comme des partages de donnes. Ils vont servir assurer le
lancement de tches dune machine dtat, synchroniser ces tches, transmettre des requtes de lutilisateur
(menus).
NOTIFICATIONS
Une notification est un post it envoy par un metteur pour tous les receveurs. Il reste disponible tant que
lon na pas coll un nouveau post it dessus, il ny a pas de tampon mmoire, il est seulement possible de lire
PROGRAMMATION MULTITHREAD
la dernire notification. Les receveurs peuvent rester bloqus en attente dune notification, ou de plusieurs
notifications dmetteurs diffrents.
La notification transmet un type de donnes quelconque, cest lors de la cration de la notification que lon va
typer la donne transmise. Tous les metteurs et receveurs ont un fil commun qui rfrence cette notification.
Le diagramme suivant illustre lutilisation des notifications.
FILES DATTENTE
Les files dattentes sont identiques aux notifications, elles intgrent un mcanisme de gestion de pile qui
permet daccumuler les messages. Si plusieurs receveurs sont prsents il faut prendre garde ne pas dpiler les
messages destins aux autres receveurs. Il est possible de limiter la taille de la pile, lorsque cette limite est
atteinte, le VI Enqueue Element attend la libration dune place pour sexcuter. La gestion de la pile est
trs gourmande en ressource. Le diagramme suivant illustre lutilisation des files dattentes.
113
REF _REF114
PROGRAMMATION MULTITHREAD
PROJET: PARTIE 1
Utilisez une file dattente et une notification pour raliser un VI qui change ltat de deux autres VI nomms A
et B, dun mode ATTENTE un mode ACQUISITION. Il faudra quatre secondes pour passer dATTENTE
ACQUISITION et deux pour revenir en ATTENTE. Ces ordres sont transmis par une file dattente. Lorsque que les
deux VI ont fini de changer dtat, ils envoient une notification au programme principal. Sils reoivent lordre
de passer dans un tat dans lequel ils sont dj, rien ne se passe, aucune notification nest envoye.
La face avant pourrait ressembler :
Le menu contient
En fonction de la notification reue, les deux LEDs changent dtat.
SYNCHRONISATION DE THREADS
La synchronisation de threads permet, soit de dfinir lordre dexcution, soit de dmarrer des tches
simultanment, soit dattendre quun certain nombre de tches soit arriv dans un tat donn.
PROGRAMMATION MULTITHREAD
Les occurrences sont des notifications dont le type est un boolen, je nencourage pas leur emploi. Les
notifications, comme nous venons de le voir permettent dattendre la rception dun ordre ce qui va
synchroniser le lancement de certaines tches, cadencer une excution, dfinir un ordre...
RENDEZ VOUS
Les VI de rendez vous permettent dattendre quun certain nombre de VI soit dans un Wait at rendez vous .
Lorsque le nombre de participants requis est atteint, lexcution continue. Cela permet de se fixer un tat
donn de tous les intervenants.
PROJET: PARTIE 2
Rajoutez au menu de lexercice prcdent un item ARRET. Lorsque loprateur slectionne cet item, les VIs A et
B finissent leurs tches (contenues dans la file dattente) et se donnent rendez vous pour que le plus rapide
attende le plus lent pour terminer leurs excutions simultanment.
VARIABLES FONCTIONNELLES
Une variable fonctionnelle est un VI contenant un registre dcalage destin stocker la valeur de la variable
protge. Un VI tant par dfaut non rentrant, son code ne peut tre excut par deux threads
simultanment, assurant ainsi la protection recherche.
Lexemple suivant montre une variable fonctionnelle ayant quatre actions possibles, il pourrait bien sr ny
avoir que des actions lecture/criture, ou des accs des ressources physiques...
115
REF _REF116
PROGRAMMATION MULTITHREAD
Une variable fonctionnelle est suffisante pour assurer la protection des ressources communes. Il faut toutefois
en crer autant quil y a de type de donnes protger, et en modifier le code si ce type de donnes volue en
cours de dveloppement (a narrive jamais, quoique...).
SEMAPHORES
Les smaphores permettent dobtenir un accs exclusif une ressource partage. Le VI qui bloque le
smaphore attend quil soit libre avant de le bloquer et de passer dans la section critique. La ressource est
libre ds que la section critique est passe. Une icne create smaphore fournit une rfrence qui est
passe tous les VI utilisant ce smaphore.
PROGRAMMATION MULTITHREAD
Bien entendu ces oprations consomment du temps processeur et le niveau de performance lecture/criture
est largement diminu. Il est important de navoir quun minimum de variables partages.
PRIORITE SUBROUTINE
Si vous configurez LabVIEW pour ne demander quun seul thread systme (Tools/Options/Performance & Disk),
il est possible dassurer un VI un accs exclusif en lui donnant la priorit Subroutine .
PROJET: PARTIE 3
Reprendre lexercice prcdent. Les VIs A et B lorsquils sont dans ltat ACQUISITION fournissent des donnes
(alatoires pour linstant) un futur VI daffichage. Utilisez le Vi express Simulate Arbitrary Signal pour
gnrer ces signaux points par points. Le cadencement sera d au time out de 10 ms impos lattente de
lecture de la file dattente. Crez une variable globale contenant deux tableaux A et B pour y stocker ces
signaux. Laccs ces tableaux est protg par un smaphore.
117
REF _REF118
PROGRAMMATION MULTITHREAD
La meilleure mthode est la boucle cadence, elle permet un cadencement prcis, la synchronisation de
boucles (avec une diffrence de marche si lon veut). Il est possible de savoir si la boucle a dur plus longtemps
que prvu. Dans lexemple suivant, la LED sillumine si lattente est suprieure 200 ms.
PROJET: PARTIE 4
Reprendre lexercice prcdent. Ajouter un graphe en face avant qui affiche les deux courbes de donnes des
VI a et B. Le Vi qui sacquitte de cette tche est peu prioritaire. Il est cadenc par une boucle temporise de 250
ms. Les donnes sont inscrites dans le graphe par un nud de proprit Value , la lecture des tableaux
utilise videment des smaphores.
119
120
INTRODUCTION
Une application moderne doit tre facilement volutive, il est parfois important de pourvoir rajouter des
fonctionnalits lors dvolution imprvues, sans ncessairement changer le cur de lapplication (les fameux
AddOns et autres PlugIns). Il est possible aussi de concevoir des applications formes par un module principal
(le matre) et des modules secondaires chargs en fonction du type et du nombre de requtes reues. Le
traitement de grandes quantits de donnes peut aussi tre dport sur plusieurs machines en fonction de leur
charge. Enfin dans le cas de machines trs charges, il est parfois intressant de ne charger en mmoire de
grosses parties de code quau moment opportun. Ceci nous conduit ltude du chargement dynamique de VIs
en mmoire et leur lancement.
CHARGEMENT DYNAMIQUE DE VI
PREAMBULE
Presque tous les VIs utiliss ici sont dans la palette contrle dapplications
REFERENCEMENT DUN VI
Le rfrencement dun VI sert crer un pointeur sur la fonction (au sens du C). Ce pointeur peut rfrencer un
VI local (un pointeur sur la fonction de lapplication tournant sur la machine locale), soit distant (on contrle
alors lapplication sur des machines distantes, via le VI server de LabVIEW). Dans le cas du rfrencement dun
VI distant, il faut fournir une rfrence de lapplication LabVIEW avant douvrir la rfrence du VI
CHARGEMENT DUN VI
Le chargement en mmoire se fait en ouvrant une rfrence sur un VI. Cette rfrence peut tre strictement
type (on connat le nombre et le type de chaque variable passe) ou compltement non type (permet de
raliser un lanceur de VI plus gnrique). Le dchargement se fait en fermant cette rfrence. La mmoire est
libre sil ny a pas dautres rfrences ce Vi et si sa face avant est ferme.
Le rfrencement strict sobtient en crant une constante sur le fil type specifier puis en slectionnant Vi
class Server->Browse .
121
122
Il est possible de lancer le VI par un nud de mthode Run VI aprs avoir ventuellement transmit des
paramtres par un nud de mthode Ctrl Val.Set . A la diffrence du Call By Reference Node il est
possible de ne pas attendre la fin de lexcution pour quitter le nud de mthode Run VI ceci permet de
lancer plusieurs excutions, de laisser un VI tourner en tche de fond (par exemple, rception dordres) ou
aussi darrter brutalement un VI par un nud de mthode Abort quivalent au bouton STOP (pas trs
beau, mais parfois bien utile).
Projet : partie 5
Crez un VI capable de charger dynamiquement les VI A et B laide dun Call By Reference Node ou par un
nud de mthode RUN lorsque lutilisateur slectionne sur le Ring un nouvel item MARCHE .
123
124
VISUALISATION ET CONTROLE
VIA LE SERVEUR WEB
LabVIEW intgre un serveur qui permet dexporter les faces avant de VI trs simplement. Ce serveur utilise un
protocole http sur port 80, donc, priori, tout ce quil y a de plus standard, normalement les passerelles
laissent passer le flux de donnes. La visualisation distante ncessite cependant dinstaller LabVIEW ou au
minimum LabVIEW Run-Time Engine car des Plug-in sont installs dans Internet Explorer en mme temps que
ces produits. Consultez les termes de la licence pour linstallation du Run-Time
PRISE DE CONTROLE
Dans ltape prcdente un nom est donn la page html. Il suffit dans le navigateur Internet dentrer le nom
de la page, prcde de ladresse ou du nom DNS de la machine serveur. Une fois la prise de contrle
effectue, il nest plus possible de changer le code ou la face avant (ce serait dailleurs idiot puisque le VI est
cens fonctionner de faon continue et satisfaisante). Le serveur peut tous moments reprendre le contrle et
sil le faut le bloquer en faisant un clic droit dans la face avant.
Lexemple suivant vous donne une ide du rsultat ; vous avez le code, la face avant et lexplorateur prt
prendre le contrle du VI.
Projet : partie 6
Tentez de prendre le contrle de votre projet via un navigateur internet.
VIA LABVIEW
125
126
MODE MANUEL.
Cette procdure sapparente la prcdente, mais la prise de contrle se fait dans lenvironnement LabVIEW. Il
faut ouvrir Connect to Remote Panel dans le menu Operate , indiquer ladresse du poste connecter, et
nom du VI (voir laide pour les conventions de nom si le VI est dans une librairie ou un projet).
MODE PROGRAMME
Cette mthode manuelle peut tre automatise et un client LabVIEW peut se connecter via des mthodes de
lapplication aux VI distants. Attention, le VI nest pas en mmoire dans la machine cliente, il nest pas possible
den rcuprer les donnes ; il est permis simplement de prendre le contrle et de commander distance les
lments de sa face avant.
Le client peut connatre les VIs qui ont accepts dtre connects, les VIs connects peuvent connatre qui a
pris leur contrle, et le reprendre.
Lexemple suivant prend le contrle de lapplication VI publier
Vous constatez que le port de connexion entre (qui reoit la face avant) est le port 80 et celui de sortie (qui
commande le VI distant) est le port 1165.
Le c+* dans la proprit liste d'accs TCP/IP autorise (+) laccs et le contrle (c) toutes les adresses (*).
Le +* dans la proprit liste d'accs aux VIs autorise laccs tous les VI.
Projet : partie 7
Exprimentez ces fonctionnalits par programmation.
127
128
APPLICATIONS PARTAGEES
Nous traitons ici, non plus de publication WEB et de contrle a distance, mais dapplications distribues
communicant en elles. Ceci signifie que chaque machine contient une partie du code de lapplication. Ces codes
peuvent tre indpendants et se communiquer des donnes ou tre dans une architecture matre
esclave o une partie du code lance et termine des excutions dapplications distantes.
TRANSMISSION DE DONNEES
VARIABLES PARTAGEES
Les variables partages sont destines assurer la communication entre des machines distantes, par exemple
une machine RT et un superviseur. Il ny a pas de systmes de protection particuliers (cryptages) et cette
mthode est rserve des rseaux locaux ; de plus les ports UDP utiliss par le protocole sont souvent filtrs
par les passerelles (port UDP 2343, 5000...., 6000...). Si le pare-feu WINDOWS est activ, il faut autoriser les
excutables suivant : \National Instruments\Shared\Tagger\tagsrv.exe et \windows\system32\lkads.exe.
Loption network publiched des proprits dune variable permet de la publier sur le rseau. Il nest pas
possible de lire ou dcrire directement une variable publie, il faut que les clients lient leurs variables
partages locales aux variables publies en cochant bind to source .
Pour pouvoir lier une variable rseau, le plus simple est de la dployer sur le serveur de variable. Il faut
slectionner Deploy dans le menu contextuel de la librairie pour transmettre sur le serveur le nom, le type
et ladresse rseau de la variable.
La variable doit alors tre vue de tous les ordinateurs du mme sous rseau. Si ce nest pas le cas, il faut
enregistrer la machine distante par Tools>Shared Variable>Register Remote Computer . Elle doit alors tre
visible.
En cochant la case Bind to Source Que de la fentre de proprit de la variable, puis en cliquant sur
Browse une fentre de slection apparat, il ny a plus qu choisir la machine et la variable distante pour
lier la variable partage locale la variable partage distante.
Projet : partie 8
Avant de dployer le VI de lancement de A et B sur un poste distant, nous allons remplacer les variables
globales par des variables partages publies sur le rseau, en cochant Single writer il est possible de ne pas
utiliser de smaphores (ces derniers restent dusage en local !). Vous pouvez constater que le code fonctionne
comme avant, pour pouvoir dplacer une partie de lapplication il va falloir transmettre les ordres de la file
dattente via le rseau et tre capable de rfrencer un VI distant...
DATA SOCKETS
Les Data Sockets ne sont plus recommands par NI, lusage de variables partages doit leur tre prfr.....
PROTOCOLES TCP/UDP
129
130
INTRODUCTION
Les variables partages sont un moyen simple de partager des donnes, mais leur usage est limit la
publication de donnes entre environnements LabVIEW, et nest pas vraiment destin la transmission de
messages. Il est parfois utile de faire usage de protocoles plus standard.
LabVIEW intgre les outils ncessaires la transmission de donnes via Internet en utilisant les protocoles UDP
et TCP. Ces deux protocoles de la couche de transport se distinguent par leur niveau de fiabilit et leur vitesse.
TCP (Transmission Control Protocol) est un protocole orient connexion oprant un contrle de transmission
des donnes pendant une communication tablie entre deux machines. La machine rceptrice envoie des
accuss de rception lors de la communication, la machine mettrice est garante de la validit des donnes.
Les donnes sont envoyes par flots (segments) contrls uns uns.
Lors d'une communication, les deux machines doivent au pralable tablir une connexion. La machine
mettrice (celle qui demande la connexion) est appele client, tandis que la machine rceptrice est appele
serveur.
Cest le protocole utilis par les applications HTTP, FTP, SMTP...
UDP (User Datagram Protocol) nest pas un protocole orient connexion. La machine mettrice envoie des
donnes sans prvenir la machine rceptrice, et la machine rceptrice reoit les donnes sans envoyer d'avis
de rception. Les donnes sont envoyes par blocs (datagrammes).
Cest le protocole utilis par les applications DNS, DHCP, jeux rseaux, le streaming.
PALETTE TCP
La palette TCP contient les lments suivants :
Pour tablir une connexion, le client doit ouvrir une communication vers un serveur listener laide du VI
TCP Open Connection en spcifiant ladresse du serveur. Le serveur, de son cot doit au pralable ouvrir
une connexion TCP Create Listener puis attendre la connexion avec TCP Wait On Listener . Le VI TCP
Listen ralise ces deux oprations plus certains contrles de disponibilit du port. Evidemment les ports de
communication doivent tre identiques.
Une fois la communication tablie, lchange de donnes se fait par TCP Read & Write . Dans lexemple cidessous le serveur transmet sur 10 caractres lindice de boucle, le client lit cette valeur et la renvoie en cho.
Il est possible de terminer la lecture sur nombre de caractres, ou sur terminateur, il est courant de
transmettre en premier, sur 32 bits, le nombre de caractres lire :
PALETTE UDP
Si lon doit transmettre des flots trs importants de donnes et quune perte de donnes est sans consquence
(flot audio, vido...). La palette UDP contient les lments suivants :
Une communication UDP comporte une ouverture, un envoi ou rception, une fermeture. Le VI denvoie doit
connatre ladresse de la machine distante et le port UDP associ, le VI de rception na besoin que du nombre
de caractres recevoir et du numro de port.
Projet : partie 9
Implmentez la file dattente sur un protocole TCP et la notification sur un protocole UDP
131
132
CONNEXION AU VI SERVER
Lapplication Labview dispose dun chargeur de VI nomm VI serveur , il est utilis par Labview pour charger
et excuter les VI mais peut aussi tre utilis par un VI pour charger un autre VI (Cf : Chargement dynamique,
VI Server )
Le VI serveur est capable dexcuter des ordres provenant dune autre machine, le support de cette
fonctionnalit est dfini dans le menu Tools/Options . Il est possible de limiter les accs certaines
machines et de filtrer les actions possibles, de limiter ces actions certains VI.
PRINCIPE
Pour excuter un VI sur une autre machine, il faut dans un premier temps crer une rfrence de lapplication
Labview sur la machine distante (Labview doit donc tre charg en mmoire sur la machine distante par
exemple via DCOM)
Machine name est soit une adresse IP, soit un nom de machine connu par un serveur DNS
Il est possible de vrifier la disponibilit de la machine distante en utilisant un nud de mthode Connection
Responsiveness:Information ou Connection Responsiveness:Check .
Une fois connect, il faut utiliser les mmes procds quen local (ouverture dune rfrence sur le VI, nud
dexcution)
Projet : partie 10
Tentez dexcuter le VI A sur le poste voisin, en transmettant la file dattente et la notification non plus sur
LocalHost, mais sur lIP du poste voisin.
133
AMELIORATION DE LINTERFACE
135
136
AMELIORATION DE LINTERFACE
Projet : partie 10
Ajoutez votre projet la possibilit de slection de langue Anglais/franais. Attention cette proprit nest pas
modifiable en cours dexcution, il faut donc prvoir un VI lanceur.
AMELIORATION DE LINTERFACE
Le menu dit avec le VI lui est automatiquement li. Il est possible de changer le nom du ficher grce la
proprit RT menu Path du VI. Les menus tant spars de la face avant du VI ne sont pas exports lors de
la procdure dcrite plus haut.
GESTION.
La palette de gestion des menus se trouve dans Dialog & Interface
La gestion de menu rside essentiellement dans une boucle qui attend laction de loprateur. Elle rcupre le
Item Tag et lenvoie via une file dattente aux VIs qui doivent effectuer une action.
137
138
AMELIORATION DE LINTERFACE
Licne Current VI menu bar renvoie une rfrence pour tous les VIs de gestion de menu. Licne Get
menu selection renvoie le choix de lutilisateur. Dautres VIs permettent de modifier les lments du menu.
Si la face avant doit ragir dautres sollicitations de lutilisateur, il est prfrable dutiliser une structure de
type vnement pour grer la fois les menus et les autres objets de la face avant. Mais cest une autre
histoire que lon vous racontera bientt.
Projet : partie 11
Continuons notre projet en remplaant maintenant la slection faite par le Ring par un menu. Il contiendra
deux Items principaux : Fichier et Mesure. Le premier conduira Quitter, le second aux Acq A Attente A.....
AMELIORATION DE LINTERFACE
STRUCTURE DEVENEMENT
DEFINITION
Windows est un message-based system , Toute action demande par un utilisateur cre un ou plusieurs
messages pour tre ralise. Ces messages sont transmis entre les objets logiciels et portent en eux des
informations concernant les destinataires, la nature de laction...
La majorit des messages windows sont logs dans une file dattente, les messages prioritaires sont envoys
directement lapplication.
Les structures vnementielles permettent de rcuprer ces messages au vol pour les traiter. Le
concepteur peut aussi gnrer ses propres vnements destins dautres parties du programme.
Une structure vnementielle est une structure de type CASE, ceci prs que cest un EVENT qui dtermine le
cas trait.
GESTION
Une structure vnement se place dans une boucle WHILE. Elle peut soit attendre indfiniment une action ou
excuter un code aprs un TIMEOUT. La boucle ci-dessous se termine lorsque lon relche le bouton de la
souris dans la fentre de lapplication.
Chaque cas de la structure peut traiter un ou plusieurs vnements, par dfaut le seul vnement trait est
TIMEOUT ,. Lorsque lon dite les vnements traits par la structure, lensemble des lments de la face
avant apparat droite, les vnements rpertoris pour ces objets apparaissent gauche. Sil sagit de
commandes de la face avant, la proprit Value Change est la plus courante.
Il est recommand de ne mettre quune seule structure vnement dans une boucle, et de ne pas grer un
mme vnement par plusieurs structures vnement.
139
140
AMELIORATION DE LINTERFACE
Par dfaut la case Lock front panel..... est coche pour viter dempiler des vnements utilisateurs (pour
les clicomaniacodprsifs)
Projet : partie 12
Continuons notre projet en remplaant maintenant la gestion classique des menus par une structure
vnement. Un menu local sera ajout aux deux LED pour en dfinir la couleur dans ltat On et Off.
Ce VI reoit des rfrences dobjets sources dvnements et enregistre les types dvnements autoriss
Lexemple suivant illustre le principe. Le VI Bt Stop possde un bouton stop sur la face avant qui doit arrter
lexcution du VI Wait for stop.
Les tapes sont les suivantes :
Crer sur la face avant une rfrence de control type boolen
AMELIORATION DE LINTERFACE
Cbler la rfrence dans Register For Events, slctionner l(es)vnement(s) souhait(s) . Register For
Events est dans la palette Dialog & User Interface > Events.
Pour cabler lEvent Reg Refnum Out vers la structure vnement, il faut faire apparatre le terminal Dynamic
event terminal dans le menu contextuel de la structure.
Une fois le terminal Dynamic event terminal cbl, litem Dynamic prcdemment griss de la fentre Edit
Item apparit.
Sil nest pas possible de transmettre la rfrence de lobjet (par exemple, le VI Bt Stop est charg
dynamiquement par un bootloader) il faut chercher dans lensemble des objets celui qui sappelle stop et
transmettre sa rfrence :
141
142
AMELIORATION DE LINTERFACE
Projet : partie 13
Que diriez-vous de grer localement au niveau des VIs A et B la rception des commandes des menus sans
passer par les files dattente? Attention lvnement slection dans un menu utilisateur est un vnement
relatif au VI.
Les vnements utilisateur simplifient le traitement de messages entre VI, ils sont empils chaque appel. Ils
sont utiles pour lexcution de scripts, le traitement dexceptions...
Lexemple suivant utilise deux boucles, lune produit 100 couples (valeur, temps), et 100 vnements
utilisateurs, lautre attend ces couples sur un User Event. Les couples sont affichs 50 fois plus lentement
quils ne sont produits.
AMELIORATION DE LINTERFACE
Le nom du type de donnes transmises donne le nom de lvnement, indispensable si plusieurs vnements
utilisateurs sont enregistrs...
Projet : partie 14
Et maintenant si les VI A et B gnraient des vnements utilisateur au lieu de notifications ?
143
144
AMELIORATION DE LINTERFACE
QUEST CE ?
ACTIVEX
ActiveX regroupe plusieurs composants logiciels bass sur Component Object Model (COM) . Cette
architecture permet de concevoir ces composants partir de n'importe quelle plate-forme de dveloppement
qui supporte le modle COM. Ils peuvent ensuite tre utiliss en tant qu'objet dans n'importe quel langage de
programmation. La spcification COM permet l'appel de mthodes et l'accs aux proprits d'un objet.
.NET
".NET" ("dot Net" en anglais) dessine la stratgie Internet de Microsoft. Objectif: faire voluer les solutions
Windows vers un modle dapplications hberges et proposer une plate-forme logicielle sur laquelle les
entreprises pourront s'appuyer pour changer et mettre disposition des donnes et des services applicatifs.
Les composants .NET sont bass sur .NET Framework. Ils sont utilisables comme les activeX.
ACTIVEX
Pour accder une application ActiveX, utilisez une commande ou une constante refnum automation crer
une rfrence. En choisissant Slectionnez une classe ActiveX>parcourir dans le menu contextuel du
refnum , vous voyez lensemble des composants ActiveX enregistrs, slectionnez celui dsir (h h h...).
Le VI Automation Ouvrir ouvre l'application. Il faut ensuite jongler avec nuds de proprit et de mthode
pour obtenir le rsultat escompt. Le code suivant ouvre Excel, rend lapplication visible, ajoute un livre de
travail (les trois feuilles par dfaut) et ferme les rfrences.
AMELIORATION DE LINTERFACE
Il est utile de consulter la documentation de lapplication. Voici les premires lignes dintroduction de MS pour
excel._application :
L'objet Application d'Excel reprsente l'application Microsoft Office Excel 2003. L'objet Application contient
une grande quantit d'informations sur l'excution de l'application, les options appliques cette instance et les
objets de l'utilisateur actuel ouverts dans l'instance. L'objet Application fournit de nombreux membres que,
pour la plupart, vous n'aurez jamais besoin d'tudier. En revanche, certains sont cruciaux pour garantir le bon
comportement de votre application.
Pour accder un control ActiveX (objet ayant une interface utilisateur), il faut dposer un conteneur sur la
face avant du VI, puis dans le menu local Slectionner un objet ActiveX . Comme prcdemment : jongler
avec nuds de proprit et de mthode. Le code suivant fait avancer une barre de progression microsoft.
145
146
AMELIORATION DE LINTERFACE
rf. de source d'vnement une rfrence ActiveX ou .NET. Une fois cbl, le conteneur export les vnements
disponibles pour cet objet, slectionnez l'vnement que vous voulez grer.
rfrence au VI est une rfrence de VI stricte au VI callback qui doit tre rentrant. Le VI (prototype vide) est
cr par le menu local Crer un VI Callback . Ce VI doit tre cr lorsque tous les fils cits ici sont cbls et
lvnement traiter choisi car les paramtres transmis en dpendent.
paramtre utilisateur contient des donnes que LabVIEW transfre au VI callback lorsque l'objet .NET ou
ActiveX gnre l'vnement. Tout type de donnes LabVIEW, est accept (ne sert qu crer la commande en
face avant du prototype).
Projet : partie 15
Vous allez crer une barre doutils contenant 4 boutons StartA...StopB, lappui sur lun de ces boutons gnre
un vnements utilisateur comme les VI A et B (il serait ardu dessayer de gnrer des vnements comme si
lon cliquait sur les menus car ce sont des menus Windows) ? Lobjet ActiveX est un Microsoft Toolbar
Control , il faut dans un premier temps extraire la une rfrence de bouton par la proprit Buttons , puis
utiliser la mthode Clear et des mthodes Add pour ajouter les diffrents boutons la barre doutils.
Pour vous inspirer un peu ...
AMELIORATION DE LINTERFACE
147
148
AMELIORATION DE LINTERFACE
LES COMMANDEX
GENERALITE
Les CommandeX sont des commandes LabVIEW qui lon a rajout des mthodes et des proprits
personnalises, cela permet de rutiliser trs facilement ces contrles au lieu de mettre le code de gestion
dans lapplication mme.
Une CommandeX se cre dans un projet, quatre
fichiers au minimum sont crs.
Donne reprsente le type de donnes que
reoit ou fournit le contrle (donnes simples,
tableau, cluster...)
Etat est un cluster qui contient lensemble des
variables capables dagir sur ltat de la commande.
Faade dfinit lapparence du contrle lorsquil sera pos sur la face avant, ce VI contient le code dfinissant le
fonctionnement du contrle dans une grande structure vnement.
Init est utilis par LabVIEW lors du placement du VI sur la face avant, ou lors du chargement en mmoire.
CREATION
Pour illustrer la cration de CommandeX, nous allons crer une LED dun type particulier, cette LED aura une
proprit Triste/Joyeuse qui change les couleurs de la LED (triste -> couleurs sombres, joyeuse -> couleurs
vives).
Crez un nouveau projet, puis une nouvelle CommandeX.
Dans le Donnes.ctl posez une LED (dfinit le type de donnes en E/S pour ce contrle).
Dans Etat.ctl, posez dans le cluster un boolen nomm Joyeuse_Triste (donne lensemble des tats possibles
de ce contrle).
Dans Faade.vi posez une LED (se sera la vue de lobjet sur la face avant).
Editez le code de Faade.vi. Il sagit dune boucle contenant une grande structure case.
Les donnes qui y circulent sont :
Data : cest la valeur que reoit ou que fournit lindicateur, ou la commande, cest donc Donnes.ctl.
Display state : cest ltat de la commande (triste ou joyeuse) , cest donc Etat.ctl
Action : arme manuellement lopration faire au prochaine tour de boucle (data changed/ State changed)
Container State : cest ltat du conteneur de la commande ( indicateur/commande, Edition/Excution)
AMELIORATION DE LINTERFACE
Projet : partie 16
Vous allez utiliser les LEDs Triste/Joyeuse que vous venez de crer.
149
151
152
AMELIORATION DE LINTERFACE
APERU
La programmation objet sous LabView date dune dizaine dannes. Elle tait implmente en langage G
directement par les utilisateurs ou par des tiers (Endevo en particulier), elle sappuyait sur lutilisation de
clusters et de files dattente. NI a cr sa propre vision de la programmation objet partir de la version 8.5 en
imaginant des librairies de classes. Cest cette implmentation (largement inspire des versions
communautaires) que nous utiliserons
MODELES A OBJETS
Les modles objets ont ts cres pour modliser le monde (cest trs prtentieux !), toute entit du monde
rel est un objet, et vice versa.
LA CLASSE
Un objet, pour reprsenter une entit relle doit pouvoir la matrialiser. Ceci est fait laide dattributs qui
caractrisent ce quest lobjet et de mthodes qui caractrisent ce que fait lobjet. L'ensemble des proprits
d'un objet (attributs & mthodes) constitue un ensemble appel une classe. Un objet sera linstanciation dune
classe, son nom identifiera de faon unique cette instance.
LENCAPSULATION
A cet objet correspond un bloc de code (les mthodes partages par tous les objets de la mme classe) et un
bloc de donnes (les attributs, uniques pour cet objet), le tout enferm dans la mme bote, cest la notion
dencapsulation. Cette bote doit communiquer avec le monde extrieur, et cependant doit protger son
contenu, cest pourquoi une partie est visible de lextrieur, cest la partie publique, lautre nest accessible
quaux mthodes de la classe, cest la partie prive. Les attributs sont souvent privs et ne sont accessibles que
via des mthodes (les fameux Get &Set) appeles accesseurs et mutateurs, ce qui permet de protger laccs
aux donnes internes (par exemple ltendue de validit dun attribut).
LHERITAGE
L'hritage, permet de crer une nouvelle classe (nomme : classe fille , classe drive ou sous classe )
partir d'une classe existante (nomme : super classe , classe de base ou classe parente ).
La classe drive contient les attributs et les mthodes de sa superclasse. L'intrt est de pouvoir dfinir de
nouveaux attributs et de nouvelles mthodes pour la classe drive, qui viennent s'ajouter ceux et celles
hrites. La classe fille est plus spcialise que la super classe (Par exemple, voltmtre pourrait tre une
classe drive de Appareil de mesure )
POLYMORPHISME
Le polymorphisme (qui peut prendre plusieurs formes) est relatif aux types de donnes traites par les
mthodes des objets. Pour parler simplement, la mme mthode (identifie par le mme nom) peut traiter
plusieurs types de donnes, il est bien vident que cette mthode est crite autant de fois quelle de types de
donnes traiter (par exemple il est possible de surcharger l'oprateur + pour quil opre sur des entiers ou
des tableaux dentiers)
Certaines mthodes dune super classe peuvent tre ainsi redfinies dans classes drives, cest elles qui seront
appeles par les instances de la classe drive. Si toutes les classes drives surchargent cette mthode, une
mthode abstraite (mthode qui ne possde pas dimplmentation) sera dfinie dans la super classe, et elle
sera surcharge dans chaque classe drive (par exemple une mthode mesure sera dfinie mais non
implmente dans la classe appareil de mesure , et elle sera redfinie dans la classe voltmte et dans la
classe frquencemtre ).
153
154
AMELIORATION DE LINTERFACE
Les attributs sont propres chaque instance de la classe (chaque objet). Il est
parfois utile de dfinir des attributs propres la classe et qui seront partags
par toutes ses instances (elles peuvent y accder mais n'en possdent pas de
copies). Par exemple un compteur qui donne le nombre d'objets qui ont t
instancis. C'est ce qu'UML appel un attribut de classe. Il est symbolis par le
soulignement du nom de l'attribut.
Figure 12-2Attributs de classe
et attributs drivs
Certains attributs sont calculs partir d'autres attributs, ils sont dits driv et
sont symbolis par un "/" devant leur nom.
Il est prfrable, pour respecter le principe d'encapsulation, que tous les attributs soient privs. On cre alors
des mthodes de lecture et dcriture de ces attributs (accesseurs et mutateurs vont permettre le contrle de
validit des valeurs de ces attributs)
Les mthodes get .xxx et set.xxx sont en caractre
droit car elles sont implmentes au niveau de la
classe (leur code est crit dans le corps des
fonctions et a priori ne dpend pas du type de bans
de mesure utilis).
Les mthodes Power.xxx sont crites en italique, cela signifie que ce sont des mthodes abstraites (elles ont
un nom, une liste de paramtres mais pas de code). Elles devront tre surcharges par des mthodes
implmentes dans des classes drives (mme noms et paramtres).
Figure 12-3 accesseurs et mutateurs permettent d'accder
aux valeurs des attributs privs
Les classes peuvent aussi tre abstraites elles ne comportent alors que
des mthodes abstraites, elles permettent d "unifier" l'appel aux classes
filles. Elles servent d'interface entre l'appel et l'implmentation d'o leur nom d'interface
155
156
AMELIORATION DE LINTERFACE
LES CHOIX
NI a retenu deux matres mots dans sa conception de LVOOP: l'encapsulation et l'hritage.
L'ENCAPSULATION
LabView est un langage de flux de donnes implicitement reli un passage de paramtres par valeurs qui
permet un paralllisme naturel du code. Cette vision est celle retenue pour les objets. Elle prsente lavantage
de lefficacit, dviter les violations mmoire. Le partage dobjets entre diffrentes parties de code est
cependant difficile. Un Data Value References introduit avec la version 2009 permet un passage par
rfrence.
Les mcanismes dencapsulation retenus sont les suivants : les attributs seront contenus dans un agrgat
(Cluster) qui ne pourra tre clat que par les Vis de la mme classe ils sont donc tous privs. Ceci implique
lutilisation daccesseurs et mutateurs pour tous les attributs (heureusement une procdure de cration
automatique existe). Les mthodes dune classe ont quatre droits daccs : "priv," "protg, publique" et
"communaut". Une classe est une librairie particulire qui contient lagrgat des attributs et les mthodes de
la classe.
LHERITAGE
Le mcanisme dhritage est bas sur la notion de classe primitive LabVIEW Object class qui est lanctre
de toutes autres classes. Ceci permet davoir un type commun toutes les classes et de les grer dune faon
homogne (par exemple de mettre dans un tableau des classes diffrentes). Le fait que toute classe drive de
cette classe mre implique quil nexiste pas de constructeur (New.xxx) pour instancier les objets partir dune
classe. De mme, le fait que LabView dcide de librer la mmoire occupe par quoique ce soit (le fameux
ramasse miettes ou garbage collector), lorsquil nest plus utilis libre le programmeur de lemploi de
destructeurs. Cependant lutilisation de rfrences via Data Value References annule ce principe (puisque
lon vient de crer de faon explicite une rservation mmoire). LabView ne supporte pas dhritage multiple (C
hrite de A & B) il faut dire que lhritage multiple pose autant de problmes quil nen rsout (conflits de
noms, hritages en diamants D hrite de C&B qui hritaient de A, rfrence circulaires) et il est toujours
possible de sen passer (principe de dlgation d'opration par une classe une autre classe).
CREATION DOBJETS
Pour lensemble des exemples et exercices nous reprendrons le diagramme de classe prcdent.
La cration dobjets LabView passe par la cration de bibliothques spcifiques dont lextension est .lvclass
LES BIBLIOTHEQUES
La cration de la bibliothque se fait par New>Class dans lexplorateur de projet.
Ceci pour effet de crer une arborescence
contenant un .ctl (ce nest pas un fichier sur
disque mais une partie de la bibliothque de
classe cre).
La clef rouge de licne indique que le
contenu est priv, le cylindre vert quil
sagit de donnes.
Figure 12-5 Cration d'une classe
State
LES METHODES
Les mthodes sont des VI de la
classe, elles sont cres dans le
menu local de la classe :
157
158
AMELIORATION DE LINTERFACE
Il est possible de crer des mthodes entirement la main, mais trois modles sont l pour vous faciliter la
tche, il sagit de :
Figure 12-7 Cration d'une mthode partir d'un modle.
Template
VI for Data Member Access
Ces trois modles vont crer des VIs contenant une entre et une sortie derreur, une entre et une sortie de
classe, le cas chant une entre ou une sortie de donne. Le code contient une structure de choix connecte
lentre derreur.
loccurrence, le fait de devoir choisir lexcution la fonction appele, ralenti srieusement lexcution du
code.
ACCESSEURS ET MUTATEURS
Nous lavons dit, les donnes sont ncessairement prives, il faudra une mthode publique pour accder aux
donnes de la classe en dehors de la librairie de cette classe.
Le modle VI for Data Member Access permet de crer
ces mthodes.
La fentre de cration des accesseurs et mutateurs apparat.
Elle contient une liste de diffrentes proprits de lobjet. Le
type de VI crer (Accesseurs et/ou Mutateurs), le mode
daccs la mthode (Dynamique ou Statique).
La coche autorise laccs aux donnes via un nud de
proprit (qui appellera le VI cr). Il est possible de spcifier
un rpertoire virtuel du projet ou mettre les Vis ainsi crs.
Les Vis ressemblent :
Exercice 12-3 Crez les accesseurs et mutateurs aux attributs de la classe Banc_de _mesures
Les accesseurs et mutateurs se retrouvent dans
larborescence de la classe, la clef plate noire signale que
ces valeurs sont accessibles via un nud de proprit. Le
nom de litem de la proprit sera le nom de dossier virtuel
dans lequel les accesseurs/mutateurs seront rangs.
159
160
AMELIORATION DE LINTERFACE
Les amis
La notion de fonctions amies ou de classes amies mrite dtre prcise. Normalement, une mthode est
accessible, soit tous (publique), soit sa hirarchie (protge, prive). La notion de classe amie (issue du
C++), pouvant donc accder aux attributs dune autre classe sans passer par les accesseurs et mutateurs est
une facilit (au dtriment de la scurit) utilise
pour une meilleure efficacit. Lhritage
multiple tant impossible, on trouvera souvent
une dlgation de classe (la classe A fait des
choses pour la classe B, mais ne sont pas
parentes), il est pratique dans ce cas de dclarer
la classe A amie de la classe B. La notion damie
et rapprocher de la visibilit ~package
dUML.
Les amitis se nouent dans les proprits de la
classe : elles portent sur un VI, une classe ou
une librairie.
Exercice 12-4 Crez les mthodes Power_On et Power_Off de la classe Banc_de _mesure. Elles ont
respectivement les portes Publique (le banc peut tre dmarr par un VI quelconque) et Protge (Le banc doit
suivre une procdure darrt), les mthodes devront tre surcharges par les classes filles.
Exercice 12-5 Crez la nouvelle classe : Thermique. Elle possde un attribut priv : Temprature .Puis
crez l'accesseurs une mthode de mesure (qui renvoie un nombre alatoire par exemple)
CHANGEMENT DE LHERITAGE
Cette classe doit tre fille de la classe mre Banc_de _mesures, pour dfinir cet hritage, il faut ouvrir le
panneau de proprit de chacune
des futures classes filles et aller
dans hritage.
En slectionnant Banc_de
_mesures, puis en cliquant sur
Inherit From Selected ,
Thermique hrite alors de
Banc_de _mesures , cela signifie
que les attributs et les mthodes de
la classe mre sont transfrs la
classe fille.
161
162
AMELIORATION DE LINTERFACE
Il contient deux agrgats correspondant aux attributs de la classe mre et de la classe fille.
Figure 12-19 Donnes vhicules par la classe
Optique
EXPLORATEUR DE HIERACHIE
Lexplorateur de hirarchies (View->LabView Class Hierarchy) permet de visualiser larborescence des classes
ainsi ralises, car elle napparait pas dans lexplorateur de projets.
Exercice 12-6 Changez l'hritage de la classe thermique pour qu'elle drive de la classe banc de
mesures. Vrifiez avec l'explorateur de hirarchies les liens de fratrie.
Figure 12-22 message d'erreur si la surcharge est obligatoire et non respecte dans les classes filles
Exercice 12-7 Crez les mthodes Power_On et Power_Off de la classe Thermique. Elle peut, par
exemple, simplement affecter la valeur 0 State pour indiquer que le banc est Off et 1 pour On.
163
164
AMELIORATION DE LINTERFACE
objets la mthode Ad Hoc. Soit la compilation (sil ne peut y avoir de doute, cest le cas, par exemple si on
passe un seul objet), soit lexcution (si par exemple on passe un tableau d'objets)
Exercice 12-8 Crez une classe Optique qui hrite de Banc_De_Mesures. Cette classe surcharge les
mthodes Power_On et power_Off. Dans un VI Init.vi crez un tableau contenant un objet de type Thermique
et un objet de type Optique. Utilisez la mthode Power_On dans une boucle pour activer ces bancs. Vrifiez que
lattribut State est bien pass 1
Imaginons que tous nos bancs de mesures soient refroidis par eau, une
mthode WaterCheck soit prsente dans la classe parente. Elle doit
ncessairement tre appele, mme si des filles lont surcharge. Pour cela,
il faut cocher la case Require overrides of this dynamic dispatch VI to
always invoke the Call Parent Node dans le panneau de proprits de la
classe Banc de mesure (cf. Figure 12-21 Comment obliger la surcharge
d'une mthode)
Si maintenant une fille de Banc de mesure , par exemple Thermique implmente elle aussi une
mthode WaterCheck un conflit doit interdire lexcution du code et lon doit voir un message derreur :
Figure 12-27 Message d'erreur gnr si une mthode de surcharge n'appelle pas la mthode parente.
Exercice 12-9 Crez une mthode WaterCheck de la classe Banc_De_Mesures qui revoie un boolen
toujours Vrai. Posez cette mthode dans le code Init.vi prcdent et vrifiez que la flche dexcution nest pas
casse. Puis crez une autre mthode WaterCheck de la classe Thermique (mme nom et connecteur).
Vrifiez que maintenant la flche dexcution est casse.
Ceci oblige le concepteur dune surcharge utiliser le VI Call Parent Method de la palette Cluster,Class
&Variant .
Lorsque lon dpose cette fonction dans une mthode dune classe fille,
LabView va rechercher dans les mthodes de sa mre une mthode de
mme nom et va lappeler.
Son icne ressemble alors :
.Cest licne de la mthode mre avec le
indiquant une remonte dans les hirarchies.
Si le compilateur ne trouve pas la mthode parente, et sil ne peut sassurer
quelle sera excute quoi quil arrive (par exemple si elle est dans une
structure de choix), une erreur apparaitra.
12-28 La palette Class
Parent Method . Vrifiez que maintenant la flche dexcution nest plus casse.
165
166
AMELIORATION DE LINTERFACE
Dans notre cas, notre banc pouvant contenir plusieurs appareils de mesures, le plus simple est dutiliser un
tableau de rfrences de classes Measurement_Devices dans la liste des
proprits de banc de mesures . LabView nous offrant des tableaux
dynamiques, il nest pas ncessaire de prvoir quelque chose de plus
sophistiqu. La subtile nuance UML pose entre agrgation et composition na
pas de sens en LabView car comme il nexiste pas de constructeurs ny de
destructeurs, la dure de vie du contenant par rapport au contenu na pas de
sens elle non plus.
Exercice 12-11 Aprs avoir cr une classe Measurement_Devices possdant les deux proprits
VisaRef et Ready, ainsi que les deux mthodes abstraites avec surcharge obligatoire Init() et Fetch(), modifiez
la classe Banc de mesure pour quelle puisse supporter la relation dagrgation avec la classe
Measurement_Devices
Exercice 12-12 Tout d'abord, crez les classes HP3458 et HP34401. Dsignez-les comme filles de
Measurement_Devices . Crez les mthodes de surcharge Init() et Fetch(), Init met le flag Ready Vrai et
Fetch renvoie un nombre alatoire. Enfin, crez une mthode AddMeasurementDevice de la classe
Banc_De_Mesure. Cette mthode reoit une variable NewDevice de type Measurement_Devices et l'ajoute au
tableau MeasurementDevicesArray.
Si le banc comporte un multimtre de chaque type, le code suivant permet de configurer notre banc:
Mais cette version est statique, supposons qu'en face avant, un
tableau d'numrations contienne les diffrents quipements
prsents (par exemple, ils viendraient d'un fichier de configuration)
Notre code ne peut plus convenir !
Object c'est--dire du plus haut niveau dans la hirarchie des objets. Pour utiliser les mthodes propres aux
appareils de mesure, il faut spcialiser cet objet vers la classe Measurement_Device . La fonction To More
Specific Class permet le typecast de type LabView Object vers Measurement_Device . Cette
fonction renvoie une erreur si le type dobjet entrant nest pas parent du type cible. Il existe bien entendu une
fonction To More Generic Class pour remonter dans la hirarchie de classe.
Figure 12-33 I have a dream that one day modularity will be easy
Exercice 12-13 Instanciez statiquement puis dynamiquement quelques multimtres puis aprs les avoir
initialiss lisez leurs donnes.
Exercice 12-14 Crez une classe DMM dans la hirarchie et transfrez lobligation de surcharge des
mthodes Init et Fetch aux descendants.
167
168
AMELIORATION DE LINTERFACE
Figure 12-36 L'implmentation de la surcharge avec une structure de flux comparable la mthode abstraites de droite
dans l'illustration prcdente.
lexcution, hors, au moment du cblage il lui faut bien connaitre le type de donnes transmissent par un fil (ne
serait ce que pour lui attribuer une couleur). Toutes les mthodes ont donc les mmes terminaux (nombre et
type) en entre et sortie!
Par exemple notre multimtre 34401 possde un buffer de donnes de 512 mesures, et de 65535 mesures
pour le 3458. La mthode Fetch pourrait avoir une entre Nb Of Readings et renvoyer en sortie, soit un
scalaire (si lon demande 1 mesure), soit un tableau (si lon demande plus dune mesure, je sais, ce serait plus
simple de toujours sortir un tableau !). Ceci nest pas possible en LabView car, le compilateur doit
ncessairement connaitre le type de donnes en sortie avant la compilation. La seule solution pour obtenir une
programmation compltement gnrique est dutiliser des Variants comme paramtres transmis.
LES VARIANTS
Le type Variant fut introduit par Microsoft (pour les systmes Windows) dans les annes 90 en mme
temps que Component Object Model . Il sagit dune union entre un
descripteur de type et les donnes, destine simplifier le passage de paramtre
entre applications.
LabView possde des Variants (videmment pas compatible avec ceux de
Microsoft car LabView intgre beaucoup de types de donnes diffrents).
Figure 12-37 La palette
variant
Les icnes de la premire ligne permettent de transformer un type quelconque en variant et de faire
lopration inverse. Celles de la seconde ligne, daplatir un variant en un descripteur de type et une chaine
contenant les donnes et rciproquement (Utile, par exemple pour transmettre des donnes via TCP.car les Vis
nacceptent que des chaines). Enfin la dernire ligne permet de nommer des attributs et de leur donner le type
dsir. Ceci permet de stocker dans le variant plusieurs variables nomm de type diffrent, den ajouter, den
enlever la faon dun Cluster dynamique.
Le code dessai de Fetch pourrait avoir lallure suivante : notez bien que dans un cas le variant contient un
scalaire, dans lautre un tableau! Puis cot la valeur affiche dans lindicateur de type Variant pour une
mesure et dix mesures:
169
170
AMELIORATION DE LINTERFACE
Attention,
ces
solutions
Exercice 12-15 modifiez les mthodes Fetch pour amliorer la gnricit de vote code comme dans
lexemple prcdent.
Figure 12-40
Le code de la Figure 12-40 illustre le propos, dans le code du haut, le double est rpliqu, et chaque fil vit sa
vie. Deux variables distinctes sont cres, lune incrmente, lautre dcrmente. Le code du bas cre une
rfrence qui sera duplique et envoye aux deux structures In Place Element Structure .Dans chacune des
structures, mais de manire exclusive (srialisation des accs au sein du VI), les donnes pointes sont
extraites, traites, mises jour et libres. Puisque la rfrence porte sur le mme double, celui-ci sera
incrment puis dcrment, ou linverse (lhistoire ne le dit pas, il peut mme y avoir une corruption
mmoire si la rfrence est utilise dans un autre VI) et le rsultat sera 0.
Situe dans la palette des structures, cet lment est destin initialement
loptimisation de la consommation mmoire. Il vite la duplication des
donnes lors du traitement de tableau, dagrgats, de chanes et de
variants. Loptimisation de code obtenue est toute relative et il ne faut
pas penser quil sagit de la panace (en deux mots, il vaut mieux
rflchir!). Pour faire ces oprations, il convient dajouter les lments
spcifiques au type de donnes traiter en droulant le menu contextuel
et en slectionnant Add . Par exemple pour changer la valeur dun
lment dun tableau, slectionnez, Add Array Index / Replace
Elements , le VI suivant ajoute 1 llment 100 du tableau.
171
172
AMELIORATION DE LINTERFACE
Except que cela ne fonctionne pas, les deux tableaux ne sont pas gaux, car on a recopi deux objets de types
Banc De Mesures . Les mesures sont fates dans le premier et laffichage dans le second !
Il faut utiliser des rfrences pour viter de dupliquer les objets.
Attention, par dfaut, LabView restreint la possibilit de crer des rfrences quaux VIs de la classe. Cette
option est dans la page hritage des
proprits de la classe (Cf Figure 12-44).
Figure 12-44 Dcocher les restrictions par dfaut pour pouvoir faire
des btises ( viter dans un vrai code)
Figure 12-45 Une solution qui na que le mrite dexploser clairement les concepts de passage dobjets par adresse mais
qui est loin dtre optimise
Les deux boucles de la Figure 12-45 partagent maintenant la mme rfrence et donc le mme objet. Dans ce
cas (utilisation de rfrences) et uniquement dans ce cas, la structure In Place Element Structure assure la
srialisation de laccs aux donnes pointes par les rfrences. Le contenu de lobjet est extrait dans la
structure In Place Element Structure par le Value Reference Read Element . Les proprits Value de
mearement devices sont modifi par la mthode Fetch puis mis jours par Value Reference Write
Element . Il faut donc imprativement connecter la sortie Object de Measure lentre du Value
Reference Write Element pour que lobjet soit jour (rappelons que si un fil passe une donne directement
entre lentre et la sortie dun nud cest une copie de lentre qui est cre car le compilateur ne sait pas dans
le cas dun VI dynamique si toutes les instances de la mthode se comporteront de la mme manire).
Exercice 12-16 Tentez lexprience du rfrencement dobjetsMais en utilisant des rfrences pour
tous les objets du projet. Il est prfrables de sauvegarder votre ancien projet avant de commencer tout
dtruire !
Dans ce type dapproche il est prfrable de choisir, soit le passage dobjets par valeurs, soit par adresses, un
mixte comme prsent plus haut nest vraiment ni simple, ni optimis. Cependant il est prfrable dutiliser un
passage dobjets par valeurs car il est conforme au paradigme de flot de donnes de LabView. Il convient dans
ce cas de mettre en place des moyens de communications entre objets si des donnes doivent tre partages
entre diffrentes boucles indpendantes.
173
174
AMELIORATION DE LINTERFACE
ASPECTS COSMETIQUES
LES FILS
Afin de reprer les connections de nos objets, LabView offre la possibilit de modifier le style et les couleurs
des fils. Cest une proprit de la classe dans la page Wire Appearance . Il nest pas idiot de garder des traits
communs aux classes parentes et de distinguer les enfants par des dtails de couleur.
LES ICONES
De la mme manire les icnes de toutes les mthodes dun classe peuvent avoir un trait commun, par
exemple le nom de la classe, et toutes les icones de la hirarchie un autre trait commun, par exemple la
couleur de fond du bandeau. Ces lments sont dfinis dans la page Generals Settings des proprits de la
classe.
ACQUISITION DE DONNEES
175
176
ACQUISITION DE DONNEES
APERU
La palette Acquisition de donnes contient les VIs pour contrler les cartes DAQ de National Instruments. Ces
cartes sont souvent multifonctions : conversion analogique-numrique & numrique-analogique, entre/sortie
numrique et compteur/timer. Il est indispensable de bien connatre les fonctionnalits de la carte utilise
pour pouvoir la programmer correctement.
CONFIGURATION MATERIELLE
Sur les plateformes PC, les cartes actuelles sont toutes Plug&Play , le port PCI attribue automatiquement les
adresses et les interruptions requises par le matriel.
National propose un utilitaire dexploration et de configuration de ses matriels, nomm MAX
pour Measurement & Automation eXplorer.
Lorsque MAX est lanc, il dtecte les priphriques quil connat et les place dans la section Priphriques et
Interfaces. Vous pouvez alors tester, de faon manuelle, la ressource matrielle et sa connexion au monde
extrieur, (toujours utile avant dincriminer autre chose).
MAX permet galement dindiquer aux VI dacquisition comment est configure la carte insre dans le PC,
cest--dire par exemple, sa tension de rfrence, le mode bipolaire, entres rfrences en diffrentielles...
Cette configuration permet aux VIs dacquisition dassurer la correspondance entre mots binaires et valeurs
relles.
Enfin et surtout MAX permet dassigner un numro une carte, cest ce numro qui identifiera la carte dans
LabVIEW. Cette indirection permet de changer de carte (si elles ont des possibilits semblables) sans modifier
le code.
EXERCICE 13-1 : UTILITAIRE MAX : CONFIGURATION ET TEST
OBJECTIF: UTILISER MEASUREMENT & AUTOMATION EXPLORER POUR RECONNAITRE LA CONFIGURATION
ACTUELLE.
MAX va vous permettre de connatre le type de carte installe dans la machine mise votre disposition et de
vrifier le fonctionnement de lensemble.
Examen de la configuration
Lancer MAX depuis le raccourci bureau.
Dvelopper Priphriques et interfaces pour voir les cartes installes, vous devriez voir des PCI MOI E4 ou des
PCI 1200 qui sont des cartes E/S multifonction low cost.
ACQUISITION DE DONNEES
Vous pouvez obtenir des informations sur une carte spcifique en slectionnant Proprits dans le menu
contextuel associ la carte. la fentre ci-dessous apparat :
Cette fentre possde plusieurs onglets. Le premier onglet, Systme, indique les ressources systme assignes
la carte et le numro du priphrique qui vous servira dans LabVIEW. Les autres onglets permettent de
configurer les paramtres dentres/sorties analogiques. Appuyez sur le bouton Tester les ressources pour
vrifier la configuration de la carte.
Tester les E/S de la carte.
Appuyez sur le bouton Excuter les panneaux de test. Ces derniers vous permettent de tester les
fonctionnalits du priphrique DAQ de votre choix, telles que les entres et les sorties analogiques et
numriques. Examinez les diffrents panneaux et leurs possibilits.
FIN DE Lexercice 13-1
177
178
ACQUISITION DE DONNEES
VIS DACQUISITION
Les VIs dacquisition sont situs dans la palette Mesures NI,
Acquisition de donnes (anciens VIs destins assurer la compatibilit ascendente)
Acquisition de donnes DAQmx (nouvelle version des drivers de carte dacquisition)
NI Switch , vision et motion sont des VI spcialiss pour la commutation, lacquisition,
le traitement dimages et les systmes de dplacements.
ACQUISITION DE DONNEES
Il faut maintenant dfinir la sensibilit dentre, le nombre et la frquence dchantillonnage, puis le mode de
dclenchement. Choisissez les valeurs suivantes :
Le bouton de test
et quitter MAX.
179
180
ACQUISITION DE DONNEES
Ce code est gnr automatiquement en slectionnant dans le menu contextuel de la Constante de nom de
tche DAQmxGnrer le codeExemple.
Si par exemple au lieu de prendre 1000 points, nous avions voulu une acquisition continue, il suffit de rditer
la tche en slectionnant dans le menu contextuel de la Constante de nom de tche DAQmxEditer la tche
pour relancer DAQ assistant et slectionner Acquire Continuously.
En reprenant la procdure prcdente, le code gnr devient :
Apparaissent deux nouveaux VI, lun dmarre la tche continue, lautre la stoppe. Une boucle lit en
permanence les donnes par flots de 1000 points.
FIN DE Lexercice 13-2
Le capteur fournit une tension comprise entre 0 et 0.4V. Calibrez lchelle du vu-mtre en consquence. (le
gain donn la voie de mesure naffecte pas la valeur lue en sortie)
ACQUISITION DE DONNEES
Par un clic droit sur le contrle Nom dune tche DAQmx (palette de commande E/SCommandes nom
DAQmx), slectionnez Nouvelle tche (assistant DAQ). Crez une nouvelle tche nomme T , associe une
entre en voie 0
Entre analogique.
Voltage
Voie ai0
Nom T
Gamme Min : 0 , Max :40 degrs C.
Mode diffrentiel
Echelle personnalise (slectionner Create New) dans le menu droulant de Custom Scaling
Echelle linaire.
Nom : Celsius.
Y =100 X+0. ( Slope = 100, Intercept = 0), Scaled unit :C
Acquire 1 Sample , Clock Type : Internal.
Une fois ces paramtres saisis, vous devriez, sous MAX, voir apparatre dans Voisinage de donnesNIDAQmx Tasks , une voie T, et dans Echelles NI-DAQmx Scales , une chelle Celsius.
DIAGRAMME
Dans une boucle while dont larrt est assujetti au bouton STOP, faites lacquisition dun point
toutes les 100 ms
La fonction DAQmx Read option Analog DBL, 1Channel, 1 Sample lit la tension sur la voie
concerne.
Enregistrez votre VI sous le nom Voltmetre.vi. Excutez le, en posant le doigt sur le capteur de temprature
vous devriez voir voluer la tension mesure.
Faire une moyenne glissante sur 4 points des donnes acquises.
FIN DE Lexercice 13-3
181
182
ACQUISITION DE DONNEES
Il est possible de les cbler directement aux Graphes, les chelles de temps sont alors fournies par le
waveform.
Il existe une multitude de fonctions pour traiter ces donnes, elles sont situes dans les palettes Analyse et
Waveform, consultez ces bibliothques pour vous faire une ide de la richesse des traitements possibles.
EXERCICE 13-4 : ACQUISITION TRAITEMENT ENREGISTREMENT DUNE WAVEFORM
OBJECTIF: ECRIRE UNE ACQUISITION DANS UN FICHIER TEXTE.
On se propose de raliser une acquisition de 1000 points la vitesse de 1000 chantillons/seconde et
denregistrer le rsultat dans un ficher texte.
Sur le botier de dmonstration, connecter lentre analogique 1 la sortie sinus du gnrateur de fonctions.
FACE AVANT
Crez une face avant ressemblant :
Crez une voie virtuelle de gain 1 appele VOIE1, faisant lacquisition sur lentre analogique 1.
ACQUISITION DE DONNEES
DIAGRAMME
Construisez le diagramme en tenant compte des lments suivants :
Slectionnez loption ci-contre.
Exporter des waveforms dans un fichier tableur, crit les donnes au format txt en crant une
entte. Vous pouvez galement utiliser le VI express Ecrire un fichier de mesures LabVIEW
Pensez la gestion derreurs.
Enregistrez le VI sous le nom Fichier_Waveform.vi.
Lancez le code, enregistrez les donnes sous le nom acq.txt..
Ouvrez acq.txt laide du bloc note ou dExcel, examinez les donnes et lentte.
FIN DE Lexercice 13-4.
183
184
ACQUISITION DE DONNEES
DAQ ASSISTANT
Lutilisation de tches cres et modifiables dans MAX peut savrer flexible mais pas sr, il est
possible de crer une tche dans lenvironnement LabVIEW qui ne sera visible que pour le
programmeur. Le moyen le plus efficace pour crer une tche dacquisition est dutiliser DAQ
Assistant .
Un double clic sur licne lancera lassistant que vous avez dj vu, le code gnr ressemble :
Les trois boucles While dfinissent lensemble de la configuration dacquisition. Le code de configuration nest
lanc qu la premire excution, les registres dcalage permettent de conserver la rfrence de la tche si le
code est excut plusieurs fois. Lensemble des paramtres de configuration est dfini par des constantes, mais
il est trs facile de les remplacer par des contrles.
EXERCICE 13-5 : ACQUISITION TRAITEMENT ENREGISTREMENT EN VI EXPRESS
OBJECTIF: ECRIRE UNE ACQUISITION DANS UN FICHIER TEXTE EN UTILISANT UN VI EXPRESS DACQUISITION.
On se propose de raliser une acquisition de X points la vitesse de Y chantillons/seconde et denregistrer le
rsultat dans un ficher texte.
Sur le botier de dmonstration, connecter lentre analogique 1 la sortie sinus du gnrateur de fonctions.
FACE AVANT
Crez une face avant ressemblant :
ACQUISITION DE DONNEES
185
186
ACQUISITION DE DONNEES
SORTIES ANALOGIQUES
Les fonctions de sorties analogiques ont un fonctionnement identique aux entres, elles travaillent soit sur une
donne unique, soit sur une waveform, et cela sur une ou plusieurs voies.
Si une erreur survient, un message dalerte apparat et demande de stopper lexcution ou de larrter.
GENERATION DE WAVEFORM
Il est possible de gnrer continuellement une forme donde correspondant une waveform, en cadenant la
mise jour des valeurs par une horloge propre la carte, donc sans utiliser de ressources machines.
EXERCICE 13-6 SORTIE EN TENSION
OBJECTIF: CREER UN SIGNAL PERIODIQUE EN SORTIE DE CARTE DAQ ET EN FAIRE LACQUISITION.
Reprenez lexercice 13-4, modifiez le cblage de la bote de dmonstration en connectant
lentre analogique 1 la sortie analogique 0.
Changez le code pour gnrer une forme donde que vous choisirez dans la palette Gnration de waveform.
Cette onde sera ensuite gnre de faon continue par la carte, puis acquisse et enregistre par les deux VI
express dj prsents dans le code.
FACE AVANT
Vous pouvez ajouter un graphe pour visualiser la forme donde avant la sortie sur la carte.
DIAGRAMME
Tenez compte des lments suivants :
Utilisez le VI express DAQ.
Vrifiez que la case Use timing from waveform est coche dans lassistant DAQ de sortie analogique.
Vous pouvez jeter un petit coup dil au code gnr.
Vrifiez le fonctionnement de la chane complte.
FIN DE Lexercice 13-6
ACQUISITION DE DONNEES
Les quatre LED du pupitre doivent reflter ltat des indicateurs binaires de la face avant (tableau de LEDs), qui
codent eux mme la valeur dcompte modulo 16. (Rappel : 18=2 modulo 16)
DIAGRAMME
Le diagramme comporte une boucle While dont la condition darrt est lie ltat du bouton STOP. Le Vi
compteur doit tre initialis avant lentre dans la boucle de comptage et arrt en fin de boucle.
Vous utiliserez les lments suivants:
Pour la configuration des compteurs, dans lutilitaire de configuration, slectionnez Counter Input puis
Edge Count . La carte possde deux compteurs pour compter un nombre dvnements ou un temps
coul, cods par un entier long sur 32 bits. Un vnement externe est une transition du signal sur la broche
SOURCE spcifie du compteur. Cette broche sera connecte la sortie A ou B du codeur. Dans la partie
settings et Task Timing laissez les valeurs par dfaut. Le VI configure le compteur et lance lacquisition
tant que lentre STOP est fausse. Sil est excut dans une boucle ce Vi renvoie chaque tour le nombre
dvnements compts.
La configuration des sorties numriques est effectue par Digital I/O puis Port Output . La carte utilise
ne possde quun seul port, les LED du pupitre sont connectes aux lignes 0 3. Lentre data du VI est un
187
188
ACQUISITION DE DONNEES
tableau dentiers 32bits (si la carte contenait plusieurs ports, chaque ligne du tableau contiendrait la valeur
dun port). Nous utiliserons ici un tableau dune ligne (1D).
Numrique Quotient & Reste donne accs la division entire. Cette fonction permet de
connatre la valeur afficher modulo 16
Tableau Sous-ensemble dun tableau permet dextraire les quatre bits de poids faible.
Renverser un tableau 1D permettra dafficher llment de poids fort gauche.
Enregistrez le VI et excutez-le. Vrifiez lincrmentation de lindicateur dcompte, laffichage des LED sur le
pupitre et sur la face avant.
FIN DE Lexercice 13-7
CONTROLE DINSTRUMENTS
189CONTRO
LE
DINSTRUM
ENTS
190
CONTROLE DINSTRUMENTS
GENERALITES
Les instruments de mesure professionnels sont en gnral pourvus dune interface permettant de les relier un
calculateur. Cette connexion permet de configurer linstrument et de rcuprer les donnes acquises. Deux grands
standards se partagent le march de linstrumentation, le bus GPIB et la liaison srie. La liaison GPIB est mieux
dfinie par la norme. Plus robuste, elle offre des avantages prcieux en terme de synchronisation. Son cot est
cependant nettement plus lev.
La liaison srie quipe en standard les ordinateurs, mais les problmes de connexion et de configuration sont
parfois dconcertants !
CONTROLE DINSTRUMENTS
ARCHITECTURE DU LOGICIEL
Limplmentation des ressources GPIB est comparable celle utilise pour les cartes dacquisition. Le pilote (DLL
contenant lensemble des commandes GPIB) est install automatiquement par le module plug & play lors du
dmarrage de la machine. Le logiciel Measurement & Automation eXplorer aussi appel MAX permet de
configurer et de tester la liaison.
CONFIGURATION DU LOGICIEL
Pour configurer la carte une fois le pilote install, lancer MAX. Dvelopper la section Priphriques
et interfaces, une section GPIB0 doit apparatre. Cette dernire peut galement tre dveloppe
indiquant ainsi tous les appareils sous tension, physiquement connects au bus. Un clic droit sur un
instrument spcifique permet de vrifier son adresse et de communiquer avec lui de faon
sommaire pour vrifier que la communication fonctionne correctement.
La faon la plus simple de vrifier que le priphrique communique correctement avec le PC, consiste demander
au priphrique son nom.
Pour cela il faut envoyer (crire) la commande *idn ? , puis dans un deuxime temps, lire la rponse de
lappareil. Certains appareils anciens, ne possdant pas de nom propre, renvoient une donne en rponse la
commande. Lappareil ayant reconnu que le PC lui parle doit, sur sa propre face avant, allumer ses
voyants Remote et Listen.
La copie dcran prsente ci-dessous vous donne le rsultat de cette opration ralise par MAX en cliquant sur
le bouton Scan For Instruments. Vous pouvez constater que le gnrateur HP33120 rpond la commande
<*idn?>, mais lappareil dadresse 24 ne comprend pas cette commande car il nest pas conforme la norme IEEE
488.2 (appareils fabriqus avant 1992). Notez aussi que la carte porte le numro 0, il est possible dutiliser
simultanment plusieurs cartes GPIB dans le PC.
191CONTRO
LE
DINSTRUM
ENTS
192
CONTROLE DINSTRUMENTS
Un clic sur
le bouton Properties de la carte GPIB ouvre le panneau de configuration, il est possible de configurer
indpendamment les cartes interfaces et les priphriques.
Dans un premier temps, tudions la configuration de la carte GPIB0. Les valeurs prsentes ci-dessous sont les
valeurs par dfaut.
Le cadre Hardware Setting dfinit le timing du bus, avec des priphriques standard et une carte GPIB non High
Speed , il est prfrable de garder la configuration par dfaut.
Le cadre GPIB Address dfinit ladresse de la carte sur le bus IEEE (comme tout interlocuteur connect au bus), la
valeur par dfaut est 0, ltendue valide est de 0 30. Aucun autre priphrique ne doit avoir cette adresse. Les
adresses secondaires sont rarement utilises.
Le cadre Advanced Items dfinit :
CONTROLE DINSTRUMENTS
System Controller le PC est le matre des changes, il dfinit qui parle et qui coute. Il ny a quun
193CONTRO
LE
DINSTRUM
ENTS
194
CONTROLE DINSTRUMENTS
195CONTRO
LE
DINSTRUM
La remise zro (RAZ) prenant souvent plusieurs secondes, il est ncessaire dintroduire dans le programme une ENTS
temporisation permettant dattendre la fin de cette RAZ.
CONTROLE DINSTRUMENTS
CONFIGURATION
Les appareils de mesures actuels possdent un trs grand nombre de modes de fonctionnement. En mode
commande distance (remote) ceux-ci sont imposs exclusivement par voie informatique. Lusage de la face avant
des appareils reste alors limite la visualisation de rsultats ou des status.
A chaque mode de fonctionnement correspond une chane de caractres (ou mot de programmation) qui devra
tre crite par le PC sur le priphrique, pour lui imposer la ou les fonctions correspondantes. Les commandes des
priphriques tant trs nombreuses, il est ncessaire denvoyer exclusivement celles qui diffrent des conditions
par dfaut.
DECLENCHEMENT
La configuration dun appareil prpare la mesure, mais ne la dclenche gnralement pas. Lexcution de la
mesure ne seffectue quaprs apparition des conditions de dclenchement.
A un ordre de dclenchement unique peuvent tre associes une ou plusieurs mesures. Le dclenchement peut
tre :
Interne : automatique donc non matris.
externe : associ au basculement dune ligne ou la fermeture dun interrupteur.
logiciel : associ lexpdition dune commande informatique spcifique.
La matrise des conditions de dclenchement est souvent une tape critique de la commande distance.
LECTURE
Une fois la mesure effectue, la donne est disponible dans la mmoire du priphrique. Le transfert de la donne
vers le calculateur est une opration de lecture.
La fin du transfert est associe la dtection du caractre de fin de chane, au basculement dune ligne spcifique
(EOI), lobtention dun nombre de caractres ou enfin au dpassement du temps maximum autoris (time out).
TRAITEMENT DES DONNEES
Les donnes peuvent tre lobjet de traitements ultrieurs, une fois mises sous forme numrique. La bibliothque
de traitement de LV6.1 est riche de nombreux outils : visualisation, filtrage, rgression, FFT, .
Les traitements effectus par les appareils eux-mmes : mise lchelle, FFT relvent de la configuration de
lappareil.
196
CONTROLE DINSTRUMENTS
celui-ci dure plus de X secondes (classiquement 10s). Le calculateur reprend alors la main, mais la commande ou la
donne en cause est perdue.
TERMINATEUR
Le terminateur indique la fin dune commande ou dune donne. Sous peine derreur, le terminateur envoy par le
parleur doit tre le mme que celui attendu par lcouteur (quil soit matriel ou (et) logiciel).
SEPARATEUR DECIMAL
Le sparateur dcimal reconnu par les appareils de mesures est le point alors que classiquement en franais, la
virgule est utilise. Pour changer ce dernier, aller sur le bureau, dans le menu Paramtre/Panneau de
configuration/ Options rgionales /Nombre.
CONTROLE DINSTRUMENTS
197CONTRO
LE
DINSTRUM
ENTS
VISA
Virtual Instrument Software Architecture (VISA) est une couche logicielle de niveau application qui
permet de communiquer avec les pilotes dentres/sorties installs sur le systme. Le code
(notamment les drivers dinstruments) est plus facilement rutilisable pour dautres types
dinterfaces, et dautres langages et dautres plateformes. VISA nest pas un lment de LabVIEW,
mais une interface dapplication (API) standardisant les appels aux drivers.
TERMINOLOGIE
Les fonctions VISA font appel une Ressource du systme terme gnrique dsignant un appareil connect sur un
port (srie, parallle, GPIB, USB, VXI...).
Cette ressource possde un Nom, qui identifie son interface, son adresse et le type de session. Une session VISA
est un identificateur logique unique utilis par VISA pour communiquer avec une ressource, elle peut tre de type
E/S ou vnement.
Les noms de ressources valides de la version 3 sont les suivants :
Interface
Syntaxe
VXI INSTR
VXI MEMACC
VXI[carte] ::MEMACC
VXI BACKPLANE
VXI SERVANT
VXI[carte] ::SERVANT
GPIB-VXI INSTR
198
CONTROLE DINSTRUMENTS
GPIB-VXI MEMACC
GPIB-VXI[carte] ::MEMACC
GPIB-VXI BACKPLANE
GPIB INSTR
GPIB INTFC
GPIB[carte] ::INTFC
GPIB SERVANT
GPIB[carte] ::SERVANT
PXI INSTR
Serial INSTR
ASRL[carte][::INSTR]
TCPIP INSTR
TCPIP SOCKET
USB Instr
USB Raw
Si vous utilisez un appareil GPIB dadresse 21 connect la carte n0 la ressource a pour nom
GPIB0::21::INSTR. Si vous connectez un priphrique la liaison COM1, la ressource prend pour
nom : ASRL0::INSTR.
Si les ressources sont prsentes sur la machine lors du dveloppement, elles apparaissent automatiquement dans
la liste droulante associe un contrle de type VISA. Si ce nest pas le cas, il faut entrer le nom de la ressource
au clavier.
CONTROLE DINSTRUMENTS
199CONTRO
LE
DINSTRUM
ENTS
DIAGRAMME
Le diagramme contiendra une boucle infinie dans laquelle on entre aprs une phase dinitialisation du multimtre.
Lisez attentivement la documentation de lappareil pour trouver les mots de programmation. Vous aurez besoin
principalement des lments suivant :
Les fonctions VISARead/Write pour configurer lappareil et lire les donnes. Parmi les lments
crire dans la phase dinitialisation, il faut :
dfinir la configuration de lappareil (ohmmtre 4 fils)
spcifier la source de dclenchement (ici le bus)
La fonction VISA Assert Trigger assure le dclenchement logiciel de la mesure par le priphrique (le
mode de dclenchement dpend du type de la ressource VISA ; en GPIB envoie la commande *trg).
Vous allez certainement avoir besoin des fonctions de conversion chanechiffres (Fonction/conversion
chaneNombre/chane dcimale en nombre).
Enregistrez le VI sous le nom acquieee.VI et excutez le.
FIN DE Lexercice 14-1
200
CONTROLE DINSTRUMENTS
.
Lorsque la squence est teste, un appui sur OK enregistre les paramtres de cette occurrence de
Instrument I/O Assistant.
Il est possible de voir le code gnr en slectionnant Ouvrir la face avant dans le menu contextuel
du VI, cette conversion est dfinitive, il ne sera plus possible douvrir la fentre de configuration du
VI express.
Voici le code gnr, il appelle plusieurs commentaires :
CONTROLE DINSTRUMENTS
Une ouverture et une fermeture de session VISA sont prsentes, il faudra les retirer si le VI est utilis dans une
boucle rapide. Lextraction des donnes nest pas trs optimise , les donnes inutiles tant tout de mme
extraites mais non utilises. Attention, si vous naviez slectionn que la zone de donnes correspondant la
rsistance, le code gnr serait pour la partie extraction :
Vous constatez que le code recherche lexpression exacte +1.192873E+00,+9.999816E-06, qui correspond la
valeur de courant et tension durant la mesure, mais qui est tout sauf constante, ce code a toutes les chances de
ne fonctionner quune seule fois, le jour de sa cration ! Si les VI express sont sans conteste de puissants outils, il
faut penser quils gnrrent un code standard, suffisant dans 90% des cas, mais cela nempche pas de vrifier le
code et de le modifier au besoin.
EXERCICE 14-2 : PROGRAMMATION DUN VOLTMETRE ET LECTURE DUNE RESISTANCE EXPRESS
OBJECTIF: CONFIGURER UN APPAREIL DE MESURE, DECLENCHER LA CONVERSION ET RAPATRIER LA DONNEE.
Tentez de crer avec les VIs express Instrument I/O Assistant lensemble des oprations de lexercice exercice
14-1.
FIN DE Lexercice 14-2
201CONTRO
LE
DINSTRUM
ENTS
202
CONTROLE DINSTRUMENTS
DRIVER DINSTRUMENT
Pour faire gagner du temps aux utilisateurs, les grands constructeurs crivent eux mme et pour chaque appareil,
un driver permettant deffectuer la majorit des tches susceptibles dtre demandes celui-ci. La taille du VI
correspondant crot, mais la mise en application devient alors beaucoup plus simple et rapide. La tche du
programmeur consiste alors chaner entre eux les Vis issus du driver pour construire sa propre application.
Un driver est une librairie LabVIEW (*.llb) faisant appel, soit aux fonctions VISA de LabVIEW (drivers Plug&Play),
soit une DLL crite dans un autre langage (driver IVI). La librairie est gnralement tlchargeable depuis le
rseau. Pour tre visibles depuis LV7, les librairies standard doivent tre dposes dans le rpertoire \Program
Files\National Instruments\LabVIEW 7.0, les librairies IVI ont un installeur qui se charge de tout.
INITIALISATION
Ce VI dfinit le nom de la session visa (ici GPIB0 ::10 ::INSTR) puis crit la commande * RST sur ce priphrique
pour le remettre dans les conditions par dfaut. Ainsi lusage du Vi <Reset>, extrait du driver, rend laction de
remise zro totalement transparente.
CONFIGURATION
CONTROLE DINSTRUMENTS
203CONTRO
LE
DINSTRUM
ENTS
Le contrle trigger count fixe le nombre de dclenchement associ une excution du Vi Conf Trig
Le nombre dchantillons et le retard introduit entre chaque prise de points sont galement accessibles de faon
vidente. Par exemple si trigger count = 2 et si sample count =100 alors le nombre de points de mesures est
de 200.
LECTURE
204
CONTROLE DINSTRUMENTS
CONTROLE DINSTRUMENTS
Il ny a pas de configuration spcifique du port USB mais une installation particulire du priphrique. Pour cela, il
est ncessaire dexcuter le fichier dinstallation fourni avec le priphrique. Cette opration DOIT tre effectue
AVANT de relier lappareil au PC par son cordon USB. Cette installation requiert des droits administrateur .
Lusage ultrieur du priphrique est ensuite donn lutilisateur standard qui doit cependant installer le
priphrique sur le port sur lequel il a t initialement configur.
Une fois linstallation termine le priphrique est visible sous MAX.
Il est conseill de dbrancher logiciellement le priphrique avant de le dconnecter du port USB
VISA ET USB
Il nexiste pas de fonctions spcifiques ddies au contrle du port USB. Lors de louverture de la session Visa, il
suffit de dclarer le numro correspondant lappareil associ dans le contrle nom de ressource Visa
Celui-ci est disponible directement dans la commande pour autant que le logiciel MAX ait t lanc et rafrachi.
La session Visa se droule ensuite sans autres spcificits. La communication est alors identique celle que lon
dvelopperait avec un bus IEEE 488.
205CONTRO
LE
DINSTRUM
ENTS
206
CONTROLE DINSTRUMENTS
La technologie IVI se veut plus sre et plus portable que les drivers crits en LabVIEW. Ils sont crits en C et
rpondent un cahier des charges trs strict. Ils offrent notamment les avantages suivants :
Drivers gnriques (Multimtre, Gnrateur, Oscilloscope), SCPI
Drivers spcifiques
Possibilit de changer dappareil et de driver depuis MAX, sans changer le code.
Mise en mmoire cache de l'tat de l'instrument pour amliorer les performances : une machine
dtats, implante dans le driver, connat en permanence ltat du priphrique et nenvoie que les
commandes ncessaires.
Simulation simple, sans instrument, et sans carte dinterface ou plus sophistique (ncessite lachat
dun toolkit)
Scurit multithreads
Accs aux attributs de l'instrument
EXERCICE 14-3 : REPONSE EN FREQUENCE DUN FILTRE
OBJECTIF: CONFIGURER UN GENERATEUR POUR FAIRE UN BALAYAGE POINT PAR POINT, RECUPERER SUR LES
DEUX VOIES DUN OSCILLOSCOPE LA VALEUR EFFICACE DES TENSIONS DENTREE ET DE SORTIE DU FILTRE.
On se propose de raliser un systme capable de relever la courbe de rponse en frquence dun systme, par
balayage de la frquence du gnrateur dattaque. Pour cela, les frquences Fmin et Fmax sont entres par
lutilisateur ainsi que le nombre de points par dcades. A chaque point loscilloscope mesure le gain et la phase de
la caractristique de transfert.
FACE AVANT
En voici une reprsentation, lindicateur gauche est un tableau, le bouton dclenchement envoie un ordre GET.
DIAGRAMME
CONTROLE DINSTRUMENTS
Vous utiliserez les drivers du gnrateur AG33220A et du scope AG54621A qui sont installs dans la machine et
que vous trouverez dans la palette E/S IntrumentsDrivers dinstruments. Vous aurez besoin principalement des
lments suivant (inspirez vous grandement des VI Application example Getting started )
:
207CONTRO
LE
DINSTRUM
ENTS
Pour le gnrateur:
hp33120a Initialize.vi qui vrifie sil sagit bien de lappareil, et qui fait une remise zro
rtablissant ainsi lensemble des paramtres par dfaut
hp33120a Configure Standard Waveform.vi pour dfinir lamplitude (1V), la forme donde, la
frquence et loffset.
hp33120a Configure Output Enabled.vi qui permet dactiver la sortie du gnrateur
Commencez par un code simple capable de programmer un sinus 1V 1000Hz.
Pour le scope:
ag546xx Initialize.vi identique au VI dinitialisation du gnrateur.
ag546xx Configure Channel.vi configure la sensibilit des voies, loffset et les caractristiques de
la sonde (on ne changera pas la sensibilit en cours de balayage, elle sera gale 2V)). Active la voie
et configure le couplage dentre.
ag546xx Configure Acquisition Record.vi configure la base de temps, on prendra deux priodes
par enregistrement.
Le dclenchement nest pas modifi, les par dfaut sont, dclenchement sur front positif au passage
par zro couplage DC voie 1.
ag546xx Initiate Acquisition.vi lance une acquisition (comme un appui sur Single).
ag546xx Fetch Waveform.vi rapatrie les donnes dune voie dans un tableau ainsi que les
lments de la base de temps.
Tentez dans un premier temps dacqurir le signal du gnrateur.
Pour le calcul du tableau de frquences :
Le nombre de points de balayage est donn par
F2
Nb _ pt _ p _ dec
Nb _ pt _ p _ dec
10 F1 10
208
CONTROLE DINSTRUMENTS
CONTROLE DINSTRUMENTS
209CONTRO
LE
DINSTRUM
ENTS
PARAMETRAGES POSSIBLES
La liaison srie est mode de communication rpandu dans le domaine informatique. Initialement prvue pour
connecter des terminaux distants, elle sest ouverte, en raison de son caractre conomique, au contrle
dinstruments.
Il nexiste pas de protocole permettant un paramtrage automatique de la transmission. Il est donc ncessaire de
les rgler soi mme. Parmi ces paramtres citons :
La vitesse de transmission donne le nombre de bits par seconde, transmis par la ligne de
communication (entre 110 et 56000 bauds).
Le nombre de bits de donnes (7 ou 8).
Eventuellement un bit de parit pour fiabiliser la transmission. Il sagit dun bit rajout
artificiellement aux bits constituant le message. Ce bit complmentaire, dit de parit, est forc 0 ou
1 de sorte que le nombre binaire transmis soit systmatiquement pair (ou systmatiquement
impaire), en anglais : even / odd respectivement.
Le nombre de bits de stop (1, 1.5 ou 2) dfinit une dure pendant laquelle le signal reste bas aprs
une transmission.
Le contrle de flux (handshake) qui peut exister, soit par le biais de lignes physiques (RTS/CTS), soit
par un protocole logiciel (XON/XOFF), ou ne pas tre gr.
Tous ces paramtres sont indpendants ; chacun dentre eux peut rendre la liaison inoprante ! Ils doivent
imprativement tre configurs de la mme faon pour les 2 partenaires de la communication srie
CONNEXION MATERIELLE
Il existe deux normes principales de liaison srie :
RS-232
La RS-232 est la liaison la plus commune sur les PC. Elle utilise des tensions rfrences par rapport une masse
commune, ce qui la rend sensible aux perturbations et limite les longueurs de cbles ( l15metres). Beaucoup
dappareils de mesures en sont quips.
RS-449, RS-422, RS-423
La RS-449, et ses variantes RS-422, et RS-423 utilisent des paires diffrentielles qui permettent des
communications sur de longues distances. Elles ont la faveur des fabricants de contrleurs de process (capteurs
intelligents, rgulateurs, automates) rpartis dans des usines en environnement trs bruit.( l< 1km si combin
avec une boucle de courant 4-20mA )
CABLAGE RS-232
Deux prises coexistent pour la connexion RS232, la DB25 et la DB9. Les appareils connects sont soit des DTE (Data
Terminal Equipment), soit des DCE (Data Communications Equipment). Les DTE sont des calculateurs, des
terminaux ou des appareils de mesure, ils ont des prises mles, les DCE sont des modems, des tables traantes...,
210
CONTROLE DINSTRUMENTS
ils ont des prises femelles. Il faut croiser les fils de transmission et de handshake lorsque lon connecte deux DTE
ou deux DCE entre eux. Gnralement les cbles Mle/Femelle sont cbls fils fils, les Femelle/Femelle et
Mle/Mle sont croiss.
Note Pour simplifier les choses, les fiches DB-9 et DB25 ont les broches 2 et 3 inverses (2=Tx et 3=Rx
sur DB25 alors que 2=Rx et 3=Tx sur une DB9 !). Bref cest pas toujours facile pour cbler tout a,
mais de nombreux sites existent sur le net pour faciliter la tche. En cas derreur, cela ne fonctionne
pas mais cette situation nest dangereuse ni linterface ni pour le priphrique.
NUD DE PROPRIETE
CONTROLE DINSTRUMENTS
Si vous regardez comment est crit le VI de configuration vous verrez ceci dans le diagramme :
211CONTRO
LE
DINSTRUM
ENTS
Llment central de ce VI est un nud de proprit. De faon gnrale, un nud dfinit lensemble des
proprits dun objet quelconque ; son contenu dpend donc du type dobjet auquel il est connect. Par exemple
sil sagit dun lment de la face avant, la proprit Visible doit tre dans la liste. Il est possible de redimensionner
la liste, de choisir les items uns uns de les paramtrer en lecture ou en criture.
Les nuds de proprits sont disponibles dans la palette E/S dinstrumentsVISA VISA avances ainsi que dans
la palette Contrle dapplications.
Lexemple ci-dessous est extrait du pilote du HP34401. Il montre comment la spcificit du support (RS ou du
GPIB) est assure lors de linitialisation de lobjet Visa.
212
CONTROLE DINSTRUMENTS
En fonction du type dinterface, un paramtrage spcifique peut tre introduit. Une fois ce VI excut, plus aucune
autre modification nest ncessaire la prise en compte du mode de transmission (GPIB ou srie) magique...
213CONTROL
E
DINSTRUME
NTS
214
INTRODUCTION
Le module DSC est conu pour faciliter la communication, la surveillance et lenregistrement de variables
distribues sur un rseau. Les domaines privilgis sont :
Lautomatique via des API
La tlsurveillance et acquisition de donnes (SCADA pour Supervisory Control And Data Acquisition)
La surveillance dquipements distants.
215CONTROL
E
DINSTRUME
NTS
216
dinterrogation du serveur OPC, entrez 100 ms, Deadband le pourcentage de variation de la variable
provoquant sa mise jour.
Le lien avec les variables publies par le serveur OPC est fait, il faut maintenant lier des variables partages
certaines de ces variables terminale . Par un clic droit sur licne du client OPC, slectionnez Create Bound
Variables.
Slectionnez une des nombreuses variables publies par le simulateur OPC (par exemple la rampe), aprs avoir
ferm cette fentre, vous voyez la fentre de lditeur de variable multiples, qui permet de changer les
proprits dun ensemble de variables en une seule fois.
Cliquez sur OK, la variable est cre. Un glisser/dposer dans la face avant dun VI et le tour est jou, une
boucle de rptition sur le diagramme pour obtenir une excution continue, et la variable en face avant suit
scrupuleusement la variable publie par le serveur OPC (ce pourrait tre la consigne de temprature dun
rgulateur).
217CONTROL
E
DINSTRUME
NTS
218
Le triangle en haut droite de lindicateur numrique indique que la variable est lie une source, il est vert si
la liaison est valide, rouge si elle est coup.
GESTION DALARMES
Les alarmes sont directement gres par DSC, chaque variable peut se voir affecter des alarmes sur des niveaux
trop bas, bas, haut, trop haut , mais aussi sur une vitesse de variation. Ces niveaux sont rgls dans la page
Alarming des proprits de la variable.
Une fois ces valeurs dalarmes fixes, DSC compare ces limites la valeur de la variable chaque mise jour.
Un contrle spcifique permet de visualiser les alarmes sur la face avant du superviseur Alarm and Event
Display
Dautre fonctionnalits sont disponibles pour grer les alarmes, mais nous en somme au dbut
DSC gre une base de donnes propritaire appele Citadel ou accde des bases Microsoft Access, MySQL,
Oracle, PostgreSQL, et SQL Server. Lemplacement de la base est une proprit de la librairie contenant les
variables.
Lenregistrement des donnes lieu chaque mise jour de la variable par le serveur dE/S, il est possible
damliorer les performances en jouant sur la rsolution, sur la valeur de la zone morte NI recommande de ne
pas dpasser 5GB pour une base de taille moyenne. Les vnements et alarmes sont quant eux enregistrs
dans une base Microsoft SQL Server 2005 Express Edition qui est limit par sa licence 4GB(la limitation peut
tre leve par lachat de la licence complte.
Votre systme enregistre vos donnes ds maintenant, que LabView soit en mmoire ou non ! Ds quune
donne est actualise, la base de donnes sera mise jour (attention ne pas lancer une trop grande quantit
de processus en tche de fond par mgarde). MAX permet la visualisation de ces donnes, dans Historical
data vous pouvez visualiser les bases de donnes, les archiver, supprimer
219CONTROL
E
DINSTRUME
NTS
220
Pour visualiser le contenu dune base dans votre programme LabView, DSC propose un contrle nomm
HyperTrend cet ActiveX (identique celui de longlet Display de MAX) permet de naviguer dans la base de
donnes Citadel slectionner les traces souhaites, les regrouper..Le contrle fonctionne de lui-mme sans
besoin dautre code !
221CONTROL
E
DINSTRUME
NTS
222
LIBRAIRIES ET PROCESSUS
Dans DSC les librairies dfinissent des processus (au sens module indpendant et autonome). Elles contiennent
la configuration de la base de donnes, des variables partages et la configuration des serveurs dE/S. Elle est
capable de grer la connexion entre le serveur dE/S et le moteur de partage de variable, qui lui-mme, assure
le contrle de la qualit des variables, la surveillance des alarmes et lenregistrement.
Si dans une application industrielle vous avez plusieurs lignes de production (connecte ou non) chacune fera
partie dune bibliothque unique.
Une fois dploye dans le SVE, la librairie peut tre soit en excution, soit en attente dexcution, cet tat est
conserv mme aprs un redmarrage du systme. Le SVE est un processus systme (tagsrf.exe) qui dmarre
toutes les librairies actives ds le dmarrage systme (prendre gare ce que la partie oprative soit en
scurit au dmarrage de lordinateur).
223CONTROL
E
DINSTRUME
NTS
224
ACCES STATIQUE
225CONTROL
E
DINSTRUME
Un Glisser/Dposer dune variable partag de la librairie au diagramme cre un nud statique rattach cette NTS
variable.
LE MODULE DATALOGGING & SUPERVISORY CONTROL
ACCES DYNAMIQUE
ACCES PAR DATA SOCKET :
Utilise les classiques OPEN/READ/WRITE/CLOSE, laccs est semblable au nud de variables, mais lURL de la
variable partag est en entre ce qui permet de reconfigurer la source lexcution.
Notez quil faut plusieurs ms pour assurer la connexion lURL, il est dont prfrable de refermer cette
connexion que lorsque la variable nest plus utilise. Les Vis datasockets et Shared variables
constants sont dans la palette Shared variables du module DSC
226
Cest la mthode idale pour afficher la valeur de variables sur une IHM, ceci permet entre autre dafficher sur
un mme indicateur les donnes provenant de sources diffrentes en fonction de ltat du programme, vitant
ainsi une multitude dindicateurs cachs ou affichs pour chaque variable lcran.
Les nuds de proprit sont dans la palette programming/application Control ou bien clic droit sur le
control et Create/property node .
Ou en utilisant directement lURL de la proprit, par exemple pour lire le niveau de lalarme basse :
227CONTROL
E
DINSTRUME
NTS
228
ALARMES ET EVENEMENTS
TYPES DALARMES
Les alarmes permettent gnrer des vnements bass sur des valeurs particulires des donnes. DSC value la
valeur d'une variable partage pour dclencher une alarme et envoie des notifications lorsque la valeur est audessus, en dessous de limites prdfinies, ou encore si la vitesse de variation nest pas atteinte. Un niveau de
priorit permettra, par exemple de traiter les alarmes les plus leves en priorit et les plus faibles en
Warning .
Les alarmes sont remises zro, soit automatiquement (elles ne durent que le temps de dpassement du
seuil), soit par programme (elles perdurent jusqu son acquittement)
Si votre IHM utilise dj une structure dvnement, il est prfrable dy enregistrer lactivit des alarmes.
Les Vis suivant permettent dactiver et dsactiver la gestion des alarmes par des structures vnement :
ALARMES UTILISATEURS
Les alarmes que nous avons utilises taient gnres directement par le SVE, lutilisateur peut aussi
dclencher des alarmes. Pour cela, il faut simplement dfinir le nom de lalarme et le processus (librairie)
laquelle elle est rattache. Un Set et un Clear active et dsactive les alarmes utilisateurs.
Lentre process name dtermine le second lment de lURL de lalarme qui est au format:
\\computer_name\process_name\UserDefinedAlarm.alarm_name
Lentre alarm name dtermine le dernier lment de lURL de lalarme. Notez bien que toutes les alarmes
utilisateurs sappellent UserDefinedAlarm.xxxxxx .Lexemple ci-dessous reprend le prcdent en ajoutant la
gnration et leffacement dalarmes utilisateurs et leur affichage.
229CONTROL
E
DINSTRUME
NTS
230
BASE DE DONNEES
La base de donnes citadel est toujours en action quand DSC est install, lenregistrement dune variable est
une proprit de cette variable, pas de la base de donnes. La palette Historical permet de lire des donnes
enregistres, les alarmes et de faire des oprations de maintenance sur la base.
Attention, les valeurs entres dans le nud de proprit ne sont prisent en compte quau redploiement de la
librairie, cest pourquoi le nud de proprit est suivi de la fonction Deploy Librarie .
231CONTROL
E
DINSTRUME
NTS
232
SERVEURS DE/S
SERVEURS STANDARDS
SERVEURS DE DONNEES
Nous avons vu que le module DSC assure la connectivit vers des serveurs dE/S de type :
ModBus
EPICS
OPC
Ces serveurs font offices de passerelles entre des variables terminales (celles qui sont au bout du process)
et des variables partages. ModBus et EPICS sont des protocoles de communication complets pour du matriel
industriel et de recherche. OPC nest quune couche logicielle entre un logiciel de contrle et lenvironnement
Windows.
SERVEUR DIMPRESSION
Alarm Printer
Ce serveur est ddi lenvoie de limpression de toutes les alarmes directement vers une imprimante LPT ou
COM pour garder une trace papier
233CONTROL
E
DINSTRUME
NTS
234
Il est donc possible de dclencher par un vnement (le rsultat dun calcul ou lentre dun API)
lenregistrement de lactivit de certaines variables. Ceci est particulirement utile pour les systmes de test.
Des fonctions permettent de retrouver lensemble des Data Set dune base de donnes, de connatre le
nombre de Runs dans ce Data Set et de les lires
SERVEURS PERSONNELS
Si votre application utilise un voltmtre USB ou GPIB et que le fabricant du dit appareil ne vend pas de serveur
OPC, que faire ?Utiliser les Custom VI , ils sont de deux sortes, On Input Change et Periodic . Ces
deux options vont transformer un VI dacquisition dj crit et test en un processus qui sera excut par SVE
ds le dmarrage de la machine.
Le VI doit avoir les caractristiques suivantes :
Etre rentrant.
Etre conu pour sexcuter le plus rapidement possible
Ne pas contenir de boucles ncessitant lintervention de lutilisateur
Si possible nutiliser que des doubles, des boolens et des chanes
Les Vis , Periodic sont destins lacquisition cadence donne, les , On Input Change plutt
implmenter des calculs entre variables partages (par exemple pour un mise lchelle dune valeur brute
sans autre code).
Une aide permet de crer ces serveurs, il faut choisir New-> VI Server -> Periodic ou On Input change et
suivre les instructions.
Lexemple suivant montre un VI serveur Periodic et un autre sur On Input Change , et le code
permettant de rcuprer leurs valeurs via des data sockets . Une fois inclus dans la bibliothque, les deux
Vis napparaissent plus lutilisateur, ce sont des botes noires qui fournissent et reoivent des donnes. Notez
les conventions de nommage des variables publies.
235CONTROL
E
DINSTRUME
NTS
236
Nous naborderons pas plus cette possibilit qui nest pas spcifique au module DSC.
Dans le deuxime cas il faut utiliser les fonctions de la palette EngineControl Les fonction sont spares en
deux groupe, Library & Processes et Variables & I/O Servers
CREATION DE PROCESSUS
Les fonctions prsentes permettent de connatre les processus en cours, den charger ou den dtruire, il
sagit de :
Create Process
Delete Process
Get Process List
Enable Process
Get Process Run State
Ces fonctions quant elles permettent dactiver lenregistrement des donnes et des alarmes, il sagit des
fonctions :
Enable Data Logging On Process
Enable Alarm Logging On Process
Get Process Log State
Configure Process Log State
Les fonctions de cration/destruction de variables partages sont dans la palette Variables & I/O Servers il
sagit principalement des fonctions
Create Shared Variable
Delete Shared Variable
Commit Shared Variables
Get Shared Variable List
Et tous les VI de configuration de ces variables (accessible aussi via les nuds de
proprits)
237CONTROL
E
DINSTRUME
NTS
238
UN PETIT EXEMPLE
Le code suivant cre un processus nomm My Process et 5 variables et les inscrits dans le SVE.
LE MODULE STATECHART
239CONTROL
E
DINSTRUME
NTS
240
LE MODULE STATECHART
INTRODUCTION
Beaucoup dapplications, notamment dans le domaine de lautomatisation de systmes rels peuvent tre
dcrits par une machine tats finie. Cette machine virtuelle possde un certains nombre dtats (do le nom
de fini). La transition dun tat lautre est assujettit une condition. Elle se reprsente sous la forme dun
graphe orient tiquet, dont les tats sont les sommets et les transitions les artes tiquetes.
La Figure 16-1 illustre un graphe tat transition conu avec le freeware StartUML toutes les illustrations
sont faites avec ce logiciel. Un tat reprsente une priode de temps pendant laquelle il attend un vnement
et accomplit une activit. Si le graphe possde plusieurs branches concurrentes, plusieurs tats peuvent tre
actifs en mme temps
LE MODULE STATECHART
241CONTROL
E
DINSTRUME
NTS
242
LE MODULE STATECHART
LabView ne permet pas de crer de transition internes pour ces tats, UML le prvoit pour ltat final.
EVENEMENT
Un vnement est quelque chose de remarquable qui se produit pendant lexcution. Les diagrammes dtatstransitions spcifient les ractions du systme ces vnements. Un vnement se produit un instant prcis
et na pas de dure. Les transitions sont dclenches par les vnements. Classiquement on reconnait plusieurs
types dvnements :
Figure 16-4 les diffrents types dvnements dclencheurs reconnus par UML
Mais LabView nen fait pas la distinction, ils seront tous des Trigger .
LE MODULE STATECHART
TRANSITIONS
ENTRE ETATS
Une transition dfinit la rponse de la machine loccurrence dun vnement. Elle lie deux tats et indique le
sens dans lequel la machine peut passer
dun tat lautre.
Elle possde un nom, des vnements
dclenchant, une garde, des actions.
La syntaxe est la suivante :
nom : vnement [garde] / action
Une transition peut ne pas avoir dvnement dclencheur, elle contient alors une condition de garde, cest
notamment le cas pour les transitions venant dtats initiaux ou dtats historiques, ces pseudo tats ne
pouvant rester actif.
INTERNES
Les transitions internes se produisent lintrieur dun mme tat, elles ne sont donc par orientes et nont
pas de cible. LabView reconnait les trois transitions internes dUML :
Entry spcifie une activit effectue lors de lentre dans ltat
(gnralement des initialisations)
Do spcifie ce qui doit tre fait aprs Entry et avant Exit
Exit Spcifie ce qui est fait lorsque le trigger vers ltat suivant
arrive (gnralement du nettoyage)
Figure 16-6 Les transitions internes
JONCTIONS
Un point de jonction est un pseudo
tat qui permet de couper des
segments de transition dans le but
de rendre plus lisible le diagramme.
La jonction peut avoir plusieurs
segments de transition entrant et
sortant, mais na pas dactivit. Les
243CONTROL
E
DINSTRUME
NTS
244
LE MODULE STATECHART
transitions sortantes nont pas dvnement dclencheur, uniquement une action et une garde.
ETATS COMPOSE
Un tat compos et un tat constitu de rgions dans lesquels il y a des diagrammes dtats, ils permettent de
concevoir le diagramme
dtat par une approche
Top/Down, en faisant des
raffinements successifs,
du macroscopique au
dtail.
Dans un diagramme de
plus haut niveau, la
reprsentation
Figure 16-8 Description dtaille de ltat composite Init
SubMachineState
sera prfre car elle
masque les dtails de limplantation. Le symbole avec deux cercles relis par une droite indique quun
diagramme tat transition sous-jacent existe.
LE MODULE STATECHART
HISTORIQUES
Le pseudo tat historique permet lorsque lon quitte un tat compos pour y revenir de garder en mmoire
ltat actif au moment o on avait quitt ltat
compos. On distingue deux tats
historiques :
Ltat historique peu profond (Shallow) qui
mmorise le dernier sous-tat actif dun tat
composite (pas dans un tat imbriqu). Il est
reprsent par un H dans un cercle.
SYNCHRONISATION
Les diagrammes dtats-transitions permettent de dcrire des processus concurrents grce lutilisation
dtats orthogonaux. Il sagit un tat
composite comportant plus dune rgion,
chaque rgion reprsentant un flot
dexcution.
Lors de lentre dans le diagramme les deux
tats initiaux sont activs, et la sortie du
diagramme vers ltat Normal End se fera
lorsque les deux tats finaux auront t
atteints.
Des outils graphiques de synchronisation
permettent de reprsenter ce mcanisme de
faon plus comprhensible. Ils sagir de barres
paisses constituant des transitions
concurrentes, soit divergentes, (Fork) vers des
processus simultans, soit convergentes (Join)
impliquant un point de synchronisation.
245CONTROL
E
DINSTRUME
NTS
246
LE MODULE STATECHART
Le fonctionnement du StateChart est le suivant : une fois le diagramme termin, LabView le transforme en un
code excutable. Un VI appelant lance de faon
cyclique le StateChart en lui transmettant les
donnes dentre. Ce dernier value les
transitions et dcide ou non de les franchir vers
un nouvel tat puis rend la main au VI appelant
en lui retournant les donnes de sortie.
Lappel du StateChart est donc toujours dans
une boucle. Les StateCharts peuvent tre
Figure 16-15 appel d'un StateChart synchrone
construits pour tre synchrones ou
asynchrones. Un StateChart synchrone fait une
itration chaque fois que le nud
RunStateChart est excut, ceci permet de
connatre priodiquement ltat de la machine,
lappel est typiquement dans une boucle
cadence. Lexcution dun StateChart
asynchrone repose sur la prsence dune file
dattente de trigger externes, lorsque le nud
RunStateChart est excut, le StateChart va
voir si il y a un trigger dans la file dattente, sil
ny en a pas, alors il sendort jusqu' larrive
Figure 16-14 Appel d'un StateChart Asynchrone
dun trigger qui est envoy par une
SendExternalTrigger . Lappel est typiquement fait dans une boucle While, une deuxime boucle envoie les
triggers quand ils sont disponibles.
LE MODULE STATECHART
247CONTROL
E
DINSTRUME
NTS
248
LE MODULE STATECHART
A gauche se trouvent les transitions internes Entry & Exit , droite, dans longlet Action le code LabView
correspondant ces transitions. Longlet properties permet de documenter le code. Par dfaut il ny a que
ces deux transition internes qui nont ny dclencheur ny garde. Pour crer une transition interne
supplmentaire, il faut cliquer sur le bouton Create . Une transition interne est alors cre, elle possde des
dclencheurs et une garde. Les nuds situs droite et gauche permettent de lire ou dcrire certains
lments du StateChart.
Le concepteur peut dcider denvoyer au StateChart des donns que ce dernier utilisera (un mot crire sur
une liaison srie, la temprature dun
lment du processus). Ces donnes
seront contenues dans lagrgat nomm
Inputs.ctl. De mme le diagramme dtat
peut fournir un certain nombre de variables
lextrieur, elles seront contenues dans
lagrgat Outputs.ctl. Loutil doigt permet
de slectionner la variable lire ou crire.
Ces donnes sont transmises et reues par
le VI appelant. Enfin un dernier agrgat
nomm StateData.ctl contient des donnes
Figure 16-19 Les variables d'entre et de sortie
que le concepteur veut transmettre dtat
tat, mais pas au VI appelant.
LES TRANSITIONS
Longlet trigger associe une transition interne ou externe un dclencheur. Les triggers sont une numration
qui est cre dans la page Edit Triggers and
Groups . Les triggers sont envoys, soit par
le VI appelant qui les reoit du monde
extrieur, soit pas du code plac dans les
actions . Un groupe de trigger rassemble
plusieurs dclencheurs, si lun dentre eux est
actif, le groupe lest. Par dfaut un trigger
particulier est systmatiquement envoy,
cest le trigger NULL . Cest le trigger actif
par dfaut pour toutes les transitions.
LE MODULE STATECHART
On accde la page de configuration des transitions par un double clic. Elle est comparable celle des tats,
hormis le fait quil ny a quune action possible (UML ne prvoit pas de transitions internes dans les transitions)
Aprs cette prsentation rapide, lutilisation autour dun exemple simple devrait clarifier ces concepts
249CONTROL
E
DINSTRUME
NTS
250
LE MODULE STATECHART
En tant que bon lve nous ajouterons un trigger stop qui permet de sortie proprement de la machine dtat,
mais normalement sur un systme embarqu, ce sera larrt de lalimentation !
Il ny a que deux tats, la transition entre les deux est la mme, laction de la tirette de lumire.
COMMANDE DE VENTILLATION
Le diagramme UML ressemble :
Nous y retrouvons les quatre vitesses de rotation actives par la tirette, le stop de linterrupteur mural active la
pseudo tape finale.
LE MODULE STATECHART
251CONTROL
E
DINSTRUME
NTS
252
LE MODULE STATECHART
SYNCHRONE OU ASYNCHRONE
Cette option (dans la fentre de proprits du StateChart) devrait tre dcide ds la conception (car elle
impacte fortement sur la faon de concevoir le code), mais elle nest pas supporte par UML et ne colle
donc pas trs bien au modle.
LE MODULE STATECHART
Globalement, si la machine
dtat est implante dans un
FPGA ou un systme temps rel,
il est prfrable de choisir un
modle synchrone et de fait un
modle asynchrone pour les
systmes Windows.
En effet, le modle synchrone
impose une boucle cadence
autour de lappel du StateChart,
cette boucle va dterminer la
vitesse de raction de la
machine une sollicitation
extrieure, les systmes RT sont
16-30 Options de gnration du code
prvus pour assurer ce
cadencement, et si la machine
dtat est implante dans un FPGA, elle sera value chaque coup dhorloge. Implmenter une machine
synchrone dans un systme Windows peut entrainer une consommation de ressources systme importante,
mme si on reste dans un tat stationnaire. Loption asynchrone va mettre la machine en Idle tant quun
trigger externe nest pas reu ce qui sauve de la ressource. En revanche, les variables dentre et de sortie ne
sont values qu la rception dun trigger, il ne faut pas compter sur elles pour faire voluer ltat de la
machine, cest, de toute faons une trs mauvaise faon de programmer. Notre systme devant tre implant
dans une carte FPGA, nous resterons sur loption synchrone.
EXECUTION DU STATECHART
Le StateChart peut tre excut tel quel, il nest pas capable dexcuter la moindre interaction avec lextrieur,
mais il est ais de vrifier sil rpond
bien aux triggers et si les tapes se
droulent correctement. Le VI
appelant doit lancer la machine
dtat priodiquement, il lui transmet
les donnes dentre et rcupre les
donnes de sortie (aucune pour
linstant). Le Vi Run StateChart
est dans la palette StateChart, mais il
est plus simple de faire un
glisser/dposer de Fan.lvsc de la
16-31 Diagramme du VI appelant
fentre de projet au diagramme.
Le VI Run StateChart possde un menu de configuration
qui permet de faire apparaitre deux terminaux spciaux. Lun
permettra de connatre les tats actifs dans un tableau, lautre
les illustrera dans une image. Ces options sont pour faire du
dbogage, car elles sont gourmandes. Notre VI Run
16-32 Options de configuration
253CONTROL
E
DINSTRUME
NTS
254
LE MODULE STATECHART
StateChart recevra un trigger NULL si aucun bouton ne change de valeur (dans le timeout de la
structure vnement) et une trigger idoine selon le bouton utilis (dans un Change Value de la structure
vnement). Si la flche dexcution est casse, il est probable quil faille gnrer le code du StateChart (clic
droit du le StateChart dans la fentre projet -> Generate Code
Limage du StateChart est cre un utilisant Crer un indicateur sur la sortie StateChart diagramme
display du VI Run StateChart .
VARIABLES DE SORTIE
Notre StateChart na pas besoin de variables de sortie (le FPGA commanderait directement la partie
oprationnelle), mais pour illustrer, nous allons crer deux
variables, un boolen pour la lumire, un entier born entre 0 et
3 pour la vitesse du ventilateur. Ces variables sont contenues
dans le cluster Outputs.ctl
Les valeurs attribuer ces variables sont transmisses par le
code associ aux transitions Enter des tats.
Par exemple pour ltat Off le code suivant initialise les
variables ltat de repos, ce code pourrait tre identique dans
laction associe aux transitions Quit
16-34 Le cluster de sortie
LE MODULE STATECHART
DEBOGGAGE
Le menu contextuel de la fonction Run StateChart possde in item Debug StateChart elle ouvre une
fentre reprsentant le StateChart. Il est alors possible de lexcuter en pas pas, de visualiser StateData ,
Outputs et InternalQueue , dentrer, par le menu contextuel des tats et des transitions dans le code
daction ou de garde, dy poser des sondes
255CONTROL
E
DINSTRUME
NTS
256
LE MODULE STATECHART
Les icones
La fentre Ramp :Entrey Action est appele par un clic droit sur ltat Ramp ->Entry Action. Une fois
ouvert, le dboggage se passe classiquement, points darrt, sondes
LE MODULE STATECHART
257CONTROL
E
DINSTRUME
NTS
258
LABVIEW FPGA
LABVIEW FPGA
INTRODUCTION
LabView FPGA est le module de programmation des "rseaux logiques programmable". Ces circuits sont
implants sur divers types de matriels de chez NI, ils proviennent du fondeur Xilinxs. Ils font partie de la
gamme Startan conomique ou Virtex haute performance.
QUEST-CE UN FPGA ?
Les FPGA sont des circuits logiques reprogrammables. l'aide de blocs logiques prdfinis et de ressources
programmables de routage, vous interconnectez ces portes pour mettre en uvre des fonctionnalits matriel
personnalises comme vous lauriez fait il y a peu de temps avec votre stock de CD4XXX et votre fer souder.
Des outils permettent de crer un fichier de configuration ou bitstream qui contient des informations
dinterconnections. Ces "bitstreams" sont stocks dans des EPROM spares et sont transfrs dans la RAM du
composant Xilinxs lors de la mise sous tension. Les FPGAs fournissent robustesse, vitesse et fiabilit, ils sont
vritablement parallles et les traitements ne dpendent pas dun OS.
LABVIEW RT ET FPGA
Les modules RT et FPGA sont indpendant, mais souvent intimement lis, car la communication entre lOS et le
monde extrieur, dans les matriels qui en sont quips passe par le FPGA. Dans ce chapitre nous ne parlerons
en ce qui concerne le temps rel que de linterfaage avec un VI implant dans le FPGA
259CONTROL
E
DINSTRUME
NTS
260
LABVIEW FPGA
PREPARATION DE LENVIRONNEMENT
Labview doit tre install ainsi que les modules FPGA et RT. Labview fournit un fichier VHDL au compilateur
Xilinxs qui doit donc tre install.
Un wizard permet de crer
une bauche de projet FPGA.
Lutilitaire permet la dtection
automatique de la cible et de ses
accessoires (si la cible nest pas
prsente, il est possible de
configurer manuellement
lensemble). Une fois fini, le
projet contient la description
complte du matriel de la cible
(E/S, horloges)
Figure 17-1 Cration d'un projet FPGA
LABVIEW FPGA
ORGANISATION DU PROJET
Une application LabView FPGA/RT contient en gnral trois parties :
a) Les VIs implments sur le FPGA.
b) Les VIs implments sur le processeur de lOS RT.
c) Les VIs implments sur le PC de supervision.
Ceci nest pas une rgle absolue, mais un cas trs commun. Ces diffrents programmes doivent communiquer
entre eux via diffrents canaux (ils sont sur des chips physiquement spars, au moins pour le FPGA) la
communication stablie dans lordre : FPGARTSupervision. La topologie de l'ensemble peut prendre
diffrentes formes (par exemple une carte PCI srie R dans un PC quip d'un processeur multi-curs
excutant un OS RT et XP), mais l'organisation gnrale reste la mme.
261CONTROL
E
DINSTRUME
NTS
262
LABVIEW FPGA
PREMIERS PROGRAMMES
UN PROGRAMME 100% FPGA
Pour dbuter nous allons crer un programme entirement implment dans le FPGA et ne communiquant
avec l'extrieur que par les pattes d'entre sortie du connecteur P2.
Le nouveau VI doit se
retrouver dans larborescence
du FPGA Target et doit
porter le nom de la cible dans le
coin infrieur gauche de la face
avant et du diagramme. Lors
dun dveloppement
multiplateforme, toutes les
fentres indiquent sur quelle
cible elles sexcutent.
Figure 17-5 Affichage de la cible d'excution.
PALETTE DOUTILS
La palette doutil pour les FPGA est plus rduite que la palette normale.
LABVIEW FPGA
PROGRAMME
Un programme FPGA est en gnral une collection de boucles While tournant en parallle pour grer des
flux dentres/sorties de priphriques en effectuant au passage des oprations logiques ou de calculs.
Le programme suivant fait
clignoter la LED de la carte
dessai, lorsque lon appui sur
le bouton poussoir. Le dpt du
nud de entre/sortie sur le
diagramme se fait par un
glisser/dposer depuis la
fentre de projet, on trouve
dans le menu contextuel
Change To Write/Read pour
donner la direction de
lchange. La fonction Wait
Figure 17-7 Un programme FPGA simple
COMPILATION
Un programme FPGA nest quune table de routage entre des blocs logiques. Cependant le processus
dlaboration de ce routage peut tre trs long et dpend du nombre de cellules interconnecter et des
optimisations ventuelles. Cela peut reprsenter plusieurs heures sur des cibles type Virtex6 et plusieurs
dizaines de minutes sur un Spartan. Le processus de compilation est lanc par la flche Run , Labview
labore dans un premier temps un fichier VHDL (le langage de programmation classique des FPGA). Ce fichier
est transmis au compilateur
Xilinxs qui synthtise le circuit,
fait le mappage, puis le place et
le route. La moindre
modification du code entraine
une nouvelle compilation. Une
fois le fichier bitstream cr,
il est copi dans la mmoire
flash et transfr sur le FPGA.
Une fentre fournit des
informations davancement et
les statistiques dutilisation.
Figure 17-8 Fentre d'tat de la compilation
La LED de la carte doit clignoter 2 Hz. Attention les outils de dbogage ne peuvent tre utiliss sur la cible
FPGA, il est possible dajouter des indicateurs pour vrifier la valeur dune data, ou encoure de simuler
lexcution sur le PC hte (en simulant les E/S et sans respect des timings).
263CONTROL
E
DINSTRUME
NTS
264
LABVIEW FPGA
EXECUTION EN PARALLELE
Tout le code non squentiel est excut strictement en parallle (attention cela ne signifie pas quil est excut
en une priode dhorloge). Lorsque le code est squentiel, il ncessite gnralement une priode dhorloge par
opration (except dans le cas de fonctions complexes : division, FFT, filtrage, E/S analogiques)
Le code suivant ncessite 4 coups dhorloge,
les deux premires additions sont excutes
strictement en parallle
LABVIEW FPGA
265CONTROL
E
DINSTRUME
NTS
266
LABVIEW FPGA
OUTILS DE CADENCEMENT
La palette Timing regroupe trois Vis :
Loop Timer attend un temps spcifi entre deux itrations de
boucle, elle est destine faire des oprations E/S une vitesse
donne. A la premire excution, il ny a pas dattente, mais
initialisation du compteur, ensuite il y a attente jusqu ce que le
compteur atteigne la prochaine valeur (lancienne plus le temps
dattente). Si une itration arrive trop tard (le compteur a dpass
la prochaine valeur) il ny a pas dattente mais rinitialisation du
compteur
Figure 17-13 Palette timer
Wait Tick Count permet de crer des attentes entre des actions,
typiquement dans les communications numriques.
Tick Count renvoie la valeur dun compteur interne du FPGA, par exemple pour mesurer un temps entre deux
vnements, ou bien un temps dexcution. Il faut tenir compte de la profondeur de comptage pour choisir la
bonne taille du compteur.
Dpassement de comptage : le tableau suivant donne les dures avant un dpassement de la capacit de
comptage pour une frquence de 40 MHz
Taille du compteur
Unit de temps en s
Unit de temps en ms
32 bits
4294967296
71 minutes
49 jours
16 bits
65536
65 ms
65 s
8 bits
256
256 s
256 ms
STUCTURE DE SQUENCEMENT
Les structures de squencement vont permettre de fixer lordre chronologique des oprations. Dans un
programme non FPGA elles sont bannir autant que possible, mais dans ce cas, lutilisation du flot de donnes
(par exemple en reliant les terminaux derreur) pour squencer les oprations impacte trs ngativement sur
lutilisation des portes.
LABVIEW FPGA
LE CODE
ORGANISATION
Le chronogramme montre clairement trois phases, le programme comporte donc trois VIs:
LANCEMENT DE LA CONVERTION
Impulsion ngative dau moins 40ns :
LECTURE DU RESULTAT
Envoie de 16 coups dhorloge, lecture de la donne 60ns minimum aprs le front descendant. Attente de 400
ns minimum en fin de lecture.
267CONTROL
E
DINSTRUME
NTS
268
LABVIEW FPGA
CODE FINAL
Le code final reprend ces trois lments dans une squence. Cette dernire est place dans une boucle infinie,
une initialisation du niveau des
lignes de commande est ajoute en
tte.
LABVIEW FPGA
LUT
LabView FPGA offre une fonction LUT 1D qui permet
de crer des tables de correspondance, et mme
dinterpoler des index fractionnaires si ncessaire (pour
une table de sinus par exemple)
269CONTROL
E
DINSTRUME
NTS
270
LABVIEW FPGA
UTILISATION
Le dcodeur est prt fonctionner, il faut extraire de lentier 8 bits les valeurs de chaque segment, a tant le
bit de poids 6 et g le bit de poids 0.
MULTIPLEXAGE
LADC fournit un rsultat sur 12 bits, donc un chiffre compris entre 0 et 4095. Les donnes sont affiches sur
des afficheurs multiplexs anode commune. Un bit par afficheur commande un transistor PNP qui relie
lanode au +5V, ce bit doit tre 0 pour activer lafficheur correspondant.
Une solution simple et efficace consiste prendre un vecteur de 4 bits 0001 et dcaler le dernier 1 en
utilisant la fonction Scale By Power Of 2
LABVIEW FPGA
IMPLEMENTATION
Les quatre chiffres afficher sont contenus dans un tableau (attention les tableaux sont de taille fixe dans le
module FPGA -> onglet size des proprits). Une boucle les dsindexe tout en activant le digit
correspondant.
271CONTROL
E
DINSTRUME
NTS
272
LABVIEW FPGA
Pour faire trs simple, disons que le CLIP est plus proche du composant FPGA et de sa suite de compilation
alors que le nud dintgration IP est plus proche de LabView.
LE CODE VHDL
Le code suivant est celui dun dcodeur 12 bits binaires vers 4 digits dcimaux. Il utilise lalgorithme DoubleDabble . Il servira afficher la valeur de la tension lue.
LABVIEW FPGA
is
:
:
:
:
:
in
out
out
out
out
STD_LOGIC_VECTOR
STD_LOGIC_VECTOR
STD_LOGIC_VECTOR
STD_LOGIC_VECTOR
STD_LOGIC_VECTOR
(11
(3
(3
(3
(3
downto
downto
downto
downto
downto
begin
temp
:= "0000000000000000000000000000";
temp(14 downto 3) := Bin;
--reduce the number of shift
for i in 0 to 8 loop
--Main Loop
---------Quartet Add3 operation
if temp(15 downto 12) > 4 then
temp(15 downto 12) := temp(15
end if;
if temp(19 downto 16) > 4 then
temp(19 downto 16) := temp(19
end if;
if temp(23 downto 20) > 4 then
temp(23 downto 20) := temp(23
end if;
if temp(27 downto 24) > 4 then
temp(27 downto 24) := temp(27
end if;
---------Shift
temp(27 downto 1) := temp(26 downto 0);
end loop;
---------Digit affectation
Mille <= temp(27 downto
Cent <= temp(23 downto
Dix
<= temp(19 downto
Unit <= temp(15 downto
downto 12) + 3;
downto 16) + 3;
downto 20) + 3;
downto 24) + 3;
24);
20);
16);
12);
Ce fichier doit tre incorpor dans le programme labview pour pouvoir tre compil et excut.
273CONTROL
E
DINSTRUME
NTS
274
LABVIEW FPGA
NUD DINTEGRATION IP
Le nud dintgration IP est disponible sur la palette de programme. Une fois dpos sur le diagramme il faut
spcifier divers lment en ouvrant une fentre de dialogue par
un double clic.
Il faut spcifier ne nom de lIP (tous les IP doivent avoir un nom
diffrent), est donner le chemin daccs au fichier .vhd
Figure 17-28 noeud d'intgration IP sur la palette
Puis dfinir lentit et larchitecture utiliser (il peut y avoir plusieurs couples entit/architecture dans le .vhd).
Le volet suivant permet de
dfinir la valeur des variables
instancies
en
tant
que
gnriques dans lentit. De
vrifier la syntaxe et de gnrer
les fichiers ncessaires la
compilation. Volet suivant est
pour la dfinition des horloges
(pour simplifier aucune horloge
nest dfinie, il serait bon de
Figure 17-29 Slection de l'entit souhaite
synchroniser le code sur un
CLKevent) et ventuellement
pour donner le nom dun variable
dactivation de lIP (utile uniquement si le nud dappel est dans une structure de choix). Volet suivant,
dfinition des conditions de reset : il ny en a pas. Puis la dfinition des noms et des types des terminaux
(prdfinis daprs la dclaration de port de lentit VHDL). Une fois cette opration termine, le nud
dintgration IP prsente des terminaux dentre et de sortie. Il est excutable sur la cible ainsi que sur
lordinateur de dveloppement. Il doit tre ncessairement plac dans une boucle Single Cycle Loop . Ces
boucles suppriment la gestion du flot de donne est assure que lexcution se fait en un cycle dhorloge
LABVIEW FPGA
CLIP
Un CLIP est dfini au niveau du projet, dans les proprits de la partie FPGA, item Component-Level-IP. Les
informations sont sauvegardes dans un fichier XML. Quil faut tout dabord crer bouton Create File
Un ensemble de pages assez semblables aux prcdentes permettent de dfinir lIP, entit et larchitecture
voulue. Le bouton Check Syntax doit tre valid pour pouvoir continuer la procedure.
Pour une approche simple (il ny a pas dhorloges drives, le clip nutilise pas dE/S physiques.), la procdure
se limite cliquer sur le bouton Next , jusqu Finish .
Notre composant est maintenant disponible, pour lutiliser il faut, dans le menu local de la partie FPGA du
projet slectionner New->Component Level IP .
Seule la page General est renseigner, Il faut nommer
linstance du CLIP et slectionner quelle IP utiliser.
Laccs ces donnes utilise des nuds dE/S (comme pour les pattes physiques), il suffit donc de mettre dans
une boucle infinie une structure de squencement qui va donner une valeur bin puis lire les quatre
chiffres.
275CONTROL
E
DINSTRUME
NTS
276
LABVIEW FPGA
Elles sont stockes dans les bascules du FPGA, cest le bon choix si vous navez pas besoins dun historique des
valeurs. La variable
locale nest
accessible quau sein
de son VI, la globale
est accessible par
tous les VI implants
sur le FPGA. Evitez
les variables locales
dans le VI principal
FPGA car elle
apparait sur la face
avant et les donnes
sont donc transmises
la cible RT (sauf si
vous en avez
besoin !).
LABVIEW FPGA
Always Arbitrate : implmente un algorithme type round robin qui assure un accs squentiel la mmoire
en lecture et en criture.
Arbitrate if Multiple Requestors Only : implmente un arbitrage daccs uniquement si plusieurs accesseurs
existent dans le code, mme sils nont pas la possibilit dun accs simultan.
Never Arbitrate : nimplmente pas de code darbitrage (il faut alors tre certain de ne pas avoir daccs
simultan).
Enfin longlet initial values permet de dfinir de faon statique les donnes initiales contenue dans la
mmoire.
277CONTROL
E
DINSTRUME
NTS
278
LABVIEW FPGA
Pour une simulation sur PC il convient dinsrer des fonctions dattente dans les deux diagrammes.
LABVIEW FPGA
FIFO
CREATION DUNE FIFO
Le processus de cration est identique (il faut slectionner FIFO au lieu de memory). La FIFO possde le code
ncessaire pour vrifier lintgrit des donnes, tant dans le contenu que dans le nombre. Elles peuvent de
mme tre Target Scope ou VI scoped . Les FIFO peuvent tre implantes dans les bascules pour obtenir
les meilleures performances mais avec une taille limit (~100 Octets) dans les LUT (~300 Octets) ou dans les
blocs mmoire pour librer de la logique combinatoire pour les Vis (moindre performance en vitesse)
Pour viter les dbordements, il convient de ne pas crire plus dlments que de place disponible, ni de lire
plus dlments que de donnes
engranges. Pour cela deux
mthodes sont disponibles :
Figure17-42 Accs au nombre d'lments dans la FIFO
279CONTROL
E
DINSTRUME
NTS
280
LABVIEW FPGA
La boucle daffichage senrichie dune structure de rptition conditionnelle qui attend que le buffer contienne
au moins 256 valeurs avant dentrer dans la boucle de vidange de la FIFO. Laffichage est cadenc 100ms pour
voir e rsultat lcran de lordinateur. Quatre digits 100ms cest plus court que 8 mots de 12 bits 100ms
donc pas de dbordement de la FIFO.
Figure17-45 Une boucle attend que 256 lments soient dans la FIFO
Il est temps maintenant de compiler le projet pour lexcuter sur la cible FPGA.
LABVIEW FPGA
PROTOCOLE I2C
Le protocole I2C est utilis par le convertisseur Numrique/analogique. Il sagir dun protocole qui utilise que
deux fils actifs, une horloge SCL et une ligne de donne SDA, il est multi-maitres et multi-esclaves. La vitesse
standard est de 100 kbits/s les adresses sont codes sur 7bits.
Initialement dvelopp pour la tlvision par Philips, il est maintenant trs largement diffus. Puisque quune
ligne unique est destine aux donnes celle-ci est ncessairement bidirectionnelle, ceci impose certaines
contraintes au niveau du FPGA.
LIGNESBIDIRECTIONELLES
Les nuds de lecture criture permettent de configurer ces lignes en entre ou en sortie. Les blocs dentre
sortie du FPGA sont constitus
dune bascule et dun buffer trois
tats.
Une fois une ligne configure en
sortie par un nud dcriture, un
nud de lecture ne remet pas la
patte dE/S en haute impdance.
Le niveau lu nest pas fix, il
dpendant du niveau impos par
le nud de sortie, du niveau
impos par le circuit extrieur et
des Fan-In/Fan-Out de ce
petit monde.
Figure17-46 Structure des connexion d'E/S
Il faut utiliser le nud de mthode Set Output Enable pour forcer le passage haute impdance dans le cas
dune ligne bidirectionnelle
(Palette FPGA I/O).
Il est aussi possible de poser une valeur dans la bascule de sortie sans activer le buffer de sortie grce au nud
de proprit Set Output Data (par exemple une partie du
code gnre des donnes et une autre active ou non la sortie).
281CONTROL
E
DINSTRUME
NTS
282
LABVIEW FPGA
La premire phase une est condition de Start ->SDA passe de 1 0 alors que SCL reste 1.
Puis ladresse est transmise sur 7 bits suivie dun 0 pour indiquer une opration dcriture.
Puis le maitre lit lacquittement de la transmission par lesclave (en cas de non acquittement nous ne ferons
rien pour simplifier le diagramme, normalement une condition de Stop est envoye et une transaction
recommence). SDA tant en lecture il faut envoyer un faux au nud de proprit Set Output Enable .
LABVIEW FPGA
Le cycle envoie dun octet, rception de lACK recommence ensuite deux fois, mais avec les donnes et non
ladresse. Puis une condition de Stop termine la transaction, SDA passe 1 aprs que SCL soit pass 1.
Figure 17-54 Squence complte d'une transaction d'criture sur bus I2C
283CONTROL
E
DINSTRUME
NTS
284
LABVIEW FPGA
LABVIEW FPGA
BOUCLES EN UN CYCLE
La structure Single Cycle Timed Loop (palette de structures SCTL) permet doptimiser lexcution en forant
le synthtiseur, pour cette partie du code, optimiser la vitesse et la
taille du code.
Normalement, le flot de donnes cr en LabView pour le FPGA est
maintenu par trois lments :
La fonction logique code dans la LUT
La bascule de synchronisation
La chaine dactivation
Figure 17-55 Structure de la chaine
d'activation
Dans la structure SCTL, cette chaine est dsactive, seuls les lments de la logique voulue demeurent. Il
faut bien entendu que le temps de propagation du signal travers lensemble des portes soit infrieur un
coup dhorloge. Lors de la synthse et du routage, le compilateur vrifie que cest bien le cas. Une fentre
davertissement apparait dans le cas contraire.
285CONTROL
E
DINSTRUME
NTS
286
LABVIEW FPGA
PIPELINE
La technique du pipeline consiste en un dcoupage du code en morceaux lmentaires et changer les
informations entre ces morceaux par des tunnels de registre dcalage. Il faut cependant faire attention
laugmentation du temps de latence (temps avant que la premire donne valide soit disponible), car le
nombre de tours de boucle par opration augmente avec la profondeur du pipeline (deux cycles dhorloge par
tour de boucle).
La technique peut bien videmment tre utilise avec une SCTL si le temps de propagation nest trop long
LABVIEW FPGA
DOMAINES TEMPORELS
Les FPGA peuvent gnrer des horloges drives de lhorloge principale 40 MHz. La famille Spartan contient
quatre Digital Clock Manager (DCM) . La synthse de frquence est obtenue par multiplication/division de la
frquence principale.
HORLOGES DERIVEES
CREATION
Les horloges drives sont cres dans le projet en droulant le menu contextuel de lhorloge principale. Une
fentre de configuration apparait.
Lutilisateur entre la frquence dsire, les
diviseurs et multiplicateurs optimaux sont
calculs, et la frquence rellement
synthtisable est affiche. Sur la carte SBRIO les frquences disponibles
schelonnent de 2.5 280 MHz
UTILISATION
Les horloges drives sont accessibles dans les SCTL par un double clic
sur lhorloge de cadencement. La fentre de dialogue propose toutes les
horloges cres prcdemment.
VIOLATION TEMPORELLES
Chaque lment du diagramme ncessite un certain nombre de portes et donc un certain temps de
propagation. Ce nest que lors de la phase de
synthse quil sera possible de connaitre si le
code crit est excutable la vitesse
souhaite.
287CONTROL
E
DINSTRUME
NTS
288
LABVIEW FPGA
Le bouton Investigate Timing Violation ouvre un rapport des diffrents temps, rpartis entre temps de
propagation dans les portes et temps de
propagation dans les interconnections.
LABVIEW FPGA
ANNEXES
CONNECTIONS DE LA CARTE PROTOTYPE
BOUTON POUSSOIR
Un seul est disponible
SW1 : Port6/DIO9, passe un lors de lappui
LED
Deux les sont disponibles
LED1 : Port6/DIO4
LED2 : Port6/DIO5
BNC
Trois prises BNC sont relies directement aux entres du FPGA
BNC1 : Port5/DIO6
BNC2 : Port5/DIO7
BNC3 : Port5/DIO8
AFFICHEURS
Quatre afficheurs 7 segments anodes communes sont disponibles, ils sont multiplexs. Les segments sont
contrls par :
A : Port6/DIO7
B : Port6/DIO8
C : Port2/DIO8
D : Port2/DIO7
E : Port2/DIO6
F : Port2/DIO4
G : Port2/DIO5
Les anodes
1000 : Port5/DIO0
100 : Port5/DIO1
10 : Port5/DIO2
1 : Port5/DIO3
ADC
Un ADC 12 bits AD7896 avec une liaison srie trois fils genre SPI . La rfrence est VDD, les 12 bits sont donc
rpartis entre GND et VDD
Les connections avec le FPGA sont les suivantes :
BUSY : Port6/DIO0
CONVST : Port6/DIO1
SDATA : Port6/DIO2
SLK : Port6/DIO3
289CONTROL
E
DINSTRUME
NTS
290
LABVIEW FPGA
Le fonctionnement de lADC est le suivant : La conversion est lance par un front descendant sur lentre
CONVST. L'horloge de conversion est gnre en interne le temps de conversion est 8 s. Aprs la conversion,
La ligne BUSY passe ltat bas, le cycle de lecture peut commencer, la donne est sur 16 bits avec quatre bits
0 en tte.
DAC
Un DAC 12 bits I2C AD5622 est reli lentre de lADC par un cavalier deux position (lADC reoit soit VCC/2,
soit la sortie du DAC). Il a ladresse : 2(partie variable) + 12(partie fixe)=14
Les connections avec le FFPGA sont les suivantes :
SDA : Port5/DIO4
SLC: Port5/DIO5
Le DAC na quun registre 16 bits qui contient la valeur binaire correspondant la tension souhaite en sortie.
La trame envoyer est :
LABVIEW FPGA
LA TRAME
Une trame I2C contient : Une condition de START, ladresse de lesclave, un bit de direction, un bit
dacquittement, puis huit bits de data, un bit dacquittement (cette squence DATA/ACK peut tre rpte
linfini) et enfin une condition de stop.
291CONTROL
E
DINSTRUME
NTS
292
LABVIEW FPGA
FORMAT DE LA TRANSMISSION
Chaque octet mis sur la ligne SDA doit tre de 8 bits. Le nombre d'octets qui peuvent tre transmis est illimit.
Chaque octet doit tre suivi d'un bit dacquittement. Donnes sont transfres avec le MSB en premier. Si un
esclave ne peut recevoir ou transmettre un autre octet complte de donnes jusqu' ce qu'il ait effectu une
autre fonction, par exemple une interruption interne, il peut maintenir la ligne SCL BAS pour forcer le matre
dans un tat d'attente. Transfert de donnes continue ensuite lorsque l'esclave est prt pour un autre octet de
donnes. Si lesclave peut bloquer lhorloge, cest toujours le maitre qui la pilote.
ACQUITTEMENT
Lacquittement a lieu aprs chaque octet. Le bit dacquittement permet au rcepteur signaler l'metteur que
l'octet a t reu avec succs et un autre octet peut tre envoy. Toutes les impulsions d'horloge y compris la
9e sont gnres par le matre.
Le signal dacquittement est dfini comme suit :
1) l'metteur libre la ligne SDA (il met sa ligne en entre) durant l'impulsion d'horloge dacquittement
donc le rcepteur peut commander la ligne SDA
2) SI SDA est BAS durant la priode haute de lhorloge, il y a acquittement de la part du rcepteur. Si SDA
est HAUTE alors il y a eu un problme de reception.
Le matre peut alors gnrer une condition STOP pour abandonner le transfert ou une condition START pour
dmarrer un nouveau transfert.
LABVIEW FPGA
293CONTROL
E
DINSTRUME
NTS