Vous êtes sur la page 1sur 152

Cours

Programmation
LabVIEW

Amdouni Rim 1
Intro LabVIEW - 1ère partie
Chapitre 1
Introduction au LabVIEW

Chapitre 2
Création d’un programme

Chapitre 3
Les boucles

Chapitre 4
Les tableaux

2
Chapter 1 :
Introduction au LabVIEW et
outils de programmation
1. Introduction
2. Notion d’Instrument Virtuel VI
3. Palettes d’Outils, de Contrôles et de Fonctions
4. Types des données
5. Outils d’aide en LabVIEW
6. Révision

3
Introduction

• Le langage de programmation Labview (Laboratory Virtual


Instrument Engineering Workbench)
• Un environnement de programmation à caractère universel
bien adapté pour la mesure, les tests, l’instrumentation et
l’automatisation
• Un langage de programmation graphique qui utilise des
icônes, au lieu des lignes de textes utilisées en C par exemple
• LabVIEW utilise la programmation par flux de données.
 C’est ce flux de données qui déterminera l’ordre d’exécution
du programme.
4
Introduction

 Programmation G
• Orienté instrumentation et les bancs d’essais
• un système très ouvert qui permet l’intégration aisée de
composants de régulation, commandes d’axes, visionique,
entrées-sorties déportées, serveurs pour automatisation
industrielle.
• En raison de leur parenté avec les instruments réels, les
programmes écrits en G sont appelés VIs (pour Virtual
Instruments : Instruments Virtuels).
• Les VIs peuvent être assemblés entre eux pour produire des
applications complexes et modulaires, ce sont alors des sous-
VIs composant le VI de l'application.
5
Introduction
LabVIEW est un outils d’acquisition,
d’analyse et de présenta tion de données.

6
LabVIEW permet l’acquisition de
données par l’intermédiaire de
diverses connectiques :
•PCI (Peripheral Component Interconnect) •USB (Universal Serial Bus)
• CompactFlash •GPIB (IEEE 488) (General
• LAN (Local Area Network) Purpose Interface Bus)
• PXI (PCI eXtensions for Instrumentation) • Firewire (IEEE 1394)
•PCMCIA (Personal Computer Memory • Ethernet
Card International Association) •Série (RS 232, RS 449, RS
•Wi-Fi (IEEE 802.11b/ g/ n) (Wireless 422, RS 423, RS 485)
Fidelity) •VXI (VME eXtensions for
• Bluetooth Instrumentation)
• IrDA (Infrared Data Association)

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

8
Acquisition avec LabVIEW
LabVIEW permet l’acquisition de
données par l’intermédiaire de
diverses connectiques :
•PCI (Peripheral Component Interconnect) •USB (Universal Serial Bus)
• CompactFlash •GPIB (IEEE 488) (General
• LAN (Local Area Network) Purpose Interface Bus)
• PXI (PCI eXtensions for Instrumentation) • Firewire (IEEE 1394)
•PCMCIA (Personal Computer Memory • Ethernet
Card International Association) •Série (RS 232, RS 449, RS
•Wi-Fi (IEEE 802.11b/ g/ n) (Wireless 422, RS 423, RS 485)
Fidelity) •VXI (VME eXtensions for
• Bluetooth Instrumentation)
• IrDA (Infrared Data Association)

9
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,…
10
• Environnement de
programmation
graphique de chez
National Instruments
• Programmation
indépendante du
système d’exploitation
utilisé
• Compatibilité multi-
plates-formes et
migration possible des
applications
• Programmation
graphique par flux de
données (Dataflow)

11
Programmation graphique

Facile à programmer
 Temps de développement réduit
 Interface utilisateur graphique
 Code source sous forme graphique
 Programme facilement modulable
 Application Builder pour créer des exécutables

12
Compatibilité Multi-Plateformes

 Programmation indépendante
de la plateforme utilisée !

 Migration possible des


applications entre plateformes

13
Cibles matérielles LabVIEW

14
Structure d’un Programme LABVIEW
LabVIEW étant plus particulièrement destiné à l’instrumentation, un programme
LabVIEW apparaît constitué comme un appareil de mesure :

15
Notion d’Instrument Virtuel VI
Interface LABVIEW
Interface d’accueil de LABVIEW

Ouvrir un VI vide ou
un projet vide

Ouvrir un
ancien VI

Se connecter vers
des formations ou
des forums de
discussion
16
Face Avant & Diagramme
Icon/Connector Pane
Un programme LabVIEW est appelé VI (Virtual Instrument) et formé de :

• Front Panel
Window (Face
Avant)
- Controls = Entrées
- Indicators = Sorties

• Block Diagram Window


(Diagramme)
- Terminaux
- Sous-VI, Express-VI
- Fonctions
- Boucles de contrôle
- Fils de connexion
- Nœuds, etc.

17
Icône/Connecteur

• L’ icône represente un VI dans un


autre ‘block diagrams’
icon

terminals
•Le connecteur permet de passer et de
recevoir des données d’un “sous-VI” au
connector moyen de terminaux.

18
Notion d’Instrument Virtuel VI
• Un programme LabVIEW est appelé VI
(Virtual Instrument) et formé de :

• Front Panel Window (Face Avant)


- Controls = Entrées
- Indicators = Sorties

• Block Diagram Window (Diagramme)


- Terminaux
- Sous-VI, Express-VI
- Fonctions
- Boucles de contrôle
- Fils de connexion
- Nœuds, etc.

19
1. Terminal de contrôle
2. Fonction Timing
3. Boucle For
4. Opérateur Math
5. Fils de connexion
4 5 6. Terminal du Graphe

1 2 3 4 5 6

1 2 3

1. Contrôle Numérique
2. Indicateur Graphe
3. Contrôle Bouton
4. Panneau de connexion
5. Icône
20
1 4
5 6 7 8
2
3 9
1. Exécution
2. Exécution en continu 10
3. Arrêt
4. Pause
5. Menu déroulant de polices de caractères
6. Menus déroulants d’alignement, de distribution, de taille et de réorganisation
7. Utilitaire de recherche
8. Aide contextuelle LabVIEW
9. Panneau de connexion
10. Icône
21
1 4 6

2 3 5

1. Exécution animée
2. Accès à la valeur en cours
3. Entrée de mode d’exécution Pas-à-Pas
4. Saut de nœuds en exécution Pas-à-Pas
5. Sortie de mode d’exécution Pas-à-Pas
6. Bouton de nettoyage du diagramme

22
Notion d’un Projet LabVIEW :

 Un fichier (*.lvproj) permettant de


regrouper un ensemble des fichiers
différents (LabVIEW et autres)
 Indispensable pour la compilation des
applications, le partage des
bibliothèques, l’exécution temps réel
(RT) et sur FPGA, le téléchargement
des programmes vers des cibles NI
(Target), etc.
 Créé et édité à l’aide de l’Explorateur
de Projet (Project Explorer Window)
 Accessible via File→New Project ou
Project→New Project ou Empty
Project dans l’utilitaire File→New
23
Par défaut, un explorateur de projet contient les éléments suivants :
1. Standard Toolbar 1 2 3 4
2. Projet Toolbar
3. Build Toolbar
4. Source Control
Toolbar
5. Project Root
6. Target
7. Dependencies
8. Build Specifications 5

24
Palette de Contrôles

• Palettes flottantes
pouvant être fixées
• Accessible
uniquement dans la
Face Avant
(Front Panel)
• Ensemble des
bibliothèques et de
sous- bibliothèques
LabVIEW
• Possibilité de
sélection des
contrôles

25
Palette de Contrôle en détail

26
Palette de Fonctions

• Palettes flottantes
pouvant être fixées
• Accessible
uniquement dans la
Face Diagramme
(Block Diagram)
• Ensemble des
bibliothèques et de
sous- bibliothèques
LabVIEW
• Possibilité de
sélection des VI et
des contrôles

27
Palette de fonctions en détail

28
Palette d’Outils
1. Sélection automatique des outils 1
2. Editeur de texte
3. Outil de positionnement, de 3 2
redimensionnement et de sélection
4. Outil de saisie de valeurs 4 7
5. Outil de câblage
5
6. Menu pop-up 6
7. Outil de défilement 8
10
8. Point d’arrêt (Break-point)
9
9. Sonde de données
11
10. Copieur de couleur
11. Outil de coloriage

29
Types des données

Couleurs associées aux variables

Servent à l’acheminement des données entre terminaux vis les nœuds du V.I.
Circulation unidirectionnelle : Commande  Indicateur
Type de variable Représentation Code couleur

Booléenne Vert
Chaîne de caractère Rose

Nombre réel Orangé

Nombre entier Bleu

Épaisseur du fil  nature des données (scalaire, tableau 1D, tableau 2D)
30
Types des données
Scalaire Tableau 1D Tableau 2D

Numérique(Numeric) Orange (real)


Bleu ( integer)

Booléen (Boolean) Vert

Chaîne de caractères Rose


(String)

Enregistrement (cluster) Brun

Nom de fichier (File Path) Vert foncé

31
Types des données
Type Variables / constantes
Il y a essentiellement 4 types de variables :
 Numériques
Plusieurs représentations modifiables pour le type Numerique :

Booléens Chaînes de caractères Clusters

32
Types des données
• Les contrôles (Controls) ont des bordures plus
épaisses que les indicateurs (Indicators)
• Chaque élément possède un menu contextuel
de propriétés
• Plusieurs représentations modifiables pour le
type Numeric :
- Signed Integers : I8, I16, I32 et I64
- Unsigned Integers : U8, U16, U32 et U64
- Real Floating-Point : SGL, DBL, EXT et FXP
- Complex Floating-Point : CSG, CDB et CXT

33
34
35
Types des données
Type Variables / constantes
 Variables booléennes

N'existe pas dans tous les langages :

 OK en labVIEW mais pas en C !

36
Types des données
• Plusieurs actions mécaniques pour le
type Boolean :
- Switch when pressed
- Switch when released
- Switch until released
- Latch when pressed
- Latch when released
- Latch until released
• L’action Switch: le contrôle garde son
état jusqu’au prochain changement
• L’action Latch: le contrôle revient à son
état par défaut dès sa lecture

37
Types des données
Type de connexions : Codage
 Codage des nombres entiers : sur deux octet

38
Types des données
Type de connexions : Codage
 Codage des nombres Virgule flottante

39
Types des données
Fonctions de base
La bobine sert à connecter les
différents éléments.

40
Types des données
Fonctions de base: Astuces de connexions

41
Types des données

Programmation par flux de données

exécution parallèle

le flux de donnée détermine l'ordre d'exécution

• L’exécution du diagramme dépend du flux de données.


• 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.
42
Types des données
• Accès à la palette correspondante de chaque
type de données (Boolean Palette)
• Les éléments sont interchangeables entre eux
(Change to Indicator, Change to Constant)
• Modification possible de l’apparence d’un
élément (View As Icon)

43
Types des données
• Le type énuméré Enum est la combinaison
des types variés de données
• Un Enum représente une paire de valeurs
de type chaine de caractère et numérique

44
• Le type String (Contrôle, constant ou
indicateur) représente les chaines de
caractères (texte)

45
Types des données

Chaîne de caractères (string)

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

46
Types des données

Type Variables / constantes


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

47
Types des données
• Un VI Express est un VI dont les
paramètres peuvent être
configurés de manière interactive
à travers une boîte de dialogue.

• Les VIs Express apparaissent sur le


diagramme sous forme de nœuds
extensibles avec des icônes
entourées d’un champ bleu.

• Configurer un VI Express en
définissant des options dans la
boîte de dialogue de configuration
qui apparaît lorsque vous placez le
VI Express sur le diagramme.

48
Outils d’aide en LabVIEW

• Trois utilitaires d’aide en LabVIEW (Help)


- Show Context Help : Aide Contextuelle
- LabVIEW Help : Aide LabVIEW
- Find Examples : Recherche des exemples

• Divers outils de recherche de contrôles, de


fonctions, d’opérateurs … :
- Global Search Feature
- Search Palettes
- Quick Drop dialog box

49
• Accessible à partir du menu
Help/Show Context Help ou
du raccourcis (Point
d’interrogation)
• Possibilité d’afficher plus de
détails (Detailed Help) ainsi
que les terminaux optionnels
• Fenêtre flottante et pouvant
être verrouillée
• Les terminaux d’un VI sont :
- Optionnels (gris fin)
Accès au LabVIEW Help
- Recommandés (noir fin)
Verrouillage de la fenêtre
- Obligatoires (noir gras)
Afficher/Cacher les terminaux optionnels

50
• Accessible à
partir du menu
Help/LabVIEW
Help
• Sommaire
regroupant divers
concepts
• Utilitaire de
Recherche
directe
• Zone d’affichage
du texte détaillé
de Help

51
Mode Recherche
Mode Parcourir

Mot-clé
pour la recherche

Descriptif
Résultat du VI
de recherche

Recommandations
Recherche à propos du VI
sur Internet Liste des VI exemples
recherchés

52
3
2

1
Introduire le nom de
l’élément recherché

Aides sur l’élément


« Add »

Liste des palettes 1. Placer dans le diagramme


disposant de l’élément 2. Trouver la palette d’origine
3. Afficher le Help correspondant

53
1 3
Accès aux
Palettes de Recherche Double cliquer sur le résultat
pour accéder à l’élément dans sa palette

Introduire le nom
2
de l’élément recherché

54
1 2
L’utilitaire Quick Drop Dialog Box :
Taper le nom Placer l’objet
Recherche par nom des objets de l’objet recherché sélectionné
pour les ajouter sur le Diagramme
et/ou la Face Avant
 Accessible via View→ Quick Drop
ou en faisant <Ctrl-Espace>
 Placer l’objet sélectionné en
appuyant sur la touche <Entrée>,
double cliquer sur l’élément ou faire
un simple clique sur l’endroit voulu

55
Résumé du chapitre 1
 Les instruments virtuels (Vis) sont composés de 3 parties
principales :
- le front panel,
- le block diagram
- l’icône/connecteur
 Le front panel est l’interface utilisateur d’un programme
LabVIEW.
 Le block diagram est le code exécutable.
 Click de droite et menu contextuel pour modifier les propriétés
de chaque objet.
 Palettes flottantes :
 Palette des outils
 Palette des Contrôles (seulement dans le front panel)
 Palette de fonctions (seulement dans le Diagram)
 Possibilité d’avoir de l’aide contextuelle en ligne…(ctrl+h)
56
Révision
1. Quels sont les trois éléments d’un 3. Qui n’est disponible que sur le Block
VI : Diagram du LabVIEW
- Face Avant (Front Panel) - Contrôle
- Diagramme (Block Diagram) - Constante
- Indicateur
- Projet
- Connecteur/Icône
- Connecteur/Icône

4. Une donnée de type Numérique est


2. La palette d’Outils est accessible à
de couleur
partir de :
- Vert
- La Face Avant (Front Panel)
- Orangé
- Le diagramme (Block Diagram)
- Rose
- Les deux à la fois
- Bleu

57
Révision
1. Quels sont les trois éléments d’un 3. Qui n’est disponible que sur le Block
VI : Diagram du LabVIEW
- Face Avant (Front Panel) - Contrôle
- Diagramme (Block Diagram) - Constante
- Indicateur
- Projet
- Connecteur/Icône
- Connecteur/Icône

4. Une donnée de type Numérique est


2. La palette d’Outils est accessible à
de couleur
partir de :
- Vert
- La Face Avant (Front Panel)
- Orangé
- Le diagramme (Block Diagram)
- Rose
- Les deux à la fois
- Bleu

58
Exemple
Création du premier petit programme qui va additionner deux nombres
et afficher le résultat.

59
Exercice 2 -
Réaliser un VI qui permet de c alculer c = 2(a+b)(a-3b) ou a, b et c des
réels.

Bouton Terminaux de contrôle


Nœud Terminaux
Incrémenter / (entrées) d’indicateur
Décrémenter
(sortie)

Commande numérique Indicateur numérique

Fils de liaisons

Cadre gras Cadre fin


Chapitre 2 :
Implémentation et débogage
d’un VI

1. Création et exécution de VI
2. Temporisation d’un VI
3. Notion de sous-VI et création d’icônes
4. Gestion des erreurs
5. Techniques de débogage
6. Révision

61
Création et exécution de VI
1. Commencer par construire la face
utilisateur (Front Panel) du VI en
plaçant les Controls/Indicators
Boucle While
nécessaires
2. Compléter le code source (Block
Diagram) par les outils : fonctions,
sous-VI, opérateurs, etc. Timing
3. Mettre le code dans une boucle
While en spécifiant la condition
d’arrêt
4. Synchroniser l’exécution du VI en
ajoutant un temporisateur Condition d’arrêt
(Timing)
5. Exécuter le VI avec Operate/Run

62
• La forme du bouton Run (type de
flèche) indique l’état et le mode
d’exécution du VI :
1. Lancement de l’exécution
2. L’exécution du VI est en cours
3. Le VI exécuté est un sous-VI
4. Le VI contient des erreurs

1 2 3 4
• Corriger les erreurs (warnings)
affichées au moyen de la fenêtre
Error List

63
• Programmation graphique selon
le flux des données
• Le code source en Block Diagram
NE s’exécute PAS nécessairement
de gauche à droite
• Une fonction (VI) s’exécute
uniquement lorsqu’elle reçoit
TOUTES ses entrées
• Une fonction (VI) fournit TOUTES
ses sorties lors de son exécution

64
Le texte introduit sera affiché
en cours d’exécution du VI (Run Mode)
Le texte introduit sera affiché
dans l’Aide Contextuelle de
Indicateur l’indicateur LED
en mode simple

Contrôle
en mode Icône

65
• Accès aux propriétés
d’éléments et possibilité de
modifier ses paramètres :
- Type de donnée
- Apparence
- Format d’affichage
66
• Contrôler et synchroniser la
fréquence d’exécution d’un VI
ainsi que les itérations des
boucles LabVIEW

• Divers outils et fonctions


LabVIEW de temporisation d’un
VI (Timing Palette):
- Wait Untel Next ms Multiple
- Wait (ms)
- Elapsed Time, etc.

• Préserver l’utilisation du
processeur du PC

67
• Wait Until Next ms Multiple : attend
jusqu’à ce que le temps soit un multiple
de la valeur en entrée de la fonction
(millisecond multiple). Utiliser cette
fonction pour la synchronisation des
activités.
• Wait (ms) : attend jusqu’à ce que le temps
soit égal au nombre spécifié des
millisecondes (milliseconds to wait) et
retourne la valeur de la temporisation.
• Tick Count (ms) : retourne la valeur
de la temporisation de la boucle.
• Elapsed Time : indique le reste du temps
écoulé à partir de l’instant de
déclenchement spécifié. Ce temps est
indiqué en Elapsed Time (s).

68
Notion de sous-VI et édition d’icônes
• Un sous-VI est un VI appelé et • Un sous-VI peut être créé
exécuté à l’intérieur d’un autre VI directement à partir d’un VI
• Chaque sous-VI possède une existant (Edit/Create SubVI)
icône (Icon) et un connecteur
(Connector Pane)
• L’icône représente un VI dans un
autre Block Diagram
• Le connecteur permet d’échanger
les données du sous-VI au moyen
des terminaux

Icon Connector Pane

69
Sous VI (sous programme)
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.

70
Sous VI (sous programme)
Exemple de création d’un sous VI
• Un éditeur LabVIEW pour
créer et éditer des icônes-
connecteurs de sous-VI:
- Sélectionner les
terminaux
d’entrée/sortie du
connecteur depuis
Patterns
- Éditer l’icône du sous-
VI depuis Edit Icon

Terminaux Terminaux
d’entrée de sortie

72
73
Gestion des erreurs
• LabVIEW détecte automatiquement les
erreurs et les warnings d’exécution de VI
• Chaque erreur a son propre code numérique
et un message correspondant
• Mécanisme de détection et de caractérisation
des erreurs : clusters error in et error out
- Status: valeur booléenne, renvoyant
TRUE si une erreur intervient
- Code: valeur entière de type I32
identifiant numériquement l’erreur
- Source: chaine de caractères indiquant
l’origine de l’erreur

74
• La fenêtre Explain
Error contient des
informations à propos
des erreurs et des
warnings d’exécution
(Help/Explain Error)

• Disponibilité des VI et
des fonctions LabVIEW
de gestion manuelle
des erreurs : Dialog &
User Interface Palette

75
Techniques de débogage
• Mode d’exécution animée et Sonde Point d’arrêt
Pas-à-Pas d’un VI (Probe Data) (Breakpoint)
• Divers outils et techniques de
débogage disponibles :
1. Execution Highlighting
2. Single Stepping
3. Probe Tools
4. Breakpoints
Valeur
instantanée
3

4 3 1 2

76
• Cliquer sur le bouton Highlight Execution dans la barre d’outils
pour permettre l’exécution animée. L’exécution animée montre le
flux des données sur le diagramme d’un nœud à un autre à l’aide
de bulles qui se déplacent le long des fils.

• Cliquer sur le bouton Step Into pour démarrer l’exécution en mode


pas-à-pas (Single Stepping).

• Cliquer sur le bouton Step Over après chaque pause en un nœud


pour avancer à travers l’ensemble du diagramme.

• Quand une bordure clignotante entoure l’ensemble du diagramme,


cliquer sur le bouton Step Out pour arrêter l’exécution animée pas-
à-pas du VI.

77
Révision
1. Lesquels des éléments suivants font 3. Quelle est la fonction qui s’exécute en
partie du cluster d’erreurs : premier lieu :
- Status - Soustraction
- Warning - Nombre aléatoire
- Code - Addition
- Source - Inconnue

2. Quels sont les outils et techniques de


débogage d’un VI:
- Execution Highlighting
- Wait Until Next ms Multiple
- Single Stepping 4. La personnalisation de l’icône d’un
- Probe Tools sous-VI est obligatoire :
- Breakpoints - Vraie
- Faux

78
Révision
1. Lesquels des éléments suivants font 3. Quelle est la fonction qui s’exécute en
partie du cluster d’erreurs : premier lieu :
- Status - Soustraction
- Warning - Nombre aléatoire
- Code - Addition
- Source - Inconnue

2. Quels sont les outils et techniques de


débogage d’un VI:
- Execution Highlighting
- Wait Untel Next ms Multiple
- Single Stepping 4. La personnalisation de l’icône d’un
- Probe Tools sous-VI est obligatoire :
- Breakpoints - Vraie
- Faux

79
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. Réalisez un programme qui permet de convertir une
température de degrés Celsius [°C] en degrés Farenheit [°F] et
inversément.

Deg [°F] = Deg [°C] * 1.8 + 32

81
Chapitre 3 :
Boucles et structures de
contrôle

1. La boucle While
2. La boucle For
3. Transfert itératif des données
4. La structure Case
5. Programmation évènementielle: structure Event
6. Révision

82
La boucle While
• Accessible depuis la sous-palette
Programming-Structures du Block
Diagram
• Similaire à la boucle Faire…Tant que en
programmation textuelle (c++,…..)
• Le code à l’intérieur de la boucle While
s’exécute AU MOINS une seule fois
• Deux types de condition d’arrêt de la
boucle While:
- Stop If True
- Continue If True
• Possibilité de créer des registres à
décalage pour le transfert itératif des
données

83
La boucle While
1. Sélection boucle While 2. Sélection du code à répéter

3. Placement du code dans la boucle While

Do

(Execute diagram
inside Loop)

While Condition is TRUE

84
Choix de la condition de boucle

 Click de droite sur le terminal de condition de la


boucle pour définir quand elle doit s’interrompre

Terminal d’itération Terminal de condition

85
Registres à décalage

• Disponibles sur les bord droit et gauche des boucles


• Click de droite sur le bord de la boucle et sélectionner Add Shift Register
• Le terminal de droit stocke la valeur après un passage dans la boucle
• Le terminal de gauche met à disposition la valeur stockée avant au
début de l’itération suivante

Valeur initiale Valeur 1 Valeur 2


Valeur Valeur 3
initiale
Valeur 1 Valeur 2 Valeur 3

Avant Première Deuxième Dernière


début itération itération itération
boucle

86
1. Terminal d’iterations :compteur
nombre total des iterations
commençant à 0.
2. Condition d’arrêt Stop If True
3. Condition d’arrêt Continue If True
4. Temporisateur de la boucle
5. Menu contextuel de la boucle.

2 3
5

87
• Création des Tunnels
permettant d’échanger des
données avec la boucle
(transmettre et acquérir)
Tunnel de sortie
• Le tunnel prend la couleur du
type de données transférées
• Les données NE passent à
l’extérieur de la boucle Tunnel d’entrée
qu’après son exécution
• La boucle NE s’exécute que
lorsque les données du
tunnel lui passent à
l’intérieur

88
• Utilisée pour la localisation et la
gestion des erreurs d’exécution
dans un VI
• La condition d’arrêt de la boucle
sera connectée aux clusters
d’erreurs (Status)
• La boucle s’arrête en cas
d’avènement d’une erreur ou au
moyen du contrôle Stop

89
La boucle For
• Accessible depuis la palette
Programming-Structures du
Block Diagram
• Similaire à la boucle Pour…Faire
en programmation textuelle
• Le code à l’intérieur de la boucle
For s’exécute en un nombre
prédéfini de fois (N)
• Possibilité de créer des registres
à décalage

90
La boucle For
1. Nombre prédéfini
d’itérations
4
2. Terminal d’itérations
3
3. Menu contextuel de la
boucle
4. Temporisateur de la
boucle
1

91
La boucle For

• Exécute le diagramme qui se trouve à l’intérieur un nombre


prédéterminé de fois.
• Possibilité de créer des registres à décalage

Terminal du compteur
(Entrée numérique)
FOR N=0 TO 100
DO

(Execute diagram
inside Loop)

END

Terminal d’itération
92
• Possibilité d’ajouter une condition
d’arrêt inconditionnelle
• La boucle s’arrête au moyen d’un
contrôle booléen ou en cas d’erreur

93
Timing d’exécution d’une boucle

• On peut fixer le temps d’éxecution de boucle par une fonction Wait


(attendre).

• Attention, si le temps est plus petit que le temps nécessaire à


l’exécution du programme dans la boucle, c’est le multiple suivant du
temps qui sera pris.

1000

stop

• Cette boucle va se répéter chaque seconde

94
Timing d’exécution d’une boucle

• Il faut toujours insérer un timing pour cadencer une boucle afin


de préserver l’utilisation du processeur du PC

Sans Cadencement de boucle Avec cadencement de boucle (10 ms)

95
Transfert itératif des données
• Possibilité d’accéder aux données à
partir des itérations passées des
boucles au moyen des registres à
décalage (Shift Registers)
• Similaires aux variables statiques
en programmation textuelle
• Disponibles depuis les bords de Terminal Terminal
boucles While et For avec la de gauche de droite
commande (Add Shift Register)
- Terminal de droite: stocke la
valeur après passage dans la
boucle
- Terminal de gauche met à
disposition la valeur stockée
avant au début de l’itération

96
Transfert itératif des données
• Le Shift Register doit être initialisé
pour que la boucle peut exécuter la
première itération
• Au cas contraire, la boucle prend la
valeur ancienne du Shift Register ou
celle par défaut selon le type de
données en première itération

Types de Valeurs
données par défaut
Numérique 0
Booléen FAUX
Chaîne de caractères Vide (‘‘ ’’)

97
Transfert itératif des données
• Possibilité de stocker plus qu’une
valeur de données à la fois des Stacked
itérations passées : Stacked Shift Shift Register
Registers
• Disponible depuis le terminal de
gauche avec la commande Add
Element valeur à l’itération k-3
valeur à l’itération k-2
valeur à l’itération k-1

98
Case
• Correspond à “if” en C, Matlab, etc.
• Se trouve dans la sous-palette de fonction ‘Structures’
• Entoure le programme à effectuer dans le cas traité
• Les cas sont superposés, un seul cas visible à la fois

99
La structure Case
• Accessible depuis la palette
Programming-Structures du Block
Diagram
• Similaire à la boucle Switch-Case
ou If-Then-Else en programmation
textuelle
• La structure Case possède deux ou
plusieurs cas (sous-diagramme)
• Un seul sous-diagramme est
visible et exécuté à la fois
• Le terminal de sélection
détermine le sous-diagramme à
exécuter

100
4
1. Terminal de sélection
2. Sous-diagramme False
3. Sous-diagramme True
4. Menu contextuel de configuration

2
1

101
Terminal de sélection Terminal de sélection Terminal de sélection
de type Booléen de type Numérique de type Chaîne de caractères

102
La structure Event
 Programmation évènementielle : technique de programmation avec
laquelle le programme LabVIEW (VI) attend qu’un évènement se produise
pour exécuter le code-source écrit pour sa gestion.

 Evènement : une notification asynchrone indiquant que quelque chose a


eu lieu pour un programme. En LabVIEW, les évènements peuvent
provenir de l’interface utilisateur (UI), des E/S externes ou d’autres parties
du programme. On se limite dans ce cours à l’étude des évènements issus
de l’interface utilisateur (UI), à savoir :
o Clics de la souris
o Appuis sur une touche du clavier
o Changements de valeur d’un contrôle

103
La structure Event
 Structure Event : une structure de contrôle
LabVIEW permettant d’implémenter les
concepts de la programmation
évènementielle.
 Accessible à partir de la palette
Programming-Structures.
 LabVIEW génère un évènement à chaque
fois que l’utilisateur effectue une action
sur la face avant du VI. Le diagramme
correspondant répond par l’exécution du
code relatif afin de gérer un tel
évènement.
 Une fenêtre de dialogue de la structure
Event permet l’édition, la configuration et
la gestion d’évènements sous LabVIEW.

104
La structure Event
 Constitution d’une structure Event : la structure Event du LabVIEW, dont
un modèle est donné ci-joint, est formée de:
1. Menu d’évènements (Event Selector Label) : présente un listing des
évènements implémentés. A chaque évènement correspond un
code.
2. Terminal de temporisation (Timeout Terminal) : indique le temps, en
nombre des millisecondes, à attendre pour un évènement. La valeur
par défaut est -1 (temps d’attente infini). En spécifiant une valeur, il
faut veiller à remplir le cas « Timeout » de la structure Event.
3. Nœud des données (Event Data Node) : identifie les données
fournies lorsque l’évènement en question a eu lieu.
4. Nœud de filtrage (Event Filter Node) : identifie les données pouvant
être modifiées avant que la gestion de l’évènement s’effectue.

105
La structure Event

2 1

1. Event Selector Label


2. Timeout Terminal
4
3. Event Data Node
3
4. Event Filter Node

106
La structure Event

 Edition et configuration
d’un évènement :
édition et configuration
de l’évènement à gérer
par le sous-diagramme
courant de la structure
Event.

La fenêtre Edit Events


permet la spécification
et la configuration des
évènements.

107
La structure Event

1
Panneau 3
des évènements 2
Panneau
configurés Panneau des évènement
des sources
d’évènements

108
 Une structure Event doit être toujours placée à l’intérieur d’une boucle
While. La gestion d’un évènement s’exécute en une itération de la boucle
(un évènement par itération).

On définit deux types d’évènement de l’interface utilisateur (UI):


o Evènement de type Notify (flèche verte) : indique qu’un évènement
utilisateur a eu lieu. LabVIEW a déjà effectué l’action associée à cet
évènement.
o Evènement de type Filter (flèche rouge): permet de valider ou de
modifier les données de l’évènement avant que LabVIEW effectue
l’action associée à cet évènement. Il est possible dans ce cas de
rejeter entièrement l’évènement (Discard ?).

109
Résumé du chapitre 3

• Deux types de boucles dans LabVIEW : Boucle While et boucle FOR


• La boucle While : Boucle ‘Tant que’ : s’exécute tant que la condition de fin
n’est pas activée
• La boucle FOR : s’exécute un certain nombre de fois défini au départ
• Le diagramme devant être répété se place à l’intérieur de la boucle
• Utilisation d’un timer pour cadencer l’exécution de la boucle

110
Révision
1. Quelle est la boucle de contrôle qui 4. Quel est le type de données invalide
s’exécute au moins une seule fois : pour le terminal de sélection d’une
structure Case:
- Boucle For - Chaîne des caractères
- Boucle While - Réel
2. La condition d’arrêt d’une boucle For - Booléen
simple est : - Entier
- Action sur un contrôle Stop 5. Les registres à décalage peuvent être
- Nombre d’itérations atteint créés au moyen de :
3. Combien d’évènements peut gérer - La structure Case
une structure Event à chaque fois - La boucle While
qu’elle s’exécute? - La boucle For
- Un par cas configuré de la 6. Peut-on réaliser une boucle infinie à
structure Event • l’aide de la boucle While :
- Un seul - Oui
- Non

111
Révision
1. Quelle est la boucle de contrôle qui 4. Quel est le type de données invalide
s’exécute au moins une seule fois : pour le terminal de sélection d’une
structure Case:
- Boucle For - Chaîne des caractères
- Boucle While - Réel
2. La condition d’arrêt d’une boucle For - Booléen
simple est : - Entier
- Action sur un contrôle Stop 5. Les registres à décalage peuvent être
- Nombre d’itérations atteint créés au moyen de :
3. Combien d’évènements peut gérer - La structure Case
une structure Event à chaque fois - La boucle While
qu’elle s’exécute? - La boucle For
- Un par cas configuré de la 6. Peut-on réaliser une boucle infinie à
structure Event
• l’aide de la boucle While :
- Un seul - Oui
- Non
112
Exercices
• «Encercler» d’une boucle while le programme qui permet de convertir une température
de degrés Celsius [°C] en degrés Farenheit [°F], afin de convertir les valeurs sans
redémarrer le programme chaque fois.

113
• Réaliser un programme sous forme de boucle qui permet de décompter de 100 à
0 chaque 100 ms et qui allume une lampe quand le compte à rebours est atteint
(valeur = 0).

114
Chapitre 4 :
Groupage des données
Notions de tableaux, clusters et graphes

1. Les tableaux
2. Les clusters
3. Les graphes
4. Les types définis
5. Révision

115
Les tableaux
• Collection de données du même type
• Une ou plusieures dimensions
• Les éléments sont accessibles par leur index

• Le premier élément se trouve à l’index 0

index 0 1 2 3 4 5 6 7 8 9
Tableau 1D à 10 éléments 1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7

0 1 2 3 4 5 6
Tableau 2D 0
1
2
3
4
5 lignes par 7 colonnes
Tableau de 35 éléments
116
Les tableaux
(ARRAYS)
• Accessibles depuis la sous-palette
Array, Matrix & Cluster
• Utiles pour regrouper des
données LabVIEW de même type
• Une (1D) ou plusieurs (2D)
Chaque élément est accessible
par son indice (commençant par
0)
• Peuvent être construits au moyen
des boucles While et For
• Impossible de créer un tableau
des tableaux

117
Les tableaux
• Construire un tableau (contrôle ou
indicateur) à partir du Front Panel
LabVIEW en ajoutant un Array
Shell
• Faire glisser un type de données
(Numeric, Boolean, String, Cluster,
etc.) à l’intérieur du terminal de
tableau
• Redimensionner le tableau au
moyen de la souris ou avec le
menu contextuel Add Dimension

Indice des Lignes


Indice des Colonnes

118
• Possibilité de créer des tableaux
constants
• Faisable uniquement sur la face
diagramme de LabVIEW (Block
Diagram)
• Disponible depuis la sous-palette
Array de la palette Programming

119
Les tableaux
• Plusieurs fonctions disponibles
pour la gestion des tableaux
depuis la sous-palette Array du
Block Diagram:
- Index Array
- Array Size
- Build Array
- Array Max & Min
- Array Subset
- Initialize Array
- Insert Into Array
- etc.

120
Les tableaux
• Création des tableaux au moyen
des boucles de contrôle For et
While
• Les éléments sont auto-indexés
dans les tableaux
• L’auto-indexation des éléments
peut être activée ou désactivée
(Enable Indexing, Disable
Indexing)
• L’auto-indexation est :
- Activée par défaut pour la
boucle For
- Désactivée par défaut pour la
boucle While

121
Les tableaux
• L’auto-indexation en entrée d’un
tableau permet de remplacer le
terminal de nombre d’itérations
d’une boucle For
• Le nombre d’itération de la boucle
est égal à la valeur minimale entre
les dimensions des tableaux et le
terminal de nombre d’itérations
(N)
• Désactiver l’auto-indexation pour
accéder uniquement à la dernière
valeur passée en tunnel de sortie

122
Les tableaux
• Création des tableaux à deux
dimensions (2D) au moyen de
deux boucles For imbriquées:
- La boucle interne crée les
colonnes
- La boucle externe crée les
lignes

123
Accès aux éléments du tableau

Extraction d’un élément

Ajouter un élément

124
Création et utilisation de tableaux

• Sur une boucle, l’option


‘Auto-Indexing ‘ permet de
construire
automatiquement un
tableau.

• Boucle For: auto indexin g


par default; Boucle While
pas par défaut

125
Création de tableaux 2D

• La boucle interne crée les colonnes


• La boucle externe stocke les colonnes dans les lignes

126
Initialize Array

Insert Into Array

127
Delete From Array

Array Max & Min

128
Search 1D Array

129
Les clusters
• Disponibles depuis la sous-palette
Array, Matrix & Cluster
• Les Enregistrements sont utiles
pour regrouper des données de
types mixtes
• Similaires aux structures en
programmation textuelle
• Un cluster peut être un contrôle
OU un indicateur
• Réduire le câblage et les terminaux
des connecteurs d’icône
• Chaque élément est répertorié par
son propre Numéro ou Label

130
Les clusters
• Construire un cluster (contrôle ou
indicateur) à partir du Front Panel
LabVIEW en ajoutant un Cluster
Shell
• Faire glisser un type de données
(Numeric, Boolean, String, etc.) à
l’intérieur du terminal de cluster
• Réordonner les éléments dans un
cluster au moyen du menu
surgissant: Reorder Controls In
Cluster

131
Les clusters
• Possibilité de créer des clusters
constants
• Faisable uniquement sur la face
diagramme de LabVIEW (Block
Diagram)
• Disponible depuis la sous-palette
Cluster, Class & Variant de la
palette Programming

132
Les clusters
• Plusieurs fonctions disponibles
pour la gestion des clusters depuis
la sous-palette Cluster, Class &
Variant du Block Diagram:
- Unbundle By Name
- Bundle By Name
- Unbunde
- Bundle
- Build Cluster, etc.

133
Les graphes
• Disponibles depuis les sous-palettes
Graph Indicators et Graph de Front
Panel :
- Chart : graphe déroulant, affiche
des courbes point par point
- Graph : affiche des courbes à
partir de tableaux contenant tous
les points (bloc des données)
- XY Graph : affiche des courbes
paramétriques

134
Exercice 5 - Cluster, manipulation
d’erreurs et structure 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.
Exemples de solutions possible

Le prog ramme fonctionne en continu g râce à la


boucle While. Celle- ci 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 » .

135
Les graphes
1

1. Label du graphe
2. Axe des ordonnées (Y)
3. Axe des abscisses (X)
2
4. Légende des axes
5. Palette du graphe
6. Barre de défilement
3 6
7. Légende des courbes

136
Les graphes

8
1
7

6
3
5

1. Label du graphe 5. Légende du curseur


4
2. Axe des ordonnées (Y) 6. Déménageur du curseur
3. Axe des abscisses (X) 7. Légende des axes
4. Palette du graphe 8. Légende des courbes
137
Les graphes

Mode Strip : mode par défaut,


défilement des points et
modifications des intervalles à Mode Scop: plus rapide, ni
chaque mise à jour défilement ni modification des
intervalles, effacement en bout Mode Sweep : vitesse
de graphe et affichage des intermédiaire, sans défilement
nouveaux points mais avec une barre d’effacement
verticale mobile délimitant
les nouvelles données

138
Les graphes

Former un
cluster des
graphes
déroulants

139
Les graphes

Mettre les
clusters
dans un
tableau

140
Les graphes
Mettre les
clusters
dans un
tableau

141
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.
Exemples de solutions possible

Assembler
signaux

142
Exercice 4 - Utilisation de graphiques
•Palettes fonctions >> Express >> analyse des signaux >> simuler un
signal

143
Les types définis
• Utiliser les types définis pour
personnaliser des tableaux, des
clusters, etc.
• Copie originale d’un type de données
personnalisé (contrôle, indicateur ou
constante) utilisée par plusieurs VIs.
• Mettre à jour toutes les copies et les
instances du type personnalisé en
une seule édition.
• Enregistrer un contrôle personnalisé à
l’aide de menu déroulant Type Def.
Status (*.ctl).
 Contrôle (control)
 Type défini (Type Definition)
 Type strictement défini (Strict
Type Definition)

144
Les types définis
• L’outil Control Editor permet de
personnaliser des contrôles et des
indicateurs
• L’outil Control Editor possède deux
modes : d’édition (edit mode) de
personnalisation (customize mode)
• Possibilité de basculer entre ces
deux modes par OperateChange
to Customize Mode ou
OperateChange to Edit Mode.

145
Les types définis
• Mode d’édition: permet de changer
la taille ou la couleur d’un contrôle ou
d’un indicateur et de sélectionner des
1. Mode d’édition ;
options dans le menu contextuel 2. Statu des types définis ;
comme dans le mode d’édition 3. Editeur de texte ;
classique sur une face avant. 4. Alignement des objets ;
5. Distribution des objets ;
6. Redimensionnement des
objets ;
7. Réorganiser des objets.

1 2 3 4 5 6 7

146
Les types définis

• Utiliser les types définis et strictement définis pour


relier toutes les instances du contrôle/indicateur
personnalisé à une copie enregistrée dans un fichier
(*ctl).
• Apporter des modifications à toutes les instances en
éditant uniquement la copie sauvegardée.
• Chaque changement de type de données sur la copie
originale affecte les instances Type Definition et Strict
Type Definition dans tous les VIs qui l’utilisent.
• Le format Type Definition reconnait uniquement le
type de données : seules les valeurs faisant partie du
type de données seront mises à jour (pas pour la plage
des données).

147
Les types définis

• Tout changement d’apparence (cosmetic) apporté à


un type strictement défini affecte toutes les instances
de type strictement défini sur la face avant.
• Le mode Strict Type Definition force tout sur une
instance strictement définie pour être identique à la
copie originale sauf les label, légende (caption),
valeurs par défauts, description et note (tip strip).
• Le mode Strict Type Definition conserve la plage des
données sur les contrôles numériques.

148
Révision
1. Peut-on créer un tableau des 4. Lesquels des modes suivants sont
tableaux : relatifs au type Chart des indicateurs
- Oui Graphes :
- Strip
- Non - XY Graph
- Sweep
2. L’auto-indexation d’un tableau est - Scop
active par défaut pour:
- La boucle While 5. Combien de fois s’exécute la boucle
- La structure Case For ci-dessous
- La boucle For

3. Un cluster peut être utilisé comme:


- Indicateur
- Contrôle
- Les deux au même temps

149
Révision
1. Peut-on créer un tableau des 4. Lesquels des modes suivants sont
tableaux : relatifs au type Chart des indicateurs
- Oui Graphes :
- Strip
- Non - XY Graph
- Sweep
2. L’auto-indexation d’un tableau est - Scop
active par défaut pour:
- La boucle While 5. Combien de fois s’exécute la boucle
- La structure Case For ci-dessous
- La boucle For

3. Un cluster peut être utilisé comme:


- Indicateur 3 fois
- Contrôle
- Les deux au même temps

150
Exercice
• Créer un programme de loterie qui permet à chaque pression sur un bouton
de générer 6 chiffres aléatoires entre 0 et 100 et d’afficher ces 6 chiffres à
l’écran.

Case

151
Travail personnel
1. Réalisez un programme en boucle qui permet de comparer deux
chiffres et qui affiche à l’utilisateur avec trois lampes si:
nombre 1 < nombre 2
nombre 1 = nombre 2
nombre 1 > nombre 2

152

Vous aimerez peut-être aussi