Support de cours complet pour débuter et avancer avec LabView
LABVIEW
LabView (Laboratory Virtual Instrument Engineering Workbench) est un langage de programmation dédié au contrôle d’instruments et l’analyse de données. Contrairement à la nature séquentielle des langages textuels, LabView est basé sur un environnement de programmation graphique utilisant la notion de flot de données pour ordonnancer les opérations.
LabView intègre l’acquisition, l’analyse, le traitement et la présentation de données.
Pour l’acquisition de données et le contrôle d’instruments, LabView supporte les standards RS-232/422, USB, IEEE 488 (GPIB) et VXI/PXI, ainsi que les cartes d’acquisition de données.
Pour l’analyse et le traitement des données, la bibliothèque d’analyse étendue contient les fonctions pour la génération et le traitement de signaux, les filtres, les fenêtres, les statistiques, la régression, l’algèbre linéaire et l’arithmétique matricielle.
LabView intègre un grand nombre d’éléments de présentation tels les graphes déroulants, des graphes XY, des abaques de Smith, jauges, cadrans à aiguille…
Support de cours complet pour débuter et avancer avec LabView
Table des matières :
1. Introduction à LabVIEW 15
LabVIEW 16
Les Instruments Virtuels 17
Environnement LabVIEW 18
Les fenêtres de la face avant et du diagramme 18
Barre d’outils de la face avant 19
Barre d’outils du diagramme 20
Menus contextuels 20
Menus 20
Palettes 20
Palette d’outils 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. Création, Modification, mise au point d’un VI 27
Création d’un VI 28
Face Avant 28
Diagramme 29
Nœuds 29
Terminaux 29
Fils 29
Câblage automatique des données 30
Programmation par flots de données 30
Recherche de contrôles, de VIs et de fonctions 31
Techniques de modification 32
Création d’objets 33
Sélection d’objets 33
Déplacement d’objets 33
Effacement des objets 33
Duplication des objets 33
Nommer les objets 33
Sélection ou suppression de fils 34
Etirement des fils 34
Fils cassés 34
Outils d’édition de la face avant 35
Changer la couleur des objets 35
Modifications 38
Constantes de type Cluster 73
Ordonner les Clusters 73
Fonctions sur Cluster 75
Assembler & Assembler par nom 75
Désassemblage des clusters 75
Polymorphisme des clusters 77
6. Structures de choix, séquences et nœuds de calcul 79
Structure de choix 80
Tunnels d’entrée/sortie 80
Exemples 80
Sélection des choix 82
Les Séquences 84
Variable locale de séquence 84
Comment éviter l’utilisation des séquences 85
Boîtes de calcul et nœuds d’expression 86
Nœuds d’expression 86
Boîtes de calcul 86
7. Chaînes et Entrées/Sortie fichier 88
Chaînes 89
Créer des commandes et des indicateurs de type chaîne 89
Tables 89
Fonctions sur chaîne 91
Manipulation de chaînes 91
Chaînes et Nombres 91
Entrées/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
Généralités. 102
Avantages 102
Meilleure utilisation du CPU 102
Facilité de programmation 103
Meilleure confiance dans le code 103
Amélioration des performances en multiprocesseurs 103
Déport de threads sur d’autres machines 103
Contraintes 103
Communications inter threads 103
Synchronisation de threads 103
Gestion de ressources communes 103
Corruption mémoire aléatoire 104
Partage de ressources physiques 104
Deadlock 104
Priorités d’exécution 104
Changement de priorité 104
Attente de libération 104
Noeuds synchrone 105
Modèle de programmation 106
Modèle maître/esclaves (Master/Slaves) 106
Modèle parallèle 106
Exemple : Traitement parallèle de données concurrentes 106
Traitement série par lot d’un flot de données (pipeline) 107
Exemple : ACQUISITION-TRAITEMENT-ENREGISTREMENT 107
Gestion des applications multithreads 109
Gestion des communications inter thread 109
Mécanismes 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
Sémaphores 116
Priorité « subroutine » 117
Priorité et cadencement de threads 117
Introduction 117
Attentes et boucles temporisées 117
9. Chargement dynamique, « VI Server » 119
Introduction 120
Chargement dynamique de VI 121
Préambule 121
Référencement d’un VI 121
Chargement d’un VI 121
Lancement et transmission des paramètres 122
10. Communication entre applications distantes 123
Visualisation et contrôle 124
Via le serveur WEB 124
Activation du serveur WEB 124
Création de la page HTML 124
Prise de contrôle 124
Suivi des connexions 125
Via LabView 125
Mode manuel. 126
Mode programmé 126
Applications partagées 128
Transmission de données 128
Variables partagées 128
Data Sockets 129
Protocoles TCP/UDP 129
Connexion au « VI server » 132
Principe 132
11. Amélioration de l’interface 135
Importation des titres d’objet. 136
Gestion des menus 137
Edition. 137
Gestion. 137
Menus des objets de face avant 138
Structure d’événement 139
Définition 139
Gestion 139
Evénement provenant d’autres VI 140
Enregistrement d’événements utilisateur 142
Changement du nom d’événement 143
Objets ActiveX et .NET 144
Qu’est ce ? 144
ActiveX 144
.Net 144
Utilisation d’un composant ActiveX et .NET 144
ActiveX 144
Enregistrement d’activité d’un ActiveX ou d’un .NET 145
Généralité sur les « Callback » 145
Enregistrement d’une « Callback » 145
Les CommandeX 148
Généralité 148
Création 148
Aperçu 152
La programmation orientée objet 152
Modèles à objets 152
La classe 152
L’encapsulation 152
L’héritage 152
Polymorphisme 153
DEUX MOTS d’UML et de POO 154
Représentation des classes 154
Visibilité des attributs et des méthodes 154
Représentation des dépendences 155
LabVIEW Object-Oriented Programming: the Decisions Behind the Design. 156
Les choix 156
l'encapsulation 156
L’héritage 156
Création d’objets 157
Les bibliothèques 157
Les Propriétés (ATTRIBUTS) 157
Les méthodes 157
Dynamique versus Statique 158
Accesseurs et mutateurs 159
Accès aux ATTRIBUTS 159
Droits d’accès aux méthodes 160
Hiérachisation des classes 161
Changement de l’héritage 161
Explorateur de hierachie 162
Options de surcharge des methodes 162
Surcharge obligatoire des méthodes filles 162
Utilisation des méthodes surchargées. 163
Appel des méthodes parentes par les methodes surchargées 164
Implémentation d’une relation d’agrégation/composition 165
Creation Dynamique d’Objets 166
Transfert d’obligation de Surcharge des méthodes a des petits enfants 167
Un peu plus loin 168
Optimisation du code 168
Variant méthodes générique 168
Position du problème 168
Les Variants 169
Référencement des objets 170
Références 170
In Place Element Structure 171
Dans le cas des Objets 171
Aspects cosmétiques 174
Les fils 174
Les icônes 174
13. Acquisition de données 175
Aperçu 176
Configuration matérielle 176
VIs d’acquisition 178
Acquisition de données DAQmx 178
Tâches et Voies virtuelles dans MAX 178
Entrées analogiques type Waveform 182
Donnée type Waveform 182
DAQ Assistant 184
Sorties analogiques 186
Génération de Waveform 186
Les compteurs et entrées/sorties numériques 187
14. Contrôle d’instruments 189
Généralités 190
Configuration et Communication GPIB 191
Architecture du logiciel 191
Configuration du logiciel 191
Communication avec les instruments 194
Etapes essentielles d’une communication PC <=> périphérique 194
Sources d’erreurs classiques 195
Bibliothèques de contrôle d’appareils dans LabVIEW 197
Vi’s spécifiques à l’interface GPIB ou RS 232C 197
Visa 197
Utilisation des VISA 198
Assistant d’E/S instruments 200
Driver d’instrument 202
Exemple d’application simple 202
Pilotage d’appareils par port USB 205
Installation et configuration 205
Visa et USB 205
Les drivers IVI 205
Que vérifier si le programme minimal ne fonctionne pas ? 208
Que faire si une tâche spécifique ne fonctionne pas ? 208
Communications et configuration série 209
Paramétrages possibles 209
Connexion matérielle 209
VISA et liaison série 210
Nœud de propriété 210
15. Le module Datalogging & supervisory control 213
Introduction 214
Le module DSC pour les nuls 215
Connection à une variable “terminale” 215
Gestion d’alarmes 218
Enregistrement des données 218
Gestionnaire de systèmes distribués 220
Interface Homme Machine 221
Pour aller plus loin 222
Architecture d’un SCADA (Supervisory Control And Data Acquisition) 223
Client / Serveur 223
Librairies et processus 223
Le moteur de variable partagées 224
Types de variables partagées 224
Utilisation des variables partagées 224
Le moteur de publication NI PSP 224
Accés aux variables partagées 224
Accès statique 224
Accès Dynamique 225
Nœuds de Propriétés des variables partagées 226
Alarmes et événements 228
Types d’alarmes 228
Changement des propriétés d’alarmes 228
Récupération et visualisation des alarmes 228
Alarmes Utilisateurs 229
Base de données 231
Enregistrement des données 231
Changement du nom de base 231
Activation de l’enregistrement d’une variable 231
Enregistrement manuel des données 231
Lecture des données enregistrées 232
Serveurs d’E/S 233
Serveurs Standards 233
Serveurs de données 233
Serveur d’impression 233
Serveurs personnels 234
Gestion des librairies et des variables 236
Déploiement des bibliothèques 236
Création de processus 237
Création de variables partagées 237
Création de serveurs d’E/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
Evénement 242
Transitions 243
Entre états 243
Internes 243
JonctionS 243
Etats composé 244
Transitions dans les etats composés 244
Historiques 245
Synchronisation 245
Les StateCharts LabView 246
Création de la bibliothèque 246
Création d’un stateChart 247
Code associé aux états 247
Les Transitions 248
Autour d’un exemple 250
Le Diagramme statechart UML 250
Commande de l’éclairage. 250
Commande de ventillation 250
Deux processus concurents 251
Mise en marche et arrêt 251
Le diagramme Statechart Labview 251
Temps d’exécution d’une boucle 268
Décodeur BCD 7 segments 269
LUT 269
Entrée des données 269
Utilisation 270
Exécution sur une autre cible 270
Multiplexage 270
Vecteurs de taille quelconque 270
Implémentation 271
Le décodeur Binaire/BCD utilisation d’une IP VHDL 272
Nœud d’intégration IP versus CLIP 272
Le code VHDL 272
Nœud d’intégration IP 274
ip 275
Affichage du résultat de la conversion 276
Passage de données entre deux boucles 276
Les variables globales et locales : 276
Les blocs mémoire 277
Création d’un bloc mémoire 277
Accès aux données 277
Exemple d’un buffer circulaire 278
FIFO 279
Création d’une FIFO 279
Accès aux données 279
Exemple avec une FIFO 280
Protocole I2C 281
Lignesbidirectionelles 281
Envoie réception de données 282
Ecriture d’une trame 282
Optimisation du code FPGA 284
Optimisation générale 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
Boucles en un cycle 285
Pipeline 286
Domaines temporels 287
horloges dérivées 287
Création 287
Utilisation 287
Violation temporelles 287
Communication entre domaines temporels 288
Annexes 289
Connections de la carte prototype 289
Bouton poussoir 289
LED 289
BNC 289
Afficheurs 289
ADC 289
DAC 290
Rappel sur l’I2C. 291
Support de cours complet pour débuter et avancer avec LabView