Vous êtes sur la page 1sur 293

[Tapez un texte]

LABVIEW







Edition 2011
R. Decourt







3 SOMMAIRE

1. Introduction LabVIEW 15
LabVIEW 16
Les Instruments Virtuels 17
Environnement LabVIEW 18
Les fentres de la face avant et du diagramme 18
Barre doutils de la face avant 19
Barre doutils du diagramme 20
Menus contextuels 20
Menus 20
Palettes 20
Palette doutils 20
Palette de commandes 21
Palette de Fonctions 22
Chargement de VIs 23
Enregistrement des VIs 23
Aide et Manuels 26
Aide contextuelle 26
Aide LabVIEW 26
2. Cration, Modification, mise au point dun VI 27
Cration dun VI 28
Face Avant 28
Diagramme 29
Nuds 29
Terminaux 29
Fils 29
Cblage automatique des donnes 30
Programmation par flots de donnes 30
Recherche de contrles, de VIs et de fonctions 31
Techniques de modification 32
Cration dobjets 33
Slection dobjets 33
Dplacement dobjets 33
Effacement des objets 33
Duplication des objets 33
Nommer les objets 33
Slection ou suppression de fils 34
Etirement des fils 34
Fils casss 34
Outils ddition de la face avant 35
Changer la couleur des objets 35
Modifications 38

4
SOMMAIRE
3. Crer un sous VI 41
Sous VI 42
Icne et connecteur 43
Cration de licne 43
Dfinir le connecteur 43
Slectionner ou modifier le motif du connecteur 44
Affectation de terminaux aux commandes et aux indicateurs 44
Utilisation des sous VIs 47
Ouverture / Edition de sous VIs 47
Cration dun sous VI partir dune slection. 49
Rsum trucs et astuces 50
4. Boucles et graphes droulants 51
Boucles de rptition conditionnelle (While) 52
Les graphes droulants 52
Cblage des graphes droulants. 53
Registres dcalages 58
Initialisation des registres 59
Nuds de rtroaction (feedback node) 59
Boucles For 61
5. Tableau, Graphes et clusters 63
Les Tableaux 64
Crer des tableaux sur la face avant. 64
Tableaux deux dimensions 64
Tableaux de constantes 64
Auto Indexation 65
Boucles et tableaux 2D 65
Fonctions sur tableaux 66
Polymorphisme et tableaux 67
Graphes fonction du temps et graphes XY 69
Les Graphes 69
Les graphes XY 70
Graphe multi courbes 71
Clusters 73
Crer des clusters sur la face avant 73

5 SOMMAIRE
Constantes de type Cluster 73
Ordonner les Clusters 73
Fonctions sur Cluster 75
Assembler & Assembler par nom 75
Dsassemblage des clusters 75
Polymorphisme des clusters 77
6. Structures de choix, squences et nuds de calcul 79
Structure de choix 80
Tunnels dentre/sortie 80
Exemples 80
Slection des choix 82
Les Squences 84
Variable locale de squence 84
Comment viter lutilisation des squences 85
Botes de calcul et nuds dexpression 86
Nuds dexpression 86
Botes de calcul 86
7. Chanes et Entres/Sortie fichier 88
Chanes 89
Crer des commandes et des indicateurs de type chane 89
Tables 89
Fonctions sur chane 91
Manipulation de chanes 91
Chanes et Nombres 91
Entres/Sorties sur fichier 93
Fonctions de haut niveau 93
Fonctions de bas niveau 93
Fonctions de base 93
Gestion des erreurs 94
Utilisation de VIs de haut niveau 95
Les VI express 98
8. Programmation multithread 101
Introduction au multithreading sous LabVIEW. 102
Gnralits. 102
Avantages 102

6
SOMMAIRE
Meilleure utilisation du CPU 102
Facilit de programmation 103
Meilleure confiance dans le code 103
Amlioration des performances en multiprocesseurs 103
Dport de threads sur dautres machines 103
Contraintes 103
Communications inter threads 103
Synchronisation de threads 103
Gestion de ressources communes 103
Corruption mmoire alatoire 104
Partage de ressources physiques 104
Deadlock 104
Priorits dexcution 104
Changement de priorit 104
Attente de libration 104
Noeuds synchrone 105
Modle de programmation 106
Modle matre/esclaves (Master/Slaves) 106
Modle parallle 106
Exemple : Traitement parallle de donnes concurrentes 106
Traitement srie par lot dun flot de donnes (pipeline) 107
Exemple : ACQUISITION-TRAITEMENT-ENREGISTREMENT 107
Gestion des applications multithreads 109
Gestion des communications inter thread 109
Mcanismes de partage de variables 109
Messages 112
Synchronisation de threads 114
Occurrences & notification 114
Rendez vous 115
Gestion de ressources communes 115
Variables fonctionnelles 115
Smaphores 116
Priorit subroutine 117
Priorit et cadencement de threads 117
Introduction 117
Attentes et boucles temporises 117
9. Chargement dynamique, VI Server 119
Introduction 120
Chargement dynamique de VI 121
Prambule 121
Rfrencement dun VI 121
Chargement dun VI 121
Lancement et transmission des paramtres 122

7 SOMMAIRE
10. Communication entre applications distantes 123
Visualisation et contrle 124
Via le serveur WEB 124
Activation du serveur WEB 124
Cration de la page HTML 124
Prise de contrle 124
Suivi des connexions 125
Via LabView 125
Mode manuel. 126
Mode programm 126
Applications partages 128
Transmission de donnes 128
Variables partages 128
Data Sockets 129
Protocoles TCP/UDP 129
Connexion au VI server 132
Principe 132
11. Amlioration de linterface 135
Importation des titres dobjet. 136
Gestion des menus 137
Edition. 137
Gestion. 137
Menus des objets de face avant 138
Structure dvnement 139
Dfinition 139
Gestion 139
Evnement provenant dautres VI 140
Enregistrement dvnements utilisateur 142
Changement du nom dvnement 143
Objets ActiveX et .NET 144
Quest ce ? 144
ActiveX 144
.Net 144
Utilisation dun composant ActiveX et .NET 144
ActiveX 144
Enregistrement dactivit dun ActiveX ou dun .NET 145
Gnralit sur les Callback 145
Enregistrement dune Callback 145
Les CommandeX 148
Gnralit 148

8
SOMMAIRE
Cration 148
12. Programmation oriente objet 151
Aperu 152
La programmation oriente objet 152
Modles objets 152
La classe 152
Lencapsulation 152
Lhritage 152
Polymorphisme 153
DEUX MOTS dUML et de POO 154
Reprsentation des classes 154
Visibilit des attributs et des mthodes 154
Reprsentation des dpendences 155
LabVIEW Object-Oriented Programming: the Decisions Behind the Design. 156
Les choix 156
l'encapsulation 156
Lhritage 156
Cration dobjets 157
Les bibliothques 157
Les Proprits (ATTRIBUTS) 157
Les mthodes 157
Dynamique versus Statique 158
Accesseurs et mutateurs 159
Accs aux ATTRIBUTS 159
Droits daccs aux mthodes 160
Hirachisation des classes 161
Changement de lhritage 161
Explorateur de hierachie 162
Options de surcharge des methodes 162
Surcharge obligatoire des mthodes filles 162
Utilisation des mthodes surcharges. 163
Appel des mthodes parentes par les methodes surcharges 164
Implmentation dune relation dagrgation/composition 165
Creation Dynamique dObjets 166
Transfert dobligation de Surcharge des mthodes a des petits enfants 167
Un peu plus loin 168
Optimisation du code 168
Variant mthodes gnrique 168
Position du problme 168
Les Variants 169
Rfrencement des objets 170
Rfrences 170

9 SOMMAIRE
In Place Element Structure 171
Dans le cas des Objets 171
Aspects cosmtiques 174
Les fils 174
Les icnes 174
13. Acquisition de donnes 175
Aperu 176
Configuration matrielle 176
VIs dacquisition 178
Acquisition de donnes DAQmx 178
Tches et Voies virtuelles dans MAX 178
Entres analogiques type Waveform 182
Donne type Waveform 182
DAQ Assistant 184
Sorties analogiques 186
Gnration de Waveform 186
Les compteurs et entres/sorties numriques 187
14. Contrle dinstruments 189
Gnralits 190
Configuration et Communication GPIB 191
Architecture du logiciel 191
Configuration du logiciel 191
Communication avec les instruments 194
Caractristiques propres dun appareil 194
Etapes essentielles dune communication PC <=> priphrique 194
Sources derreurs classiques 195
Bibliothques de contrle dappareils dans LabVIEW 197
Vis spcifiques linterface GPIB ou RS 232C 197
Visa 197
Utilisation des VISA 198
Assistant dE/S instruments 200
Driver dinstrument 202
Exemple dapplication simple 202

10
SOMMAIRE
Pilotage dappareils par port USB 205
Installation et configuration 205
Visa et USB 205
Les drivers IVI 205
Que vrifier si le programme minimal ne fonctionne pas ? 208
Que faire si une tche spcifique ne fonctionne pas ? 208
Communications et configuration srie 209
Paramtrages possibles 209
Connexion matrielle 209
VISA et liaison srie 210
Nud de proprit 210
15. Le module Datalogging & supervisory control 213
Introduction 214
Le module DSC pour les nuls 215
Connection une variable terminale 215
Gestion dalarmes 218
Enregistrement des donnes 218
Gestionnaire de systmes distribus 220
Interface Homme Machine 221
Pour aller plus loin 222
Architecture dun SCADA (Supervisory Control And Data Acquisition) 223
Client / Serveur 223
Librairies et processus 223
Le moteur de variable partages 224
Types de variables partages 224
Utilisation des variables partages 224
Le moteur de publication NI PSP 224
Accs aux variables partages 224
Accs statique 224
Accs Dynamique 225
Nuds de Proprits des variables partages 226
Alarmes et vnements 228
Types dalarmes 228
Changement des proprits dalarmes 228
Rcupration et visualisation des alarmes 228
Alarmes Utilisateurs 229
Base de donnes 231
Enregistrement des donnes 231
Changement du nom de base 231
Activation de lenregistrement dune variable 231

11 SOMMAIRE
Enregistrement manuel des donnes 231
Lecture des donnes enregistres 232
Serveurs dE/S 233
Serveurs Standards 233
Serveurs de donnes 233
Serveur dimpression 233
Serveur denregistrement par lots 233
Serveurs personnels 234
Gestion des librairies et des variables 236
Dploiement des bibliothques 236
Cration de processus 237
Cration de variables partages 237
Cration de serveurs dE/S 237
Un petit exemple 238
16. Le module StateChart 239
Introduction 240
Les diagrammes etat transition UML 241
Symbolique UML et Statechart 242
Etat 242
tat initial, tat final 242
Evnement 242
Transitions 243
Entre tats 243
Internes 243
JonctionS 243
Etats compos 244
Transitions dans les etats composs 244
Historiques 245
Synchronisation 245
Les StateCharts LabView 246
Cration de la bibliothque 246
Cration dun stateChart 247
Code associ aux tats 247
Les Transitions 248
Autour dun exemple 250
Le Diagramme statechart UML 250
Commande de lclairage. 250
Commande de ventillation 250
Deux processus concurents 251
Mise en marche et arrt 251
Le diagramme Statechart Labview 251

12
SOMMAIRE
Cration 251
Cration des transitions 252
Synchrone ou asynchrone 252
Excution du statechart 253
Variables de sortie 254
Dboggage 255
Un peu plus loin 257
Transitions simultannes 257
File dattente de triggers 257
Rptition daction dun tat 257
17. Labview FPGA 258
Introduction 259
Quest-ce un FPGA ? 259
Labview et les FPGA 259
Les cibles supportes 259
Labview RT et FPGA 259
Carte support des exemples 259
Prparation de lenvironnement 260
Utilisation des voies numriques 260
Organisation du projet 261
Communication entre les diffrentes parties. 261
Communication et FPGA et RT 261
Communication entre cible RT et Supervision 261
Premiers programmes 262
Un programme 100% FPGA 262
Cration dun VI FPGA 262
Palette doutils 262
Programme 263
Compilation 263
Communications entre VI FPGA et VI RT 264
Excution en parallle 264
Exemple : Un priode- mtre 265
Implantation d'un protocole SPI 266
Outils de cadencement 266
Stucture de squencement 266
Le code 267
Organisation 267
Lancement de la convertion 267
Attente de la fin de conversion 267
Lecture du rsultat 267
Code final 268
Accs aux lignes par des nuds de proprit 268
Gestion des temps de boucles 268

13 SOMMAIRE
Temps dexcution dune boucle 268
Dcodeur BCD 7 segments 269
LUT 269
Entre des donnes 269
Utilisation 270
Excution sur une autre cible 270
Multiplexage 270
Vecteurs de taille quelconque 270
Implmentation 271
Le dcodeur Binaire/BCD utilisation dune IP VHDL 272
Nud dintgration IP versus CLIP 272
Le code VHDL 272
Nud dintgration IP 274
ip 275
Affichage du rsultat de la conversion 276
Passage de donnes entre deux boucles 276
Les variables globales et locales : 276
Les blocs mmoire 277
Cration dun bloc mmoire 277
Accs aux donnes 277
Exemple dun buffer circulaire 278
FIFO 279
Cration dune FIFO 279
Accs aux donnes 279
Exemple avec une FIFO 280
Protocole I2C 281
Lignesbidirectionelles 281
Envoie rception de donnes 282
Ecriture dune trame 282
Optimisation du code FPGA 284
Optimisation gnrale 284
Limiter la taille et le nombre des objets de la face avant 284
Utiliser les types les plus petits 284
Evitez les fonctions gourmandes 284
Evitez de cbler les erreurs 284
Boucles en un cycle 285
Pipeline 286
Domaines temporels 287
horloges drives 287
Cration 287
Utilisation 287
Violation temporelles 287
Communication entre domaines temporels 288

14
SOMMAIRE
Annexes 289
Connections de la carte prototype 289
Bouton poussoir 289
LED 289
BNC 289
Afficheurs 289
ADC 289
DAC 290
Rappel sur lI2C. 291



15
INTRODUCTION A LABVIEW 15
1. INTRODUCTION A LABVI EW

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

17
INTRODUCTION A LABVIEW 17
LES INSTRUMENTS VIRTUELS
Les programmes LabView sappellent des Instruments Virtuels (VIs). Ces VIs ont trois parties principales : la Face
Avant, le Diagramme et lIcne/Connecteur.
La face avant dun VI est avant tout une combinaison de commandes et dindicateurs. Les commandes sont les
entres des VIs, elles fournissent les donnes au diagramme. Les indicateurs sont les sorties des VIs et affichent les
donnes gnres par le diagramme. Vous pouvez utiliser plusieurs types de commandes et dindicateurs tels que
les commandes et les indicateurs numriques,
curseur, boolens, chane de caractres, les
tables et les graphes (Cf. Figure 1-1).
Vous construisez la face avant en plaant des
lments graphiques accessibles dans une
palette. Vous disposez de boutons, dindicateurs
numriques et de chanes, de graphes, de LEDs,
de listes droulantes, de menus


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
applications facilite grandement la rutilisation du code et le dbogage.
Figure 1-1 la face avant d'un VI
Figure 1-2 La face avant et son diagramme
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.


LES FENETRES DE LA FACE AVANT ET DU DIAGRAMME
Lorsque lon ouvre un nouveau VI, une fentre de face avant et une fentre de diagramme apparaissent.
Lillustration suivante prsente les principaux lments de ces deux fentres.

Figure 1-5 La face avant
Figure 1-4 Fentre de dmarrage

19
INTRODUCTION A LABVIEW 19

Figure 1-6 Son diagramme
BARRE DOUTILS DE LA FACE AVANT
La barre doutils suivante est prsente sur la face avant, elle donne accs aux outils dexcution et de prsentation.

Lance lexcution du VI.
Indique que le VI est en cours dexcution et quil sagit dun VI de niveau suprieur (il na pas t
appel par un autre VI).
Indique que le VI est en cours dexcution et quil sagit dun sous VI (il a t appel par un autre VI)
Le bouton dexcution apparat bris : le VI nest pas excutable (il contient des erreurs).
Relance continuellement le VI aprs chaque fin dexcution (quivalent dposer le VI dans une
boucle infinie). Les boutons stop ou pause arrtent lexcution.
Arrte lexcution du VI.

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
BARRE DOUTILS DU DI AGRAMME
La barre doutils suivante est prsente sur le diagramme, elle donne accs aux outils de mise au point et de
prsentation.

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.

Fichier donne accs louverture, lenregistrement ou limpression de VIs.
Edition permet les copier/coller, la recherche, la cration de menus
Excution excute, arrte, accde aux options dexcution dun VI.
Outils facilite par le biais doutils spcifiques, la communication avec des instruments, ldition de
bibliothques, la comparaison de VIs, la configuration du serveur WEB
Parcourir facilite la navigation dans un VI et dans sa hirarchie.
Fentre accde aux fentres de lapplication et aux palettes doutils.
Aide affiche laide, donne accs aux exemples...
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

21
INTRODUCTION A LABVIEW 21
On y accde par FentreAfficher la palette doutils.
Note : Il est possible de faire apparatre temporairement la palette doutils en appuyant sur la
touche maj. et en faisant simultanment un clic droit.

Figure 1-7 La palette d'outils
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.

Figure 1-8 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.).

Figure 1-9 La palette de fonctions

23
INTRODUCTION A LABVIEW 23
CHARGEMENT DE VIS
Lors du chargement la boite de dialogue suivante apparat (parfois trs furtivement).

Figure 1-10 Fentre de chargement des VIs en mmoire
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.
ENREGISTREMENT DES VIS
Utilisez les commandes Enregistrer, Enregistrer sous, Enregistrer tout ou Enregistrer avec options du menu
Fichier pour enregistrer vos VIs. Il est possible de crer des librairies dextension .llb regroupant plusieurs VI. Cette
fonctionnalit date de lpoque des noms limits 8 caractres par MSDOS, National Instruments recommande
actuellement denregistrer les VIs individuellement dans une architecture rpertoire/sous rpertoire.
LabVIEW utilise des boites de dialogues propres NI pour les accs fichiers (pour une compatibilit avec dautres
plateformes), cette option peut tre dsactive dans le menu OutilsOptionsItem Divers du menu droulant.
Exercice 1-1 : Simulation de rponse en frquence
OBJECTIF: OUVRIR ET EXECUTER UN VI.
Dmarrez lapplication LabVIEW.
Cliquez sur la flche de droulement du bouton Aide, situ sur le
panneau daccueil, slectionnez Recherche dexemples.
Les exemples sont galement accessibles depuis le menu aide situ
dans la barre de menu de lapplication. Une boite de dialogue affiche
lensemble des exemples disponibles.
Dans longlet Browse, slectionnez Structure des rpertoires
Figure 1-11 Recherche d'exemples

24 INTRODUCTION A LABVIEW
et chargez Frequency Response.VI dans larborescence Apps\ Freqresp.llb.
Note Vous accdez aussi aux exemples par le menu FichierOuvrir puis en se dplaant vers
C:\ProgramFiles\NationalInstruments\LabVIEW7.0\examples\apps\freqresp.llb\Frequency
Response.vi.
FACE AVANT
Excutez le VI en cliquant sur le bouton Run. Ce VI simule un test de rponse en frquence dun
filtre, et affiche la courbe de rponse sur lcran.

Figure 1-12 Face avant de frequency response
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>

Figure 1-13 Diagramme de frequency response

25
INTRODUCTION A LABVIEW 25
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


Figure 1-14 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

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.

Figure 1-15 Fentre d'aide contextuelle
Ce bouton affiche ou non les connections optionnelles dun VI.
Ce bouton fige le contenu de la fentre (le dplacement de la souris ne met plus jour la fentre).
Affiche laide classique (plus dtaille), associe litem correspondant au moment de lappui.
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 CREATION, MODIFICATION, MISE AU POINT DUN VI
2. CREATION, MODIFICATION, MISE AU POINT DUN VI

28 CREATION, MODIFICATION, MISE AU POINT DUN VI
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 ci-
dessous

Figure 2-1 Contrles et indicateurs
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.

Figure 2-2 Les boolens
CONFIGURATION DES CONTROLES ET DES INDICATEURS
Pour configurer les contrles et indicateurs, utilisez leur menu contextuel, accessible par un clic droit sur lobjet
concern.

29 CREATION, MODIFICATION, MISE AU POINT DUN VI
DIAGRAMME
Le diagramme est compos de nuds, terminaux, connexions comme le montre la figure suivante :

Figure 2-3 Les controles et leurs terminaux
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.

30 CREATION, MODIFICATION, MISE AU POINT DUN VI
Type de la
donne
Scalaire Tableau 1D Tableau 2D Couleur
Numrique

Orange (rel)
Bleu (entier)
Boolen

Vert
Chane

Rose
Tableau 2-1 types de fils
CABLAGE AUTOMATIQUE DES DONNEES
LabVIEW peut connecter automatiquement les objets lors de leur placement dans le diagramme. Lorsquun objet
est approch prs des autres, LabVIEW visualise provisoirement les connexions possibles. Lors du lcher, LabVIEW
tablit les connexions proposes.
Le mode de cblage automatique senclenche lorsquun objet est dplac par loutil de dplacement (flche), la
barre despacement tant maintenue enfonce. Les paramtres de cblage automatique sont dfinis dans le menu
Outils>>Options.
PROGRAMMATION PAR FLOTS DE DONNEES
Utilisant le principe du contrle de flot de donnes, LabVIEW nexcute un nud que lorsque lensemble des
donnes arrivant sur ses entres est prsent. Aprs excution, le nud transmet les donnes sur ses sorties, les
passant ainsi au nud suivant.
Considrons le diagramme suivant :
Il additionne deux nombres et soustrait 50 au rsultat de laddition.
Dans ce cas, le diagramme sexcute de la gauche vers la droite, non pas
parce que les objets sont placs dans cet ordre, mais parce que lune des
entres de la fonction Soustraire reste invalide tant que la fonction
Additionner na pas fini son excution. Retenir quun nud
(fonction) sexcute seulement quand les donnes sont disponibles
tous ses terminaux dentre et il ne fournit les donnes ses terminaux
de sortie quune fois lexcution acheve.
Dans cet exemple quel segment de code devrait sexcuter en premier :
la fonction Ajouter , la fonction Nombre Alatoire ou la fonction
Diviser ?
Impossible savoir : les entres des fonctions Additionner et
Diviser sont valides au mme moment et la fonction Nombre
Alatoire na pas dentre. Dans cette situation si un segment de code
doit sexcuter avant un autre et quil ny a pas de dpendance entre les
fonctions, il est ncessaire dutiliser la structure Squence pour donner
un ordre dexcution. (Cf. chapitre 6).
Figure 2-4 le flux de donne dtermine l'ordre
d'excution
Figure 2-5 excution parallle

31 CREATION, MODIFICATION, MISE AU POINT DUN VI
RECHERCHE DE CONTROLES, DE VIS ET DE FONCTIONS
Les boutons de la palette de fonctions permettent de naviguer et de rechercher les contrles, les VIs et les
fonctions.
Remonter Remonte dun cran dans la hirarchie de la palette.
OptionsOuvre loption Parcourir les fonctions (Browser), partir de la quelle vous pouvez
reconfigurer les palettes.
Rechercher Change la palette en mode recherche. Celle-ci permet deffectuer des recherches
textuelles pour localiser les contrles, les VIs, les fonctions dans les palettes.
Exercice 2-1 : Conversion C to F VI
OBJECTIF: CREER UN VI.
Crer un VI qui convertit un nombre, exprim en degrs Celsius, en degrs Fahrenheit.
Dans les dessins illustrant le cblage, la flche la pointe de la souris indique o cliquer. Le nombre lextrmit
de la flche prcise le nombre de clics effectuer.
FACE AVANT
Choisir FichierNouveau pour ouvrir une nouvelle face avant. Puis crer une face avant rassemblant :
Slectionner FentreMosaque
horizontale pour afficher la face avant et le
diagramme cte cte
Crer un contrle numrique pour saisir la
temprature exprime en degrs Celsius.
Slectionner Commande numrique dans
la palette Numrique. Si la palette Commandes nest pas visible, effectuer un clic droite dans une zone libre
de la face avant pour lafficher.
Ecrire deg C dans ltiquette puis cliquer en dehors de celle-ci ou valider le raccourci Entre, situ
gauche dans la barre doutils ou bien frapper la touche Entre du pav numrique. sinon LabVIEW
utilise une valeur par dfaut quil est possible de modifier en utilisant loutil dcriture.
Crer un indicateur numrique et lutiliser pour spcifier la temprature exprime en degr
Fahrenheit
Slectionner et placer un indicateur numrique.
Ecrire deg F dans la zone dtiquette.
LabVIEW cre le contrle et lindicateur ainsi que les terminaux sur le diagramme. Le terminal est
caractristique du contrle ou de lindicateur associ. Ainsi, le terminal ci-contre reprsente un
contrle de type rel double prcision.
Note : Les terminaux des contrles ont des listels plus pais que ceux des indicateurs.
2-6 Exercice : la face avant

32 CREATION, MODIFICATION, MISE AU POINT DUN VI
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.
Saisir 1.8 dans lune des constantes et 32.0 dans lautre.
Utiliser loutil de cblage pour raliser le cblage du diagramme.
Pour relier un terminal lautre, cliquer laide de la bobine sur le premier terminal, dplacer la jusquau second,
cliquer dessus comme montr ci-dessous.
Ancrer le fil laide dun clic de souris puis le courber angles droits. Un
appui sur la barre despace commute la direction propose pour le
cblage.
Pour identifier proprement les terminaux des nuds, effectuer un clic
droit sur les fonctions Multiplier puis Additionner. Slectionner Elments
visiblesTerminaux pour afficher le connecteur. La mme opration
affiche nouveau les icnes.
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 MODIFI CATION
Figure 2-7 diagramme l'exercice
Figure 2-8 Connection des terminaux

33 CREATION, MODIFICATION, MISE AU POINT DUN VI
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.
EFFACEMENT DES OBJETS
Une fois slectionn lobjet supprimer, appuyer sur la touche <Suppr>.
Annuler /Rtablir
En cas derreur ddition dun VI, on peut Annuler ou Rtablir les tapes prcdentes en choisissant loption
correspondante dans le menu Edition. Le nombre dactions pouvant ainsi tre annules ou revalides est dfini
dans le menu OutilsOptionsDiagramme.

DUPLICATION DES OBJETS
Slectionner lobjet dupliquer, enfoncer la touche <Ctrl>, puis tirer lobjet ainsi dupliqu vers sa position finale.
Copier/Coller permet dobtenir le mme rsultat.
NOMMER LES OBJETS
Utiliser les tiquettes pour identifier les objets sur la face avant et le diagramme. Associes aux objets, celles ci se
dplacent avec eux, leur position vis vis de lobjet est cependant modifiable.
Il est possible dcrire dans des zones de texte, rattaches aucun objet, pour insrer des commentaires. Pour
crer une zone de texte, utiliser loutil texte. En fin de message, cliquer dans le bouton <Entre> de la boite doutil
ou <Entre> du pav numrique ou <Majuscule>+ Entre. La touche <Entre> ajoute un saut de ligne dans la boite
de texte.

34 CREATION, MODIFICATION, MISE AU POINT DUN VI
SELECTION OU SUPPRESSION DE FILS
Un segment de fil est un tronon horizontal ou vertical. Un coude est la jonction de 2 segments. Une branche est la
zone de fil entre 2 jonctions ou 2 terminaux. Pour slectionner un segment cliquer une fois dessus, pour une
branche cliquer 2 fois, pour un fil entier 3fois.

2-9 Slection des fils
C Segment C Branche 2 clics slection
dune branche
C Jonction C 1 clic slection dun
segment
C 3 clics slection de
tous les fils
C Changement de
direction


ETIREMENT DES FILS
Des objets cbls peuvent se dplacer avec leurs fils. Pour cela utiliser la flche de positionnement comme indiqu
ci-dessous.

2-10 Etirement des fils
FILS CASSES
Un fil cass apparat en pointill. Cela arrive si lon tente de relier 2 objets vhiculant des donnes incompatibles.

35 CREATION, MODIFICATION, MISE AU POINT DUN VI

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
OUTILS DEDITION DE LA FACE AVANT
Attention : un fil apparat parfois en pointill tant que le diagramme nest pas compltement cbl.
Modification de la police, du style ou de la taille du texte
Pour changer laspect dun texte, utiliser le menu <Police de lapplication> situ dans la barre
doutils.
Modification de la taille des objets
La taille de la majorit des objets peut tre change. Aprs avoir point sur un objet avec la flche de
slection, des poignes apparaissent dans les coins des objets de forme rectangulaire ou autour des
objets circulaires. Lors de la modification de taille, la police reste la mme. Etirer les objets jusqu
obtenir la taille recherche. En appuyant sur la touche <Majuscule> pendant ltirement, les
proportions de lobjet sont conserves.
Alignement, distribution et dimensionnement des objets
Pour aligner des objets sur un axe : slectionner les puis utiliser le menu <Aligner> les objets dans la
barre doutils. Pour les distribuer de faon homogne, utiliser le menu <Rpartir>. Enfin, pour
homogniser la taille dobjets de la face avant, utiliser le menu <Redimensionner>.
Ordonner, Regrouper, Bloquer des objets
Si des objets se chevauchent, il est possible dimposer qui est devant qui est derrire. Slectionner
un objet et imposer sa position en utilisant <Rorganiser > de la barre doutils.
Il est possible de grouper et/ou verrouiller des objets depuis le menu <Rorganiser >. Les objets
groups gardent leurs dispositions relatives. Les objets verrouills conservent leur emplacement sur
la face avant et ne peuvent pas tre supprims.
CHANGER LA COULEUR DES OBJETS
On peut modifier la couleur de beaucoup dobjets, sauf ceux dont la couleur est spcifique : fils,
reprsentation des donnes.
Pour les autres, choisir loutil couleur et effectuer un clic droit sur lobjet (face avant ou diagramme).
La couleur par dfaut peut tre modifie en choisissant les menus Outils>>Option>> Couleurs sur la
barre de menus.
De la mme faon, il est possible de rendre les objets transparents.

36 CREATION, MODIFICATION, MISE AU POINT DUN VI
Exercice 2-2 : Edition dun VI
OBJECTIF: UTILISER LES OUTILS DEDITION.
Note On peut toujours revenir en arrire par le menu Annuler/Rtablir.
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>.

Utilisez loutil de slection pour slectionner les trois interrupteurs.
Alignez les interrupteurs avec loption Bords gauches de loutil dalignement.
Rorganisez la disposition avec loption Compression verticale de loutil de rpartion.
Groupez les trois objets ensembles, notez que vous ne pouvez plus dplacer individuellement les
interrupteurs.
Effectuez les mmes oprations sur le groupe de LEDs.
Changez les couleurs ON et OFF des LEDs en utilisant loutil doigt pour changer sont tat, et loutil
pinceau pour modifier sa couleur.
Chargez les nom de labels, les fontes, la couleur du texte.....
DIAGRAMME
Cblez chaque indicateur chaque contrle, crire des commentaires en texte libre, essayez les
fonctionnalits de cblage automatique prsentes plus haut.
Fin de lexercice 2-2
Techniques de mise au point
Si le bouton <Lancer un VI> semble cass, comme montr ci contre, le VI nest pas excutable. Si en
fin de cblage la flche est toujours casse le VI ne fonctionnera pas
Recherche des erreurs
Cliquer sur le bouton Excuter ou choisir le menu Fentreliste des erreurs. Un double clic sur la
description de lerreur met en surbrillance lobjet qui contient lerreur.
Visualisation du flot de donnes
Une visualisation du flot de donnes est obtenue en cliquant sur le menu Animer lexcution. Cette
option utilise conjointement avec le mode pas pas permet de visualiser les donnes transmises
dun nud lautre.

37 CREATION, MODIFICATION, MISE AU POINT DUN VI
Note : Cette visualisation rduit fortement la vitesse dexcution VI.
Pas pas
Le mode pas pas visualise intgralement le droulement dun VI ou sous VI. Ce mode affecte
exclusivement un seul VI la fois Pour rentrer dans ce mode cliquer sur le bouton Commencer
lexcution en mode pas pas (icne ci-contre). Dplacer la souris sur Commencer lexcution. Un
message annonant la tche venir apparat. On peut excuter les sous VIs en pas pas ou
normalement.
Si le mode pas pas est activ ainsi que la visualisation du flot, une flche verte, en surimpression,
apparat sur les icnes des VIs en train de sexcuter.( cf. Chap III)
Sondes
Utiliser loutil Sonde pour visualiser immdiatement la valeur qui chemine dans une connexion
quand le VI fonctionne. En mode pas pas ou aprs un point darrt, il est possible de visualiser la
valeur qui vient de transiter dans un fil. Les sondes disparaissent lorsque le VI est ferm.
Points darrt
Utiliser loutil point darrt, prsent ci contre, pour placer un point darrt sur un VI, un nud ou un
fil du diagramme et arrter lexcution du diagramme en ce point.
Plac sur un fil, lexcution stoppe aprs que la donne y ait transit. Plac sur un diagramme, le VI
stoppe son excution une fois tous les nuds excuts. Quand un VI est mis en pause, LabVIEW
lentoure dun listel rouge.
Positionner loutil Point darrt sur le point darrt ou sur la structure concerne, pour lenlever.
RESUME ET ASTUCES
RESUME
Les contrles et les indicateurs sont les entres et sorties interactives du VI.
La bordure dun contrle est plus paisse que celle dun indicateur.
Pour transformer un contrle en indicateur, choisir dans le menu contextuel Changer en indicateur.
Utiliser loutil doigt pour configurer les contrles et les indicateurs
Utiliser loutil position (flche) pour choisir, dplacer, modifier la taille des objets.
Utiliser loutil loupe pour effectuer des recherches dans les palettes de contrles et de fonctions.
Lorsque la flche <Lancer> est casse le VI ne sexcute pas. Cliquer sur la flche casse, affiche les erreurs
Utiliser la lampe danimation, le pas pas, les sondes et les points darrt pour la mise au point.
CONSEILS ET ASTUCES
La plus part des raccourcis combinent la touche CTRL avec une autre touche :
RACCOURCIS

38 CREATION, MODIFICATION, MISE AU POINT DUN VI
<Ctrl-S> Sauve un VI.
<Ctrl-R> Lance un VI.
<Ctrl-E> Commute de la face avant au diagramme.
<Ctrl-H> Affiche laide contextuelle.
<Ctrl-B> Supprime les mauvais fils ( Bad wires).
<Ctrl-F> Trouve les VIs, les textes, les objets chargs en mmoire ou dans une liste de VIs.
Pour balayer les objets de la palette doutils, presser la touche TAB.
Pour passer de la flche la bobine, appuyer sur la barre despace.
Pour incrmenter ou dcrmenter rapidement des contrles, appuyer simultanment sur la
touche<majuscules> et sur les flches du clavier numrique.
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.


39 CREATION, MODIFICATION, MISE AU POINT DUN VI
CAncrer un fil en cliquant
CAncrer et couper le fil par un double
clic
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>.


41 CREER UN SOUS VI
3. CREER UN SOUS VI

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.

3-1 Sous VI = fonction

43 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 !

3-2 l'diteur d'icones
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

44 CREER UN SOUS VI

3-3 Connecteur = liste des paramtres

SELECTIONNER OU MODI FIER LE MOTIF DU CONNECTEUR
Pour slectionner un autre connecteur, appeler le menu contextuel du connecteur et choisir
Modles. Il est souvent prfrable de choisir une configuration avec un nombre de connexions
plus important que ncessaire. Les connexions supplmentaires peuvent rester non cbles, cela
permet deffectuer des modifications sans bouleverser la hirarchie du VI, notamment ldition
de lien.
Le nombre maximum de terminaux pour un sous VI est fix 28.
Note Eviter de dfinir plus de 16 connexions sur le mme VI. Trop de terminaux rduisent sa
lisibilit du VI et sa facilit de mise en uvre. Il est toujours possible de faire un cluster de
plusieurs fils (mis dans une gaine). Dans ce cas on passe alors la gaine et non les fils
individuellement. (Cf. Chapitre 5)
Pour modifier lagencement des terminaux du connecteur, choisir lune des commandes :
Basculement horizontal, Basculement vertical ou Rotation de 90 degrs.
AFFECTATION DE TERMI NAUX AUX COMMANDES ET AUX INDICATEURS
Aprs avoir choisi un modle de connecteur, il faut le cbler. Placez de prfrence les entres
gauche et sorties droite.
Pour faire correspondre un terminal un contrle (ou un indicateur) cliquer sur le terminal avec
la bobine puis sur lobjet graphique correspondant. Le terminal prend la couleur du type dobjet
auquel il correspond.
Lordre dans lequel on clique sur les objets na pas dimportance.
Note Bien que les liens soient tablis en utilisant loutil bobine, aucun trait ne relie le connecteur
et les objets avec lesquels il communique.
Exercice 3-1 : Conversion C en degr F

45 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.

La face avant ci dessous apparat.

Dessiner licne

Crer les connexions
Cliquez droite sur licne et choisir Visualiser le connecteur pour dfinir les terminaux. LabVIEW
choisit une configuration base sur le nombre de contrles et dindicateurs de la face avant.
Celle-ci comporte 2 terminaux degC et degF, LabVIEW propose une configuration avec 2
connexions.
Assignez deux terminaux, lun au contrle, lautre lindicateur.
Affichez laide contextuelle (Ctrl +H).
Cliquez sur le terminal de gauche, loutil bobine apparat automatiquement. La connexion se
colore en noir.
Cliquez sur deg C, le terminal devient orange et un pointill entoure la connexion affecte.
Cliquez dans une zone libre de la face avant. Le pointill disparat et la connexion se pare de la
couleur de lobjet.
Oprez de mme avec lindicateur deg F.
Dplacez le curseur sur le connecteur. La fentre daide montre 2 terminaux orange (rels) et
leurs labels.

46 CREER UN SOUS VI
Sauvez le VI.
Fin de lexercice 3-1

47 CREER UN SOUS VI
UTILISATION DES SOUS VIS
Une fois un VI cr, celui-ci est utilisable en tant que sous VI. Pour le placer dans le diagramme
dun autre VI, utilisez Slection dun VI, accessible depuis la palette de fonctions, licne. Si le VI
est dj ouvert vous pouvez, laide de loutil de slection, cliquer dans son icne et la dposer
dans le diagramme du VI appelant.
OUVERTURE / EDITION DE SOUS VIS
Pour ouvrir la face avant dun sous VI depuis un VI appelant, double cliquez avec loutil slection
sur licne. Les changements que vous oprez naffecteront que cette instance tant que le sous VI
nest pas enregistr. Une fois la modification enregistre, elle affectera toutes les instances dans
tous les programmes o ce VI est dj utilis !
Exercice 3-2 : Thermomtre VI
OBJECTIF: CREER UN VI UTILISANT UN SOUS VI.
Vous disposez dun capteur fournissant une tension proportionnelle la temprature tel que T(C) = 100*V. On
se propose de raliser un thermomtre utilisant ce capteur et capable dafficher la temprature en C ou F.
FACE AVANT
Dans un nouveau VI crez la face avant :

Le thermomtre est dans la palette Numrique.
Dfinir les proprits de lobjet dans le menu contextuel Elments visiblesAfficheur numrique.
Linterrupteur bascule est vrai en haut, on peut sen assurer par le menu contextuel Opration sur les
donnesChanger la valeur en...
Il est possible de documenter le VI (cette description apparatra dans laide contextuelle) en slectionnant dans
le menu contextuel de licne Proprit du VI puis Documentation dans la liste droulante. Entrez une brve
description du VI dans le cadre.
DIAGRAMME
Vous utilisez les lments suivants :
NumriqueNombre alatoire pour simuler une tension mesure

48 CREER UN SOUS VI
NumriqueMultiplier pour le coefficient de proportionnalit de 100.0. La constante peut
tre place directement en droulant le menu contextuel de lentre y en en slectionnant
CrerConstante.
Slection dun VI, pour placer votre VI Convert C to F.vi.
ComparaisonSlectionner permet daiguiller lune ou lautre de ses deux entres vers la sortie
en fonction dun boolen.
Reliez un connecteur de sortie lindicateur Temprature et un connecteur dentre au contrle
Echelle. Enregistrez le VI sous le nom Thermometer.vi .Affichez la face avant et excutez le code.
Vous avez la possibilit dexcuter en boucle le code sans structure particulire dans la phase de
test en utilisant le bouton Excuter en continu au lieu du bouton Excuter.
Fin de lexercice 3-2

49 CREER UN SOUS VI
CREATION DUN SOUS VI A PARTIR DUNE SELECTION.
Il est possible de crer un sous VI en slectionnant une partie de diagramme puis en utilisant
EditionCrer un sous VI. LabVIEW cre
automatiquement un sous VI contenant les
contrles et indicateurs ncessaires. Dun point
de vue conceptuel il ne semble pas que cette
fonctionnalit fournisse un code bien rflchi !

3-4 Cration d'un sous VI partir d'une slection

50 CREER UN SOUS VI
RESUME TRUCS ET ASTUCES
Un VI appel dun autre VI est un sous VI, lutilisation de sous VI rend le code plus fonctionnel et
facile dboguer.
Un sous VI est identifi par son icne, les paramtres sont passs par son connecteur.
Il est possible dajouter une description succincte des fonctionnalits de ses VI en slectionnant
proprits dans le menu contextuel de licne.

51 BOUCLES ET GRAPHES DEROULANTS
4. BOUCLES ET GRAPHES DEROULANTS

52 BOUCLES ET GRAPHES DEROULANTS
BOUCLES DE REPETITION CONDITIONNELLE (WHILE)
Identique une structure de type FaireRpter tant que, la boucle While excute le code
contenu dans son cadre tant quune condition est Vraie ou Fausse. Cette boucle est situe dans la
palette FonctionsStructures.
La souris est utilise pour dfinir la zone de code rpter. Lors du relchement du bouton de la
souris, la zone slectionne, enferme lintrieur de la structure sera rpte. Il est possible
denrichir le code contenu dans la boucle en y dposant dautre VIs, fonctions ou structures.
La condition darrt, prsente ci-contre, permet de contrler lexcution de la boucle. La
condition par dfaut est Continuer si vrai. Dun clic droit il est possible d inverser cette
condition. Licne prend alors lallure prsente gauche
Le nombre ditrations effectues est contenu dans licne prsente gauche. Cette variable est
initialise 0 lors de la premire itration.
Lexemple suivant prsente une boucle dont
lexcution se poursuit tant que la sortie du
sous-VI est infrieure 10, ou que le bouton
stop est faux (continuer tant que vrai
arrter ds que faux).






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
4-1 la boucle While

53 BOUCLES ET GRAPHES DEROULANTS
ci-dessous prsente un graphe multi courbes.

Ce type de graphe dispose de trois modes de rafrachissement accessibles depuis le menu
contextuel AvancMode de rafrachissement.

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.
CABLAGE DES GRAPHES DEROULANTS.
Lentre dun graphe droulant est un scalaire. Le terminal dentre du graphe sadapte
automatiquement au type de donnes.

Laffichage de courbes multiples sobtient en assemblant plusieurs courbes uniques laide de la
fonction <Assembler> situe dans la palette FonctionsCluster.
Exercice 4-1 : Surveillance de temprature
OBJECTIF: UTILISER UNE BOUCLE WHILE ET UN GRAPHE DEROULANT POUR FAIRE UNE ACQUISITION ET
AFFICHER DES DONNEES.

54 BOUCLES ET GRAPHES DEROULANTS
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 :

Slectionnez la boucle While dans FonctionsStructures.
Cliquez et agrandissez le rectangle de slection autour des deux terminaux.
Utilisez loutil de positionnement pour retoucher la boucle si ncessaire.
Positionnez le VI Thermometer.vi que vous avez cr.
Connectez la sortie du VI au graphe droulant. Pour obtenir une temprature en C, il faut connecter une
constante boolenne vraie lentre du VI, accessible par un clic droit sur son entre. Choisissez loption
Crer Constante.

55 BOUCLES ET GRAPHES DEROULANTS
Enregistrez ce VI sous le nom Surveillance de temprature.vi, vous le rutiliserez plus tard.
Lancez lexcution en cliquant sur la flche de la barre doutils ou en tapant <ctrl> r.
Le programme excute la section de code lintrieur de la boucle tant que la condition darrt est VRAIE.
Basculez linterrupteur en position Arrt pour mettre fin au VI.
Vous pouvez modifier laspect des graduations, la mise lchelle, le format des points, la grille par un clic
droit sur le graphe, vous de jouer...
Action mcanique des interrupteurs
Lorsque vous appuyez sur linterrupteur pour mettre fin au VI, linterrupteur demeure en position Arrt. Il est
possible de changer le comportement mcanique en slectionnant Action mcanique dans les proprits de
linterrupteur.
Actions non buffrises (si le contrle nest pas lu par le programme au moment o laction de lutilisateur se
produit (mode pas pas ou tche longue en cours), cette dernire est ignore)
Commutation lappuiLinterrupteur bascule entre deux positions stables chaque appui du
bouton de souris (interrupteur bistable bascule). Il peut tre sensible au relchement du
bouton de la souris en choisissant Commutation au relchement.
Commutation jusquau relchement La valeur du contrle reproduit fidlement ltat dun
bouton monostable.
Actions buffrises (laction de lutilisateur est enregistre jusquau moment o le programme lit
la valeur du contrle correspondant, utile pour les boutons poussoirs.)
Armement lappuiLa commande change de valeur lappui sur le bouton de souris et
retombe lors de la premire lecture de cet tat par le programme (mono coup). Cette commande
est lue une et une seule fois chaque action de lutilisateur.
Armement au relchement Idem mais au relchement du bouton de souris.
Armement jusquau relchement La commande change de valeur lappui sur le bouton de
souris et retombe lors de la premire lecture aprs le relchement. La valeur est donc vraie tant
que le bouton reste enfonce. Elle peut ainsi tre lue plusieurs fois

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.

56 BOUCLES ET GRAPHES DEROULANTS
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

Exercice 4-2 : Signal alatoire
OBJECTIF: CREER UN VI QUI GENERE UN NOMBRE ALEATOIRE ET LAFFICHE A LECRAN
AJOUTER UNE TEMPORISATION VARIABLE A UN GRAPHE DEROULANT.
Ralisez les tapes suivantes :
Placez un bouton rotatif, un interrupteur et un graphe droulant sur la face avant.

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

Exercice 4-3 : Avec de la chance

57 BOUCLES ET GRAPHES DEROULANTS
OBJECTIF: RENVOYER DES DONNEES AU TRAVERS DUNE BOUCLE, VIA UN TUNNEL.
Ralisez les tapes suivantes pour crer un VI qui gnre des nombres alatoires entiers compris entre 0 et 100
000 tant quaucun ne correspond un nombre spcifi par lutilisateur. La boucle, une fois termine, fournit le
nombre ditrations ncessaires.
FACE AVANT
Crer la face avant suivante.

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

58 BOUCLES ET GRAPHES DEROULANTS
automatiquement en cblant cet lment une entre de fonction ou un indicateur extrieur
la boucle.
FonctionsNumriqueIncrmenter incrmente de 1 lentre. Pour palier la valeur 0 associe
litration 1
Sauvegardez votre VI sous le nom Avec de la chance.vi
Entrez un nombre dans la commande Nombre obtenir et lancer le VI.
Vous pouvez observer le fonctionnement de la boucle grce loutil Animer lexcution qui fait
apparatre le flot de donnes le long des fils, et les valeurs qui y circulent.
Entrez un nombre suprieur 100000 ou infrieur 0 et vrifiez que lors du lancement, LabVIEW
contraint lentre au mini ou maxi le plus proche.
Fin de lexercice 4-3
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

59 BOUCLES ET GRAPHES DEROULANTS
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.

INITIALISATION DES REGISTRES
Pour initialiser un registre, nous avons vu quil suffisait de cbler une valeur, externe la boucle, au registre de
gauche.
Si cette valeur nest pas cble, au premier appel du VI, le registre est initialis 0, sil sagit dun
numrique et FAUX, sil sagit dun boolen. Aux appels suivants, les registres gardent la valeur
quils avaient au dernier appel.
NUDS DE RETROACTION (FEEDBACK NODE)
Si un grand nombre de registres dcalage sont utiliss, le diagramme sencombre rapidement. Il est possible
de transformer les registres dcalages en nud de rtroaction par un clic droit sur le registre en
slectionnant Remplacer par un nud de rtroaction

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.

Pour rajouter des lments au
registre :

Cliquez sur le bord de la structure
avec la flche de slection, puis
Tirez vers le bas.

60 BOUCLES ET GRAPHES DEROULANTS


Exercice 4-4 : Moyennage de Temprature
OBJECTIF: UTILISER UN REGISTRE A DECALAGE POUR REALISER UNE MOYENNE GLISSANTE.
Reprenez le code de lexercice 4-1 Surveillance de temprature.vi Modifiez le VI pour afficher,
non pas la temprature instantane, mais la moyenne des trois dernires prises de points.
FACE AVANT
Pas de modifications, slectionnez FichierEnregistrer sous et renommez le fichier Surveillance de
temprature moyenne.vi.
DIAGRAMME
Ajoutez un registre dcalage la boucle.
Ajoutez un lment au registre de gauche (lors de la prise de temprature linstant t, vous aurez
les valeurs aux instants t-1 et t-2 pour moyenner sur trois lments.
Modifiez le diagramme pour visualiser la moyenne des trois derniers points sur le graphe. Tenez
compte des remarques suivantes :
Loprateur FonctionsNumriqueOprateur arithmti-que permet dappliquer le mme
oprateur plusieurs entres (simplification du diagramme).
Placez une temporisation de 500 ms pour modrer les ardeurs de lexcution.
Enregistrez les modifications et excutez le VI.
A chaque itration, le VI thermomtre fournit une temprature, le VI additionne cette
temprature aux deux dernires stockes dans le registre et divise le rsultat par trois.
Placez la fonction FonctionsClusterAssembler pour permettre laffichage simultan de la
temprature instantane et de la temprature moyenne. Laide contextuelle sur les graphes
fournit les renseignements essentiels pour cette opration.
Enregistrez les modifications et excutez le VI, changez le type daffichage des points, des traits
pour chacune des courbes affiches.
Fin de lexercice 4-4

61 BOUCLES ET GRAPHES DEROULANTS
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.

Celle-ci en tire un million et possde un bouton darrt

Exercice 4-5: Moyenne de nombres alatoires
OBJECTIF: CREER UN VI QUI AFFICHE DEUX COURBES, UN NOMBRE ALEATOIRE, ET UNE MOYENNE GLISSANTE
DES 4 DERNIERS POINTS.
Construisez un VI en suivant les recommandations suivantes:
Utilisez une boucle For de 200 itrations.
Crez une face avant ressemblant celle-ci :

62 BOUCLES ET GRAPHES DEROULANTS

Utilisez un registre dcalage pour conserver les trois dernires valeurs.
Vous pouvez utiliser une boite de calcul (Fonctions Structures Boite de calcul) pour raliser le tirage, la
somme et la division.
Enregistrez les modifications et excutez le VI.
Fin de lexercice 4-5
EXERCICE SUPPLEMENTAIRE
Raliser un VI qui lise ltat dun bouton rotatif une fois par seconde et laffiche sur un graphe droulant. Deux
commandes situes sur la face avant permettent de fixer des seuils dalarmes haute et basse. Deux voyants
sallument lorsque ces seuils sont dpasss dans un sens ou dans lautre. En plus de la temprature
instantane, le graphe (de type multi-courbe) affiche les valeurs minimale et maximale du contrle.


63 TABLEAU, GRAPHES ET CLUSTERS
5. TABLEAU, GRAPHES ET CLUSTERS

64 BOUCLES ET GRAPHES DEROULANTS
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.
CREER DES TABLEAUX SUR LA FACE AVANT.
Pour crer un tableau sur la face avant, slectionnez CommandeTableaux et ClusterTableaux. Cette
commande place un tableau vide sur la face avant. A prsent dposez un indicateur ou une commande du type
voulu, lintrieur du tableau.

Vous pouvez changer la taille de laffichage des lments, ainsi que le nombre dlments visibles. Lindex
indique le numro du premier lment affich.
TABLEAUX A DEUX DIMENSIONS
Les donnes des tableaux deux dimensions sont affiches dans une grille lignes/colonnes. On augmente la
dimension en redimensionnant laffichage de lindex vers le bas.

Il devient alors possible dtirer aussi laffichage des lments.

La mthode sapplique aux tableaux de toutes dimensions. Cependant, laffichage reste 2D
TABLEAUX DE CONSTANTES
Mme mthode, mais dans le diagramme : Fonctions Tableau Constante tableau puis placer une
constante du type voulu dans la structure vide.

65 TABLEAU, GRAPHES ET CLUSTERS
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)


66 BOUCLES ET GRAPHES DEROULANTS
FONCTIONS SUR TABLEAUX
Les fonctions sur les tableaux sont accessibles par FonctionsTableaux. Parmi les fonctions les plus
frquemment utilises, citons :
Cre un tableau N dimensions dont tous les lments ont la mme valeur. Cette fonction
(comme la plupart des fonctions oprant sur les tableaux), est redimensionnable pour sadapter
aux nombres de dimensions des tableaux. Cette fonction initialise donc le tableau.

Renvoie la taille du tableau. Si le tableau est N dimensions, la fonction renvoie un tableau
contenant la taille de chaque dimension.


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

67 TABLEAU, GRAPHES ET CLUSTERS

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.

EXERCICE 5-1: GENERATION DUNE TABLE TRIGONOMETRIQUE
OBJECTIF: CREER UN TABLEAU 2D CONTENANT LES ANGLES ET LEURS FONCTIONS TRIGONOMETRIQUES SIN,
COS, ET TG.
Lexercice suivant vous propose de raliser une table trigonomtrique donnant, pour des angles allant de 0
90 par pas de 10, les sinus, cosinus et tangentes.
FACE AVANT
Crez la face avant suivante :

DIAGRAMME

68 BOUCLES ET GRAPHES DEROULANTS
Construisez le diagramme en tenant compte de ces lments :
Les fonctions trigonomtriques sont dans la palette NumriqueTrigonomtrique. Les angles
sont en radians.
Utilisez la fonction Construire un tableau pour assembler dans une ligne de tableau : angle, sin,
cos et tg.
Une boucle For permettra de calculer les 10 ensembles de valeurs.
Enregistrez le VI sous le nom trigo.vi, excutez le.
Il est possible de remplacer les icnes de calculs par une bote de calcul. Tentez de remplacer lensemble des
fonctions numriques par une seule bote de calcul.(Cf Chap6 C)
Fin de lexercice 5-1

69 TABLEAU, GRAPHES ET CLUSTERS
GRAPHES FONCTION DU TEMPS ET GRAPHES XY
Les VIs utilisant des graphiques collectent gnralement les donnes dans des tableaux, les traitent puis les
affichent. Lillustration suivante montre les lments dun graphe

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 X
0
, la valeur de Ax, 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

70 BOUCLES ET GRAPHES DEROULANTS
Soit un cluster contenant la valeur de X
0
, la valeur de Ax, et le tableau 2D dY comme
prcdemment. Il ny a quun seul axe des X, et donc quune seule graduation pour les deux
courbes (mme X
0
et Ax).
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 TABLEAU, GRAPHES ET CLUSTERS
Modifiez le code pour avoir un X0= temps actuel en secondes depuis 1/1/1904 et Ax= 60s, en
utilisant la fonction ClusterAssembler. Relancez lexcution pour constater le changement sur
lchelle des X. ( Attention de respecter lordre X0, Ax, temprature dans le cblage du VI
assembler ).
Get Date/Time permet dobtenir la date actuelle dans in format propre Labview.
La fonction To Unsigned Long Interger permet de lobtenir en secondes
FACE AVANT
Changez les proprits de formatage de lchelle des X, choisissez le format Heure & Date, 24
heures, HH :MM :SS, J/M/A, Anne sur 4 chiffres . Vous devriez obtenir :

GRAPHE MULTI COURBES
DIAGRAMME
Ajoutez un VI : DigitalThermometer.vi dans la boucle For pour obtenir deux flots de donnes,
runissez les deux tableaux 1D en un tableau 2D grce TableauConstruire un tableau qui
entrera dans la fonction Assembler en lieu et place du tableau 1D prcdent. (attention
Assembler = Concatner, litem Concatner les entres ne doit pas tre coch.)
FACE AVANT
Faire apparatre la Palette du graphe depuis le menu contextuel lments visibles
Pour zoomer une partie du graphique :
Slectionnez loutil Loupe laide de loutil doigt. Un menu se droule alors.
Les options sont :
<Zoom dans un rectangle>.<Zoom entre deux X>.<Zoom entre deux Y>.<Annuler le
zoom>.<Agrandir chaque clic>.<Rtrcir chaque clic>
Essayez ces diffrentes fonctionnalits.
Loutil dplacement permet de mouvoir la courbe dans sa fentre lorsquon la agrandie.
Loutil curseur est loutil par dfaut pour dplacer les curseurs, mais cest pour plus tard

72 BOUCLES ET GRAPHES DEROULANTS
Enregistrez le VI sous le nom multigraphe.vi et fermez le.
Fin de lexercice 5-2

Exercice 5-3 : Analyse de lvolution de Temprature
OBJECTIF: AFFICHER ET ANALYSER LEVOLUTION DUNE TEMPERATURE.
Crez de nouveau une boucle FOR de 40 itrations contenant un Thermometer.vi qui fournira un tableau
de temprature:
Vous en afficherez le minimum et le maximum
La moyenne
Vous calculerez une rgression polynomiale dordre 8 et ajouterez la courbe rgresse au graphe.
FACE AVANT
Vous devriez obtenir quelque chose comme :

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

73 TABLEAU, GRAPHES ET CLUSTERS
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.
CREER DES CLUSTERS SUR LA FACE AVANT

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.
CONSTANTES DE TYPE CLUSTER
Il est possible de crer sur le diagramme une constante de type cluster, en utilisant ClusterCluster constante,
puis en y plaant comme prcdemment des constantes du type dsir.
ORDONNER LES CLUSTERS
Les lments de cluster sont ordonns, nous lavons dit, dans leur ordre dinsertion. Si vous dsirez changer
lordre des lments dun cluster (par ex., vous ajoutez un lment omis qui ne doit pas tre le dernier) il faut
choisir, dans le menu contextuel, Ordonner les commandes dans le cluster. La barre doutils prend alors
laspect suivant :

74 BOUCLES ET GRAPHES DEROULANTS

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 TABLEAU, GRAPHES ET CLUSTERS
FONCTIONS SUR CLUSTER
Quatre fonctions principales permettent dassembler ou de dsassembler par ordre ou par nom les clusters,
elles sont situes dans la palette doutils Cluster

ASSEMBLER & ASSEMBLER PAR NOM
Les fonctions dassemblages permettent de regrouper divers lments dans un cluster ou de
changer la valeur de certains lments dun cluster existant. Ces fonctions sont
redimensionnables.
Lexemple ci-dessous montre lutilisation de ces fonctions. Les fonctions de gauche crent un
cluster partir de constantes, celles de droite modifient un lment du cluster cr. Le problme
est rsolu simultanment avec un assemblage par nom et avec un assemblage par ordre.
Plusieurs remarques simposent :
Lassemblage par nom est minemment plus clair! Si le cluster nexiste pas dj, la connexion
cluster dentre de la fonction cluster/assembler doit tre relie une constante, de type
cluster. Il faut ainsi mettre dans celle-ci les prototypes ou les valeurs initiales des lments du
cluster. Il est possible de slectionner llment dont on veut changer la valeur : clic avec loutil
doigt sur lentre ou menu contextuel/slectionner un lment.
Lassemblage par ordre est plus compact, on ne cble que lentre qui doit changer de valeur,
mais on ne sait pas quoi elle correspond (il faut alors commenter le code).

DESASSEMBLAGE DES CLUSTERS
Les fonctions de dsassemblage permettent dextraire des lments dun cluster pour les utiliser
individuellement. La fonction de dsassemblage par ordre sajuste automatiquement au nombre
total dlments du cluster. Le dsassemblage par nom doit tre dimensionn la main en

Constante de cluster
contenant les constantes

76 BOUCLES ET GRAPHES DEROULANTS
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.


Activer loption Afficher les
codes \s de la chane.

Insre un espace
Dsassemblage
par nom.

77 TABLEAU, GRAPHES ET CLUSTERS
POLYMORPHISME DES CLUSTERS
Si les donnes dun cluster sont de mme type (chane, nombre, boolen), il est possible deffectuer
directement des oprations logiques sur des clusters.
Lexemple suivant montre le rsultat obtenu lors dun ET logique entre deux clusters de boolens puis
entre un cluster de boolens, et une constante boolenne. Dans le premier cas le ET est ralis lment de
cluster lment de cluster (par ordre de cration et pas par ordre visualis lcran), dans le second cas entre
chaque lment du cluster et la constante (la LED noire indique une valeur fausse).

Exercice 5-4 : Paramtre de mesure et rsultats
OBJECTIF: CREER DES CLUSTERS SUR LA FACE AVANT ET UTILISER LES FONCTIONS DASSEMBLAGE ET DE
DESASSEMBLAGE.
Les conditions exprimentales dun essai sont regroupes dans un cluster qui contient les lments suivants : le
nom de lessai et le nombre de points de mesure. Les rsultats seront regroups dans un autre cluster
contenant le nom de lessai, et un tableau de valeurs dessai. Ces valeurs seront produites comme
prcdemment par une boucle contenant le VI Digital Thermometer.vi
FACE AVANT
La face avant peut ressembler :

DIAGRAMME

Vrai


Faux

Cluster N1
Donnes

Cluster N2
Rsultats

78 BOUCLES ET GRAPHES DEROULANTS
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 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL
6. STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL

80 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL
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.

Structure de choix sur boolen
Attention, lcran, tous les cas sont
superposs dans une seule et unique
boite. Cette reprsentation didactique est
le fruit dun montage.


81 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL

Structure de choix sur entier

Note : apparition dun cas par Dfaut, pour dfinir les oprations faire dans les cas non prvus.
Structure de choix sur chane

Structure de choix sur numration

Structure de choix sur erreur

82 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL

SELECTION DES CHOIX
Pour entrer la valeur de slection, frappez laide de loutil texte la valeur dsire dans la case de
slection. Le menu contextuel permet dajouter des cas avant ou aprs le cas actuel, de dupliquer
le code dun cas, denlever un cas. Pour chaque cas, il est possible dentrer une valeur unique,
une liste de valeurs distinctes ou une tendue de valeurs continues.
Pour entrer une liste, il faut sparer les valeurs par des virgules. Pour entrer une tendue, il faut entrer la borne
infrieure, deux points et la borne suprieure (les bornes sont incluses). Si une borne est omise, cela signifie
que toutes les valeurs infrieures (ou suprieures) sont admises.
Par exemple :..5, 7, 11..20, 30 signifie que ce cas sera excut pour toutes valeurs infrieures 5,
pour la valeur 7, les valeurs comprises entre 11 et 20 et la valeur 30.
EXERCICE 6-1 : RACINE CARREE
OBJECTIF: UTILISER UNE STRUCTURE DE CAS SIMPLE.
Il sagit de raliser un VI capable de calculer la racine carre dun nombre positif ou nul, et dafficher un
message derreur si lutilisateur entre une valeur ngative. (lindicateur Racine est dans la structure)
FACE AVANT
Elle peut ressembler :
DIAGRAMME
Les lments nouveaux hormis la structure de choix, sont :
Les outils de comparaison disponibles dans la palette FonctionsComparaison.
Une boite de dialogue un bouton, accessible dans la palette de FonctionsTemps & Dialogue.
La fonction racine carre acccessible dans la palette de FonctionsNumrique
Enregistrez le VI sous le nom Racine.vi et excutez le.
FIN DE Lexercice 6-1
EXERCICE 6-2 : PROGRAMMATION DUN APPAREIL IEEE488
OBJECTIF: UTILISER UNE STRUCTURE DE CHOIX ET UNE ENUMERATION.
Le choix de la fonction dun multimtre interfac se fait par lenvoi de codes ASCII. Le VI est charg de
transformer une numration de fonctions en chanes de programmation selon la relation suivante :


83 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL
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

84 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL
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.
VARIABLE LOCALE DE SEQUENCE
Le passage de variable(s) dune squence lautre se fait par des variables locales de squences,
ajoutes par le menu contextuel.
Lexemple suivant en montre lutilisation :
Squence 0, la variable locale temprature na pas t affecte, elle est grise, et inutilisable. Le
boolen est initialis Faux
Squence 1, la variable locale est temprature affecte, la flche indique que cette valeur sort de
la squence, le boolen est lu, la flche indique que la valeur entre dans la squence.
Squence 2 et suivantes, la variable locale peut tre connecte lentre dun VI, la flche
indique que cette valeur entre dans la squence.
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.

85 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL

COMMENT EVITER LUTI LISATION DES SEQUENCES
Lutilisation des squences va lencontre du concept de flux de donnes de LabVIEW, et diminue grandement
la lisibilit du code en superposant des pages de code dans le mme cadre. Il est grandement prfrable
dutiliser lordre dexcution naturel en liant vos VI, ne serait-ce que par une connexion derreur.
Il est souvent intressant dutiliser le paralllisme inhrent LabVIEW, mais des tches asynchrones utilisant
des ports dentre/sortie peuvent parfois entrer en conflit, il faut dans ce cas utiliser soit des squences, soit,
plus rationnellement des mcanismes dautorisation (jetons, smaphores).
Autre inconvnient, une donne doit sortir que dune seule squence, puisque toutes les squences doivent
tre excutes avant de sortir de la structure. Lexemple suivant montre limpossibilit de mettre jour un
simple indicateur.

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


86 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL
BOITES DE CALCUL ET NUDS DEXPRESSION
Les botes de calcul et les nuds dexpression permettent deffectuer des calculs complexes dans un mode
texte. Ils rendent le diagramme plus lisible, lorsque les expressions sont complexes.
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.

EXERCICE 6-3 : NUDS DE CALCUL
OBJECTIF: UTILISER DES FONCTIONS SIMPLES DUN NUD DE CALCUL.
On se propose dutiliser un nud de calcul dans une boucle for de 100 pas, pour tracer la courbe f(x) =
sinus(x)/x pour des valeurs dangle comprises entre -6t et + 6t.

87 STRUCTURES DE CHOIX, SEQUENCES ET NUDS DE CALCUL
FACE AVANT
La face avant est prsente ci-dessous.

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

Attention le sparateur
dcimal doit tre un
point
Dmarrer/Paramtre/
panneau de
config/option
rgionale/ sparateur

88
CHAINES ET ENTREES/SORTIE FICHIER
7. CHAINES ET ENTREES/SORTIE FICHIER

89 CHAINES ET ENTREES/SORTIE FICHIER
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.
CREER DES COMMANDES ET DES INDICATEURS DE TYPE CHAINE
Utiliser la palette Chane&chemins pour crer des commandes et des indicateurs de type chane.
La taille du cadre daffichage est modifiable laide de loutil flche. Il est possible dafficher une
barre de dfilement pour les textes longs en slectionnant Elments visiblesBarre de
dfilement.

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 Valeur hexadcimal dun caractre 8 bits; doit tre en majuscules
\b Retour arrire (ASCII BS, quivalent \08)
\f Saut de page (ASCII FF, quivalent \0C)
\n Retour la ligne (ASCII LF, quivalent \0A)
\r Retour chariot (ASCII CR, quivalent \0D)
\t Tabulation (ASCII HT, quivalent \09)
\s Espace (quivalent \20)
\\ Barre oblique inverse (ASCII \, quivalent \5C)

valeurs hexadcimales des caractres.
LAffichage style mot de passe affiche des toiles la place des caractres.
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.

90
CHAINES ET ENTREES/SORTIE FICHIER


91 CHAINES ET ENTREES/SORTIE FICHIER
FONCTIONS SUR CHAINE
La palette FonctionsChane contient une grande diversit de fonctions sur chanes, voici les
principales :
MANIPULATION DE CHAI NES
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.

Chane de format correspondant
aux lments mis bout bout

Espace dans la chane de format
dlimite la chane lors de la
relecture

92
CHAINES ET ENTREES/SORTIE FICHIER
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

93 CHAINES ET ENTREES/SORTIE FICHIER
ENTREES/SORTIES SUR FICHIER
Les fonctions E/S sur fichier permettent de grer toutes les oprations sur fichiers, notamment :
Ouverture/Fermeture de fichiers
Lecture/Ecriture
Lecture/Ecriture au format tableur
Dplacement, effacement, cration de rpertoires..
Changement dattributs
Gestion de fichiers de configuration (.ini)
FONCTIONS DE HAUT NI VEAU
Les fonctions de haut niveau (icnes blanches en haut gauche de la palette) permettent la
lecture et criture directe de fichiers textes, ou de fichiers tableurs (tableaux 2D avec
sparateur). Elles intgrent louverture/fermeture des fichiers, les botes de dialogues, la
conversion des donnes... Ces fonctions sont utiliser en priorit dans tous les cas simples.
FONCTIONS DE BAS NIVEAU
Ces fonction sont situes dans la sous palette Fonction de fichiers avance, elle permettent
louverture/fermeture, laccs squentiel, la gestion des droits, la manipulation de rpertoires, de
noms...Ces fonctions ne seront pas tudies dans ce cours.
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.

94
CHAINES ET ENTREES/SORTIE FICHIER
Fermer un fichierferme le ficher spcifi par Refnum.
GESTION DES ERREURS
La gestion des fichiers est loccasion de parler de la gestion des erreurs, car ce type dopration en provoque
souvent (mdia absent, disque plein, fichier en lecture seule...). La majeure partie des fonctions avances de
LabVIEW fait circuler une connexion derreur. Cette connexion est un cluster qui comporte :
Un tat (boolen) indiquant si une erreur a eu lieu.
Un code (int32) qui identifie le type derreur (codes derreurs complets dans laide), si code est
diffrent de zro et que ltat est faux, il sagit dun avertissement.
Une source (string) qui indique le VI responsable de lerreur.
Les VIs recevant une erreur neffectuent aucune opration, il est donc important de prvoir au minimum
laffichage du cluster derreur, car on peut croire que lensemble des oprations sest normalement droul
alors quaucune na t effectue.
Utilisez le gestionnaire derreurs simples de la palette Temps&Dialogue pour afficher un
panneau signalant lerreur.
Lexemple suivant illustre ce propos, toto.txt est ouvert en mode lecture seule. La fonction Ecrire dans un
ficher gnre donc une erreur. Notez que si lon ne pose pas le gestionnaire derreur sur le diagramme rien ne
permet de penser que toto.txt na pas t crit.

EXERCICE 7-2 : LECTURE/ECRITURE DUN FICHIER
OBJECTIF: UTILISER LES FONCTIONS DE BASE POUR FAIRE DES E/S SUR FICHIER.
Crez un VI capable dcrire une chane de caractres la fin dun fichier chaque excution et de lire
lintgralit du ficher avant de le fermer.
FACE AVANT
Voici un exemple de la face avant, aprs la troisime excution :

95 CHAINES ET ENTREES/SORTIE FICHIER

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
UTILISATION DE VIS DE HAUT NIVEAU
Les VIs de haut niveau effectuent lensemble des oprations
Ouverture/Conversion/Lecture&Ecriture/Fermeture avec un seul VI. Il faut les utiliser ds quun fichier texte
est accd de faon occasionnelle car la procdure ouverture/fermeture systmatiquement effectue
consomme inutilement des ressources systmes lors daccs frquents.
Les VIs de haut niveau sont :
Ecrire dans un fichier tableurConvertit un tableau 2D ou 1D de rels en une chane de
caractres. Les donnes sont spares par dfaut en colonnes par des tabulations et en lignes par
des retours chariot. Une chane de format peut changer le nombre de chiffres significatifs, la
fonction peut transposer le tableau avant de lenregistrer. Ce type de fichier est un format
dimportation standard tous les tableurs.


96
CHAINES ET ENTREES/SORTIE FICHIER
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
7.81
E
-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.

97 CHAINES ET ENTREES/SORTIE FICHIER
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) .

98
CHAINES ET ENTREES/SORTIE FICHIER
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.

Voici une version Express de lexercice prcdent :

99 CHAINES ET ENTREES/SORTIE FICHIER


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

101 PROGRAMMATION MULTITHREAD
8. PROGRAMMATION MULTITHREAD


REF _REF102
PROGRAMMATION MULTITHREAD
INTRODUCTION AU MULTITHREADING SOUS LABVIEW.
GENERALITES.
Les systmes dexploitation rcents sont tous multitche et multithread. Le multitche est la capacit dun
systme partager le temps CPU entre plusieurs processus (lourds) (process). Dans ce cas, le systme offre :
Des mcanismes de protection inter processus (protection de la mmoire alloue, des contextes
dexcution).
Des mcanismes permettant des processus concurrents de communiquer (dabord par le biais
de tubes communicants (pipes), de signaux puis des bibliothques de communication (Inter-
Process Communication ou IPC)).
La gestion de communication inter process nest donc pas chose facile et ncessite lappel aux fonctions du
systme dexploitation, ou des appels une interface de programmation (API ou Application Programming
Interface), fournie par le concepteur de lapplication. Ces appels sont coteux en temps car le changement de
contexte est une opration lente. Une application ractive ne devrait pas faire appel plusieurs processus
mono programm, mais un seul processus multiprogramm contenant plusieurs chemins dexcution. Ces
chemins dexcution sont nomms processus lgers (thread).
Les processus lgers (thread) sont similaires aux processus (process), ils reprsentent tous deux l'excution
d'un ensemble d'instructions. Ces excutions semblent se drouler simultanment pour lutilisateur. Toutefois,
l o chaque processus possde son propre espace mmoire allou par le systme dexploitation et des
mcanismes de communication interprocessus fiables, les processus lgers appartenant au mme processus
pre partagent une mme partie de sa mmoire. Le qualificatif "lger" est donn car, comparativement aux
processus lourds, ils ne consomment que trs peu de ressources (quelques Kilo-octets pour la pile et le jeu de
registres). Les autres ressources sont partages entre tous les processus lgers s'excutant dans le mme
processus lourd.
Le multithread est la capacit de lOS de grer plusieurs chemins d'excution au sein dun mme
processus (de fait lOS lance plusieurs routines du mme processus simultanment).
LabVIEW possde depuis sa cration un squenceur de processus lgers coopratif o chaque processus lgers
doit explicitement permettre un autre processus lgers de s'excuter (par opposition aux squenceurs de
processus systmes communment premptifs). De fait il tait, vu du systme, comme mono thread. Depuis la
version 7.0 il demande des threads au systme. Le squenceur de LabView reste actif et les threads du
squenceur interne sont regroups par priorit dexcution dans des threads systmes. Sur les system multi
curs, il est possible daffecter les curs certain threads
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 ...)

103 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.
MEILLEURE CONFIANCE DANS LE CODE
Le fait davoir plusieurs VI en excution permet de grer plus facilement des vnements critiques. Un VI peut
par exemple scruter en permanence des lments de scurit et prendre la main dans une situation durgence
en asynchronisme complet avec les autres tches.
AMELIORATION DES PERFORMANCES EN MULTIPROCESSEURS
Les applications multithread qui sexcutent sur une machine multi processeurs ou sur des processeurs multi
curs (Intel & AMD) bnficient du gain de performance de lordre de 30 50 % par processeur, chaque
thread pouvant tre trait par un processeur.
DEPORT DE THREADS SUR DAUTRES MACHINES
Dans le mme esprit, il est possible si une application est conue multithread, de dporter lexcution de
threads sur dautres machines, pour bnficier dune puissance de calcul supplmentaire, dun OS temps rel,
pour dporter lacquisition du contrle...
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.
GESTION DE RESSOURCES COMMUNES
Tous les threads d'un processus partagent ses ressources : fichiers, variables statiques, mmoire tas (heap). La
cohrence des donnes ou des ressources partages entre les processus lgers doit tre maintenue. Il faut
grer l'accs exclusif d'un thread ces ressources partages et il est prfrable den avoir le moins possible.

REF _REF104
PROGRAMMATION MULTITHREAD
Lutilisation de smaphores (compteur daccs) ou de mutex (verrou dexclusion mutuelle) permet de grer ces
partages.
CORRUPTION MEMOIRE ALEATOIRE
En anglais race condition se produit lorsque quun thread lit en mme temps quun autre crit une variable, il
faut grer laccs exclusif. Il semblerait que les variables partages intgrent un mcanisme de protection de
fait de leur diffusion par le canal TCP. Le caractre alatoire des erreurs entrane des difficults de dbogage
normes, le programme peut parfois tourner des heures sans soucis.
PARTAGE DE RESSOURCES PHYSIQUES
Plus intuitif, par exemple laccs un fichier, un appareil de mesure, une imprimante. Les mcanismes de
gestion sont identiques aux gestions de corruption mmoire. Il existe cependant dans la classe VISA un certain
nombre doutils spcifiques la rservation de ressources matrielles.
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

105 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.

REF _REF106
PROGRAMMATION MULTITHREAD
MODELE DE PROGRAMMATION
Il existe quelques modles de programmation particulirement adapts aux processus lger.
MODELE MAITRE/ESCLAVES (MASTER/SLAVES)
Dans le modle matre/esclave, un processus lger rpartiteur (le matre) reoit des ordres ou des requtes (de
linterface utilisateur, dlments extrieurs, du systme...) et les distribuent en fonction de leur type des
processus esclaves qui les excutent. Les requtes peuvent tre distribues par des files dattente, ou bien le
matre peut attendre la fin de traitement dun esclave avant de lui raffecter une mission. Les esclaves peuvent
tre crs dynamiquement lors de la rception de la requte, ou au dpart de lapplication (un par type de
requtes)
Le modle matre/esclave est particulirement adapt aux serveurs de requtes (SQL, HTTP, FTP), et aux
gestionnaires de fentres (interface utilisateur).

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...).

EXEMPLE : TRAITEMENT PARALLELE DE DONNEES CONCURRENTES
Une application peut souvent ressembler a ceci, un VI dinitialisation, un ou plusieurs VI dacquisition, un ou
plusieurs VI dexcitation, des VI de gestion des menus et de laffichage, denregistrement, il pourrait y avoir une
communication vers un superviseur distant...Tous ces VI font des oprations concurrentes et communiquent
entre eux.

107 PROGRAMMATION MULTITHREAD

On remarque une file dattente relie tous les VIs et un smaphore de protection mmoire.
TRAITEMENT SERIE PAR LOT DUN FLOT DE DONNEES (PIPELINE)
Dans ce modle, l'excution d'une requte est ralise par plusieurs processus lgers excutant une partie de
la requte en srie. Les traitements sont effectus par tape sur une partie des donnes.

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

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.



109 PROGRAMMATION MULTITHREAD
GESTION DES APPLICATIONS MULTITHREADS
GESTION DES COMMUNICATIONS INTER THREAD
Il sagit dnumrer les mthodes permettant denvoyer des donnes des VI interconnects uniquement par
des fils dentre, comme ceux de lexemple prcdent.
Deux mthodes cohabitent, il est possible de partager des zones mmoires ou denvoyer des messages
MECANISMES DE PARTAGE DE VARIABLES
Deux mcanismes permettent daccder une ressource mmoire commune
La variable globale/partage
La transmission dune rfrence dobjet de la face avant
VARIABLES GLOBALES/PARTAGEES : GENERALITES
Les variables partages sont des zones mmoires connues de tous les threads dune application. Comme toutes
les variables globales (en C) elles doivent tre en nombre strictement suffisant, pour limiter lespace mmoire
occup et pour la lisibilit du code. Bien quayant fait lobjet de grandes amliorations au fil des versions de
LabVIEW, leur niveau de performance reste environ dix fois plus faible quun registre dcalage en termes de
vitesse de lecture/criture, si lon ne gre pas la protection contre les corruptions. Si le code est crit
proprement cette vitesse baisse encore dun facteur 10 au minimum.
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

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.

La publication rseau permet, au dtriment de la vitesse laccs dautres fonctionnalits :
La buffrisation : Vous permet de stocker les donnes de la variable dans le tampon FIFO (First-
In-First-Out). Dans une application temps rel cela permet, par exemple, de maintenir le
dterminisme des sections critiques lors de transfert de donnes. Plus classiquement cela permet
daccepter des variations momentanes de vitesses de lecture/criture ( condition de ne pas
saturer la FIFO).


111 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.

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

113 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.

Le dbit de donnes est de quelques Mo/s
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.

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.
OCCURRENCES & NOTIFICATION

115 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.
GESTION DE RESSOURCES COMMUNES
La gestion des ressources communes est un point important de la qualit du code. Une corruption mmoire est
indtectable et peut entraner des rsultats inattendus
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...

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.

117 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.
PRIORITE ET CADENCEMENT DE THREADS
INTRODUCTION
Le squenceur de LabVIEW tant coopratif, les threads les plus prioritaires ne sont enlevs de la pile
dexcution que sils sont mis en attente. Il est donc important de laisser du temps ceux qui en ont besoin !
Tout vient point qui sait attendre. Il est prfrable dutiliser des attentes plutt que de changer les priorits
moins dtre certain de ce qui est fait.
ATTENTES ET BOUCLES TEMPORISEES
Le moyen le plus simple dattendre est lutilisation de la fonction Wait ou Wait Until Next ms Multiple .
La premire est une attente simple, la seconde attend que le compteur dhorloge passe par un modulo du
temps impos, elle permet un cadencement prcis si le temps dexcution de la tche est constant.

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
CHARGEMENT DYNAMIQUE, VI SERVER
9. CHARGEMENT DYNAMIQUE, VI SERVER

120 CHARGEMENT DYNAMIQUE, VI SERVER
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.

121
CHARGEMENT DYNAMIQUE, VI SERVER
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 .

122 CHARGEMENT DYNAMIQUE, VI SERVER
LANCEMENT ET TRANSMI SSION DES PARAMETRES
Une fois charg en mmoire, le VI doit tre excut ; deux possibilits existent :
Lexcution du code de la fonction charg par Open VI reference fait appel au VI Call By Reference
Node . Ce dernier offre un connecteur adapt au type et nombre de donnes de la fonction. La rfrence doit
donc tre stricte. Ce type dappel et identique lappel standard dun VI, le nud Call By Reference Node
se termine lors que le VI appel a termin sont excution.

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 COMMUNICATION ENTRE APPLICATIONS DISTANTES
10. COMMUNICATION ENTRE APPLICATIONS DISTANTES


124
COMMUNICATION ENTRE APPLICATIONS DISTANTES
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
ACTIVATION DU SERVEUR WEB
Lactivation manuelle est prsente ici ; toutes ces oprations sont ralisables par programme en utilisant des
nuds de proprit relatifs lapplication.
Le serveur est activ dans le menu Tools>Options>Web Server : Configuration . Il y est demand : le chemin
o sont places les pages WEB, ventuellement le port et le timeout et un fichier de log. Litem Web Server :
Visible VIs permet de spcifier quels sont les VIs qui seront exports vers le serveur WEB la valeur par dfaut
et *, c'est--dire tous ceux dont la face avant est visible. Enfin, litem Web Server : Browser Access spcifie
les machines qui peuvent se connecter, et leurs droits daccs. National recommande de ne pas activer le
fichier log car il existe une vulnrabilit (l envoi de deux LF LF la place de la squence CR LF CR LF entrane un
DoS (Denial of Service)) qui crash les serveur WEB et toutes les applications LabVIEW, National recommande
dailleurs de ne pas publier dapplication risque sur le WEB....
CREATION DE LA PAGE HTML
Une fois le serveur WEB activ, il faut crer une page html sur le disque dans le rpertoire du serveur
WEB. Litem Tools>Web Publishing Tools lance un utilitaire permettant de crer une page WEB simple
contenant seulement un titre, une phrase avant et aprs limage de la face avant. Il est possible de reprendre le
fichier html pour lenrichir ou dinclure les parties propres LabVIEW dans un fichier existant. Cest la page
WEB qui accde au VI, il ny a donc pas de mthode pour lier un VI une page WEB.
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.


125 COMMUNICATION ENTRE APPLICATIONS DISTANTES

SUIVI DES CONNEXIONS
Le Remote Panel Connection Manager situ dans le menu Tools permet de suivre ltat des connexions
aux VIs (Les clients qui attendent le contrle, celui qui la), de voir le dbit de donnes et de dconnecter un
client.


Projet : partie 6
Tentez de prendre le contrle de votre projet via un navigateur internet.

VIA LABVIEW

126
COMMUNICATION ENTRE APPLICATIONS DISTANTES
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

Voici le code de VI publier et sa face avant aprs transfert du contrle.

127 COMMUNICATION ENTRE APPLICATIONS DISTANTES

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.

128
COMMUNICATION ENTRE APPLICATIONS DISTANTES
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.

129 COMMUNICATION ENTRE APPLICATIONS DISTANTES

Un utilitaire Tools>Shared Variable>Variable manager permet de visualiser et de tracer les variables
partages.
Une application de supervision peut tre aussi simple que celle-ci :

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

130
COMMUNICATION ENTRE APPLICATIONS DISTANTES
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 ci-
dessous le serveur transmet sur 10 caractres lindice de boucle, le client lit cette valeur et la renvoie en cho.

131 COMMUNICATION ENTRE APPLICATIONS DISTANTES

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

132
COMMUNICATION ENTRE APPLICATIONS DISTANTES
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)


133 COMMUNICATION ENTRE APPLICATIONS DISTANTES
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.


135 AMELIORATION DE LINTERFACE
11. AMELIORATION DE LINTERFACE


136
AMELIORATION DE LINTERFACE
IMPORTATION DES TITRES DOBJET.
Il est possible dimporter et dexporter lensemble des textes contenus dans une face avant et/ou dans un
diagramme vers un fichier texte. Ceci permet dadapter les versions du logiciel des langues diffrentes. Cette
fonctionnalit peut tre manuelle (en passant par Tools->Advanced->Inport/Export String) ou ralise par la
mthode VI String.Import au sein dun programme. Lexemple suivant permet de changer la langue de la
face avant du VI Label.vi en slectionnant soit le fichier anglais.txt ou franais.txt.

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.

137 AMELIORATION DE LINTERFACE
GESTION DES MENUS
EDITION.
Une barre de menu peut tre adjointe un VI, un diteur de menu est accessible par la commande Edit->Run
time menu. La hirarchie des menus est connu par lindentation dans la fentre de droite, pour chaque item
est dfinit un ITEM TAG qui sera retourn au programme lors de lutilisation de la barre de menu. Il est possible
de retrouver, soit item tag de la slection, soit le chemin complet (tous les items de la hirarchie spars
par des :)

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.

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.....
MENUS DES OBJETS DE FACE AVANT
Tous les objets de la face avant peuvent avoir des menus contextuels personnaliss. Ils sont accessibles dans le
menu contextuel advanced des objets. La mthode est la mme que pour les menus de panneaux. Il est
alors intressant dutiliser une structure vnement pour grer lensemble des interactions entre utilisateur et
menus.


139 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.

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.

EVENEMENT PROVENANT DAUTRES VI
Si le VI contenant la structure vnement nest pas celui qui contient les lments de la face avant, ces derniers
napparatront pas dans la liste des objets. Il faut alors rfrencer lobjet dynamiquement lors de lexcution en
transmettant une rfrence de lobjet au VI Register For Events

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

141 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 :

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.

ENREGISTREMENT DEVENEMENTS UTILISATEUR
Il est possible de gnrer un vnement utilisateur et de transmettre une structure vnementielle des
donnes. Les vnements et les donnes associes sont poss dans une file dattente automatiquement. Les
trois VI destines crer, gnrer et dtruire un vnement utilisateur sont :

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.

143 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 ?
CHANGEMENT DU NOM DEVENEMENT
Si un VI qui fournit un vnement est utilis plusieurs fois, tous les vnements auront le mme nom.
Lexemple suivant permet de prnommer les vnements.



144
AMELIORATION DE LINTERFACE
OBJETS ACTIVEX ET .NET

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.

UTILISATION DUN COMPOSANT ACTIVEX ET .NET
LabVIEW peut tre client ActiveX et .NET, c'est--dire accder des objets, des proprits, des mthodes et
vnements dapplications ActiveX. IL peut aussi tre serveur (pas directement pour .NET), d'autres
applications peuvent accder des objets, des proprits et des mthodes de LabVIEW. Les composants
ActiveX et .NET peuvent possder une interface utilisateur ou non. La principale difficult est de trouver la
documentation complte du composant que vous voulez utiliser.
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.

145 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.
Une bonne connection Internet et trois crans gants peuvent servir.

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.

ENREGISTREMENT DACTIVITE DUN ACTIVEX OU DUN .NET
GENERALITE SUR LES CALLBACK
Les composants ActiveX et .NET gnrent des vnements et renvoient au conteneur .NET des donnes
propres cet vnement. La procdure de gestion dvnement fait appel des Callback .
Une Callback est une fonction appele via un pointeur sur fonction (on stocke ladresse de retour et on fait
un GOTO 0xHHHH . De fait il ny a pas vraiment de couple appelant/appel, lappelant ne sait pas qui est
lappel (il na que son adresse de dbut), il ne connat quun prototype de la fonction. Ceci permet de changer
dynamiquement la fonction appele simplement en changeant ladresse du pointeur dappel, (sentend bien
quil faut que les prototypes soient identiques). Cette technique est trs utilise dans lAPI Windows, car le
systme gre les vnements sur des objets et demande lapplicatif si on clic sur lobjet X qui dois-je
appeler ? comme lAPI est dj compile, il nest pas possible de lui passer un nom de fonction (il faudrait tout
recompiler), alors ladresse de la fonction appeler est passe en paramtre, la fameuse Callback .
ENREGISTREMENT DUNE CALLBACK
A la vue de ce qui prcde, il apparat que pour un vnement donn il faut enregistrer ladresse de la fonction
appeler. Ceci se fait avec le nud Enregistrer un VI Callback d'vnement

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).


Lexemple ci-dessus utilise un composant .Net de la classe System.Windows.Form.Button . Le programme de
gauche enregistre la callback dvnement Click de lobjet .NET et attend. La Callback ( droite) affiche un
message lorsque lutilisateur clic sur le bouton.
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 ...


147 AMELIORATION DE LINTERFACE



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)

149 AMELIORATION DE LINTERFACE

Par dfaut elle traite les vnements :
Timeout : ne rien changer dans ce cas
Modification des donnes, c'est--dire que data_in est diffrent de data_out, en gnral on transfre data vers
une locale de la variable affiche
Changement dtat de laffichage cet vnement est trait lorsque lon appelle une proprit ou une mthode,
cest ici que le changement de couleur de la LED doit tre fait un fonction de la valeur de display state .
Modification de direction traite le passage Indicateur/Contrle, et Changement de ltat dexcution traite le
passage Edition/Excution, nous navons pas de code y crire.
Si par exemple vous ajoutez un menu local votre contrle, il faudra ajouter une condition dvnement pour
grer ce menu...
Projet : partie 16
Vous allez utiliser les LEDs Triste/Joyeuse que vous venez de crer.



151 PROGRAMMATION ORIENTEE OBJET
12. PROGRAMMATION ORIENTEE OBJET



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
LA PROGRAMMATION ORI ENTEE OBJET
Nous ne ferons pas ici un trait sur la programmation oriente objet, mais de brefs rappels de concepts et de
vocabulaires. La programmation classique est dite structure, le principe est de diviser un programme en sous-
programmes, afin de pouvoir en grer la complexit, faciliter la rutilisation du code et le dbogage. Le
traitement est le matre mot : "Que fait le programme ?".
Les langages orients objets sintressent plus aux donnes : "Sur quoi travaille le programme ?"
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 )

153 PROGRAMMATION ORIENTEE OBJET
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 ).

154
AMELIORATION DE LINTERFACE
DEUX MOTS DUML ET DE POO
Pour illustrer la programmation oriente objet, nous prsenterons un certain nombre de diagrammes de
classes au format du langage de modlisation nomm UML (Unified modeling language).
Les exemples prsents sont raliss avec StarUML, qui est un logiciel libre. La socit AddQ ditrice du
composant logiciel G# (ensemble ddi la programmation orient objet en licence libre) fournit un module
pour transformer les diagrammes de classe StarUML en bibliothques objet LabView.
REPRESENTATION DES CLASSES
La classe est reprsente par un rectangle (un classeur en vocabulaire UML) dans le diagramme de classe. Tout
classeur non explicitement strotyp autrement est une classe. Ce rectangle contient trois champs (il peut y
en avoir jusqu' cinq), de haut en bas : le nom de la classe, ses attributs, ses mthodes.

VISIBILITE DES ATTRIBUTS ET DES METHODES
Devant les mthodes et les attributs, on trouve les
signes suivants :
+ : Publique : Toutes les autres classes ont accs cet
attribut.
# : Protg : La classe ses classes filles ont accs cet
attribut.
- : Priv : Seule la classe elle-mme a accs cet attribut
~ : Paquetage : Les classes appartenant au mme
paquetage que la classe elle-mme ont accs cet
attribut.
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.
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).
Figure 12-1 Visibilit des attributs et des mthodes
Figure 12-2Attributs de classe
et attributs drivs

155 PROGRAMMATION ORIENTEE OBJET
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).
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
REPRESENTATION DES DEPENDENCES
Si nous faisons de la programmation objet, nous avons un diagramme de classe qui implmente plusieurs
classes avec des relations entre elles. Ces relations sont nombreuses en UML, mais il faut en retenir trois types :
la filiation la relation et lassociation et lagrgation/composition.
La filiation repose sur le concept : est une sorte de
<un Homme est une sorte danimal >
Lassociation exprime une connexion smantique
<un Homme travail pour une entreprise>
Lagrgation/composition exprime une relation contenant/contenu
<un Homme a deux jambes>

La distinction smantique entre ces relations
(tre ou avoir) est parfois difficile cerner et
donc choisir : pour faire simple, hritage
quand on peut appliquer la relation
est-un et quon veut faire du
polymorphisme, et dlgation quand un
composant peut changer durant la vie de
lobjet ou du programme.
Si nous implmentons une classe fille (donc
plus spcialise) de notre classe
Banc_de_mesure, par exemple :
Banc_de_mesures_thermiques la relation de
filiation sera reprsente par une flche
dirig de la classe drive vers la classe
mre.
Cette relation de filiation traduit lide que
Thermique EST UNE SORTE de Banc_de_mesure. Elle en possde tous les attributs et les mthodes. Elle
surcharge les mthodes Power_On et Power_Off pour les adapter ce banc en particulier. La temprature
tant un lment indissociable dun banc de mesures thermiques, la classe senrichie dun attribut
Temprature et de son assesseur.
Mais notre banc de mesure est constitu dautres choses, par exemple de multimtres qui seront des enfants
de la classe Appareils de mesure . Ces derniers sont partie de Banc_de _mesure, et y sont relis, dans cet
exemple, par une relation dagrgation symbolise par le losange vide. Une classe Rgulateur apparait comme
un composant indissociable de Thermique, cette relation de composition est symbolise par le losange plein.
Aux intersections on trouve les cardinalits de la relation, thermique possde au moins 1 rgulateur (symbole
1..*), et un rgulateur est associ un et un seul banc thermique.
UML relve de la conception et non de limplmentation, en revanche limplmentation va directement
dpendre de cette conception et des erreurs qui y seront faites
Figure 12-3 accesseurs et mutateurs permettent d'accder
aux valeurs des attributs privs
Figure 12-4 Notre modle UML de bancs de mesures

156
AMELIORATION DE LINTERFACE
LABVIEW OBJECT-ORIENTED PROGRAMMING: THE DECISIONS BEHIND THE DESIGN.
Les ingnieurs de chez NI ont choisi certaines options dimplmentation dcrites dans un document qui porte
le nom de ce chapitre et est disponible sur le site de NI. Il est important dans rappeler les raisons et dexpliquer
quelles en sont les consquences.
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).

157 PROGRAMMATION ORIENTEE OBJET
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.

> Exercice 12-1 Crez la classe Banc_de _mesures
LES PROPRIETES (ATTRIBUTS)
Elles sont donc contenues dans le .ctl (pour contrle) qui est un cluster. Il faut en ouvrir la face avant et y placer
les lments qui sont les donnes de la classe. Par exemple
la classe banc de mesure :
Id -> identifie le banc
State -> identifie son tat
Rappelons que ces donnes sont prives et donc ne sont
accessibles (via une fonction dsassembler par nom) quaux
VI faisant partie de la bibliothque de cette classe.
Des accesseurs et des mutateurs devront tre dfinit pour
accder ces attributs depuis une autre classe.
> Exercice 12-2 Crez attributs de la classe
LES METHODES
Les mthodes sont des VI de la
classe, elles sont cres dans le
menu local de la classe :
Figure 12-5 Cration d'une classe
Figure 12-6 Dfinition des types et valeurs par
dfaut des proprits.

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 :
VI from Dynamic Dispatch
Template
VI from Static Dispatch
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.

Figure 12-8 Exemple de modle cr
Le concepteur na plus qu inclure son code dans la structure de choix.
DYNAMIQUE VERSUS STATIQUE
Les deux premiers modles sont identiques loption prt que lentre et la sortie de la connexion de classe est
ou nest pas Dynamic Dispatch .
Nous avons vu que le polymorphisme tait un
lment clef de la programmation objet.
Cela signifie quune mthode de nom XXX
sera choisie au moment de lexcution parmi
toutes les mthodes XXX de la hirarchie de
la classe, en fonction du type de la classe
connecte son entre.
Par exemple la classe Banc de mesure
possde une mthode Power_On (qui ne
fait rien, elle est abstraite), ses filles de
classes Thermique et Optique
possdent-elles aussi une mthode
Power_On (implmentes rellement et
diffrentes). Pour que, lexcution, la bonne
mthode Init soit choisie, il faut que lentre de connexion de classe au VI ait ce ct dynamique . A
contrario, si la mthode est implmente sans activer lappel dynamique, cest ncessairement la mthode de
la classe qui sera appele (le cblage sera refus !). Attention, tout ce qui facilite la vie peut avoir un revers, en
Figure 12-7 Cration d'une mthode partir d'un modle.
Figure 12-9 Dynamic Dispatch du fil de connection de la classe

159 PROGRAMMATION ORIENTEE OBJET
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 :

Figure 12-11 VI d'accs une proprit

L'utilisation de l'option "Make avaible through Property
Nodes" peut poser quelques problmes pour accder des
lments particuliers d'une collection (Tableaux ou Agrgats)
car il n'est pas possible de lire ou d'crire plus d'un paramtre. Il est donc impossible, par exemple de lire
l'lment x du tableau T[] puisque cela fait 2 paramtres, vous ne pourrez que lire le tableau entier.
> 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.


ACCES AUX ATTRIBUTS
La classe Banc_de _mesures possde maintenant des mthodes daccs ses attributs. Le diagramme
suivant les initialise.
Figure 12-10 Cration automatique
d'accesseurs et de mutateurs
Figure 12-12 Les accesseurs / mutateurs

160
AMELIORATION DE LINTERFACE
Linstance de la classe est cre par un
glisser/dposer de la classe, du projet au
diagramme.
L Id est initialis via lappel direct laccesseur,
State en passant par un nud de proprits.

DROITS DACCES AUX METHODES
Les mthodes peuvent avoir quatre droits daccs :
Publique : tout VI peut appeler la mthode
Communaut : seuls les VI de la classe, ou
dune classe amie ont accs la mthode, cela
ressemble la visibilit "UML Package" (clef bleu)
Protg : seuls les Vis de la classe et ses
descendants ont accs aux mthodes (clef jaune).
Priv : seuls les Vis de la classe ont accs
(clef rouge).


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.
Figure 12-14 niveaux daccs aux mthodes
Figure 12-15 Fentre de configuration des classes amies
(Community Scope)
Figure 12-13 Accs aux valeurs des attributs

161 PROGRAMMATION ORIENTEE OBJET
HIERACHISATION DES CLASSES
Actuellement nous navons quune classe Banc_de _mesures ajoutons au projet une autre classe,
Thermique .





> 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 LHERI TAGE
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.

Optique hrite par dfaut de la
classe LabView Object (la
classe suprieur appele souvent
Mta classe ), le bouton
Change Inheritance permet de
changer lhritage.



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.



Les donnes vhicules par le fil sont dans un agrgat nomm
Thermique.lvclass .
Figure 12-17 Proprits de lhritage
Figure 12-18 Changement de lhritage
Figure 12-16 Diagramme de classe avec la classe drive Thermique

162
AMELIORATION DE LINTERFACE
Il contient deux agrgats correspondant aux attributs de la classe mre et de la classe fille.


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.

Figure 12-20 Arborescence des classes
> 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.




OPTIONS DE SURCHARGE DES METHODES
SURCHARGE OBLIGATOIRE DES METHODES FILLES
Nous avons cr deux mthodes Power_On et Power_Off pour la classe Banc_de _mesures . Nous
savons que ces mthodes doivent tre
surcharges par des mthodes
spcifiques chaque banc de mesure.
Elles dfinissent ce que lon appel des
mthodes abstraites .
Elles spcifient les paramtres passs
(nombre et type), dans notre cas aucun
hormis la classe et lerreur en entres
et en sorties. Elle nimplmente aucun
code spcifique.
Figure 12-19 Donnes vhicules par la classe
Optique
Figure 12-21 Comment obliger la surcharge d'une mthode

163 PROGRAMMATION ORIENTEE OBJET
Il faut obliger les classes filles surcharger cette mthode.
En effet, si ce ntait pas le cas, on utiliserait des mthodes qui ne font rien. Pour cela, dans les proprits de la
classe, catgorie Item setting cochez la case Require descendant classes to override this dynamic
dispatch VI .
Si lon cble une rfrence de classe ou dpose un VI de la fratrie Banc_de _mesures , une erreur de
compilation apparat :

Figure 12-22 message d'erreur si la surcharge est obligatoire et non respecte dans les classes filles
Un modle existe pour crer des Vis de
surcharge. Dans la classe ou vous voulez crer le
VI, slectionnez New->VI for Override .
Lensemble des mthodes parentes
apparaissent, lastrisque marque celles qui
doivent tre surcharges.

Une icne lentte de la classe et avec le corps de la mthode
parente est cre. Il est bien entendu ncessaire de crer toutes les
mthodes de toutes les filles de la classe pour que la flche
nindique plus derreur de compilation.
Le code dinitialisation correspondant lappareil sera crit dans
la structure de slection.
> 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.

Dans ce cas, LabView recopie les noms, icones et paramtres des
mthodes de la classe parente et y pose un appel la mthode de la
classe parente (Cf APPEL DES METHODES PARENTES PAR LES
METHODES SURCHARGEES). Ceci permet dobtenir des VIs
fonctionnels, mais dont il faut tout de mme reprendre le code
puisque lon avait dcid de crer des surcharges, une bizarrerie qui
perdure depuis la version 2009 !

UTILISATION DES METHODES SURCHARGEES.
Supposons que nous voulions dmarrer deux bancs de mesures, lun de mesure Optique, lautre de mesures
Thermiques. Trs classiquement, nous utiliserons le VI
Power_On dOptique puis le VI Power_On de Thermique.
La surcharge de mthode nous permet maintenant
dutiliser la mme mthode pour nos deux bancs, cest le
programme qui ira chercher dans larborescence des
Figure 12-23 Cration de surcharges
Figure 12-24 Le Vi de surcharge cr
Figure 12-25 Deux classes filles surchargent
les mthodes de dmarrage et d'arrt

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

APPEL DES METHODES PARENTES PAR LES METHODES SURCHARGEES
A linverse du cas prcdent, parfois le concepteur veut que la mthode parente soit ncessairement appele,
parce quelle assure des fonctions prcises qui ne doivent pas tre modifies par les enfants de la classe. Dans
ce cas, soit les filles ne possdent pas de surcharge de cette mthode, (cest le plus simple, mais difficile
assurer et maintenir dans un dveloppement trs important), soit on les oblige appeler la mthode de la
classe mre.
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.
Figure 12-26 La mthode
WaterCheck

165 PROGRAMMATION ORIENTEE OBJET
> 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.


> Exercice 12-10 Modifiez la mthode WaterCheck de la classe Thermique en utilisant Call
Parent Method . Vrifiez que maintenant la flche dexcution nest plus casse.





IMPLEMENTATION DUNE RELATION DAGREGATION/COMPOSITION
Les relations de filiations sont supporte directement par LabView, les relations dagrgation ou de
composition ne le sont pas (comme dans
beaucoup de langages). Il faut les
implmenter en crant un conteneur, de
rfrences aux classes contenues, dans les
proprits de la classe contenante. Ce peut
tre : des rfrences simples, des tableaux,
des listes, des tables de hachage, des arbres...
ou tout autre conteneur cela dpendra des
cardinalits, de la notion de tri des
rfrences



12-28 La palette Class
12-29 L'association des classes se fait par l'ajout d'un
tableau de rfrences aux classes pointes

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
CREATION DYNAMIQUE DOBJETS
Pour le moment, notre banc de mesure ne possde que deux types d'appareils, des multimtres soit HP3458
(une rfrence!), soit HP34401 (un modle conomique). Le nombre et le type de ces appareils dpend du type
de mesures effectues et n'est pas, priori connu lors de la compilation du code (heureusement il est connu
lors de l'excution...). Nous allons voir comment instancier dynamiquement des appareils pour le banc de
mesure thermiques.

> 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 !

La version suivante est moins statique , mais elle impose tout de
mme de connatre au pralable les types de multimtres
disponibles. Si nous dsirons obtenir une programmation vraiment
gnrique, il faut pouvoir remplacer tout moment un multimtre
par un autre, mme sil na pas t prvu lors de la conception du
code.
Pour cela il est ncessaire de charger lobjet en mmoire partir du
fichier .lvclass. Cest ce que fait la fonction "get LV class default
value". Cette fonction renvoie un objet de la classe LabView
Figure 12-30 Un tableau
de rfrences est ajout
pour assurer la relation
d'agrgation
Figure 12-31 Version statique de la
configuration
Figure 12-32 Un peu plus gnrique

167 PROGRAMMATION ORIENTEE OBJET
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.














> Exercice 12-13 Instanciez statiquement puis dynamiquement quelques multimtres puis aprs les avoir
initialiss lisez leurs donnes.
TRANSFERT DOBLIGATION DE SURCHARGE DES METHODES A DES PETITS ENFANTS
Si dans notre arborescence, nous avions interpos entre Measurement Devices et HP3458 une classe
DMM , cette dernire aurait t oblige de surcharger les mthodes Init() et Fetch(), puisque la surcharge a
t rendue obligatoire dans la classe Measurement Devices .
Hors la classe DMM ne peut initialiser les multimtres puisquelle nen connait pas le type et donc les mots
de programmation. Dans ce cas la mthode Init serait
elle aussi une mthode abstraite, vide.
Il en serait de mme pour des classes Generator ,
Power supply .
Pour viter de crer ces mthodes abstraites dans toute
la hirarchie, il faut cocher la case Transfer all Must
Override requirements to descendant classes dans les
proprits dhritage de la classe DMM .
Le compilateur vrifie alors que les mthodes de la classe
mre qui doivent tre surcharges le sont effectivement,
mais plus loin dans la hirarchie.



> Exercice 12-14 Crez une classe DMM dans la hirarchie et transfrez lobligation de surcharge des
mthodes Init et Fetch aux descendants.
Figure 12-33 I have a dream that one day modularity will be easy
Figure 12-34 Transfert de l'obligation de
surcharge

168
AMELIORATION DE LINTERFACE
UN PEU PLUS LOIN
OPTIMISATION DU CODE
Lorsque vous crez des mthodes dynamic dispatch methods , chaque classe enfant hrite de toutes les
mthodes publiques et protgs dfinies sur la classe parent. La classe enfant peut surcharger, ou tendre, ces
VIs de membres avec leurs propres versions. Lors de lappel de la mthode, LabView ne sait pas quelle version
de la mthode il invoquera jusqu'au moment de l'excution. LabView optimise lallocation mmoire en
supposant que toutes les mthodes de surcharges se comportent, en terme dentre/sorties, comme la
mthode de la classe mre. Si des entres sont constantes dans le parent, LabView suppose quelles sont
constantes dans tous les enfants. De mme si des entres sont connectes des sorties, si des entre ne sont
pas modifiesDans tous les cas o les mthodes de surcharge ne grent pas le flux dentre/sorties comme la
mthode mre, LabView gnre du code pour corriger ce comportement, et compromet loptimisation.
Pour cela les mthodes de la classe parente doivent tre aussi proche que possible, en terme de flux de
donnes, des mthodes de surcharge des enfants. Le moyen le plus sr dindiquer au compilateur ce que vont
devenir les donnes est dutiliser une In Place Element Structure . Ainsi LabView saura quelle entres sont
connectes quelles sorties, quelles sont celles qui sont constantes.
Ce qui donne pour la mthode mre :

Figure 12-35 Deux implmentations possibles de la mthode abstraite

Figure 12-36 L'implmentation de la surcharge avec une structure de flux comparable la mthode abstraites de droite
dans l'illustration prcdente.
VARIANT METHODES GENERIQUE
POSITION DU PROBLEME
LabView ne permet pas de crer de vritables mthodes gnriques. Lutilisation de Vis polymorphes nest
possible quavec des mthodes dont lentre de classe est : Static Dispatch . En effet dans un appel
dynamique des mthodes surcharges, le compilateur ne peut obtenir le type de donnes transmises avant

169 PROGRAMMATION ORIENTEE OBJET
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).
Lensemble des outils est dans la palette Cluster,Class &Variant , Variants
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:


Figure 12-37 La palette
variant

170
AMELIORATION DE LINTERFACE
Attention,
ces
solutions
sont sduisantes, pratiques, mais gourmandes en mmoire et en ressources.A vous de voir.
> Exercice 12-15 modifiez les mthodes Fetch pour amliorer la gnricit de vote code comme dans
lexemple prcdent.
REFERENCEMENT DES OBJETS
REFERENCES
La version 2009 a introduit une fonctionnalit pour crer des rfrences sur des objets quelconques, ce qui
tait impossible jusqualors. Elles se trouvent dans la palette Application Control-
>Memory Control . Il sagit de New Data Value Reference et de Delete Data
Value Reference . Lors de lappel de la fonction New Data Value Reference , une
rfrence statique sur la donne est cre, la ressource mmoire ne sera libre qua
lappel de Delete Data Value Reference . Ceci est important car en gnral
lutilisateur de LabView ne se souci pas de ce genre de dtails, cest le ramasse miette
qui sen charge. Lutilisation de rfrence implique une gestion manuelle de la
libration de lespace mmoire.
Lutilisation de ces rfrences va de pair avec lutilisation de la structure In Place Element Structure , En
effet, le flux de donnes conduit un code hautement paralllisable.
Lorsquun fil bifurque, cest une copie de la donne prsente sur ce fil qui copie, les fonctions utilisant ces
donnes ne peuvent pas les corrompre car ce sont des copies.
Il en est de mme si le fil qui bifurque est une rfrence, ce sont deux copies de la rfrence qui vont tre
propages, except quelles pointent sur LES MEME DONNEES. Il faut donc un mcanisme de protection qui
assure lexclusivit de laccs aux donnes pointes par la rfrence. Cest prcisment ce que fait In Place
Element Structure .

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
Figure 12-38 Version gnrique
Figure 12-39 VIs de
Cration et Destruction
de rfrences

171 PROGRAMMATION ORIENTEE OBJET
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.
IN PLACE ELEMENT STRUCTURE
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.

Llment spcifique aux rfrences est : Add Data Value Reference
Read / Write Element
DANS LE CAS DES OBJETS
Pour utiliser les mmes objets dans plusieurs branches dexcution parallles, il faudra donc crer des
rfrences sur ces objets et utiliser des structures In Place Element Structure . Par exemple notre
application pourrait lire les multimtres toutes les 100ms et les stocker dans la proprit Value de la classe
Measurement Device . Dautre part, un thread daffichage pourrait, toutes les 250 ms vouloir afficher ces
donnes. Le code version presque oprationnelle peut ressembler :
Figure 12-42 In Place Element
Structure dans la palette
Structures
Figure 12-41 Menu local de la
structure "In Place"

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).
Il faut dcocher la case Restrict references
of this class type to member VIs of this
class . Cette option est active car
normalement ce nest pas lutilisateur des
classes qui devrait crer des rfrences, mais
des mthodes des classes.
Voici ce que devient le code :
Figure 12-43 Une boucle dinitialisation, une dacquisition et une daffichage.
Malheureusement cela ne fonctionne pas !
Figure 12-44 Dcocher les restrictions par dfaut pour pouvoir faire
des btises ( viter dans un vrai code)

173 PROGRAMMATION ORIENTEE OBJET

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.

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.

Figure 12-46 Personnalisation de lapparence des fils
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.

Figure 12-47 Personalization des enttes dicones









175 ACQUISITION DE DONNEES
13. ACQUISITION DE DONNEES

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 MATERI ELLE
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.


177 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



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 DAQMX
Lacquisition de donnes par DAQmx repose sur la notion de tche. Une tche est ici un
paramtre de contrle : un gain, une mise lchelle, un timing, un dclenchement... bref, tout
ce qui caractrise une acquisition. Tous les VIs traitant dacquisition DAQmx sont polymorphes :
le mme VI cre une tche de lecture de tension, de sortie dimpulsion, criture sur une sortie
analogique.
La configuration des diffrents VIs est assez complexe, il est prfrable dutiliser :
Soit MAX pour crer une tche DAQmx.
Soit un VI Express DAQ assistant pour engendrer automatiquement le code contrlant
lacquisition.
Ces deux mthodes sont comparables et font intervenir les mmes assistants, le fait dutiliser MAX permet une
plus grande souplesse (changement de voies, de cartes sans changer le code), utiliser DAQ assistant fige un
peu plus les choses, mais donne plus de robustesse.
TACHES ET VOIES VIRTUELLES DANS MAX
Les voies et les tches sont dfinies dans MAX au niveau de la branche Voisinage de donnes
par un clic droit Crer un nouvel objet .
Il est possible de dfinir :
Une tche (une voie virtuelle ou physique, ainsi que les conditions dchantillonnage et de
dclenchement)
Une voie virtuelle (relie une voie physique un nom)
EXERCICE 13-2 : UTILITAIRE MAX CREATION DUNE TACHE
OBJECTIF: UTILISER MEASUREMENT & AUTOMATION EXPLORER CREER UNE TACHE DACQUISITION.
MAX va vous permettre de configurer lensemble des paramtres dune acquisition par carte. Dans cet
exemple, nous configurerons une tche pour 100 mesures sur la voie 0 de la carte la frquence de 1000Hz
avec un dclenchement en mode immdiat.

179 ACQUISITION DE DONNEES
Lancement de lutilitaire de configuration
Lancer MAX depuis le raccourci bureau. Dans Voisinage de donnes , par un clic droit, slectionnez Crer
un nouvel objet puis, dans la fentre qui apparat, slectionnez .
Une fentre permettant de dfinir le type de mesures effectuer apparat. Slectionnez Analog Input, puis
Voltage, puis Voie ai0. Enfin donnez-lui le nom de Temprature.

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 permet de vrifier la configuration. Excutez le test et vrifiez son bon
fonctionnement. Il ne reste plus qua enregistrer la tche par le bouton et quitter MAX.
Acquisition dans LabVIEW
Pour excuter cette tche dans LabVIEW, il faut crer une rfrence sur cette tche puis lancer son excution
et enfin transfrer les donnes. Ces oprations sont faites laide de deux VI :
Constante de nom de tche DAQmx renvoie une rfrence ( un pointeur) sur les tches dfinies
dans MAX (votre tche Temprature doit apparatre dans la liste droulante). Cette constante de
nom est en fait un Vi complexe.
DAQmx Read initialise les paramtres de conversion, lance lacquisition, convertit les donnes
binaires en tensions. Ce VI est polymorphe, il est donc ncessaire de slectionner dans la liste
droulante loption correspondant au type dacquisition : AnalogSingle channelMultiple
sample1D DBL .
Le code se rsume ainsi :

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
EXERCICE 13-3 : VOLTMETRE
OBJECTIF: ACQUERIR UN SIGNAL ANALOGIQUE EN UTILISANT UNE CARTE DACQUISITION DE DONNEES.
Vous allez construire un VI qui mesure la tension gnre par le capteur de temprature intgr dans la bote
de dmonstration. Ce capteur gnre une tension proportionnelle la temprature (10mV/C). Il est cbl
physiquement sur la voie 0.
FACE AVANT
Par exemple :

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)

181 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 donnesNI-
DAQmx 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

182
ACQUISITION DE DONNEES
ENTREES ANALOGIQUES TYPE WAVEFORM
Dans de nombreux cas, lacquisition point par point nest ni assez rapide, ni suffisamment prcise en temps.
Dans ce cas, il convient dutiliser loption Multiple Samples du VI DAQmx Read. Ces VIs font lacquisition
dune rafale de points, une frquence dchantillonnage dtermine. Lopration tant gre matriellement
par la carte, on peut compter sur des dbits trs importants sans perte de points. Le format natif renvoy est
de type Waveform.
DONNEE TYPE WAVEFORM
Un type waveform est un cluster qui contient les donnes dacquisition, les lments temporels et des
attributs. Il peut sagir aussi dun tableau de clusters en cas dacquisitions sur plusieurs voies.

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.

183 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.

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 :

185 ACQUISITION DE DONNEES

Nombre dchantillons spcifie le nombre de points acqurir et frquence dchantillonnage la vitesse
dacquisition.
DIAGRAMME
Construisez le diagramme en utilisant un VI express dacquisition. Vous diterez ce VI pour
rajouter deux contrles FREQ et NBE sur la face avant. Noubliez pas de les relier deux entres
du connecteur.


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

187 ACQUISITION DE DONNEES
LES COMPTEURS ET ENTREES/SORTIES NUMERIQUES
Les compteurs sont des ensembles de registres capables de sincrmenter ou de se dcrmenter sur des fronts
venant de lextrieur ou dune horloge interne. Ils sont utiliss pour le comptage, la mesure de frquence, de
priode, pour gnrer des impulsions...
Les entres/sorties numriques sont des lignes logiques, physiquement disponibles. Elles permettent de
commander des actionneurs tout ou rien, et de lire ltat de capteurs binaires.
La configuration de ces lignes est aussi laffaire de DAQ Assistant ou de MAX.
EXERCICE 13-7 COMPTAGE ET AFFICHAGE
OBJECTIF: CREER UN VI DE COMPTAGE ET DAFFICHAGE.
Cet exercice met en uvre le codeur incrmental du pupitre de dmonstration, le compteur 0 de la carte ainsi
que les quatre LED du pupitre, associes au port 0. Le codeur fournit 24 impulsions par rvolution, nous nous
proposons de les compter, puis de les afficher (1) sur la face avant du VI dans un entier et sur quatre
indicateurs binaires, (2) sur les quatre LED du pupitre de dmonstration.
FRONT PANEL
La face avant peut ressembler :.

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

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

189CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
14. CONTROLE DINSTRUMENTS

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 !

191CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
CONFIGURATION ET COMMUNICATION GPIB
La norme ANSI/IEEE 488.1-1987, plus connue sous le nom General Purpose Interface Bus (GPIB), dcrit les
spcifications lectriques, mcaniques et fonctionnelles de linterface. La norme 488.2 tend ces spcifications au
langage utilis.
La liaison GPIB est une liaison parallle 8 bits, capable de dbits de >=1Mo/s. Chaque interlocuteur du bus est
repr par une adresse unique (comprise en 0 et 30). Les spcifications gnrales sont les suivantes :
Un maximum de 15 appareils connects au bus,
Une longueur de cble de 4m au maximum entre 2 appareils,
Une longueur totale de cble maximale de 20m,
Au minimum, les 2/3 des appareils connects doivent tre sous tension.
ARCHITECTURE DU LOGI CIEL
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.

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 :

193CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
System Controller le PC est le matre des changes, il dfinit qui parle et qui coute. Il ny a quun
seul contrleur sur le bus!
Enable Auto Polling autorise la scrutation automatique des appareils lorsque lun dentre eux fait
une demande de service
Assert REN when SC bascule automatiquement la ligne Remote enable lorsque le systme est
contrleur. Il est parfois utile de cocher cette case avec certains appareils anciens qui ne passent pas
spontanment en mode remote, la reconnaissance de leur adresse.
Enable CIC Protocol active une procdure de reprise de contrle automatique du bus.
Time Out est la dure maximale dattente de rponse dun priphrique ; pass ce dlai, le
contrleur reprend la main de faon autoritaire (vite tout blocage du bus, attention cependant ne
pas mettre des valeurs trop faibles pour la RAZ de certain appareils complexes).
Parallel Poll Duration est le temps maximum dattente une demande de scrutation parallle, en
standard 2 s, plus si des extensions de bus sont utilises.
Le cadre Termination configure la faon dont lchange entre deux appareils connects au bus se termine. La
norme GPIB prvoit quune ligne (un fil physique du bus) particulire, nomme EOI (End of idendify), peut basculer
pour indiquer la fin dune transmission. Les priphriques utilisent souvent un (des) caractre(s) terminateur(s)
(EOS End of String) en plus du basculement dEOI. Les plus frquents : CR, LF et bien sr la combinaison CR LF.
Une dernire mthode pour connatre la fin dun message, connatre le nombre de caractres attendus (de loin la
plus mauvaise). La configuration matrielle de la carte propose les options suivantes :
Terminate Read On EOS cette option termine la lecture sur rception du caractre terminateur
Set EOI With EOS on Write Bascule la ligne EOI au moment de lenvoie du terminateur. Les
terminateurs hard et soft sont ainsi envoys.
8 Bits EOS Compare, par dfaut les codes ascii sont sur 7 bits, et le terminateur est cherch sur les 7
bits de poids faible, cette option force la comparaison sur 8 bits.
Send EOI At End Of Write force la ligne EOI en fin dcriture
EOS byte valeur dcimale de lEOS

194 CONTROLE DINSTRUMENTS
COMMUNICATION AVEC LES INSTRUMENTS
CARACTERISTIQUES PROPRES DUN APPAREIL
Chaque appareil possde des caractristiques propres dont il faut prendre connaissance avant de commencer
programmer lappareil.
ADRESSE
Ladresse dun appareil permet de lidentifier sur le bus. En consquence deux appareils ne peuvent pas avoir la
mme adresse. Chaque appareil possde une adresse par dfaut qui peut tre change sur le priphrique lui-
mme, en utilisant (gnralement) les menus accessibles manuellement par sa face avant.
Un priphrique, reconnaissant son adresse cheminant sur le bus, passe en mode commande distance (remote) ;
en consquence sa face avant est inhibe. Un appui sur le bouton local de cette mme face avant peut la
rendre nouveau active
MOT DE PROGRAMMATION
Pour commander un priphrique dexcuter des tches, il est ncessaire de lui envoyer des ordres sous la forme
de chanes de caractres ASCII. Ces derniers sont gnralement crits dans un protocole intitule SCPI (Standard
Code for Programming Instruments). Un effort de normalisation du langage de commande a permis lapparition du
langage SCPI. Celui-ci est accept par tous les appareils postrieurs 1990. Chaque phrase du message correspond
une chane de caractres (ex : *idn? ou :FUNC:MEAS ). La comprhension par le programmeur des
nombreuses commandes SCPI et leur assemblage dans une syntaxe trs stricte requiert une lecture trs
approfondie des notices des appareils. Elle permet thoriquement dcrire un code correspondant exactement
lapplication recherche. La phase de dveloppement peut tre assez longue et fastidieuse.
Les codes correspondent des tches gnriques. Ainsi le code de deux appareils, de fonction identique, sont-ils
trs proches et souvent compatibles. Les mots de programmation sont prciss dans la notice de chaque appareil.
FORMAT DES DONNEES
Les donnes sont exprimes en ASCII ou parfois en binaire, dans un format propre chaque appareil. Une fois
choisi le format, celui-ci reste invariant en particulier le nombre de caractres- quelle que soit lamplitude de la
donne.
Le format peut tre totalement numrique : 1.23456 ou 1.23E-4. Il peut galement comporter une partie alpha-
dcimale : NDCV 1.234E-3, spcifiant la nature de la donne (normal DC voltage). Dans les 2 cas, la donne reste
sous forme de chane et doit tre transforme en nombre pour autoriser des traitements numriques.
ETAPES ESSENTIELLES DUNE COMMUNICATION PC <=> PERI PHERIQUE
Un programme informatique de commande distance dun instrument de mesure contient un certain nombre de
tches standards qui sont abordes ci dessous.
REMISE A ZERO
Remettre un priphrique zro consiste le configurer dans un tat initial unique, prvu en entreprise, et
normalement identique celui observ lors la mise sous tension (conditions par dfaut ou default factory
conditions )..

195CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
La remise zro (RAZ) prenant souvent plusieurs secondes, il est ncessaire dintroduire dans le programme une
temporisation permettant dattendre la fin de cette RAZ.
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.
SOURCES DERREURS CLASSIQUES
Les 3 points ci dessous tant responsables dun grand nombre derreurs, il est souhaitable de prciser leur
concept.
TIME OUT
La fiabilit des changes impose de ne transmettre une nouvelle commande quaprs acceptation de la
prcdente. Pour ne pas bloquer le bus et le PC indfiniment, on convient a priori darrter lchange en cours si

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.

197CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
BIBLIOTHEQUES DE CONTROLE DAPPAREILS DANS LABVIEW
VIS SPECIFIQUES A LINTERFACE GPIB OU RS 232C
Etant avant tout un langage destin linstrumentation, LabVIEW est dot de toutes les fonctions
permettant de piloter les interfaces. Il dispose en particulier de jeux de Vis spcifiques au GPIB
(IEEE488) et la liaison srie RS232C. Les fonctions de commandes spcifiques sont situes dans la
palette E/S Instruments.
La norme IEEE488 ayant volu de la version 1 vers 2, deux bibliothques spcifiques correspondent chacune des
tapes. Lextension des liaisons possibles (USB, TCP, WIFI...) a induit une nouvelle couche logiciel qui permet de
saffranchir un peu plus de linterface, il sagit de VISA qui est porte par VXIplug&play Systems Alliance.
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[carte] ::adresse logique VXI[ ::INSTR]
VXI MEMACC VXI[carte] ::MEMACC
VXI BACKPLANE VXI[carte][ ::adresse logique VXI] ::BACKPLANE
VXI SERVANT VXI[carte] ::SERVANT
GPIB-VXI INSTR GPIB-VXI[carte] ::adresse logique VXI[ ::INSTR]

198 CONTROLE DINSTRUMENTS
GPIB-VXI MEMACC GPIB-VXI[carte] ::MEMACC
GPIB-VXI BACKPLANE GPIB-VXI[carte][ ::adresse logique VXI] ::BACKPLANE
GPIB INSTR GPIB[carte] ::adresse primaire[ ::adresse secondaire][ ::INSTR]
GPIB INTFC GPIB[carte] ::INTFC
GPIB SERVANT GPIB[carte] ::SERVANT
PXI INSTR PXI[carte] ::priphrique[ ::fonction][ ::INSTR]
Serial INSTR ASRL[carte][::INSTR]
TCPIP INSTR TCPIP[carte] ::adresse hte[ ::nom du priphrique LAN][ ::INSTR]
TCPIP SOCKET TCPIP[carte] :: adresse hte ::port ::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.
UTILISATION DES VISA
Les fonctions VISA les plus couramment utilises pour communiquer avec les instruments de mesure sont les
fonctions VISA : VISA Write et VISA Read.
VISA Write crit le contenu dun tampon vers le priphrique dsign par le nom de la ressource
VISA.
VISA Read lit les donnes en provenance du priphrique. Le VI demande le nombre de caractres
lire. Cette valeur doit tre suprieure ou gale au nombre doctets transmettre. S i la fin de
message est implmente par le matriel (GPIB) la lecture sarrte sur le terminateur, sinon elle
sarrte au nombre de caractres ou au time out.
Lexemple suivant fait une identification dun appareil connect sur une carte GPIB.

199CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS

EXERCICE 14-1 : PROGRAMMATION DUN VOLTMETRE ET LECTURE DUNE RESISTANCE
OBJECTIF: CONFIGURER UN APPAREIL DE MESURE, DECLENCHER LA CONVERSION ET RAPATRIER LA DONNEE.
Dans cet exercice, vous configurez un multimtre en ohmmtre 4 fils, avec un dclenchement sur GET (Group
excute trigger) de 4 mesures successives puis vous transfrerez les donnes vers le calculateur.
FACE AVANT
En voici une reprsentation, lindicateur gauche est un tableau, le bouton dclenchement envoie un ordre GET.

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
ASSISTANT DE/S INSTRUMENTS
La version 2009 de LabVIEW dispose dun VI express Instrument I/O Assistant permettant de chaner
des oprations telles que : initialisation, configuration, mesure et traitement. Une fois le VI pos sur
le diagramme, un double clic permet de le configurer. Le VI express permet de squencer un certain
nombre dtapes. Il y a quatre types dtapes diffrentes :
Slectionner un instrument
Envoyer une requte et analyser la rponse
Envoyer une requte
Lire une rponse et lanalyser
Linterface permet dajouter les tapes, de les tester, dextraire des rponses les lments essentiels. La saisie
dcran suivante rcupre, par une commande READ? , les donnes dun multimtre (2400 Keithley). Ce dernier
envoie 5 variables spares par des , et nommes dans la partie Sorties. Il est possible par un clic droit de
choisir celles qui sortiront du VI. Chaque ligne barre dans le cadre Reprsentation binaire indique que cette
partie des donnes est traite.
.
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 :

201CONTRO
LE
DINSTRUM
ENTS
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


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.
EXEMPLE DAPPLICATION SIMPLE
Voici un exemple des VIs du driver Plug&Play disponibles pour le multimtre HP34401. Le programme ci dessous
comporte quatre parties bien spares

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

203CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS

Ce Vi reoit du Vi prcdant le nom de la session VISA et la gestion des erreurs
Il permet dfinir toutes les configurations possibles du multimtre Hp34401 voltmtre continu ou alternatif,
ampremtre, ohmmtre, thermomtre
Le choix du calibre peut seffectuer manuellement ou automatiquement (boolen vraichoix automatique)
En mode manuel, la rsolution varie entre 1 et 5.5 digits, impose par une liste droulante.
Dans le cas des mesures sur des grandeurs alternatives, lefficacit du filtrage est accessible (forte, moyenne,
faible) est accessible.
DECLENCHEMENT

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

La face avant permet entre autre de :
Autoriser la prise des points de mesures tout en combinant les 8 modes de stockage et de transfert correspondant
aux tats des boutons glissire
Sadapter aux diffrences de fin de message suivant que la communication se fait par GPIB ou par RS 232C
Prciser la dure du time out pour prendre en compte fait que lacquisition de 1000 ou 2000 points de mesures
peut prendre un temps non ngligeable et que le calculateur doit patienter pendant tout ce temps l.
NB : la complexit du VI est vidente, la simplicit de sa mise en uvre aussi ! Cest bien l lintrt de faire appel
un driver dinstrument.

205CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
PILOTAGE DAPPAREILS PAR PORT USB
INSTALLATION ET CONFIGURATION

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.
LES DRIVERS IVI

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

207CONTRO
LE
DINSTRUM
ENTS
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 ) :
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
( ) ( ) ( ) ( ) 1 min log max log _ _ _ _
10 10
+ = F F dec p pt Nb pt Nb
(Le +1 inclut la borne suprieure).
Le rapport entre deux frquences successives est :

|
|
.
|

\
|
= =
dec p pt Nb dec p pt Nb
F F
_ _ _
1
1
_ _ _
2
10 10
Pour le calcul de la rponse en frquence :
Extraire une information mono frquentielle retourne la phase et lamplitude du signal (utilisez
le bouton recherche de la palette de fonction pour localiser le VI). Il ne reste plus qua calculer 20
Log(Vs/Ve) et faire la diffrence des phases.

208 CONTROLE DINSTRUMENTS
Enregistrez le VI sous le nom rponse en frquence.VI et excutez le.
FIN DE Lexercice 14-3
QUE VERIFIER SI LE PROGRAMME MINIMAL NE FONCTIONNE PAS ?
Si un priphrique ne fonctionne pas dans son environnement, il est conseill dcrire un petit bout de code dit
programme minimum, nayant rien avoir avec le programme (ou la chane de mesures) dverminer mais
effectuant une entre sortie via linterface incrimine. Cette approche permet de prendre du recul par rapport au
problme avant de consulter une <hot line>. Il est en outre conseill de :
Vrifier si, depuis le logiciel, la carte est reconnue : pour cela observer visuellement ltat des
voyants REM, Lstn ( listen) et Tlk (talker). Aprs un ordre dcriture REM et Lstn doivent tre allums.
Vrifier compatibilit des adresses sur le priphrique et dans le code. Si ladresse est bonne le
voyant REM doit tre allum. Dans le cas contraire, Forcer ventuellement la ligne REN en envoyant
la commande <Visa GPIB Contrle REM>
Vrifier la compatibilit des terminateurs lmission et la rception,
Changer le cble ou le brancher si ce ntait pas le cas !
Essayer des Mots de programmation simples qui doivent entraner des changements de fonction et
daffichage. (prfrer les dclenchements automatiques les plus simples).
Vrifier si le programme minimum fonctionne en mode pas pas .Dans laffirmative,
introduire judicieusement ! une temporisation ~500ms derrire des tches un peu longues
excuter
Contrler ltat du tmoin de synchronisation ou de prise de mesure : si celui ci est toujours teint, il
y a vraisemblablement un problme de mode dclenchement,
Compatibilit Time OUT avec tche longue asynchrone
Tester ltat dadressage du priphrique (Lstn ou Tlk) avant toute nouvelle tche,
Rechercher des exemples types dans la documentation papier ou sur Internet
QUE FAIRE SI UNE TACHE SPECIFIQUE NE FONCTI ONNE PAS ?
Dbrancher tous les autres priphriques,
Relire la documentation et en particulier les modes dclenchement,
Ecrire un programme part qui teste cette fonction spcifique,
Rechercher une tche prcdente mal termine,
Eteindre et rallumer le priphrique qui peut tre bloqu. Cette mthode brutale vide efficacement
son tampon de sortie.
Quitter LV7 ou dans un deuxime temps teindre le PC,
Changer ordre dallumage,
Lancer un logiciel espion sur le bus,
Remplacer le priphrique par un priphrique quivalent.

209CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
COMMUNICATIONS ET CONFIGURATION SERIE
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 ( l~15metres). 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.
VISA ET LIAISON SERI E
VISA SPECIALISES
Il existe dans la palette des fonctions VISA avances une sous palette ddie la liaison srie.
Cette palette regroupe
des VIs non spcifiques (en jaune) et trois fonctions ddies : la configuration de la liaison, la lecture du
nombre doctets et lenvoie dune pose.
Lexemple suivant reprend le premier exemple pour linterface GPIB revue et corrige pour la RS. Comme vous
pouvez le constater, la diffrence nest pas marquante hormis la configuration de la liaison. Par dfaut lenvoie
dun caractre terminateur est active.

NUD DE PROPRIETE

211CONTRO
LE
DINSTRUM
ENTS
CONTROLE DINSTRUMENTS
Si vous regardez comment est crit le VI de configuration vous verrez ceci dans le diagramme :

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
LE MODULE DATALOGGING & SUPERVISORY CONTROL
15. LE MODULE DATALOGGING & SUPERVISORY CONTROL

214 LE MODULE DATALOGGING & SUPERVISORY CONTROL
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
LE MODULE DATALOGGING & SUPERVISORY CONTROL
LE MODULE DSC POUR LES NULS
Le grand intrt du module DSC est sa capacit de connections des variables distantes, leur surveillance et
leur enregistrement. Le module DSC offre une connectivit vers :
Des clients et serveurs OPC (Object Linking and Embedding (OLE) for Process Contro) technique de
communication utiliss en industrie pour la communication avec les API et dautres systmes dports

Des clients et serveurs EPICS (Experimental Physics and Industry Control System) technique surtout
utiliss en instrumentation scientifique dans les grands instruments (physique des particules,
astronomie)

Un serveur dentre/sortie au protocole ModBus, protocole ente un matre et plusieurs esclaves,
utilis trs largement en industrie pour la communication vers les API et vers les capteurs, actionneurs
intelligents.

Le concepteur peut aussi programmer des drivers et des serveurs dE/S
Le cur du module rside dans la communication entre les variables publies par les serveurs qui viennent
dtre numrs et les variables partages de LabView.
Une fois install, le module DSC fournit de nouvelles fonctionnalits aux
variables partages :

Gestion dalarmes (haute, basse, mise jour, tat)
Zone morte de mise jour (pour diminuer le flot E/S)
Dfinition de la valeur initiale des variables partages
Enregistrement

CONNECTION A UNE VARIABLE TERMINALE
Pour connecter une variable partage une variable terminale (une
variable dun automate, dun rgulateur,) il faut tout dabord crer un serveur E/S
dans une librairie du projet.

Figure 15-2 Connection d'une variable partage un serveur
Figure 15-1 Nouveaux
items des variables
partages

216 LE MODULE DATALOGGING & SUPERVISORY CONTROL
Une fentre apparait pour crer un nouveau serveur dE/S.

National Instrument fournit un
serveur OPC de dmonstration
(simulant un API) qui doit, si
linsatallation est correcte, tre
dmarr. Nous lutiliserons pour
cette prsentation.
Ce serveur doit se retrouver dans la
liste des serveurs OPC enregists
sous le nom
NationalInstruments.NIOPCServers
Update rate dfinit la frquence
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.

Ceci va crer et lier des variables partages certain variables terminales
Figure 15-3 Slction du type de serveur

217CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL

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).


218 LE MODULE DATALOGGING & SUPERVISORY CONTROL
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
ENREGISTREMENT DES DONNEES

219CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL
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


220 LE MODULE DATALOGGING & SUPERVISORY CONTROL

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 !

GESTIONNAIRE DE SYSTEMES DISTRIBUES
Dans le menu Dmarrer/programme/nationalInstrument se trouve le gestionnaire de systmes distribus.
Cet outil permet entre autre de :
Crer ,surveiller des variables partages ou rseau et configurer leurs alarmes.
Crer ou surveiller des processus.
Crer ou surveiller des serveurs d'E/S.
Enregistrer et surveiller les historiques, alarmes et vnements.

221CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL

INTERFACE HOMME MACHINE
DSC intgre des contrles 2D et 3D pour les applications industrielles (tuyau, vannes, ventilateurs, rservoirs) et
diffrents graphes (visualisation des limites, statistique). DSC fournit galement une bibliothque dobjet dans
Tools/DSC module/Image Navigator qui peuvent tre utilis pour crer des contrles personnaliss ou de
simples dcorations.

222 LE MODULE DATALOGGING & SUPERVISORY CONTROL

POUR ALLER PLUS LOIN
Cette introduction illustre les possibilits du module DSC. Dans un systme industriel cette faon de procder
nest pas possible (dfinir de faon statique lensemble des paramtres).
Un systme industriel doit pouvoir :
Dmarrer et stopper un processus dE/S
Faire des associations dynamiques de variables
Choisir denregistrer ou non certaine variables
Dfinir par programme les seuils dalarmes
Grer les stratgies de scurit rseau.
Ce sera la suite du programme

223CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL
ARCHITECTURE DUN SCADA (SUPERVISORY CONTROL AND DATA ACQUISITION)
CLIENT / SERVEUR
La supervision (interface utilisateur) dun cot, lacquisition et le contrle (Acq, traitement, alarme) de lautre
sont souvent associs aux termes client et serveur dans les applications distribues.
Dans un sens plus gnral :
Le serveur est la partie du systme qui collecte les donnes et coordonne les transactions entre
clients.
Le client est la partie du systme qui utilise ces donnes.
Cest lapproche retenir pour le dveloppement d'applications DSC.
Le serveur se compose de:
Le SVE (Shared Variable Engine) qui contient des variables partages (acquisent via OPC,
Modbus, Serveur E/S..).
Les VIs danalyse ou de contrle (optionnel si le SVE suffit ->alarme, looging)
Il tourne de manire indpendante et nattend pas de connexion avec les clients, son indpendance de IHM
assure en partie sa robustesse.
Les clients reoivent les donnes et les mettent disposition des utilisateurs (Affichage, statistiques,
analyses..).Ils communiquent des valeurs de consignes au serveur.
Les variables partages sont le cur dune application DSC
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).

224 LE MODULE DATALOGGING & SUPERVISORY CONTROL
LE MOTEUR DE VARIABLE PARTAGEES
TYPES DE VARIABLES PARTAGEES
Lors de la cration dune variable vous pouvez utiliser :
Une network-published shared variables dans une application rseau ou pour lier les
variables partages une source. Elle est le seul type de variable partage qui prend en charge
les options du module DSC telles que la liaison de donnes, journalisation, alarmes, paramtre de
valeur initiale et scurit.
Une single-process shared variables pour les applications qui s'excutent entirement sur une
seule cible.
Une Real-time FIFO-enabled shared variables pour mettre en uvre une architecture
dterministe de communications entre le programme hte et de la cible RT.
UTILISATION DES VARI ABLES PARTAGEES
Dans la suite nous ne parlerons que des variables publies (avec FIFO ou non). Pour fournir cette fonctionnalit
supplmentaire, l'implmentation interne de la variable est beaucoup plus complexe celle dune variable
globale. Leur mise en uvre ncessite quelques recommandations pour obtenir les meilleures performances.
LE MOTEUR DE PUBLICATION NI PSP
Les variables sont publies par NI-PSP (NI Publish-Subscribe Protocol). NI-PSP est bas sur un protocole UDP
(User Datagram Protocol), il tire avantage du mode non-connect d'UDP, cependant, NI-PSP garantit la
livraison des paquets.
Les variables doivent tre dployes sur le rseau pour tous les systmes distants qui hbergent les valeurs de
variables. Lorsque vous crivez sur un nud de variable, LabVIEW envoie la nouvelle valeur au SVE (Shared
Variable Engine) qui a dploy et hberge la variable partage (Il y a un SVE sur chaque cible). Le SVE publie
ensuite cette valeur pour obtenir la valeur de mise jour. Ce dploiement est automatique pour les variables
statiques (celle dfinies dans le projet).
ACCES AUX VARIABLES PARTAGEES
Il existe deux possibilits daccs aux variables partages :
Accs statique via :
Un nud de variable
Accs dynamique via :
Une liaison avec un objet de la face avant
Une liaison par lURL de la variable
Un nud dvnement
ACCES STATIQUE

225CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL
Un Glisser/Dposer dune variable partag de la librairie au diagramme cre un nud statique rattach cette
variable.

Cette simplicit a cependant quelques inconvnients.
NI ne recommande pas lutilisation plus de100 nuds statiques dans une application.
Comme leur nom lindique, il nest pas possible lexcution de changer de source (par ex.
changer un API en panne)
Leur utilisation est difficile dans les sous Vis dont il est impossible de rutiliser le code dans
dautres applications, les mises jours de noms entre projets peuvent entrainer des sacs de
nuds (au propre comme au figur) difficiles comprendre !
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
ACCES PAR FRONT PANEL BINDING
Tous les objets de la face avant ont une proprit BindingPath qui permet de les lier une URL. Pour cela ils
doivent au pralable (lors de leur cration) tre configurs comme lis une variable partage.


226 LE MODULE DATALOGGING & SUPERVISORY CONTROL
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 .
ACCES PAR SHARED VARIABLE EVENT STRUCTURE SUPPORT
DSC vous permet denregistrer les vnements et de les traiter dans une structure dvnement. Cette
mthode est particulirement adapte aux systmes possdant dj une structure vnementielle sur lIHM

NUDS DE PROPRIETES DES VARIABLES PARTAGEES
Lensemble des proprits dfinies lors de la cration dune variable partage peuvent tre redfinies par
programmation dans un nud de proprits

227CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL

Ou en utilisant directement lURL de la proprit, par exemple pour lire le niveau de lalarme basse :


228 LE MODULE DATALOGGING & SUPERVISORY CONTROL
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 au-
dessus, 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)
CHANGEMENT DES PROPRIETES DALARMES
Pour changer, par exemple le niveau dune alarme, activer tel type dalarme, dposez un nud de proprit
sur la variable, puis :

RECUPERATION ET VISUALISATION DES ALARMES
Il existe plusieurs moyens pour rcuprer les vnements dalarme par programme (Palette : Alarm and
Event).
Le plus simple est dutiliser Read Alarms qui prend en entre un tableau dURL de variables partages et
rend en sortie un Tableau dAlarmes


229CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL

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 :

Et lexemple suivant vous montre comment les employer :

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.

230 LE MODULE DATALOGGING & SUPERVISORY CONTROL


231CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL
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.
ENREGISTREMENT DES DONNEES
Elle est configure soit lors de la cration de la librairie et des variables, soit par code en utilisant les nuds de
proprit et de mthode des librairies et des variables partages.
CHANGEMENT DU NOM DE BASE
IL sagit dune proprit de la librairie, il faut donc appeler la mthode Library.Open de lobjet
Application pour obtenir une rfrence sur la librairie, puis utiliser les proprits situe dans les sous
menue Datalogging du nud de proprits.

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 .
ACTIVATION DE LENREGISTREMENT DUNE VARIABLE
Cest une proprit de la variable, elle est donc active par un nud de proprit :

ENREGISTREMENT MANUEL DES DONNEES
Ce nest pas le mode standard denregistrement de donnes, mais il se peut, qu un moment donn, il faille
enregistrer une trace dune variable non partage, ou alors pour maintenir le marquage temporel dune
variable dont la valeur change peu (lenregistrement dans Citadel ne se fait que sur variation de la valeur de la
variable, pas intervalle rgulier).

232 LE MODULE DATALOGGING & SUPERVISORY CONTROL

LECTURE DES DONNEES ENREGISTREES
La palette historical offre toutes les fonctions ncessaires pour lextraction des donnes de la base Citadel, par
exemple la lecture dune trace :



233CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL
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
SERVEUR DENREGISTREMENT PAR LOTS
Data set marking I/O servers
Ce serveur est ddi lenvoi de lots de variables partages vers la base Citadel. Un lot est identifi par un
data Set ID , une cause de dpart, une cause darrt, et le nom de toutes les variables partages
enregistrer.

234 LE MODULE DATALOGGING & SUPERVISORY CONTROL

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
LE MODULE DATALOGGING & SUPERVISORY CONTROL


236 LE MODULE DATALOGGING & SUPERVISORY CONTROL
GESTION DES LIBRAIRI ES ET DES VARIABLES
Le module de DSC comprend des fonctions avances de la gestion des bibliothques, des processus et des
variables partages pour crer par code tout ce qui est faisable via le projet. Deux faons de faire existent :
Lune va crer dans une librairie, les processus et les variables partages, ces actions ne
seront effectives quau redploiement de la librairie. Elle sapparente un script de gnration
dlments dun projet, lment pouvant tre sauvegards par lenregistrement du projet.
Lautre va les crer dynamiquement des processus et des variables partages en dehors de
toute librairie, laction de ces Vis est immdiate mais ne peut tre sauve.
Dans le premier cas on utilise des nuds de proprit et des mthodes pour crer les lments dun projet,
cest fastidieux et ncessite une bonne connaissance des proprits & mthodes applicables aux lments dun
projet, mais a peut tre utile si par exemple on veut crer un nombre important de variable numrotes. Le
code peut ressembler :

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

La premire palette va permettre de dployer, dannuler un dploiement, crer un processus, larrter,
connaitre son tatLa seconde de crer des variables partages, les paramtrer, crer et tuer des serveurs
dE/S.
DEPLOIEMENT DES BIBLIOTHEQUES


237CONTROL
E
DINSTRUME
NTS
LE MODULE DATALOGGING & SUPERVISORY CONTROL
Normalement lors du lancement de lapplication, les bibliothques sont automatiquement dployes,
cependant, il est possible de dployer par programme des librairies (par ex. si elles ont t modifies par
programme) et dannuler leur dploiement (pour quitter joliment une application ou en cas derreur)
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
CREATION DE VARIABLES PARTAGEES

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)
CREATION DE SERVEURS D E/S

238 LE MODULE DATALOGGING & SUPERVISORY CONTROL

On y trouve simplement un VI express de chargement dune serveur E/S et un tueur de serveur
UN PETIT EXEMPLE
Le code suivant cre un processus nomm My Process et 5 variables et les inscrits dans le SVE.



239CONTROL
E
DINSTRUME
NTS
LE MODULE STATECHART
16. LE MODULE STATECHART

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.

Figure 16-1 Diagramme tat transition selon UML
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

241CONTROL
E
DINSTRUME
NTS
LE MODULE STATECHART
LES DIAGRAMMES ETAT TRANSITION UML
LabView Statchart implmente les diagrammes tat transition selon une notation conforme au langage UML.
UML, (Unified Modeling Language) est un langage de modlisation graphique utilis dans le gnie logiciel en
particulier lors dapproches objets. Il utilise divers diagrammes pour dcrire un systme.
Parmi eux, le diagramme tat transition sera notre centre dintrt. Nous dtaillerons les lments des tats
transitions dUML en rapport avec ceux utiliss dans LabView StateChart
Pour plus de dtails sur UML, reportez-vous au cours de Laurent Audibert sur developpez.com.

242 LE MODULE STATECHART
SYMBOLIQUE UML ET STATECHART
ETAT
Un tat est reprsent par un rectangle coins arrondis, il a un nom ou bien il est anonyme. Le rectangle peut
tre spar par un trait horizontal, la partie haute est rserve au nom, la
partie basse des transitions internes.
Les transitions internes seront expliques plus loin, mais comme lillustre la
Figure 16-2, la syntaxe est :
vnement dclencheur / Action effectuer

TAT INITIAL, TAT FINAL
Ltat initial est un pseudo tat qui indique le dbut du graphe orient, ltat final sa fin. La symbolique est
reprsente Figure 16-3

Figure 16-3 Etat Initial et Final
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 dtats-
transitions 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 .
Figure 16-2 un tat et ses
transitions internes

243CONTROL
E
DINSTRUME
NTS
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
Tous les champs sont optionnels, la garde
est une condition qui empche, malgr
lapparition du dclenchement dexcuter
laction. La transition est devenue active
mais elle est bloque par la garde.

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)
Entry & Exit nont pas dvnement de dclenchement, Do
en possde, ainsi quune garde.
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
Figure 16-5 Transition entre deux tats
Figure 16-6 Les transitions internes
Figure 16-7 Utilisation des jonction avec des gardes diffrentes

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
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.
Si un tat compos contient plusieurs diagrammes (appels rgions),
ceux-ci sont parcourus de faon concurrente. Il y a toujours un tat
dune des rgions actif un moment donn. On qualifie un tat
compos dorthogonal lorsquil contient plus dune rgion.

Des outils graphiques supplmentaires permettent de synchroniser lexcution dtats orthogonaux
TRANSITIONS DANS LES ETATS COMPOSES
Une transition vers la bordure dun tat compos pour cible ltat initial de celui-ci. Une transition qui
traverse plusieurs frontires active les
transitions internes Entry de chaque tat
compos imbriqu.
Une transition provenant de la frontire dun
tat compos est quivalent une multitude
de transitions venant de tous les tats de tous
les tats composites, quelle que soit leur
profondeur dimbrication. Dans ce cas, toutes
les transitions internes Exit de tous les
tats et tats composs actifs seront
dclenches.
En revanche, si cette transition ne porte pas
dvnement dclencheur, elle ne sera
franchissable que lorsque ltat final de ltat
compos sera atteint.

Figure 16-8 Description dtaille de ltat composite Init
Figure 16-9 Sa reprtentation
abrge
Figure 16-10 La transition Normal End qui na pas de trigger
attendra que ltat final de ltat compose soit atteint avant de
sactiver. La transition Emergency sera active ds la rception
du signal Panic button pressed , o que lon soit dans le
diagramme ce moment-l.

245CONTROL
E
DINSTRUME
NTS
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.
Ltat historique profond (Deep) qui mmorise
le dernier sous-tat actif quelque soit son
niveau dans des diagrammes composs
imbriqus les uns dans les autres. Il est
reprsent par un H* dans un cercle.
Lorsquune transition externe pointe vers ce
pseudo tat, cela signifie que lorsque cette transition devient active, cest le dernier tat actif qui le redevient.
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.


Figure 16-11 Si la transition Emergency est active, lorsque lon
revient dans le diagramme ce nest plus ltat initial qui est activ,
mais le dernier tat qui tait actif lors de larrt durgence.

Figure 16-12 les barres de synchronisation permettent une
reprsentation plus comprhensibles des processus
concurrents et de leur flot dexcution.

246 LE MODULE STATECHART
LES STATECHARTS LABVIEW
CREATION DE LA BIBLI OTHEQUE
Pour crer un StateChart, il faut, dans la fentre projet, slectionner New->StateChart , si litem napparat
pas, cest que le module nest pas install. Cette
opration va crer une bibliothque spciale
contenant les lments suivants :

Le diagramme est le StateChart proprement
parler. CustomDataDisplay.vi permet de
personnaliser laffichage des donnes internes
du StateChart. Les trois .ctl contiennent les
donnes dentre du StateChart, de sortie et les
donnes internes. Enfin, Edit Triggers and
Groups va dfinir les conditions possibles sur
les transitions.
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
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
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.
Figure 16-13 Comment crer un StateChart.
Figure 16-15 appel d'un StateChart synchrone
Figure 16-14 Appel d'un StateChart Asynchrone

247CONTROL
E
DINSTRUME
NTS
LE MODULE STATECHART
CREATION DUN STATECHART
Le StateChart est dessin dans Diagram.vi laide des outils de la palette StateChart Development . Ce
diagramme spcial ne possde pas de face avant.
Sur cette palette nous retrouverons, les tats, les speudo tats,
tat initial, tat final, historique profond et peu profond,
jonction. Les outils de synchronisation avec les transitions
divergente et convergentes, et enfin les rgions.
Pour placer un tat sur le diagramme, il faut en slectionner
loutil et le poser sur le diagramme la faon des boucles de
rptition. Pour placer une transition, il faut sapprocher du bord
intrieur dun tat de dpart et, lorsque loutil bobine apparat
tirer le fil vers le bord intrieur dun tat final.
Le code des actions des tats, tout comme le code de garde ou
les vnements dclenchant des transitions sont accessibles par
un double clic sur ltat ou la transition.



CODE ASSOCIE AUX ETATS
Lorsque lon double clic sur un tat, il passe en mode dition, et la fentre suivante apparait :

Figure 16-18 Fentre d'dition dun tat
Figure 16-16 La palette de cration
de StateChart.
Figure 16-17 Cblage d'une transition

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
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.
Une fois ces triggers crs, ils sont utilis dans
la page de configuration dune transition. La
transition est symbolise par une flche
contenant trois cases, blanches ou bleu selon
quun lment de la transition est configur
ou non.
La premire case (ct oppos la pointe)
indique si un trigger autre que NULL est
configur.
La seconde, si un code de garde est dfinit.
La troisime si une action t code.
Figure 16-19 Les variables d'entre et de sortie
Figure 16-20 Page de configuration des triggers
Figure 16-21 Les transitions configures

249CONTROL
E
DINSTRUME
NTS
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)

Figure 16-22 La page de configuration des transitions
Aprs cette prsentation rapide, lutilisation autour dun exemple simple devrait clarifier ces concepts

250 LE MODULE STATECHART
AUTOUR DUN EXEMPLE
Nous allons reprendre un exemple largement illustr dans le site NI, celui du ventilateur de plafond.
Cet quipement de haute technologie possde trois commandes, une commande gnrale murale qui met en
marche lappareil, une tirette pour la lumire, une
tirette pour la vitesse de rotation.
La commande murale arrte, ou met en marche
dans ltat o on la arrt, lappareil.
La tirette de lumire, chaque action, teint ou
met en marche lampoule lectrique.
Enfin la tirette vitesse fait passer, de faon
circulaire la vitesse de lappareil de Arrt->Lent-
>Moyen->Rapide->Arrt->
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 !

LE DIAGRAMME STATECHART UML
COMMANDE DE LECLAIRAGE.
Le diagramme UML ressemble :

Figure 16-24 Diagramme d'tat de l'clairage
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 :

Figure 16-25 Diagramme d'tat de l'clairage
Nous y retrouvons les quatre vitesses de rotation actives par la tirette, le stop de linterrupteur mural active la
pseudo tape finale.
Figure 16-23 L'objet !

251CONTROL
E
DINSTRUME
NTS
LE MODULE STATECHART
DEUX PROCESSUS CONCURENTS
Ces deux commandes sont indpendantes lune de lautre et constituent donc deux processus concurrents.
Pour reprsenter ces deux processus, il est ais de les mettre dans un tat compos :

Figure 16-26 Le diagramme d'tat compos des deux processus
MISE EN MARCHE ET ARRET
Ces deux processus peuvent tre interrompus par un appui sur le bouton mural, une transition part donc de
ltat compos vers ltat off. La mise en marche se fait dans la configuration prcdente larrt, un historique
pour chaque rgion est ncessaire.

16-27 Le diagramme complet
LE DIAGRAMME STATECHART LABVIEW
CREATION

252 LE MODULE STATECHART

16-28 La version LabView du StateChart
Une fois le StateChart conu, il est ais de le transformer en un modle LabView.
CREATION DES TRANSITIONS
Nous avons quatre triggers possibles : LightPullCord, FanPullCord, Switch, Quit. Il faut les crer dans Edit
Triggers and Groups .
Puis les configurer les transitions pour quelles
soient dclenches par leur trigger respectifs.
De nombreux exemples de chez NI omettent les
trigger et les remplacent par une condition de
garde, notamment dans les configurations
synchrones, cest une faon de voir les choses,
maisil me semble que celle-ci est plus
comprhensible.


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.
16-29 Dfinition des triggers

253CONTROL
E
DINSTRUME
NTS
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
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
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-30 Options de gnration du code
16-31 Diagramme du VI appelant
16-32 Options de configuration

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

16-33 Vue de la face avant
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

255CONTROL
E
DINSTRUME
NTS
LE MODULE STATECHART

16-35 Code associ l'tat Off
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

256 LE MODULE STATECHART

16-36 Exemple d'une fentre de dbogage
Les icones ouvrent la fentre StateChart Display Data
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


257CONTROL
E
DINSTRUME
NTS
LE MODULE STATECHART
UN PEU PLUS LOIN
TRANSITIONS SIMULTANNEES
Lorsque plusieurs transition partent dun tat, que faire si leurs triggers sont actifs simultanment ? Puisque
quil ny a pas de rgions, il ny aura pas de chemin
dexcution concurrents, une seule transition sera active.
Lordre dvaluation des transitions est dfinit la manire
de lordre des lments dans un cluster via le menu
contextuel Set Transition Priorities de ltat considr.
La transition 0 sera value en premier, puis la 1, la
premire transition valide fera voluer la machine vers ltat
quelle pointe.

FILE DATTENTE DE TRIGGERS
Si un tat doit provoquer un trigger, par exemple pour engendrer une transition dans une rgion concurrente, il
doit ajouter cette transition la file dattente des
transitions internes. Cette dernire sera value la
prochaine excution du VI Run StateChart .
Le VI Send Internal Trigger rempli cette fonction, il ne
peut tre utilis que dans le code Action dun tat ou
dune transition. Lentre et la sortie de la fonction doivent
tre relies la file dattente interne en slectionnant
Outputs->InternalQueue->All Elements . Dans un
diagramme dtat asynchrone, il y a deux files dattente,
une externe, une interne. La file dattente externe ne sera
valu que lorsque la file dattente interne sera vide
donnant ainsi priorit aux vnements internes de la machine dtat.
REPETITION DACTION DUN ETAT
Lorsque lon veut rpter une action dans un tat, par exemple incrmenter un compteur pour commander la
temprature dun four jusqu' une valeur donne, il est dangereux de mettre une boucle conditionnelle dans
laction dun tat. En effet, les transitions ne sont values que lorsque les actions relatives aux tats actifs sont
termines, si une boucle infinie tourne dans une des actions, elle bloque lexcution de tous les processus
concurrents.
La mthode la plus claire pour obtenir leffet
souhait est de crer une transition qui se
reboucle sur ltat de dpart, lui associer un
trigger NULL , et de donner aux transitions
sortantes une priorit suprieure la transition
de rebouclage.

16-37 Priorit des transitions
16-38 Envoie d'un trigger interne
16-39 Rptition de l'action dun tat

258 LABVIEW FPGA
17. LABVIEW FPGA






















259CONTROL
E
DINSTRUME
NTS
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 ET LES FPGA
Labview nest pas une suite logicielle de dveloppement de matriel bas sur des FPGAs, vous ne pourrez pas
dvelopper (pour linstant) en LabView une application pour une cible autre quun matriel NI. En revanche
l'environnement offre une interface directe vers ces matriels et la programmation se fait sans autre outil que
labview (pas d'autre langage, ni environnement de dveloppement).
LES CIBLES SUPPORTEES
Les cibles supportes font partie de la gamme RIO (E/S reconfigurables), il sagit des matriels DAQ NI PCI et PXI
de la Srie R (acquisition), les matriels NI CVS-145x (Vision), CompactRIO(systme modulaire durcis)et
SingleBoardRIO (PCB nu). Les exemples sont pour cette dernire plateforme, elle possde un processeur
powerPC embarquant un OS temps rel VXWorks et un Spartan3 avec 2 millions de portes. Les FPGA
embarqus dans les cartes NI sont toujours de chez Xilinxs dans la famille Virtex 2, 5 et 6 ainsi que des Spartan
3 et 6.
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
CARTE SUPPORT DES EXEMPLES
Les exemples sont donns pour une carte fille senfichant dans le connecteur P2 dune carte SbRIO 9602 (E/S
numriques uniquement et FPGA 2 millions de portes). Cette carte comporte quatre afficheurs sept segments
multiplexs, deux LED, un bouton poussoir, un CNA et un CAN relis, ainsi que trois BNC. Les schmas et
cblages sont donns en annexe.



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)

UTILISATION DES VOIES NUMERIQUES
La carte est quipe de quatre connecteurs permettant daccder aux 10 ports de 11 lignes.
Chaque port est compos de 10 lignes nommes Portx/DIOy et dune ligne Portx/DIOCTL. Les premires sont
des lignes rapides routes ensemble et apparies en longueur,
la seconde est destine des E/S lentes (possibilit de
dinterfrences si utilises haute frquence). Sous le nom
Portx/Dio9 :0 sont regroupes les dix lignes dun port. Chaque
ligne peut tre renomme (F2), et les lignes dun mme type
regroupes dans un rpertoire virtuel











Figure 17-1 Cration d'un projet FPGA
Figure 17-2 Regroupement
des lignes dans un
rpertoire virtuel
Figure 17-3 l'ensemble des E/S de la cible

261CONTROL
E
DINSTRUME
NTS
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.
COMMUNICATION ENTRE LES DIFFERENTES PARTIES.
COMMUNICATION ET FPGA ET RT
La communication entre les variables du code FPGA et des variables de la cible RT peuvent se faire :
a)par des nuds de proprit Read/Write des contrles de la face avant du VI principal FPGA, c'est la
mthode la plus simple, aucun code n'est ncessaire.
b) Par des FIFOs, pour le transfert de volume donnes plus important avec la possibilit d'implmenter des
mcanismes vitant la perte de donnes.
COMMUNICATION ENTRE CIBLE RT ET SUPERVISION
Cette communication utilise une liaison rseau physique ou virtuelle (dans le cas ou deux les deux OS tournent
sur le mme processeur avec NI Real-Time Hypervisor)
a)Par des variables rseau, liaison directe sans code, la mise jours de donnes est faite par le protocole NI PSP
(attention bien configurer le pare-feu pour autoriser les ports UDP et TCP 2343 ainsi que les ports TCP 59110
et suprieurs raison de un par application).
b) Par des liens TCP/UDP ou des sockets pour amliorer la performance, notamment en encapsulant plusieurs
variables dans le mme paquet TCP ou UDP.

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.
CREATION DUN VI FPGA
Lors de la cration dun VI dans un projet, ce dernier est spcifique la cible pointe. Pour crer un VI destin
tre excut sur le FPGA il faut
donc pointer licne de la cible
FPGA avant de choisir
NewVI dans le menu
contextuel.

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.

PALETTE DOUTILS
La palette doutil pour les FPGA est plus rduite que la palette normale.

Les principales diffrences sont dans les types des
donnes numriques, il ny pas de nombres en virgule
flottante.
Les tableaux sont de taille fixe.
Ces limitations tant induites par la technologie FPGA.
Les oprations sur chaine, les dialogues et autre E/S
fichiers sont sans objets sur un FPGA.
A noter le support de la programmation objet et des
machines dtat (StateChar).
Figure 17-4 Cration d'un nouveau Vi FPGA
Figure 17-5 Affichage de la cible d'excution.
Figure 17-6 Palette de fonctions FPGA

263CONTROL
E
DINSTRUME
NTS
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
est configurable (dure en
coups dhorloge, s ou ms et
longueur du mot dentre, 8,
16 ou 32 bits)

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.

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).
Figure 17-7 Un programme FPGA simple
Figure 17-8 Fentre d'tat de la compilation

264 LABVIEW FPGA
COMMUNICATIONS ENTRE VI FPGA ET VI RT
Ce programme est parfaitement fonctionnel et peut dans de nombreux cas tre suffisant (implantation de
relation combinatoire fixes entre entres et sorties). Si le systme doit faire varier la vitesse de clignotement de
la LED, il faut transformer la constante en un contrle puis relancer la compilation.
La face avant du VI FPGA permet de transmettre de faon transparente des donnes en entre ou en sortie du
code FPGA (en fait une liaison est tablie entre le PC, la cible RT et le FPGA), cette communication a un cot en
terme de portes logiques utilise pour la partie FPGA et en ressource processeur pour la partie RT.
Si la frquence de clignotement est le rsultat, par exemple, dun calcul effectu sur la cible RT, il faut
transmettre cette valeur au contrle du VI FPGA.
Dans un premier temps il faut crer un VI dans le module RT :
Puis utiliser les fonctions de la
palette FPGA Interface pour
crer une rfrence sur le VI
implant dans le FPGA, en
assurer un dmarrage correct et
transmettre linformation. Le
processus est tout fait
comparable celui utilis pour
excuter un VI distance avec le
VI-Serveur.
Ce code transmet la valeur
calcule 200 au contrle Count
du VI FPGA. La rfrence doit
tre prcise (clic droit,
Configure Open FPGA VI
Reference ) ainsi que la/les
variables lire ou crire.
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

Nous verrons comment forcer lexcution en
un coup dhorloge si le temps de propagation
le permet.

Figure 17-9 Cration d'un VI sur la cible RT
Figure 17-10 communication entre cible RT et FPGA
Figure 17-11 Paralllisassions et cadencement

265CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA
EXEMPLE : UN PERIODE- METRE
Si lon veut mesurer la priode de clignotement de notre LED prcdente, en passant par des pattes physiques,
il suffit de rajouter un nud de lecture et dcriture dune patte du FPGA (par exemple LED1 relie
Port6/DIO5). Attention, il faut tre certain que la dure soit compatible avec la taille du Tick count et donc
utiliser 16 bits.


Figure 17-12 Deux boucles parallles pour la mesure de priode

266 LABVIEW FPGA
IMPLANTATION D'UN PROTOCOLE SPI
La carte d'essai est quipe d'un convertisseur analogique numrique qui utilise une liaison SPI ( page 289). Ce
protocole trs simple utilise une horloge et une ligne de donnes et dans ce cas prcis deux lignes de contrle,
l'une dmarre la conversion, l'autre indique quelle est termine. Les temps minimums et/ou maximum entre
les fronts des signaux logiques sont donns dans la datasheet du circuit et doivent tre respects pour obtenir
un fonctionnement fiable.
Limplmentation de ce type de protocole fait appel une structure de type squence. Les temps seront grs
par des fonctions wait
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
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 coup
dhorloge
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.

Figure 17-13 Palette timer

267CONTROL
E
DINSTRUME
NTS
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 :





ATTENTE DE LA FIN DE CONVERSION
Lorsque BUSY repasse 0 :





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.










Figure 17-14 Lancement de la conversion
Figure 17-15 Boucle
d'attente de fin de
conversion
Figure 17-16 Lecture des 16 bits de donnes

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.





ACCES AUX LIGNES PAR DES NUDS DE PROPRIETE
Le code prcdent est fig en ce qui concerne les lignes dentre/sorties utilises par les sous VI. Pour cer un
code plus gnrique, il placer sur la face avant un contrle de type FPGA I/O puis le relier aux entres des
nuds dentre/sortie.
Il est alors possible de spcifier
dans le main la ligne
utiliser.

GESTION DES TEMPS DE BOUCLES
La gestion du temps d'excution des boucles est donc une problmatique importante. La vitesse d'horloge
primaire va dfinir le cadencement de base (en gnral 40 MHz avec la possibilit d'utiliser des horloges
drives grce aux PLL intgres dans les FPGA). Puis, c'est le code l'intrieur de la boucle qui dfinira le
cadencement secondaire.
TEMPS DEXECUTION DUNE BOUCLE
Le temps dexcution intrinsque dune boucle est de 2 coups dhorloge. Il faut y ajouter le temps dexcution
du code interne. Si deux actions parallles sont implmentes dans la boucle cest la plus longue qui limitera le
temps de boucle. Les taches dentre sortie numrique prennent 1 coup dhorloge, les taches dentre/sortie
analogiques sur modules CompactRIO environ 35 coups dhorloge (trs dpendant du hardware).
Figure 17-17 Le programme final
Figure 17-18 Utilisation d'une rfrence de ligne d'entre/sortie

269CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA
DECODEUR BCD 7 SEGMENTS
La carte est quipe de quatre afficheurs 7 segments multiplexs, pour raliser un dcodeur BCD vers les 7
segments, il faut, soit utiliser les quations logiques, soit implanter un tableau de correspondance en mmoire,
cest cette solution qui sera retenue.
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)


ENTREE DES DONNEES
Le bouton Define Table permet dentrer les donnes, soit une une, soit en crant une droite ou un
sinus/cosinus, ou enfin en
gnrant les valeurs grce un
VI.






La datasheet du CD4511 nous donne, ce qui nous fait en mmoire :
Figure 17-19 Les look Up Tables
Figure 17-20 Affectations de valeurs la LUT
Figure 17-21 Valeurs dfinies pour le dcodeur BCD->7 segments

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.
EXECUTION SUR UNE AUTRE CIBLE
Limplantation dquations logiques complexes entre de nombreuses variables est souvent source derreur. Il
serait souhaitable de pouvoir tester notre dcodeur sur le PC avant de lancer une longue compilation sur le
FPGA. Pour cela il faut choisir dans le menu local de la cible FPGA la cible souhaite. Lorsque le PC est choisi
comme cible dexcution, les
nuds dentre/sortie sont
videmment inutiliss (certaines
cartes de srie R acceptent
cependant des E/S physiques
rel sur le FPGA). Les nuds
dentre fournissent des
donnes alatoires ou
provenant dun VI de dfinition,
les nuds de sortie sont ignors.
Les timings ne peuvent tre
respects, il sagit bien de tester
la logique et non la vitesse. Un
afficheur 7 segments est cr sur
la face avant du VI pour vrifier
le rsultat :
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
VECTEURS DE TAILLE QUELCONQUE
La palette des entier permet de crer des nombres de taille 8, 16, 32 et 64 bits. Pour crer des vecteurs de
taille quelconque (infrieure
64 bits), il faut utiliser une
autre reprsentation, les
nombres en virgule fixe. Ils
permettent de coder des
nombres de taille quelconque
avec une partie entire et une
partie relle fixe. Ces
Figure 17-23 Excution du code sur la machine de dveloppement
Figure 17-22 Rsultat obtenu
Figure 17-24 La palette "Fixed Points"

271CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA
paramtres sont fixs dans
longlet Data Type des
proprits. Ce sont les seuls
nombres virgule disponibles
dans le module FPGA (les
oprations sur nombres en
virgule flottante sont
consomment trop de portes).
Pour les oprations
mathmatiques sur ces
nombres, une palette optimise
nomme High Throughput
Math Functions utilise au
mieux les ressources du FPGA
(accumulateurs, DSP) pour
optimiser la vitesse dexcution.

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.

Figure 17-25 Configuration des nombres en virgule fixe
Figure 17-26 Le code final du dcodeur avec multiplexage.

272 LABVIEW FPGA
LE DECODEUR BINAIRE/BCD UTILISATION DUNE IP VHDL
Tout le code implment actuellement est crit en LabView et sera traduit en VHDL lors de limplmentation. Si
vous disposez dIP crits en VHDL, et dument testes avec des outils tiers ISim fait partie de la licence FPGA
LabView avec ISE), vous pouvez intgrer directement des IP dans votre code. Deux moyens sont disponibles, les
nuds dintgration IP, et les CLIP Component-Level Intellectual Property .
NUD DINTEGRATION I P VERSUS CLIP
Il existe des diffrences assez fondamentales en ces deux mthodes. Les nuds dintgration IP sont sur le
diagramme et leur excution dpend donc du flot de donne, leur code peut tre simul sur lordinateur de
dveloppement. A contrario, un CLIP est un module qui vit sa vie indpendamment du code LabView, il sera
compil par lutilitaire Xilinx et ne peut tre simul sur le PC de dveloppement. Le tableau suivant rsume ces
diffrences :

Figure 17-27 Principales diffrences entre CLIP et IP Integration Node
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 Double-
Dabble . Il servira afficher la valeur de la tension lue.

273CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA

--------------------------------------------------------------------------------
-- Company: ICMCB CNRS
-- Engineer: R. DECOURT
--
-- Create Date: 9-2011
-- Design Name: Binary-to-BCD Converter
-- Target Device: SBRio
-- Tool versions: 12.4
-- Description:
-- A 12 bits binary to BCD converter for Labview CLIP IP Integration

--------------------------------------------------------------------------------

-- Title: Binary-to-BCD Converter
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

entity Binary_to_BCD is
port (
Bin : in STD_LOGIC_VECTOR (11 downto 0); --Binary input
Unit : out STD_LOGIC_VECTOR (3 downto 0); --LSB Decimal digit
Dix : out STD_LOGIC_VECTOR (3 downto 0);
Cent : out STD_LOGIC_VECTOR (3 downto 0);
Mille : out STD_LOGIC_VECTOR (3 downto 0) --MSB Decimal digit
);
end Binary_to_BCD;

architecture behavioral of Binary_to_BCD is
begin

Shift_Add3 : process(Bin)
variable temp: STD_LOGIC_VECTOR (27 downto 0); --Use to store the 12 bits
in and the

-- 16 bits out after Shift Add3
begin

temp := "0000000000000000000000000000"; --Init for shifting
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 downto 12) + 3;
end if;
if temp(19 downto 16) > 4 then
temp(19 downto 16) := temp(19 downto 16) + 3;
end if;
if temp(23 downto 20) > 4 then
temp(23 downto 20) := temp(23 downto 20) + 3;
end if;
if temp(27 downto 24) > 4 then
temp(27 downto 24) := temp(27 downto 24) + 3;
end if;
---------Shift
temp(27 downto 1) := temp(26 downto 0);
end loop;

---------Digit affectation
Mille <= temp(27 downto 24);
Cent <= temp(23 downto 20);
Dix <= temp(19 downto 16);
Unit <= temp(15 downto 12);

end process Shift_Add3;
end behavioral;

Ce fichier doit tre incorpor dans le programme labview pour pouvoir tre compil et excut.

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

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
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

Figure 17-28 noeud d'intgration IP sur la palette
Figure 17-30 Utilisation du Nud d'intgration IP dans une SCL
Figure 17-29 Slection de l'entit souhaite

275CONTROL
E
DINSTRUME
NTS
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.
Cette procdure fait apparaitre le composant
Bin_To_BCD dans le projet. Ce composant sera
implment lors du dploiement vers la cible et fonctionnera
indpendamment du programme LabView. Par exemple, si
lIP ne communique avec le monde extrieur que par des
pattes dE/S du FPGA (une relation combinatoire entre des
entres et une sortie) vous ne verrez pas dautre chose sur le
diagramme. Dans notre cas, lIP communique avec le code
LabView puisquelle reoit un nombre binaire et renvoie
quatre vecteurs de 4 bits.

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.
Figure 17-31 Cration d'un CLIP
Figure 17-33 Utilisation d'un CLIP
Figure 17-32 Configuration du CLIP
Figure 17-34 Utilisation d'un CLIP

276 LABVIEW FPGA
AFFICHAGE DU RESULTAT DE LA CONVERSION
Actuellement, nous avons trois boucles spare, lune pour la conversion, la conversion BCD, lautre pour
laffichage. Considrons que cette situation est ncessaire car les deux oprations sont cadences sparment
(par exemple la boucle daffichage est plus lente que celle dacquisition). Ces boucles tant infinie, il faut
trouver un moyen de passer le rsultat de la conversion au VI daffichage.
PASSAGE DE DONNEES ENTRE BOUCLES
Les ressources pouvant tre partages sont :
Les E/S numriques et analogiques (dpendant du matriel)
Les blocs mmoire
Les FIFO
Les VI non rentrant (variables globales fonctionnelles)
Les variables globales et locales.
LES VARIABLES GLOBALES ET LOCALES :

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 !).




Figure 17-35 Utilisation d'une variable locale

277CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA
LES BLOCS MEMOIRE
Les FPGA possdent des ressources mmoire. Il y a toujours la possibilit d'implmenter les ensembles de
donnes sous forme de tableau utilisant les LUT, mais les tableaux volumineux sont consommateurs de
ressources. Un tableau comportant 100 lments de nombres de 32 bits consomme 30 % des bascules dun
Virtex-II 1000 et moins de 1 % du bloc de RAM embarque.
CREATION DUN BLOC MEMOIRE
Pour crer un bloc : il faut slectionner dans le menu contextuel de la cible FPGA New->Memory
Une fentre permet de dfinir la taille en
nombre dlments, limplmentation (en
mmoire dans les bascules dune LUT), le
type de donnes et laccs la mmoire. Les
blocs mmoire ont deux interfaces,
normalement une pour la lecture, lautre
pour lcriture, mais si la mmoire est
initialise (une forme donde, des
coefficients) il est alors possible de lire
deux emplacements simultanment. Les
menus droulants arbitration dfinissent le
comportement lors dun accs commun aux
interfaces.


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.
ACCES AUX DONNEES
Dans la plalete Memory & FOFO vous trouvez les nuds de mthode pour accder aux donnes. Il nen
existe que deux : Read et Write !
Attention, il ny a pas de
code prvenant dune
corruption des donnes
entre deux domaines
temporels diffrents (sur des
FPGA qui peuvent gnrer
Figure17-36 Cration d'un bloc mmoire
Figure 17-37 Noeud d'accs Read/Write la mmoire

278 LABVIEW FPGA
plusieurs horloges via des PLL)
Les blocs mmoire ainsi dfinis sont dits target scoped et sont accessible de tous les Vis implants sur le
FPGA. Il existe des blocs
mmoire dfinis dans le code
dun VI qui ne sont
accessibles que du VI de
dfinition et appels VI
scoped . Ils sont identiques
aux prcdents mais
permettent dviter des
conflits de noms entre divers
Vis.
Les mmoires seront utilises
comme les variables locales
ou globales, lorsque la perte
dune donne nest pas
critique et que le volume de
donnes est important.
EXEMPLE DUN BUFFER CIRCULAIRE
Considrons que la boucle dacquisition stocke les valeurs dans un buffer circulaire de 256 mots de 12 bits et
que celle daffichage fasse la moyenne de ces huit donnes pour les afficher (aucun systme de control de la
validit des donnes ne sera implment !).
La partie acquisition se retrouve avec une mthode Write de la mmoire que vous avez cr (un glisser
dposer depuis le bloc mmoire du projet vers le
diagramme suffit crer le nud de mthode),
ainsi quun compteur trois bits.
La fonction dincrmentation ncessite dtre
configure pour que sa sortie reste sur trois bits et
que son mode de dpassement soit Wrap et
non Saturate . Ces paramtres sont dans longlet
Output configuration des proprits de la
fonction.
La boucle de conversion BCD senrichie dune
structure de rptition inconditionnelle pour
sommer les 256 valeurs et dune division par huit
ralise par un dcalage droite de trois bits.
Prendre garde faire une addition sur 21 bits pour
viter les erreurs de dpassement. La structure for tant par dfinition pas excutable en une passe, elle ne
peut tre dans la boucle SCL. Une boucle while infinie englobe donc la premire boucle. Attention
modifier la condition darrt de la boucle SCL.

Pour une simulation sur PC il convient dinsrer des fonctions dattente dans les deux diagrammes.
Figure17-38 Bloc mmoire dfini au niveau du VI
Figure 17-39 Implantation d'un buffer circulaire en mmoire
sur le VI dacquisition

279CONTROL
E
DINSTRUME
NTS
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)
ACCES AUX DONNEES
Les mthodes daccs possdent une entre et une sortie Time Out , Lentre fixe le nombre de coup
dhorloge que doit attendre la FIFO si elle est pleine en criture ou vide en lecture. En sortie le boolen est vrai
si aucun lment na pu entrer
ou sortir dans le laps de temps
imparti. Aucun lment nest
cras en criture, il y a
possibilit de pertes de donnes
si la FIFO sort en TimeOut

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-40 Calcul de moyenne des donnes en mmoires
Figure 17-41 Nuds d'accs "Read/Write" des FIFO
Figure17-42 Accs au nombre d'lments dans la FIFO

280 LABVIEW FPGA
Enfin une mthode Clear permet de vider compltement une FIFO.

Figure 17-43 Effacement de la FIFO
EXEMPLE AVEC UNE FIFO
Reprenons lexemple prcdent. Cependant, au lieu de cadencer lexcution de la boucle daffichage par une
attente huit fois plus longue que la boucle dacquisition, elle sera
cadence par le nombre dlments prsents dans la FIFO.
La partie acquisition se retrouve avec une mthode Write de la
FIFO (la FIFO a une taille de 256 lments ).
On suppose quaucun dbordement ne peut avoir lieu, donc pas
de contrle du Time Out .



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.

Il est temps maintenant de compiler le projet pour lexcuter sur la cible FPGA.
Figure17-44 Stockage des donnes dans un FIFO
Figure17-45 Une boucle attend que 256 lments soient dans la FIFO

281CONTROL
E
DINSTRUME
NTS
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.

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).





Figure17-46 Structure des connexion d'E/S
Figure17-47 La mthode Set Output Enable permet de grer la direction des
changes
Figure17-48 la mthode "Set Output Data"
permet d'attribuer un niveau la bascule
de sortie sans activer la broche physique

282 LABVIEW FPGA
ENVOIE RECEPTION DE DONNEES
Le but ntant pas ici dapprendre le fonctionnement du bus I2C, mais lutilisation de lignes bidirectionnelles,
lexemple suivant se contentera de transmettre une trame dcriture. Ladresse I2C du DAC est 14, SDA est
relie Port5/DIO4 et SCL Port5/DIO5.
ECRITURE DUNE TRAME
La trame transmise doit tre :

Figure17-49 Trame d'criture des douze bits de donnes
La premire phase une est condition de Start ->SDA passe de 1 0 alors que SCL reste 1.

Figure 17-50 Envoie d'une condition de "Start"
Puis ladresse est transmise sur 7 bits suivie dun 0 pour indiquer une opration dcriture.

Figure 17-51 Transmission de l'adresse 14 et d'un Write


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 .

283CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA

Figure 17-52 Lecture de l"Acknoledge"
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-53 Envoie d'une condition de "Stop"
La squence finale ressemble donc ceci :

Figure 17-54 Squence complte d'une transaction d'criture sur bus I2C



284 LABVIEW FPGA
OPTIMISATION DU CODE FPGA
OPTIMISATION GENERALE
Les FPGA ont des ressources limites, et une opration banale comme une division peut savrer trs couteuse
en portes. Il faut avant tout :
LIMITER LA TAILLE ET LE NOMBRE DES OBJETS DE LA FACE AVANT
Tous les objets de la face avant doivent tre utiliss : enlevez les objets de dbogage, les objets ne
servant qu crer des variables locales.
Utilisez le moins possible dobjets, par exemple prenez un U8 pour transfrer 8 boolens ou un
tableau plutt que huit boolens individuels (le code associ aux contrles utilisent souvent plus de mmoire
que la taille de la variable quils transportent)
Chaque opration de lecture/criture implique un hachage des donnes transfres depuis la face
avant du Vi FPGA en paquets de 32 bits (si vous transfrez 33 bits, vous doublez le temps de transfert).
Bannissez les tableaux et cluster de plus de 32 bits qui ncessite des copies pour leur transfert (utilisez
des FIFO DMA)
UTILISER LES TYPES LES PLUS PETITS
Oubliez plus cest gros mieux cest , rduisez les donnes au strict ncessaire
Utilisez les VI de changement de type plutt que la coercition automatique
EVITEZ LES FONCTIONS GOURMANDES
Faire des dcalages droite ou gauche plutt que des division/multiplication par 2*n
Faire des compteurs plutt quune division avec reste pour obtenir un modulo
EVITEZ DE CABLER LES ERREURS
Dans la mesure du possible ne faites apparaitre les terminaux derreur (menu contextuel du nud de
mthode Hide/Show Error Terminal que sur les fonctions critiques pour le systme, chaque liaison derreur
entrainera laffectation de bascules pour les enregistrer !
Utilisez des squences pour organiser lenchainement des fonctions plutt quun lien derreur.
Traitez les erreurs immdiatement, vitez de les passer au systme RT
Vous traiterez les erreurs par exemple :
Pour reconnaitre un module absent
Grer un time out de communication dun module CAN ou encore laccs un fichier dun
module de stockage.

285CONTROL
E
DINSTRUME
NTS
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

La chaine dactivation va activer
lment par lments les
actions logiques effectues par
le FPGA, chaque Enable In
est reli au Enable Out
prcdent. La chaine
dactivation garantie que les
oprations sont ralises sur le
FPGA dans le mme ordre que
sur de diagramme LabView. Cet
extra code implique que chaque
VI ncessite au minimum un
coup dhorloge pour sexcute.


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.

Cette boucle demande 12 coups
dhorloge pour tre excute




Celle-ci, 1 coup dhorloge

Figure 17-55 Structure de la chaine
d'activation
Figure 17-56 Un coup d'horloge au minimum par opration
Figure 17-57 Boucle standard et SCTL

286 LABVIEW FPGA
Certaines limitations existent, notamment il nest pas
possible dimbriquer des structures, dexcuter des
oprations dE/S analogiques (elles consomment environ
35 coups dhorloge), dutiliser certaines fonctions
prenant plus dun cycle (presque toutes les fonctions
mathmatiques part laddition, soustraction et
multiplication) et bien videment les fonctions dattente.
IL est possible dutiliser les boucles SCTL pour optimiser
certaine parties du code en laissant lextrieur les
fonctions occupant plus dun cycle.
Seules les SCTL permettent lutilisation dhorloges
drives

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).

Figure 17-59 Sparation des opration par un Pipeline
La technique peut bien videmment tre utilise avec une SCTL si le temps de propagation nest trop long
Figure 17-58 Optimisation d'une partie de code

287CONTROL
E
DINSTRUME
NTS
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 SB-
RIO les frquences disponibles
schelonnent de 2.5 280 MHz
Bien que le FPGA le permette, il nest pas
possible de slectionner la phase cadran par
cadran.
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.
Si nous reprenons notre tout premier code et
que lon fixe la frquence dexcution de la
boucle 250 MHz, un message derreur
apparait, indiquant quil y a une violation
temporelle.
Figure17-60 Cration et configuration des horloges drives
Figure 17-61 Slection de l'horloge
Figure 17-62 Le programme de test

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.
Le temps total de propagation devrait tre
infrieur 1/250MHz, soit 4 ns, hors, il est de
2.49 ns pour la boucle et de 1.65 ns pour
lextra-code. Vous constatez que le temps de
propagation dans les lignes nest pas
ngligeable, ce rsultat peut dpendre de la
configuration du synthtiseur et du
positionnement des portes au dpart (le
synthtiseur ne donne pas toujours le mme
rsultat).
Il est possible dexiger du synthtiseur
doptimiser le code plutt pour la vitesse ou
pour lencombrement, mais aussi dajuster le
nombre de passes lors des phases de
synthse, placement routage. Ces options sont
dans la page de proprit du Build
Specification item Xilinx Option .



COMMUNICATION ENTRE DOMAINES TEMPORELS
La FIFO est lunique moyen de transfrer des donnes entre deux boucles de domaines temporels diffrents.
Dans ce cas, lopration dcriture doit appartenir un seul domaine temporel et lopration de lecture un
seul autre. Lutilisation de variables locales ou globale reste possible, mais il faut implmenter un systme de
handshaking si lon veut viter la perte de donnes.




Figure 17-63 Violation temporelle.
Figure 17-64 Optimisation du synthtiseur

289CONTROL
E
DINSTRUME
NTS
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


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 :

291CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA

RAPPEL SUR LI2C.
Li2C est une liaison srie deux fils (une horloge SCL mise par le maitre et une ligne de donne bidirectionnelle
SDA) la frquence standard de lhorloge est de 100 kHz. Le bus est multi-maitres et multi-esclaves.
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.
VALIDITE DES DONNEES
Les donnes sur la ligne SDA doivent tre stables pendant la priode haute de l'horloge. L'tat de la ligne de
donnes peut changer seulement lorsque le signal d'horloge sur la ligne SCL est bas. Une impulsion de l'horloge
est gnre pour chaque bit de donnes transfre.

PRISE DU BUS ET RELACHEMENT
Toutes les transactions commencent avec un START (S) et peuvent tre rsilies par un STOP (P). Une transition
de HAUT vers BAS sur la ligne SDA alors que SCL est HAUTE dfinit une condition de START. Une transition de
BAS vers HAUT sur la ligne SDA alors que SCL est HAUTE dfinit une condition STOP.

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.
ADRESSE DESCLAVE ET BIT R/W
Les transferts de donnes suivent le format illustr. Aprs le START (S), une adresse esclave est envoye. Cette
adresse est de 7 bits suivies d'un huitime bit qui est la direction des donnes (R/W) un zro indique une
transmission (criture), une un indique une requte (lecture). Un transfert de donnes est toujours termin
par une condition STOP (P) gnre par le matre. Toutefois, si un matre souhaite toujours communiquer sur le
bus, il peut re-gnrer une condition de START (Sr) et l'adresse dun autre esclave sans gnrer la condition
STOP.

293CONTROL
E
DINSTRUME
NTS
LABVIEW FPGA





Biblio : FPGA module training : http://zone.ni.com/devzone/cda/tut/p/id/3555
I2C NXP User Manual UM10204 : http://www.nxp.com/documents/user_manual/UM10204.pdf