Cours informatique LabVIEW complet
Cours d’initiation au logiciel LabVIEW
Objectifs du cours
• Présenter LabVIEW et ses fonctionnalités.
• Comprendre les composants d'un Instrument Virtuel (appelé VI).
• Établir une application simple d'acquisition de données.
• Créer un sous-programme dans LabVIEW.
• Travailler avec les tableaux, les graphiques, les clusters et les structures.
• Connaître des dispositifs d’impression et de documentation d’un VI.
• Développer différentes architectures de programmation.
• Publier des VI ou des données sur un réseau ou sur le Web.
• Maîtriser les bases de communications par liaison GPIB et Série.
• Connaître les outils d’acquisition et de traitement d’images.
• Comprendre les concepts de base du développement temps réel.
SOMMAIRE
Partie I – Introduction à LabVIEW 5
Partie II – Les Sous VI 47
Partie III – Acquisitions de données 60
Partie IV – Boucles, registres à décalage et introduction aux
graphiques 77
Partie V – Tableaux et fichiers 88
Partie VI – Fonctions des tableaux et graphiques 104
Partie VII – Chaînes de caractères, clusters et traitement d’erreurs 113
Partie VIII – Structures Condition et Séquence, Boîte de calcul 129
Partie IX – Variables 144
Partie X – Tables et nœuds de propriétés 152
Partie XI – Impression et documentation de VI 162
Partie XII – Architectures de programmation 170
Partie XIII – Outils de publication sur le Web 187
Partie XIV – Contrôle d’instruments 191
Partie XV – Module Vision 204
Partie XVI – Exercices d’applications 217
Partie XVII – Développement d’applications temps réel 250
Partie XVIII – DataSocket 261
Partie XIX – Sujets complémentaires 269
Remarque :
La version de labVIEW utilisée pour ce cours d’initiation est la version 7.1.
Partie I – Introduction à LabVIEW
• Généralités.
• Un peu d’histoire.
• Vocabulaire LabVIEW.
• Environnement LabVIEW.
• Composants d’une application LabVIEW.
• Outils de programmation LabVIEW.
• Créer une application LabVIEW.
Instrumentation Virtuelle avec LabVIEW
LabVIEW (Laboratory Virtual Instrument Engineering Workbench) est un environnement de développement graphique qui permet de créer des applications modulaires (notion de sous VI) et extensibles pour la conception d’applications, le contrôle et le test.
LabVIEW est un outils d’acquisition, d’analyse et de présentation de données.
Acquisition avec LabVIEW
LabVIEW permet l’acquisition de données par l’intermédiaire de diverses connectiques :
• PCI (Peripheral Component Interconnect)
• CompactFlash
• LAN (Local Area Network)
• PXI (PCI eXtensions for Instrumentation)
• PCMCIA (Personal Computer Memory Card International Association)
• Wi-Fi (IEEE 802.11 b/g/n) (Wireless Fidelity)
• Bluetooth
• IrDA (Infrared Data Association)
• USB (Universal Serial Bus)
• GPIB (IEEE 488) (General Purpose Interface Bus)
• Firewire (IEEE 1394)
• Ethernet
• Série (RS 232, RS 449, RS 422, RS 423, RS 485)
• VXI (VME eXtensions for
Instrumentation)
IEEE : Institute of Electrical and Electronics Engineers
Analyse avec LabVIEW
LabVIEW inclut des outils pour l’analyse des données :
• Traitement du signal : Convolution, analyse spectrale, transformées de Fourier,…
• Traitement d’images : Masque, détection de contours, profils, manipulations de pixels,…
• Mathématiques : Interpolation, statistiques (moyennes, écart-type,…), équations différentielles,…
Présentation avec LabVIEW
LabVIEW inclut des outils d’aide à la présentation (communication) des données :
• Graphiques, tableaux, images, génération de rapport,…
• Par l’intermédiaire d’Internet : outils de publication web, serveur datasocket, TCP/IP, envoie d’alertes par email,…
Un peu d’histoire
Mars 1998 • LabVIEW 5.0 ActiveX, Multifenêtrage
1997 • LabVIEW 4.0 addition d’outils pour les
professionnels, améliorations du debogage
Août 1993 • LabVIEW 3.0 version multiplateforme de LabVIEW
Septembre 1992 • LabVIEW pour Windows, et pour Sun
Janvier 1990 • LabVIEW 2.0 pour Macintosh
Octobre 1986 • LabVIEW 1.0 pour Macintosh
Avril 1983 • Démarrage de LabVIEW
Un peu d’histoire
2007 • LabVIEW 8.5, outils de développement multicœurs
(liés aux innovations dans l’architecture des processeurs de PC), programmation par diagramme d’états (statecharts)
2006 • LabVIEW 8.2 Édition des 20 ans, LEGO Mindstorms
NXT
2005 • LabVIEW 8 DSP (Digital Signal Processing), système embarqué
Mai 2003 • LabVIEW 7 VI Express, Assistants E/S, FPGA/PDA
Janvier 2002 • LabVIEW 6.1 Analyse, fonctionnement en réseau
Août 2000 • LabVIEW 6i Applications Internet
1999 • LabVIEW Temps réel
Mindstorms NXT
Notions de temporisation, de boucles, de gestion d’évènements,…
Mindstorms NXT
Autres exemples de conceptions :
Possibilité d’utiliser directement LabVIEW pour la programmation et la gestion d’éléments plus complexes.
Résolution d’un Rubik’s cube |
Table traçante
Pilotage d’un hélicoptère
Les programmes LabVIEW appelés Instruments Virtuels ou Virtual Instruments (VI)
Composantes d’un VI Les VI se composent de
3 éléments principaux :
- Face avant
• Interface utilisateur
Contrôles = entrées
Indicateurs = sorties
- Diagramme
• Fenêtre de programmation et d’affichage du code source
Interaction entre face avant et diagramme (Ctrl+E)
- Icône/Connecteur
Face avant d’un VI
Barre des menus
Dans la face-avant nous trouverons tous les éléments interactifs du VI (commandes et indicateurs).
Dans le diagramme nous trouverons tous les éléments propres au code développé (structures, fonctions, constantes,…).
Icône/connecteur d’un VI
• Chaque VI affiche une icône, dans le coin supérieur droit des fenêtres de la face-avant et du diagramme. Une icône est la
Icône par défaut
représentation graphique d’un VI.
• Un connecteur est un ensemble de terminaux correspondant aux commandes et aux indicateurs du VI qui sont accessibles.
Recherche d’exemples
Recherche d’exemples
VI vide
Remonter l’arborescence
Dans cette palette nous trouverons tous les éléments (commandes et indicateurs) nécessaires à la création de la face-avant.
Palettes de fonctions
“ Fenêtre”).
Dans cette palette nous trouverons tous les éléments (fonctions de base, VI Express,…) nécessaires à la création du code graphique dans la fenêtre diagramme.
Les Fonctions, les VI et les VI Express
• Les Fonctions de base : Éléments d’exploitation fondamentaux de LabVIEW.
• Les VI Standards : VI qui peuvent être personnalisés.
• Les VI Express : VI interactifs avec une page de dialogue configurable.
Palette d’outils
Utilisée pour agir sur les objets de la face avant et du diagramme (disponible dans la barre des menus : “ Fenêtre”).
Possibilité de changer d’outils à l’aide de la touche tabulation du clavier de l’ordinateur. Outil sélection automatique
(actif lorsque la LED verte est allumée)Outil déplacement
Outil d’arrêt
Outil d’action sur la face avant
Outil sonde
Outil déplacement et taille
Outil copie couleur
Outil texte
Outil coloriage Outil connexion par fils
Outil raccourci menu
Barre d’outils de la face-avant
Barre d’outils du diagramme
Animer l’exécution pour animer le diagramme et voir les données transiter.
Exécuter de façon détailler : Exécute le programme de la façon la plus détaillée possible action par action.
Exécuter sans détailler : Exécute le programme nœud par nœud sans rentrer dans le détail de leur exécution interne.
Terminer l’exécution
Barre des menus Fonctionnalités classiques des programmes standards mais également spécifiques à
LabVIEW.
chiffres de précision
la
Fonction de base
Étiquette Aide contextuelle (Ctrl + H)
Astuces de connexions
Points de Connexions Trois types de sélection
Programmation par flux de données
Terminaux d’entrées
gauche à droite.
• L’exécution du nœud se fait quand les données sont disponibles à tous les terminaux d’entrée.
• Puis les nœuds fournissent des données à tous les terminaux de sortie.
• La plupart des langages de programmation textuel (Visual Basic, C++, Java,…) utilisent des modèles de flux de commandes. C’est l’ordre séquentiel des éléments du programme qui détermine l’ordre d’exécution du programme.
Les options d’aide
• Accès à l’intégralité du contenu informatif.
• Ouverture automatique d’une fenêtre pour accéder directement à l’aide.
Aide détaillée
(barre des menus :
“Aide” -> “Aide LabVIEW…” )
Exercice 1 - Conversion de °C en °F et en K
Réaliser un VI qui permet d’effectuer une conversion de °C en K et en °F à partir de fonctions de base de labVIEW.
Conversion de °C en K : K = °C + 273,15
Conversion de °C en °F : °F = ((9 x °C) / 5) + 32
Exercice 1 - Conversion de °C en °F et en K
Exemple de solution possible
Aides aux débogages
Trouver des erreurs
Cliquer sur le symbole de la flèche coupée :
Une fenêtre Windows nommée « Liste des erreurs » apparaît avec les erreurs contenues dans le VI.
En double cliquant sur les erreurs on peut visualiser où elles se trouvent sur le diagramme.
Aides aux débogages
Animer l’exécution
Cliquer sur le bouton ci-contre. Les données dans des bulles sont animées. Des valeurs sont alors indiquées sur les fils.
Exécution du VI étape par étape.
Sonde (Probe)
affichées.
Partie II – Les sous VI
• Qu’est-ce qu’un sous VI ?
• Assigner un connecteur et réaliser une icône pour un sous VI.
• Utiliser un VI en tant que sous VI.
code.
Icônes et Connecteurs
• Une icône représente un VI dans un autre diagramme d’un VI de plus haut niveau.
2 cases en entrées pour les commandes
• Un connecteur montre les terminaux disponibles pour le transfert de données.
1 case en sortie pour l’indicateur
Sous VI
Étapes de création d’un sous VI
• Créer l’icône
• Visualiser le connecteur
• Assigner les terminaux
• Sauvegarder le VI
• Insérer le VI dans un VI de plus haut niveau
Créer une icône
Cliquez avec le bouton droit sur l’icône de la face avant (en haut à droite), ou sur l’icône du diagramme et choisir “Éditer l’icône”.
La personnalisation de l’icône est tout à fait facultative et ne changera rien au fonctionnement du sous VI.
Visualiser le connecteur
Cliquer avec le bouton droit sur l’icône (face avant seulement) et choisir “Visualiser le connecteur”.
Terminaux « nécessaires », « recommandés »,
Sauvegarde du VI
• Choisir un emplacement adéquat
• Organiser par fonctionnalités
– Sauvegarder les VI similaires dans un même répertoire
(ex : Outils mathématiques, traitement d’images, gestion multimètres, gestion moteur,…)
• Organiser par applications
– Sauvegarder tous les VI utilisés pour une application spécifique dans un répertoire ou une librairie.
(ex : Étalonnage micromètres objet, Pilotage TGV,…)
Les librairies (.llb) combinent plusieurs VI dans un seul fichier. Ceci est idéal pour transférer des applications complètes vers d’autres ordinateurs.
Insérez le sous VI dans un VI de niveau supérieur
haut niveau.
Autre méthode de création d’un sous VI
• Sélectionner une zone à convertir en sous VI.
• Sélectionner dans la barre des menus “Édition” : “Créer un sous VI”.
Astuces pour travailler dans LabVIEW
Quelques raccourcis clavier
<Ctrl+H> – Activer/désactiver la fenêtre d’aide contextuelle.
<Ctrl+B> – Supprimer les connexions erronées du diagramme.
<Ctrl+E> – Basculer entre la face avant et le diagramme.
<Ctrl+T> – Mosaïque verticale des fenêtres.
<Ctrl+Z> – Annuler (aussi dans le menu Édition).
<Ctrl+C> – Copier un objet.
<Ctrl+V> – Coller un objet.
Partie III – Acquisition de données
• Introduction à l’acquisition de données.
•Outil « Measurement and Automation Explorer » (MAX)”.
• Acquisition de données DAQ. (DAQ : Data AQuisition).
• DAQ Traditionnel.
• DAQmx.
• Exemples de matériels dédiés à l’acquisition.
Introduction à l’acquisition de données
Conversion du flux de Conversion du lumière (photons) en signal analogique Flux de courant électrique en signal lumière (électrons) numérique
Phénomène PC
Capteur Chaîne de traitement du signal
physique
(amplification, filtrage, échantillonnage,…)
Un capteur convertit un phénomène physique en un signal (généralement de nature électrique) mesurable par un système d’acquisition de données.
Exemple de chaîne d’acquisition de
Exemple de capteurs
| |||||||||||||||||||||
Mesurande : Grandeur particulière soumise à mesurage. Mesurage : Ensemble d’opérations ayant pour but de déterminer une valeur d’une grandeur.
Exemple de capteurs
Deux catégories de capteurs :
Capteurs actifs
Ils se comportent comme des générateurs. Ils sont vu comme étant des générateurs de charge, de tension, ou de courant dont la valeur est directement reliée au mesurande (Photodiode, photomultiplicateur,…).
Capteurs passifs
Ils se comportent comme des impédances. Ils sont vu comme étant des résistances, inductance ou capacité dont la valeur est directement reliée au mesurande (thermistance, jauge de contrainte,…).
Measurement and Automation Explorer (MAX)
Measurement and Automation Explorer (MAX)
• Affiche la liste des périphériques et des instruments connectés au système.
• Permet d’exécuter des tests pour vérifier le bon fonctionnement des périphériques connectés (à faire avant de ce lancer dans la programmation sous labVIEW).
• Permet la configuration du matériel.
• Permet de créer et modifier des voies, des tâches, des interfaces, des échelles,…
Measurement and Automation Explorer
Acquisition de données (DAQ) avec LabVIEW
DAQ traditionnel (Ancien driver)
Acquisition/Génération d’un signal grâce à des VI standards correspondant aux anciens drivers.
DAQmx (Assistant DAQ : VI Express)
Acquisition/Génération d’un signal grâce à l’assistant DAQ.
Terminologie de l’acquisition de données
• Résolution – Détermine la valeur minimale de la variation du signal pouvant être mesurée.
– Plus la résolution est importante, plus la représentation du signal est précise.
Exemple : un voltmètre indique 10 volts. Une variation de 0,1 volts fait bouger l’aiguille alors qu’une variation de 0,05 volts ne fait pas bouger l’aiguille. La résolution du voltmètre est de 0,1 volts.
• Gamme – Valeurs minimales et maximales du signal.
– Plus la gamme est petite, plus la représentation du signal est précise (à condition d’avoir une bonne résolution).
• Gain – Amplifie ou atténue le signal afin de l’adapter au mieux à la gamme.
Connexions des entrées
Catégorie de sources de signaux d’entrée.
Le signal est référencé à la masse du système.
Exemples : alimentations, générateurs de signaux, tout ce qui se connecte dans une prise secteur référencée à la terre…
Référencé
Le signal n’est pas référencé à une masse. Exemples : piles, thermocouples, transformateurs,…
Non référencé
Connexions des entrées
Trois modes de mise à la masse sont disponibles. Le mode choisit dépend de la nature du signal.
- Mode DIFFERENTIEL (DIFF) (le meilleur)
- Mode RSE (Referenced Single-Ended) (pas recommandé)
(Mode référencé à une masse commune)
- Mode NRSE (Non-Referenced Single-Ended) (bon)
(Mode masse commune non référencé)
Connexions des entrées
DIFFERENTIEL
RSE
NRSE
Exemples de matériels dédiés à l’acquisition
Connectivité directe des capteurs pour une mise en oeuvre rapide.
SCXI
Bloc de connexion d'E/S blindé pour interfacer les signaux d'E/S avec des matériels enfichables DAQ équipés de connecteurs 68 broches.
Exemples de matériels dédiés à l’acquisition
Ensemble d'instruments virtuels : oscilloscope, multimètre numérique, générateur de fonctions,… ELVIS pour le prototypage en laboratoire et l’enseignement.
Partie IV – Boucles, registres à décalage et introduction aux graphiques
• Boucle “For”.
• Boucle “While”.
• Registre à décalages.
• Graphiques.
• Affichages de plusieurs courbes sur un même graphique.
Les boucles
• La boucle While (tant que)
– Possède un compteur d’itération.
– S’exécute toujours au moins une fois.
– Continue de s’exécuter tant que l’on a pas appuyer sur le bouton Stop.
Itération
• La boucle For
– Possède un compteur d’itération.
– S’exécute N fois (N paramétrable).
– Pour N = 4, i = 0, 1, 2, 3.
Les boucles
1. Choisissez votre boucle. 2. Encadrer le code qui doit être répété.
3. Placez les nœuds additionnels (contrôle booléen : bouton stop par exemple) et reliez-les.
Pour un signal assez bruité l’on pourrait avoir envie, par exemple, d’afficher une moyenne des valeurs.
Pour ce faire il est possible d’utiliser un registre à décalage.
Un registre à décalage prend des données du côté droit et les reporte du côté gauche à l’itération suivante :
Création : clic droit sur un des bords de la boucle >> « Ajouter un registre à décalage »
Attention !! L’initialisation du registre à décalage est importante pour éviter les erreurs !
Commandes >> Toutes les commandes >> Graphes
Techniques de connexion dans les graphiques
Exercice 2 – Utilisation d’une boucle
Créer un VI qui génère un nombre aléatoire avec un temps d’attente que l’utilisateur peut modifier.
L’arrêt du programme se fait à l’aide du bouton stop de la face avant.
Exercice 2 – Utilisation d’une boucle
Exemples de solutions possible
Action mécanique booléenne
Pour les contrôles booléen nous avons la possibilité de paramétrer l’action mécanique sur ceux-ci : “commutation jusqu’au relâchement”, “commutation à l’appui”, “armement à l’appui”…
Partie V – Tableaux et fichiers
• Un tableau : Qu’est-ce que c’est ?
• Construire un tableau manuellement.
• Construction automatique de tableaux.
• Écrire dans un tableau.
• Lire à partir d’un tableau.
Un tableau,…mais pour faire quoi ?
Les tableaux combinent des données du même type dans une structure de données.
Les tableaux sont utiles, par exemple, pour stocker des données générées, la plupart du temps, dans des boucles lors de chaque itération.
Il est possible de construire des tableaux de données numériques, de booléens, de chemins, de clusters, de chaînes de caractères,…
Il ne cependant pas possible de créer des tableaux de tableaux.
Philosophie d’un tableau
Exemple de tableau.
Chaque éléments d’un tableau est accessible par son indice.
Ainsi la valeur (l’élément) « 0,658384 » est à l’indice 0. L’élément « 0,659422 » est à l’indice 3,
A partir de la palette Commandes >> Toutes les commandes >> Tableau et Cluster, sélectionnez Tableau.
Tableau de commandes ou d’indicateurs.
A partir de la palette Fonctions >> Toutes les fonctions >> Tableau, sélectionnez Tableau.
Placez un objet dans le tableau (un contrôle, une constante numérique, une chaîne de caractères, un booléen,…).
Tableau de Tableau de constantes contrôles
Possibilité de créer un tableau 1D sous forme d’une ligne ou d’une colonne suivant les besoins de l’application.
er un tableau 1D avec une boucle
Indexation activée
Dernière valeur
générée
uniquement
Notion d’indexation
er un tableau 2D avec deux boucles
Un tableau 2D est caractérisé par la présence de 2 indices (1 pour la ligne et 1 pour la colonne).
er des tableaux 2D manuellement
Tableau en entrée d’une boucle For
Terminal (N) de décompte
Terminal (i) d’itérations
Si l’indexation automatique est activée pour un tableau câblé en entrée d’une boucle For, le terminal (N) de décompte s’adapte automatiquement à la taille du tableau. La boucle For s’exécute alors un nombre de fois égal au nombre d’éléments du tableau.
Tableau en entrée d’une boucle For
Si deux tableaux sont connectés en entrée de la boucle ainsi que le terminal de décompte (N), alors la boucle effectuera un nombre d’itérations égal au plus petit nombre disponible.
Dans l’exemple ci-dessus, le premier tableau a 7 éléments, le second en a 4 et la valeur 6 est câblée à N. Donc la boucle For ne s’exécute que 4 fois.
Fichiers
Fichiers – passer des données vers et depuis des fichiers.
- Les fichiers peuvent être des éléments binaires, du texte, ou des tableaux.
- Écrire / lire le fichier LabVIEW Measurements (*.lvm) à l’aide de VI Express.
Écrire dans un fichier *.lvm Lire un fichier *.lvm
Écrire dans un fichier LabVIEW Measurement
• Inclut les fonctions ouvrir, écrire, fermer et gérer les erreurs.
• Gère le formatage des chaînes avec soit une tabulation soit une virgule comme délimiteur.
• La fonction “Fusionner les signaux” sert à combiner des données dans un type de données dynamiques.
Exercice 3 – Analyser et stocker des données
Créer un VI qui génère un nombre aléatoire toute les secondes.
Calculer la moyenne, la valeur min et max et sauvegarder les données dans un fichier.
Exercice 3 – Analyser et stocker des données
Exemples de solutions possible
Partie VI – Fonctions des tableaux et graphiques
• Les fonctions de base d’un tableau.
• Utiliser les graphiques.
• Créer plusieurs courbes dans les graphiques.
Les fonctions d’un tableau – les bases
Commandes >> Toutes les commandes >> Tableau et cluster >> Tableau
Les fonctions du tableau – les bases
Les graphiques
Sélectionner depuis la palette Commandes, la sous palette « Graphe » :
Commandes >> Toutes les commandes >> Graphe
Graphe déroulant – Trace les données en continu, en plaçant les anciennes données sur la gauche et les nouvelles à droite. Les anciennes données disparaissent au fur et à mesure que de nouvelles arrivent.
Graphe – Trace un tableau de nombres en fonction de leurs indices.
Graphe XY (Express) – Trace un seul tableau en fonction de deux autres tableaux.
Graphe numérique – Trace des bits depuis des données binaires.
Les graphiques
Faire un clic droit sur le graphique et sélectionner “propriétés” pour personnaliser l’affichage (échelle, couleurs, curseurs,…).
Exemples : graphe numérique
L’utilisation des clusters sera abordée dans la partie VII
Graphe numérique
Exemples : graphe XY
Graphe XY
Exercice 4 – Utilisation de graphiques
Générer un VI qui simule un signal sinusoïdal et un signal carré dont on peut modifier la fréquence et l’amplitude ainsi que le rapport cyclique (pour le signal carré).
Afficher les deux courbes sur le même graphe.
Exercice 4 – Utilisation de graphiques
Exemple de solution possible
Partie VII – Chaînes de caractères, clusters et traitement d’erreurs
• Chaînes de caractères.
• Fonctions de chaînes.
• Création de clusters (groupe / agrégat).
• Fonctions des clusters.
• Cluster d’erreur.
• Récapitulatif sur les types de connexions.
Les chaînes de caractères sont représentés en rose.
• Une chaîne de caractères est une séquence de caractères (ASCII).
• Utilisations possibles : affichage de messages (boîte de dialogue), communications avec des instruments, fichiers d’entrée/sortie,…
• Les contrôles ou indicateurs de chaînes sont dans le menu : Commandes >> Commandes Texte ou Indicateur Texte
Différents modes d’affichage des chaînes de caractères sont disponibles.
permettant la chaînes :
Dans certains cas (par exemple, pour communiquer avec un instrument par l’intermédiaire du port série) il est nécessaire d’avoir comme séparateur décimal un point et non une virgule. Il faut donc ajouter le format %.;
- Balayer une chaîne
- Sous-ensemble d’une chaîne
Clusters
• Structures qui regroupent plusieurs données.
• Les données peuvent être de différents types.
• Les éléments doivent tous être, soit des contrôles, soit des indicateurs.
• Cela est similaire au câblage de fils dans une même gaine :
facilite la gestion du programme.
Créer un cluster
1. Sélectionner un modèle de cluster :
Commandes >> Toutes les commandes >> Tableau et
Cluster ou Fonctions >> Toutes les fonctions >> Cluster
La palette Clusters
• Dans le sous-menu Clusters de la palette Fonctions >> Toutes les fonctions.
• Également accessible par clic droit sur un terminal de cluster dans la fenêtre diagramme.
Assembler
Étiquette
Assembler par nom
Type de données
Désassembler
Étiquette
Désassembler par nom
Clusters d’erreurs
• Un cluster d’erreur permet la visualisation d’un problème lors de l’exécution d’un VI.
• Un cluster d’erreur contient les informations suivantes :
– État rapporte si une erreur se produit (valeur booléenne).
– Code rapporte le code spécifique de l’erreur (Entier 32 bits).
– Source donne des informations sur l’erreur (Chaîne de caractères).
Exemple :
Pas d’erreur Erreur
Techniques de manipulations d’erreurs
• L’information d’erreur est passée d’un sous VI au suivant.
• Si une erreur se produit dans un sous VI, tous les sous VI suivants ne sont pas exécutés de la façon habituelle.
• Gestion d’erreur automatique.
Types de connexions
Numériques Scalaire Tableau 1D
Réels
Entiers
Booléen
Chaîne de caractères
Données Dynamiques
Exercice 5 – Utilisation de clusters et de graphiques
Générer un VI qui simule le déplacement d’un pointeur laser sur une photodiode 4 quadrants.
On simulera dans un premier temps un
« déplacement continu » du pointeur puis un « déplacement discret ».
Exercice 5 – Utilisation de clusters et de graphiques
Exemple de solution possible
« Déplacement discret »
« Déplacement continu »
Partie VIII – Structures Condition et Séquence, Boîte de calcul
• Fonctionnement de la structure Condition et de la structure Séquence.
• Mise en œuvre d’une boîte de calcul et du VI Express « Formule ».
Condition
Dans la sous palette Structures de la palette de Fonctions.
Uniquement un seul cas est visible à la fois.
Sélecteur : Vrai, faux, peutêtre, peut-être pas,…
Sélecteur : 0, 1, 2,… Sélecteur :
Vrai ou Faux
Condition pour la gestion d’erreurs
Lorsque que l’on câble un cluster d’erreur sur le terminal de sélection d’une structure condition, celle-ci affiche 2 conditions : « Pas d’erreur » (en vert) et « Erreur » (en rouge).
La structure Condition ne reconnaît que la valeur booléenne « état » du cluster d’erreur.
Séquence déroulée ou empilée
• Palette Fonctions et sous palette Structure.
• Exécute le diagramme de façon séquentielle.
• Clic droit sur la structure pour ajouter une nouvelle étape.
Boîte de calcul
• Dans la sous-palette Structures.
• Implémenter des équations compliquées.
• Les variables sont créées sur le bord.
• Chaque énoncé doit se terminer par un point virgule (;)
• La fenêtre d’aide contextuelle montre des fonctions disponibles. 2
Avantage de la boîte de calcul (à droite) : rapidité d’exécution du code par rapport à l’utilisation des fonctions de base (à gauche).
Utilisation d’une interface de calculatrice où sont présentes la plupart des fonctions d’une calculatrice scientifique classique.
condition
Générer un VI qui permet de visualiser une erreur lorsque l’on essaye de calculer la racine carré d’un nombre négatif.
condition
Exemple de solution possible
condition
Exemple de solution possible
condition
Alternative possible pour signaler l’erreur
à ce programme pour que celui-ci fonctionne en continu et que l’on rentre une valeur négative ?
Exercice 6 Cluster, manipulation d’erreurs et structure condition
Complément
Le programme fonctionne en continu grâce à la boucle While. Celleci s’arrête dès que l’on appui sur le bouton Stop où dès que l’on rentre une valeur négative dans la commande « Numérique ».
Générer un VI qui permet de
Un corps noir est un radiateur tracer la luminance spectrique du thermique qui absorbe toutes les corps noir pour une température
radiations électromagnétiques incidentes.
donnée.
Loi de Planck
Vitesse de la lumière dans le vide
c = 299 792 458 m.s-1
Constante de Planck
h = 6,626 069 3 . 10-34 J.s
Constante de Boltzmann
k = 1,380 650 5 . 10-23 J.K-1
Allure du spectre d’une lampe halogène à filament
de tungstène dans le visible
(380 – 780 nm)
Exemple de solution possible
Le rayonnement du corps noir ne commence à se voir qu’au delà de 600°C (rouge sombre) d’où le choix de l’expression « corps noir » puisqu’à température ambiante (300 K) les corps naturels émettent dans l’Infrarouge (IR).
Partie IX – Variables
• Variables locales.
• Variables locales de séquence.
• Variables globales.
Une variable locale n’est visible que dans un seul VI.
Variables locales de séquence
Ce type de variable s’utilise avec les structures Séquences empilées. Elle permet de faire passer des
Variables globales
Générer un VI qui permet de donner le temps (en ms) entre deux appuis de boutons.
On utilisera une structure séquence empilée avec, soit des variables locales, soit des variables locales de séquences ainsi que la fonction suivante :
Exemple de solution possible
Exemple de solution possible
Partie X – Tables et nœuds de propriété
• Tables.
• Nœuds de propriété.
• Enregistrement dans un fichier Excel.
faut
Les nœuds de propriété permettent d’avoir accès à certains éléments d’un objet en lecture ou en écriture.
Objectif : on souhaite remplir une table et l’enregistrer dans un fichier Excel.
Étape 2 : Sauvegarde des données dans un fichier Excel
Étape 2 : Sauvegarde des données dans un fichier Excel
– exemple - résultats
au format .xls
– exemple - résultats
Lorsque l’on essaye de réécrire par dessus un fichier déjà présent, une boîte de dialogue nous invitant à changer de nom de fichier apparaît.
Partie XI – Impression et documentation
• Imprimer depuis l’onglet « imprimer » de la barre des menus.
• Générer un rapport pré-formaté.
• Documentation sur les VI.
• Ajouter des commentaires dans la face avant et le diagramme.
Impression
Fichier » Imprimer
Différentes options d’impression sont disponibles
– Icône, description du VI, face avant, diagramme, hiérarchie des
VI, sous VI, historique des VI…
– Impression du panneau VI (impressions programmables de la face avant)
Impression personnalisée
Générer un rapport (Palette de Fonctions » Sortie » Rapport)
En double cliquant sur le VI Express nous avons la possibilité de paramétrer le formatage du rapport.
Génération des signaux Génération du rapport
Documentation sur les VI
• Fichier » Propriétés du VI » Documentation
– Fournit une description et une aide à propos du VI.
– A compléter par le développeur pour de nouveaux VI.
• Fichier » Propriétés du VI » Historique
– Enregistre les changements des différentes versions d’un VI.
Documentation sur les VI
Exemple du VI précédent documenté par deux types de commentaires :
Commentaires pour expliciter les données qui transitent sur chacun des fils
Ne pas oublier de mettre les étiquettes sur les fonctions que vous utilisez et de nommer explicitement vos commandes et vos indicateurs !
Partie XII – Architectures de programmation
• L’architecture simple du VI.
• L’architecture générale du VI.
• L’architecture de type « machine d’états » (simple et complexe).
architecture simple du VI
Le VI fonctionnel présente des résultats probants
– Pas d’option marche/arrêt.
– Convient pour des tests très simples, de petits calculs,…
Exemple :
architecture générale du VI
Trois étapes principales : – Initialisation
– Application principale
– Fermeture
Exemple pour l’acquisition continue d’une image :
Initialisation Application principale Fermeture
architecture de machine d’états (simple)
• Avantages
– Possibilité de changer d’état.
– Modification et débogage facile.
• Inconvénients
– Pertes possibles d’événements s’il y en a deux qui arrivent en même temps.
Les états :
0 : Démarrage
1 : Attente (timeout)
2 : Événement 1
3 : Événement 2
4 : Arrêt
Dans chaque trame de la structure « Condition » correspondant à un état donné, on détermine l’état suivant.
Gestion d’évènements sur l’interface utilisateur : Utilisation de la boucle évènementielle, de la structure condition et de listes d’attente.
Dans un premier temps nous allons étudier la face avant de ce programme qui repose sur une architecture de type « machine d’états » pour en comprendre le fonctionnement général ainsi que les différentes fonctionnalités.
Nous étudierons ensuite en détail le diagramme de ce programme.
Onglet : « Fonctions »
Onglet : « Image »
Affiche (à gauche) une image à partir d’un chemin spécifié.
Affiche (à droite) un masque de l’image de gauche. Celui-ci peut être en couleur ou en noir et blanc.
Onglet : « Météo »
Affiche (à gauche) diverses informations (date d’acquisition, température, humidité, pression,…) lorsque l’on appui sur le bouton « Lecture des paramètres météo ».
Onglet : « Enregistement de données »
Permet l’acquisition de données, la suppression d’une ligne, l’effacement du tableau et l’enregistrement des données dans un fichier excel.
Cette présentation des différents onglets de la face avant de ce VI ont permis d’avoir un aperçu général des fonctionnalités de ce programme.
Il faut également voir, que celui-ci fonctionne en continu (grâce à une boucle While) et qu’il est possible de commencer, par exemple, par une lecture des paramètres météo, ensuite d’acquérir des données et de les enregistrer, puis, pourquoi pas de réaliser un masque d’une image.
Dans ce type d’architecture il n’y a aucune notion de « séquençage » ce qui laisse une liberté totale de paramétrage de la face avant.
Partie XIII - Panneaux de contrôle à distance
Visualisation et contrôle de la face avant d’un programme LabVIEW, à partir d’un navigateur Web (Internet Explorer, Firefox,…).
- Les clients éloignés observent directement les changements et mises à jours des programmes LabVIEW grâce au serveur Web disponible dans labVIEW.
- Plusieurs clients peuvent regarder la même face avant simultanément.
- Un seul client à la fois peut contrôler la face avant à distance.
Outil de publication de face avant sur le Web
• Outils » Outil de publication pour le Web
• Cliquez sur « Enregistrer sur disque » et le VI est encapsulé dans un fichier HTML.
• Une fois sauvegardé, le fichier peut être ouvert à nouveau et personnalisé dans tout éditeur HTML.
Ne pas oublier d’activer le serveur web pour permettre au(x) client(s) d’accéder aux données.
Outil de publication de face avant sur le Web
N’importe qui peut à partir d’Internet visualiser en temps réel le VI et le contrôler s’il en a, au préalable, été autorisé.
L’installation de LabVIEW sur la machine distante n’est pas nécessaire.
Application fonctionnant sur le PC où est installé LabVIEW
Panneau de contrôle à distance - Ressources
NI Developer Zone
()
- Recherche de panneaux de contrôle à distance.
)
- Téléchargement de Tutoriaux et Instructions.
- Support sur l’incorporation de Webcams dans les panneaux de contrôle à distance.
Partie XIV – Contrôle d’instruments
• Communication par liaison GPIB.
Présentation et caractéristiques techniques.
Measurement and Automation Explorer (MAX) : Outils de test.
Fonctions de base pour la mise en œuvre du bus.
Utilisation de VI type.
• Communication par liaison Série.
Présentation et caractéristiques techniques.
Fonctions de base pour la mise en œuvre du bus.
Utilisation des exemples disponibles.
• Drivers d’instruments.
Introduction
Dans le cas de communications par liaisons GPIB ou Série, l’acquisition de données se fait par l’intermédiaire d’un instrument autonome (multimètre, oscilloscope,…) au sein duquel sont effectuées les opérations d’entrées/sorties des signaux mesurés.
Le programme développé sert uniquement à la configuration de l’instrument, à la récupération, l’analyse et la présentation des données.
Introduction
La liaison GPIB (General Purpose Interface Bus) appelée aussi IEEE 488 (IEEE : Institute of Electrical and Electronics Engineers) est devenue depuis son apparition en 1965 (crée par Hewlett-Packard) un standard de communication qui permet aujourd’hui de contrôler la plupart des instruments de mesures (oscilloscopes, multimètres, générateurs de fonctions, …).
La première normalisation de ce bus date de 1987 sous la référence IEEE 488.1. Une deuxième normalisation de ce bus est intervenue en 1992 avec la référence IEEE 488.2 pour préciser la précédente qui était incomplète, et ceci en précisant le protocole de communication, en définissant les formats de données, En 1990, le document “Standard Commands for Programmable Instrumentation (SCPI)” a été incorporé à la norme. Celui-ci définit un certain nombre de commandes auxquelles chaque instrument doit pouvoir obéir. Cela permet ainsi une interopérabilité de matériels de différents fabricants.
Connecteur GPIB
Caractéristiques techniques
- La liaison GPIB est une liaison parallèle sur 8 bits.
- Interconnexion de 15 appareils maximum : chaque appareil possède une adresse comprise entre 0 et 30.
- Vitesse de transfert maximum : 1 Mo/s.
- Longueur de câble de 4 m au maximum entre 2 appareils.
- Longueur totale de câble de 20 m au maximum.
- Au minimum les 2/3 des instruments doivent être sous tension.
Measurement and Automation Explorer (MAX)
Réponses des instruments à la commande « IDN? »
Measurement and Automation Explorer
(MAX) Clic sur un instrument : par exemple « Instrument0 »
– VI type
- Fonctions de base dans labVIEW
Série Introduction
Bien que progressivement délaissée pour l’USB (Universal Serial Bus), la liaison Série (RS 232, RS 449, RS 422, RS 423, RS 485) est un moyen de communication, encore aujourd’hui, répandu pour la transmission de données entre un ordinateur et un périphérique (imprimante, instrument de mesure programmable,…)
La liaison Série est une liaison asynchrone c’est-à-dire qu’elle ne transmet pas de signal d’horloge. Il n’y a donc aucune synchronisation entre l’émetteur et le récepteur. Pour que le récepteur puisse interpréter convenablement l’information du transmetteur, il faut que les deux éléments soient configurés de la même façon.
Il faut spécifier 4 paramètres pour ce type de communication : le débit de transmission en bauds, le nombre de bits de données, la polarité du bit de parité (paire ou impaire), le nombre de bits de stop (1, 1,5 ou 2).
Port Série
Série Caractéristiques techniques
Voici le format type d’une trame envoyée par le port série :
Bit de B0 1 2 3 4 5 6 Bit de Bit de
Start B B B B B B Parité Stop
Niveau haut
Niveau bas
- Un bit de start qui indique qu’une information va être envoyée. Il permet la synchronisation du récepteur.
- 7 ou 8 bit de données (B0 à B6 (ou B7) avec B0 le bit de poids faible (LSB) et B6 le bit de poids fort (MSB)).
- Un bit de parité qui permet de détecter les éventuelles erreurs de transmission.
- Un bit de stop. Après la transmission la ligne est positionnée au repos pendant X périodes d’horloges du récepteur.
Série Fonctions de base dans labVIEW
VISA : Virtual Instrument Software Architecture
Exemples de VI
Drivers d’instruments
Les drivers d’instruments sont des bibliothèques de VI qui permettent de contrôler un instrument programmable.
Accessible sur le site de NI à l’adresse suivante :
Ou par labVIEW à partir de l’arborescence suivante : « Outils > Instrumentation > Base de drivers d’instruments ».
Exemple : Multimètre KEITHLEY modèle 2002 :
Partie XV - Module Vision
• NI Vision Assistant.
• Acquisition d’une SEULE image avec une webcam par USB.
• Acquisition continue d’images avec une webcam par USB.
NI Vision Assistant
Vision Assistant permet de paramétrer la caméra utilisée, de procéder à l’acquisition d’images ou de séquences d’images, permet de procéder à une multitude de traitement d’images et permet de générer automatiquement et facilement
un code LabVIEW opérationnel.
Acquisition
Acquisition
images
Paramétrage
Réglage des paramètres vidéo
Ces paramètres sont intrinsèques à la caméra utilisée. Ils seront différents pour d’autres types de caméras. Réglage des paramètres liés aux images
Traitement d’images
Traitement d’images
– Génération automatique de code
– Génération automatique de code
Programme LabVIEW de détection de bord de trait et de calcul de centre généré automatiquement.
Outils de visualisation
Acquisition d’une SEULE image
Webcam
Acquisition CONTINUE d’images
Partie XVI – Exercices d’applications
• Création d’une mire sans les outils vision.
- Création d’un motif.
- Création d’une ligne de motifs.
- Création d’une mire de motifs identiques.
• Création d’une mire avec les outils vision.
• Ouverture d’une image.
• Création d’un masque sur une image.
• Calibrage d’une image.
• 1èreétape : Création d’un motif unique dont les coordonnées des deux coins indiqués sont entrées dans un tableau (x1, y1, x2, y2).
x1 y1 y1
x2 y2 y2
Réaliser un VI qui permet de visualiser l’affichage d’un motif sur un fond noir.
Pour ce faire nous utiliserons des graphiques d’intensité ainsi que les VI suivants (voir diapo suivante).
Nous utiliserons les VI standards suivants :
Aide contextuelle
Exemple de solution possible
• 2èmeétape : Création d’une ligne de motifs identiques. Pour cela nous allons décomposer le problème en créant un sous VI qui génère un seul motif puis l’utiliser dans une boucle For au sein d’un VI principal pour la création d’une ligne.
Création du sous VI
Création d’une icône facilement reconnaissable
sans
Exemple de solution possible
Réaliser un VI qui permet de visualiser l’affichage d’une ligne de motifs identiques sur un fond bleu.
Exemple de solution possible
• 3èmeétape : Création d’une mire de motifs identiques. Pour cela nous allons utiliser deux boucles For pour la création des lignes et des colonnes.
Réaliser un VI qui permet de visualiser l’affichage d’une mire de motifs identiques sur un fond noir.
Exemple de solution possible
avec
• 1èreétape : Création de la variable image (à l’aide du VI standard « IMAQ Create ») et d’un motif unique.
avec
Réaliser un VI qui permet de visualiser l’affichage d’un motif ovale sur un fond noir dans deux modes de visualisation différents.
Pour ce faire nous utiliserons les VI standards suivants :
Exemple de solution possible
Exemple de solution possible
• 2èmeétape : Création d’une ligne de motifs identiques.
Étapes du programmes :
- Créer un fond noir de 100 x 100 pixels par exemple.
- Calculer le nombre de motifs par ligne.
- Répéter l’inscription d’un motif à chaque tour.
- La position du motif est incrémentée à chaque tour en incrémentant les éléments (x1, x2) du tableau de position du motif et en remplaçant l’ancien tableau de position par le nouveau.
Réaliser un VI qui permet de visualiser l’affichage d’une ligne de motifs ovales sur un fond noir.
Exemple de solution possible
• 3èmeétape : Création d’une mire de motifs identiques. Pour cela nous allons utiliser deux boucles For pour la création des lignes et des colonnes.
Réaliser un VI qui permet de visualiser l’affichage d’une mire de motifs identiques sur un fond noir.
Ouverture d’une image
Réaliser un programme qui ouvre et affiche un fichier image dans une fenêtre externe.
On utilisera entre autre les VI Standards suivants :
Ouverture d’une image
Exemple de solution possible
(Version noir et blanc)
Réaliser un programme qui permet de créer un masque sur une image donnée en noir et blanc.
Masque crée
Sélection de la zone de
l’image à garder Image masquée
On utilisera entre autre les VI Standards suivants :
Exemple de solution possible
Réaliser un programme qui permet de créer un
(Version couleur) masque sur une image donnée en couleur.
Exemple de solution possible
Calibrage d’une image
Réaliser un programme qui permet de créer le calibrage d’une image déformée.
Calibrage d’une image
Exemple de solution possible
Partie XVII – Développements d’application temps réel
• Qu’est-ce que le temps réel ?
• Terminologie, principe de développement.
• Architecture.
• Exemples d’applications, cibles.
Qu’est-ce que le temps réel ?
En informatique industrielle, on parle d'un système temps réel lorsque ce système informatique contrôle (ou pilote) un procédé physique à une vitesse adaptée à l'évolution du procédé contrôlé.
Le temps réel ne signifie pas forcément rapide.
Le temps réel garantit une fiabilité absolue car les systèmes temps réel ont des contraintes temporelles qui doivent être atteintes sans aucun échec : on dit que le système est déterministe.
Terminologie temps réel
Déterminisme : caractéristique d’un système qui indique son niveau de fiabilité à répondre à un événement ou à effectuer une tâche dans un délai imparti.
Temps de boucle : temps pris pour exécuter un cycle de boucle.
Jitter : variation du temps de boucle réel par rapport au temps de boucle souhaité.
Embarqué : caractérise un système autonome (pas de clavier, ni de souris, ni d’écran,…).
Principe de développement temps réel
1. Développer sur un ordinateur hôte.
Ordinateur hôte
2. Télécharger le code sur une cible.
Principe de développement temps réel
Développer des programmes avec le lego Mindstorms et vous ferez du temps réel.
Architecture typique
Cible RT (Real-Time) PC hôte
Boucle de l’application (déterministe) Priorité temps critique | Boucle de communication (non déterministe) Priorité normale | Application cliente | |||||
Programme du PC hôte
Exécuté sur le PC hôte.
Pas nécessaire.
Gère les tâches non déterministes :
- Communication avec le programme cible : envoi des paramètres de l’interface utilisateur et récupération des données
- Enregistrement et analyse des données
- Emission des données vers d’autres systèmes
Programme de la cible
Les tâches de priorité plus élevée gardent la main sur les tâches de priorité moins importante.
Les tâches qui nécessitent d’être déterministes sont des tâches dites “temps critique”. Toutes les autres auront une priorité moins importante.
Le “multithreading” permet de donner la priorité à une tâche en particulier.
Qu’est que le multithread ?
Extension du principe de multitâche.
- Multitâche : capacité du système d’exploitation à basculer entre différentes tâches.
- Une tâche est généralement une application à part entière telle que LabVIEW.
Le multithread étend le principe au sein même d’une application.
- Des opérations spécifiques au sein d’une même application peuvent être réparties chacune dans un thread spécifique.
- Le temps processeur peut être réparti sur les threads.
- Capacité à avoir des niveaux de priorité.
Exemples d’applications temps réel
Performances déterministes
Autonomie
Gestion d’un airbag
Fiabilité des performances
Tests de résistance et d’endurance
Exemples de cibles temps réel avec LabVIEW
PC de bureau ou industriel
Déterminisme pour les systèmes PCI
Contrôleurs PXI embarqués RT
Haute vitesse, haute densité d’E/S multiples
CompactRIO Compact Vision
E/S reconfigurables, Automate de vision industrielle
Compact FieldPoint RT environnement durcis
Encombrement réduit, environnement durcis
Partie XVIII – DataSocket
• Qu’est ce que DataSocket ?
• Protocole de transfert DataSocket.
• Fonctions DataSocket.
• Exemple : labVIEW Messenger
Qu’est que DataSocket ?
DataSocket est une bibliothèque de fonctions qui permet d’échanger des données entre différentes applications sur un même ordinateur ou entre différents ordinateurs connectés sur un même réseau.
Les données sont publiées sur un serveur DataSocket, puis le client contacte le serveur DataSocket et lui demande la récupération des données.
Protocole de transfert DataSocket
DataSocket Transfer Protocol (DSTP) peut être utilisé dans une URL (Uniform Resource
Locator), autrement dit une adresse, de la même façon que l’on utilise HTTP pour les pages web.
dstp://163.173.45.98/temperature
Protocole Adresse IP de la machine Nom de la donnée qui publie les données
Partie XIX – Sujets complémentaires
• Communications TCP/IP.
• Module de développement pour PDA.
• Programmation de FPGA,…
Pour aller plus loin…
• Exemples de programmes (Aide » Recherche d’exemples…)
• Quelques ressources supplémentaires sur Internet :
– Site web de National Instruments ()
– Zone Développeur NI () : forum de discussion
– Notes d’Application
– Info-LabVIEW newsgroup ()
– Bibliothèque des drivers d’instruments : VI qui contrôlent un instrument programmable ()
Nicolas POUSSET
Optronic Engineer - PhD Student - Teacher
Institut National de Métrologie (LNE-INM)
Conservatoire national des arts et métiers (Cnam)
61 Rue du Landy
93210 La Plaine - Saint Denis
France
tèl. (office) : +33 (0)1.58.80.89.03 tèl. (labo) : +33 (0)1.58.80.46.34 tèl. (mobile) : +33 (0)6.76.82.04.35 fax : +33 (0)1.58.80.89.00 e-mail :
Group website :
Perso website :