0% ont trouvé ce document utile (0 vote)
83 vues36 pages

Labview tp2

Ce document présente l'utilisation des clusters, graphes et formules dans LabVIEW. Les clusters permettent de regrouper des données de types différents. Les graphes Waveform Chart et Waveform Graph affichent respectivement des données de façon incrémentale ou globale. Les formules nodes permettent d'écrire du code C ou Matlab directement dans LabVIEW.

Transféré par

Mouni Tadjer
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
83 vues36 pages

Labview tp2

Ce document présente l'utilisation des clusters, graphes et formules dans LabVIEW. Les clusters permettent de regrouper des données de types différents. Les graphes Waveform Chart et Waveform Graph affichent respectivement des données de façon incrémentale ou globale. Les formules nodes permettent d'écrire du code C ou Matlab directement dans LabVIEW.

Transféré par

Mouni Tadjer
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

LabVIEW - TP 2

Introduction à l’environnement LabVIEW


(Suite)
1 Clusters
Nous avons vu précédemment la structure de données Array qui permet de
consigné des valeurs dans un tableau, de une ou plusieurs dimensions, un Cluster
est une structure similaire, à la différence que celle-ci peut contenir des types de
données différents, c’est l’équivalent d’une Struct ou Class dans d’autres langage
de programmation (C ou C++).

1.1 Création d’un Cluster


1. Pour créer un Cluster, il suffit d’aller dans le Front Panel.
2. Clique droit, puis choisir Data Containers, puis Cluster.
3. Le résultat se trouvera dans le Front Panel et le Block Diagram.

1
Supposons que nous souhaitons crée une interface contentant des informa-
tions sur un livre, titres, auteur, année de publication de l’ouvrage et ça dispo-
nibilité dans notre bibliothèque.
1. Remplir le Cluster avec des String, Numeric et Boolean Control.
2. On peut également visualiser le résultat en créant un indicateur.

2
1.2 Assemblage et déassemblage d’un Cluster
Les fonctions bundle (pour assembler) et unbundle (desassembler) permettent
d’interagir avec les champs constituant le Cluster. Bundle permet de composer
un Cluster à partir de variable, tandis que Unbundle expose les composants
du Cluster, les variantes Bundle et Unbundle by Name, exposent les noms des
champs utilisé dans le Cluster.
Pour déssambler un Cluster, il suffit de glisser le bloc Unbundle by Name,
depuis Cluster, Class & Variant du Bloc Diagram. Puis le relier au Cluster dont
ont veux obtenir les composants. On peut après interagir avec ces composants,
ici nous avons créer des indicateurs. De façon similaire on peut utiliser la fonction
Unbundle, celle ci expose le type de données, ici deux chaines de caractères (titre
et auteur), un numérique (année) et un booléan (disponibilité).

3
4
1.3 Changer l’ordre des champs
On peut également changer l’ordre des champs à l’interieur d’un Cluseter,
pour ce faire, il suffit de choisir Reorder Controls in Cluster en faisant un clic
droit sur la bordure d’un cluster. Une fenetre apparait ou on peut changer l’ordre
des champs. Voici le resultat en intervertissant les champs titre et auteur.

5
6
Pour créer un Cluster a partir d’autres variables, on utilise le bloc Bundle
by Name (ou Bundle), pour ce faire commencer par crée un Cluster d’indicateur
on reprendra l’exemple de la bibliothèque, puis choisir le bloc Bundle By Name,
Crée une constant a partir de l’indicateur puis la relier au bloc Bundle By Name,
ceci pour indiquer la façon dont il faut assembler les elements d’entrée, pour
finir relier chaque elements avec l’entrée correspandante dans le bloc Bundle by
Name.

7
8
On peut également créer un Array de Cluster, pour cela il suffit de glisser
le Cluster dans un Array. La boucle ci dessous motre la procédure pour afficher
les informations de nos Cluster de façon itérative. Pour ce faire il suffit de
connecter l’Array au bord de la boucle, puis d’utilisé la fonction Unbundle by
Name normalement, on veillera a ajouter un delais pour mieux visualiser la
sortie.

9
10
2 Plots et Graphes
Nous avions vu préccédemment comment afficher nos données à l’aide des
différents indicateurs, que ce soit des scalaires ou sous forme d’Arrays. Nous
allons passer maintenant à un différent type d’affichage à l’aide de deux types
de graphes sur LabVIEW, Waveform Chart et Waveform Graph.

2.1 Waveform Chart


Un waveform Chart mémorise et affiche un certain nombre de points en
les stockant dans une mémoire temporaire. Lorsque la mémoire temporaire est
pleine, le graphique commence à remplacer les points les plus anciens par de
nouveaux. Au fur et à mesure que les points de données deviennent disponibles,
le Waveform Chart affiche les données reçues en plus des points déjà existants.
Il est possible d’y écrire un ou plusieurs points de données à la fois. Si nous
transmettons un Array de points au graphique, il ajoutera ces points à ceux
qui existent déjà. On peut donc afficher plusieurs tracés sur le même graphique
en connectant un groupe de points ou un tableau 2D contenant des données
dynamiques ou de forme d’onde pour chaque tracé.

2.2 Waveform Graph


Un Waveform Graph (graphique sous forme d’onde) accepte des Arrays (ta-
bleaux) de données, ou des données dynamiques. Il trace tous les points reçus en
une seule fois. Il n’accepte pas les valeurs de points uniques. Lorsqu’un tableau
de points est connecté à un Waveform Graph, il suppose que les points sont
également espacés. Par défaut, la valeur initiale de X et le pas (t0 et dt) sont
respectivement 0 et 1. Ceci peut être modifié dans les propriétés du graphique
ou en utilisant les nœuds de propriété.

11
Exemple
1. Pour commencer, on crée une boucle while. On ajoute un bouton stop
comme condition d’arrêt à l’aide de Create Control et on impose une
durée de 100ms pour chaque itération à l’aide du bouton wait(ms).

2. Au niveau du Front Panel, prenons un Control numérique, un slide par


exemple, et on le dépose à l’intérieur de la boucle. On ajuste la plage de
données si nécessaire.

3. Toujours sur le Front Panel, dans la bibliothèque Graphs de la Controls


Palette, on prend le bloc Waveform Chart et on le place également à
l’intérieur de la boucle.

12
4. On relie notre slide au Waveform Chart et on run le programme.

5. On remarque que si on change la valeur indiquée par le slide, le graphe


affiche les données au fur et à mesure, jusqu’à ce qu’on arrête l’exécution
à l’aide du bouton Stop.
6. On remarque également que si on relance l’exécution après l’avoir arrêtée,
les valeurs indiquées par le Waveform Chart ne se réinitialisent pas :
les nouvelles valeurs indiquées par le slide sont simplement ajoutées aux
anciennes données précédemment enregistrées par la mémoire temporaire
du Waveform Chart.
7. Pour réinitialiser le Waveform chart, il suffit de faire un clic droit dessus
au niveau du Front Panel, puis sur Data Operations on sélectionne "Clear
Chart". Ceci va effacer son contenu.

13
8. Afin de ne pas devoir réinitialiser le Chart après chaque exécution, on
suit les étapes suivantes :
— Au niveau du Block Diagram, on fait un clic droit sur Waveform
Chart et on choisit Create -> Property Node -> History Data,

qu’on va placer en dehors de la boucle.

14
— Cet élément va nous permettre de réinitialiser la mémoire temporaire
du Waveform Chart à chaque fois que la boucle redémarre.

— Pour faire celà, on commence par faire un clic droit sur ce bloc (His-
tory Data) et choisir l’option "Change to Write", vu qu’on va "ré-
écrire" la mémoire temporaire.

— On impose une valeur nulle au History Data à l’aide de Create Constant


(qu’on laisse telle qu’elle est), et on lie la sortie au "cadre" de notre
boucle.

15
— à noter que si l’on a plusieurs Waveform Charts dans notre pro-
gramme, il faudra refaire la même chose pour chacun de ces graphes
séparément.
9. Enfin, pour afficher la totalité des données acquises au courant de l’exé-
cution de notre boucle, on ajoute au niveau du Front Panel un Waveform
Graph à partir de la bibliothèque Graphs dans la Controls Palette.

On place ce graphe à l’extérieur de notre boucle et on relie notre slide


au cadre de la boucle (ne pas oublier de sélectionner Tunnel Mode ->
Indexing),

16
puis au graphe.

10. On remarque que le graphe sur Waveform Graph n’apparaît qu’une fois
que la boucle est arrêtée : lorsque toutes les données ont été acquises.
On note également que contrairement au Waveform Chart, le graphe
obtenu par un Waveform Graph se réinitialise automatiquement à chaque
exécution.

17
18
3 Formula Nodes
LabVIEW offre également la possibilité d’écrire des bout de codes direc-
tement en C, cette fonction peut s’avérer utiles pour construire des fonctions
complexe, l’Addon MathScript RT permet également d’écrire des fonctions en
utilisant le langage Matlab.
Supposons que nous voulons convertir une température de Celsius vers le
Farenheit, l’expression est donnée par la formule suivante :
9
Tf = Tc + 32 (1)
5
Ou Tf est la température en Farenheit. Tc est la températeur exprimé en Celsius.
L’implémenetation sur LabVIEW est relativement simple

Pour crée un noeud de formule (Formula Node) il suffit d’aller dans le Bloc
Diagram et choisir Formula Node dans Mathematics, Script & Formula.

19
Dans le cadre crée, similaire a une boucle, écrire le code en C que l’on souhaite
executer.

20
Relier les controles et les indicateurs en créant des entrées et sorties au For-
mula Node, ceci en faisant clic droit sur la bordure du cadre et en selectionnant
Add Input et Add Output.

Cette fonction est plus utile pour des expressions plus longue qui serait
fastidieux de faire manuellement sur LabVIEW, par exemple soit l’expression
suivante.
ln(ax2 + bx + c) + sin(ax2 + bx + c)
f= (2)
4πx2 + cos(x + 2)(ax2 + bx + c)

21
22
4 SubVI
Un SubVI est l’équivalent LabVIEW d’une sous-routine ou d’une fonction,
c’est à dire, une portion de code qui peut être ré-utilisé plusieurs fois, ce qui
accentue la modularité de l’application, la rendant plus facile a concevoir et a
débugger en cas de problèmes.
Reprenons l’exemple de la conversion du Celsius au Farenheit, on peut créer
un SubVI qui nous permettera d’utilisé cette portion de code en tant que bloc
dans LabVIEW, pour ce faire commencer par reproduire l’exemple précedent.

Pour commencer clic droit sur l’icône encadré en rouge, ceci permet de choisir
la forme du bloc que nous allons créer. Aller dans l’onglet Patterns et choisir la
forme suivante.

23
Ceci indiquera a l’application que nous avons une entrée et une sortie, ensuite
choisir le premier rectangle et le pointé vers le contrôle Celsius.

Faire de même pour la sortie, second rectangle, puis choisir l’indicateur Fa-
renheit

24
Enregistrer le fichier en lui donnant un nom unique dans le repertoire cou-
rant, ici [Link], puis double cliquer sur l’icone à droite, la fenêtre
suivante s’ouvre.

Ici on pourra changer la forme de l’icône du bloc.

Avant d’enregistrer, faire un clic droit sur l’icône de notre SubVI et choisir VI
Properties, s’assurer que Category est sur Execution et que l’option Preallocated
clone reentrant execution est sélectionnée.

25
Enregistrer et créer un nouveau VI afin de tester notre subVI, pour l’utiliser,
il suffit d’aller dans le Bloc Diagram et choisir Select a VI.

26
27
28
5 Structure Case
Dans le TP précédent on a vu les structures des boucles While et For. On
passe maintenant à la structure case.
— Pour placer une Case Structure (structure de cas), sélectionnez-la de la
bibliothèque Structures dans la Functions Palette du Block Diagram et
placez-là sous forme de rectangle.

29
— Une case structure contient ce qu’on appelle des "Sub-diagrams", autre-
ment dit les "cas".
— On remarque sur le cadre de la structure une borne verte nommée "case
selector", la valeur entrée au niveau de cette borne va déterminer quel
cas sera exécuté.
Ce sélecteur accepte par défaut une valeur booléenne, auquel correspon-
dront deux cas : True et False. Afin de sélectionner le cas, on crée un
Control pour le case selector, qui sera par défaut un bouton poussoir.

30
— Il est possible de changer le type de donnée du Case Selector en liant sim-
plement un control de type différent, par exemple un Numeric Control.

— Au niveau du cadre de la structure en haut, on trouve un Selector Label.


Il indique la condition associée à chaque cas.
— Il est possible d’ajouter des cas en faisant un clic droit sur le selector
label, puis choisir "Add Case Before" ou "Add Case After", au choix.

— Dans le cas où notre case selector est lié à un control où les choix ne
sont pas limités à des valeurs précises, tel qu’un numeric control ou un
control de type chaîne de caractères, il faut définir un cas supplémentaire :
default case, pour le cas où la valeur entrée par l’utilisateur ne correspond
à aucun des cas définis.

31
32
Exemple
1. Créer une structure de type case.
2. Lier le Case Selector à un bouton poussoir.
3. Créer dans le Front Panel deux entrée de type Numeric Control, A et
B, et connectez-les à la Case Structure. Créer également une sortie C de
type Numeric Indicator.

4. Dans le cas True, on additionne A et B et affiche le résultat sur C.

33
5. Dans le cas False, on fait la soustraction de A et B et on affiche le résultat
sur C.

34
6 Exercices

Exercice 01
Réaliser un système qui prend en entrée un mois et une année (de type
numérique), et qui donne en sortie le nombre de jours du mois en question, à
l’aide d’une structure de type Case. Si un mois invalide est donné en entrée, le
nombre de jours sera par défaut NaN.
Attention aux années bissextiles !
Indice : Une année bissextile est soit une année divisible par 400, soit une
année divisible par 4 ET non divisible par 100.
Bonus (optionnel) : Réalisez ce système avec 3 cas uniquement : les
mois à 31 jours, les mois à 30 jours et février (ne pas oublier d’ajouter un cas
supplémentaire par défaut).

Exercice 02
Soient les fonctions : f1 (x) = sin(x/5) , f2 (x) = sin(x/10).
Afficher les deux fonctions simultanément sur un Waveform Chart, puis sur
un Waveform Graph.
Indice : Voir les blocs "Bundle" et "Build Cluster Array".

Exercice 03
Le dataset dans le fichier ci-joint contient des informations sur les livres
d’une bibliothèque. À l’aide des Arrays et Clusters, affichez le contenu de ce
fichier itéré ligne par ligne (sous forme de Cluster) ayant le nom des champs
correspondants.
Indice : Voir les blocs "File Path Control" et "Read Delimited Spread-
sheet".

35

Vous aimerez peut-être aussi