• Aucun résultat trouvé

[PDF] Cours principes de base de LabVIEW enjeux et pratique | Formation informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Cours principes de base de LabVIEW enjeux et pratique | Formation informatique"

Copied!
48
0
0

Texte intégral

(1)
(2)

! Données Traitement Informatique Résultats Texte Son Images mesures Texte Son Images mesures Entrées Sorties " # $ ! COMPILATEUR Langage de programmation Application autonome Texte => Fichier source Fichier exécutable Logiciel installé dans l'ordinateur

Écrire en respectant la syntaxe d'un langage, la suite des tâches devant être exécutées par l'ordinateur, de façon logique et structurée

$ %

Langage Machine Assembleur

Langage Evolués : C, Pascal, Fortran, Basic

Visual Basic, LabVIEW

Le seul compréhensible par l'ordinateur

(3)

! & " ' # $ ( " ) * $ ( " + ! , ) - " , + ! %

S u ite d 'in s tr u c tio n s q u i u n e fo is e x é c u té e s c o r r e c te m e n t c o n d u it à u n r é s u lta t d o n n é A lg o r it h m e A lg o r ith m iq u e S c ie n c e q u i é tu d ie la s tr u c tu r e lo g iq u e d e s p r o g r a m m e s ' % Algorithme C Pascal Fortran Basic

LabVIEW Visual Basic

( - , . ( % / 0 ) / / 1 / 2

!

" #

3456! ' ) ' ' - , ' , ! ! 7 1 8&,8 3446! ) 1& ) 9!3 $ : !

(4)

!

!

"

- , ' " ; % ) % %

!

$% ' ) $ % ) ' 0 ' < 1 $ = 7 ) < - ") = 1 ' > ) ' ! < $ % " # > = , < ' ') = ) ' < ' * =! ) ! ' ' ? !

(5)

" &$% ! " ) ' @ % o o o - , -o 0 ! o > o ' o 0 < = o / -o > @ ; ) ! A B!

!

!

"

$- * A B ) ! $!

(6)

FACE AVANT 1ère variable

2ème variable FACE ARRIERE : DIAGRAMME

' , $ $ ' % o o o * o < " > = !

(7)

#

, ' '

C * ? ' < : ? =!

La palette d'outils

(Tool Palette)

Pour agir sur les commandes Pour câbler Texte Colorer un objet Pipette (copier une couleur)

Poser une sonde (probe)

Placer un point d'arrêt

Bouger l'ensemble (diag ou FA) ' ) D < =! * A B ' , ; ' E " ) * !

!

'

(

( ) " " $ ! ) ) ( )& $ F3 FG ! ( )* ; - $ ; - !

(8)

&

!

!

) ) ! 0 ) " ) ) '$ ! LA MEMOIRE : Empilement d'octets ' ) ' ) ' " % o ) % o # ) % ) !

!

"

PALETTE DE COMMANDES

Les commandes (sauf tableaux)

Palette complète : il suffit de la parcourir pour tout comprendre (ou presque)

(9)

$ PALETTE DE COMMANDES

Les indicateurs (sauf tableaux)

Palette complète : On retrouve les commandes et les

indicateurs

) " ' ) ' - !

(10)

!

!

$%

+, - ./ /0+1

CODAGE SUR UN OCTET

de 00000000 à 11111111

de 0 à 28 -1 = 255 Valeurs décimales possibles

Type unsigned char (langage C) Type U8 en LabVIEW

de 00000000 à 01111111 de 0 à 27 -1 = 127 de 11111111 à 10000000 de -1 à - 27 = -128

positif

négatif

Avec bit de signe

Type char (langage C) Type I8 en LabVIEW

Complément à deux

Sans bit de signe

(11)

1 +, - ./ &+1 .

CODAGE SUR DEUX OCTETS

de 0 à 216 -1 = 65535

Valeurs décim ales possibles

S ans bit de signe

A vec bit de signe

Type unsigned int (langage C) Type U16 en LabVIEW

de 0 à 215 -1 = 32767

de -1 à - 215 = -32768 positif

négatif

Type int (langage C) Type I16 en LabVIEW

Complément à deux

&$% !

Un nombre à virgule flottante peut toujours s'écrire :

+ 0,662 * 2

- 26

Signe : 1 bit Mantisse : 23 bits Exposant :8 bits

Valeurs extrêmes possibles : Nombre nul : 0

Nombre positifs de : 1,21 10 -38 à 3,40 10 38

Nombres négatifs de : - 1,21 10 -38 à - 3,40 10 38 Type : Float en C, Type SGL en LabVIEW

SIMPLE PRECISION : 4 octets

1 bit 8 bits 23 bits

PRECISION ETENDUE : 10 octets

1 bit 15 bits 64 bits

DOUBLE PRECISION : 8 octets

(12)

*$%!

Variable Booléenne

Vraie : True

Fausse : False

Codage sur 1 seul bit

N'existe pas dans tous les langages :

OK en labVIEW mais pas en C !

(13)

! $ ' %

! '

(

&

( &) '$ 3!3 # ) ! $ " ! ( &)& ' ∆HI! ; ! ( &)* ) " @ " ' " ! ( &)5 ) "@ " " !

(14)

*

(

Contact fin de course

Le wagon doit s'arrêter quand il rencontre l'obstacle.

Organigramme Pseudo code

Variable Mav booléenne Variable contact booléenne Mav 1

Lire contact Si contact = 1

alors Mav 0

sinon « aller à 4ème ligne » fin non Marche avant Contact appuyé ? oui Arrêt moteur Lire contact

'

Une

structure

conditionnelle

(structure de choix) permet de

réaliser une suite d'instructions

ou une autre, en fonction du

résultat d'un test.

Début Condition oui Instructions 1 non Instructions 2 Suite Début Si condition vraie alors instructions 1 sinon instructions 2 Suite

En LabVIEW : exécution d'un diagramme ou d'un autre suivant le

résultat vrai ou faux d'un test

(15)

"

!

"

Diagramme délimité, exécuté si condition vraie Condition à écrire

Cliquer pour visualiser le diagramme réalisé si condition fausse Un seul diag visible à la fois Le diagramme caché

La condition :

met en jeux

un opérateur

de

comparaison

Le résultat booléen de la

condition est connecté au

sélecteur « ? »

La transmission des

données se fait via un

« tunnel » d'entrée ou de

sortie.

Les tunnels de sortie doivent être reliés dans les deux

(16)

!

La comparaison peut être simple : elle met en oeuvre un opérateur de comparaison (>, <, etc ... ou d'égalité) comme dans l'exemple précédent. Elle peut être plus complexe et mettre en oeuvre également des opérateurs logiques.

!

Les structures conditionnelles peuvent être imbriquées Diagramme caché

(17)

#

! '

(

*

% $ H J * H ! '$ G!G ' ) ! $ ' !

(18)

5

(

Contact fin de course

Le wagon doit s'arrêter quand il rencontre l'obstacle.

Organigramme Pseudo code

Variable Mav booléenne Variable contact booléenne Mav 1

Faire tant que contact = 0 Lire contact

Mav 0 fin

Ici, on lit l'état du contact tant qu'il n 'a pas été enfoncé

non Marche avant Contact appuyé ? oui Arrêt moteur Lire contact

"

La boucle While permet la répétition d'une suite d'instruction tant qu' une condition est vraie.

Début Condition oui Instructions à répéter non Suite Instructions du début Faire instructions à répéter tant que condition suite du programme

While = Faire... tant que ....

Toujours réalisé au moins une fois !

(19)

$

"

!

"

Diagramme répété

Terminal conditionnel Terminal d'itération : compte les répétitions

$ % ,

Attente (configurée à 1s) 2 possibilités

Pseudo code correspondant : Variable N type entier

Variable compt type entier N 100 Faire compt N-1 afficher compt attendre 1s tant que N >0 Fin

(20)

(

&

Le wagon doit faire 10 aller-retour.

Début i = 9 oui i 0 non Fin aller-retour i i+1

Organigramme

Pseudo code

La variable i compte les répétitions

(itérations)

Variable i type entier

Pour i = 0 à 9

aller-retour

i i+1

fin

!

2 6/ 7 0+2 , 4 +0. . ,4 2 048 + ) La boucle FOR permet la répétition d'une suite

d'instructions un nombre prédéterminé de fois

Instructions du début Pour i = 0 à N-1, faire :

instructions à répéter i i+1

suite du programme

FOR = Pour ... faire ...

Début i = N-1 oui i 0 non Suite Instructions à répéter i i+1

Organigramme

Non réalisé si N = 0

(21)

!

!

"

Diagramme répété

Terminal d'itération : compte les répétitions

Nombre de tours de boucle

Avec 10 tours de boucle, i évoluera de 0 à 9

!

Modifications par l'utilisateur prises en compte

Valeur transmise au premier tour de boucle.

Toute intervention de l'utilisateur devient inutile

Valeur obtenue au dernier tour

(22)

!

(

5

9 11 5) -I GI ' ' # 1 &! 0 # ! 9 11 5)& K< =! 9 11 5)* ) GI - ) I ) !

(23)

!

:

(

! " ! " # " $ LA MEMOIRE : Empilement d'octets

Exemple : Tableau nommé Tab de 3 entiers type U8

Tab[0] Tab[1] Tab[2]

Chaque élément du tableau est repéré par un indice i allant de 0 à N-1

Les trois éléments se retrouvent à trois adresses différentes qui se suivent

Clic droit sur la

face avant

Tableau vide Tableau de variables numériques Indice du 1er élément visible % & ' ( " ) * & & ) + ,

(24)

-Tableau vide

Tableau de variables

numériques

(

" $ % " * & ( & '

(25)

"

!

(

$% 0 0 4

Lors du câblage, l'indexation se

réalise automatiquement.

Indexation : Au ième tour de boucle,

le ième élément du tableau

est transmis par le tunnel d'entrée.

Tous les éléments du tableau

sont multipliés par i

à chaque tour de boucle

Pas d'indexation : le tableau est transmis

à chaque tour de boucle dans son intégralité

(26)

&$% 0.+

indexation : un tableau des valeurs

calculées à chaque tour de boucle

est transmis via le tunnel de sortie

Pas d'indexation :

la dernière valeur

calculée au dernier tour

de boucle est transmise

via le tunnel de sortie

.

/01

!

(

( :) 3I I GI! 8 ) ! ( :)& 3I I GI! < 3- '$ =! " 6 " # !

(27)

# ( :)*7 .1.. .,/0 41 33 304 ) L MD3 ' $ ' ! M" ' ! & % $ ! % .; < =% & ( , ( % $ N $/3D 0 % $ N D ! 0 /0 ./ 24 6/ , 2 2 9>; , .+06; . ( :)57 .1.. .,/0 41 33 3+- 2 6/ L MD3 ' $ ' ! M" ' ! & % $ ! % N < O =?M N <? =3?M & ( , ( % $ N $/3D 0 % $ N D ! N D <? =3?M N D <? =?M N P ! <? =?M Q 7 % $ N ! <? =?M JNH $ N ! <? =/3?M ! <? =3?M $ N $/3! <? =3?M $ N ! P<? =3?MQ 0 /0 ./ -4+24 6/ , 2 2 9>; , .+06; < % =% , #2/ , 2/, #2/ , , 2/,

(28)

?

7 " @ A+ 2

Le rôle du graphe déroulant : Waveform Chart est d'afficher l'évolution temporelle d'une donnée variable dans le temps.

A chaque instant le graphe ne reçoit qu'une donnée à la fois : Ce n'est pas un tableau de valeurs.

Par programmation, il faut donc répéter l'envoi des données au graphe, le terminal graphe

doit donc être dans une boucle while.

) 3

9 2 3 , 0. ! " 7

Le Graphe déroulant est un indicateur. Par défaut son type est DBL. Ce n'est pas un tableau de valeur (trait fin): Cet indicateur ne reçoit qu'une valeur à la fois,

il doit être dans la boucle.

Génération d'un

nombre aléatoire

(29)

$

- ) * @ % ' @ ) !

LE FORMATAGE DU GRAPHE

7 " @ A+ 2

Le rôle du graphe est de représenter graphiquement un tableau de données.

Le graphe reçoit simultanément l'ensemble des données

sous forme d'un tableau de valeurs.

Par programmation, il ne faut envoyer les données au graphe qu'une seule fois, le terminal graphe doit donc être hors de la boucle. donnée 0 1 2 3 4 5 6 7 5 10 15 20 25 30 35 40

Les données sont généralement calculées dans une boucle

Le tableau peut être obtenu par indexation du tunnel de sortie de la boucle

(30)

! 9 2 3 , 0. ! " 7

L'indice du point (n° ligne du tableau)

Le Graphe est un indicateur de type tableau. Par défaut son type est DBL.

Cet indicateur reçoit toutes les valeurs à la fois, il doit être hors de la boucle.

(

Donnée X

Le rôle du graphe XY est de représenter graphiquement un tableau de données Y en fonction d'un tableau de données X

Le graphe reçoit simultanément l'ensemble des données

sous forme de 2 tableaux de valeurs.

Par programmation, il ne faut envoyer les données au graphe qu'une seule fois,

le terminal graphe XY doit donc être hors de la boucle. Donnée Y 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 5 10 15 20 25 30 35 40

Les données sont généralement calculées dans une boucle

Les 2 tableaux sont obtenus directement au niveau des 2 tunnels de sortie de la boucle.

(31)

! 3. +0, 0. ! " 7

Connecter le tableau des abscisses ici Connecter le tableau

des ordonnées ici

9 2 3 , 0. ! " 7 apparaît automatiquement On dispose ici d'un cluster (assemblage) de 2 tableaux. Tracé de courbe, échelle linéaire : xi = xd + i * (xf-xd)/N

(32)

! ! ' ( ( ?) 7 ,4+/30 R ! R #N 3I $ ' , ) ! ' * ' 1 &! ( ?)&7 $ R ! 3II ! ( ?)*7 ( 41 33 304 ' <=N <Gπ D ϕ= I 1 $! M""ϕ 1 $ ) ! * ! ' ! ( ?)57 ( 41 33 3+- 2 6/ ' ' % L <=N GI P3 ?√ <3 D < !Gπ =G=Q , ! M ) ! < - = ST!

(33)

!!

B

C

(

EXEMPLE : Programmer n!

On sait que n! = (n-1)! . n

Variable facto type entier

Variable i type entier

facto 1

Pour i = 1 à N faire

facto facto.i

i i+1

afficher facto

fin

Pour calculer n!, il faut avoir d'abord calculé (n-1)!

Pour calculer (n-1)!, il faut avoir d'abord calculé (n-2) !

Pour calculer (n-2)!, il faut avoir calculé (n-3)!

Etc ....

A la ième itération,

on utilise le résultat

calculé à l'itération

précédente

En Labview cela se fait

grâce au registre à décalage

4

!

"

On utilise des registres à décalage dans les boucles For et dans les boucles While pour transmettre des valeurs d'une itération à l'itération suivante. 5# / 6 5# 6 5#2/ 6

Au ième tour de boucle, la valeur calculée est fonction

(34)

!

7 * ( *

Clic droit sur le bord de la boucle

Valeurs au dernier tour de boucle

Factorielle n

La valeur calculée à la

dernière itération sort par

le tunnel du registre

'''8 3769 9:74; <' 74 /=>7?7; 7 $ % ,@ # 8 U

-8 N <

D

/3

D

O G

=?U

(35)

!"

On répète la mesure périodiquement => boucle while

Pour calculer Mi, on a besoin des valeurs mesurées dans les deux

itérations précédentes.

5# /

9

6

9

)

5#

9

6

9

)

5#2/

6

9

9

)

%

Tirer avec la souris pour disposer de la donnée transmise par la i-2ème itération / 0

La mesure est simulée

par la génération d'un

nombre aléatoire

Affichage sur un graphe déroulant de la moyenne des trois derniers nombres aléatoires générés

(36)

! !

Dans une boucle, si on retourne

la valeur calculée sur l'entrée

d'un opérateur, il apparaît un

noeud

de

rétroaction,

fonctionnant comme le registre à

décalage.

Noeud de rétroaction Initialisation du noeud

de rétroaction pour le 1er tour de boucle

& , " V ; ' ! ! ( ( B) 0) ' " '$ .!G V % ! ( B)& '$ .!U , % " # $ % # $ $ # $ " ( B)* 3 /9 +/13. 2 6/4 .<0 1+01 0 .A+ 142 0 1 1 = L 36 3I , ' O 3I D3I! 8 I!

(37)

!#

D

Langage classique : Flot d'instructions

Les instructions écrites s'exécutent séquentiellement Langage LabVIEW : Flot de données On ne maîtrise pas l'ordre d'exécution des « instructions » ! "

La structure séquence dans LabVIEW :

La structure séquence se présente comme

une succession d'étapes

semblable à la pellicule d'un film

Dans chaque étape (frame) : un diagramme.

Les étapes successives sont exécutées dans l'ordre.

Étape 1

diag 1

Étape 2

diag 2

Étape 3

diag 3

Etc ...

Comme pour la structure condition, un seul diagramme n'est visible.

Comme pour une boucle, on peut passer des valeurs d'une étape à

l'autre.

) * < ) , = !

) " E '$ !

(38)

!

(39)

!$ (

Etape 0 : Acquisition du temps

Génération du nombre aléatoire

tant qu'il est différent du nombre à atteindre

Etape 1 : Acquisition du temps

Calcul et affichage de la durée

!

Cette structure est souvent utilisée en informatique d'instrumentation

Cette structure peut également être utilisée également pour commander un système séquentiel (feux de carrefour)

Étape 1 Configuration carte d'acquisition Étape 2 Acquisition Sortie Commande Étape 3 RAZ carte daq

(40)

! !

) ' , ' ' #

' !

& *

(41)

! (

( D) 7 $ '

(42)

E

!

& < =" ) , ) ! ) ) ' " * " + , ) ! 7 '$ / " ) <) ' = ; ! <3ID =W!

(43)

! 7 '$ " ) ! ) 3 " 33 *!

7

M " ' ! , ' E ' ) / ! ! ) ' " ! * ! ) ' , ) ' ! & , ' ' " ' ' @ ) , ) " ' E !

(44)

" ' E , % ' E !

; * /

" , "

(45)

" ) ) , ' ! 0 % 7 " %

;

) , )

!

' E * ' ! < / =! 4

(46)

'

(

( E) 7 +2 / 8 F.44.. # $ ) ' ! <= / ! 3X? <: ) = <= < 1 $ GI = ' ' # ! GX?C ; <= YZ! 2/B /B C / % & (8/B DC % & (2/B E / 2F F

(47)

#

IUT BELFORT MONTBELIARD Dpt MESURES PHYSIQUES

EXAMEN PARTIEL D’INFORMATIQUE – 2004/2005 – Sujet D

Durée 3h –

Sorties interdites

Tous documents manuscrits autorisés

Accès répertoire personnel autorisé

Téléphones portables interdits

Sauvegardez périodiquement votre travail EXERCICE 1 – 7 pts (2+2+3)

Un récepteur inductif alimenté sous U = 220 V consomme une puissance active P . L’intensité du courant qu’il absorbe est I.

P et I sont des commandes (potentiomètre rotatifs) sur la face avant. 0 < P < 5000 W et 0 < I < 50 A.

1°/ Afficher sur un vu-mètre le cos

ϕ

.

2°/ Ajouter une commande sur la face avant représentant un condensateur en parallèle. Afficher le nouveau cos

ϕ

’ obtenu sur un second vu-mètre.

Afficher le courant nouveau courant I’ consommé sur un indicateur.

ππππ !"ϕϕϕϕ# $ % &'( ( )*ϕϕϕϕ # )*ϕϕϕϕ#

G

ϕ

EXERCICE 2 – 6 pts (4+1+1)

Un projectile est lancé dans le champ de pesanteur terrestre avec une vitesse initiale V0 faisant un angle α avec l’horizontale, à partir d’une position initiale de coordonnées (0,0). Les frottements étant négligés, les équations horaires des coordonnées cartésiennes du centre d’inertie sont :

"5 H>02 B α

5 B α

B α B E B E/BB

B Eα EIB= & '7J

! ! ! " # * *

(48)

$ % & ' ( ) # * # + ,-. /0 & 1 2 ( 3 /0 & 4 '

N.B : Avec les valeurs de V0 et de αααα proposées, le pas temporel pourra être δδδδt = 0,1

et le nombre de points N = 100.

EXERCICE 3 – 7 pts (3,5+3,5)

1°/ Réaliser un programme qui affiche la variable yi pour i allant de 0 à 9 sur un graphe

déroulant sachant qu’à la ième itération : yi = (xi /2 + x i-1/4 + x i-2 / 8)

xi est un tableau de commandes numériques initialisé à (1, 0, 0….) Le déroulement du graphe sera temporisé par une attente de 100 ms.

L’ensemble du programme tournera en boucle et s’arrêtera par appui sur un bouton STOP.

# K * * > > "*

2°/ Réaliser un programme qui affiche la variable yi pour i allant de 0 à 9 sur un graphe

déroulant sachant qu’à la ième itération : yi = (xi + y i-1 ) / 2

xi est un tableau de commandes numériques initialisé à (1, 0, 0….) Le déroulement du graphe sera temporisé par une attente de 100 ms.

L’ensemble du programme tournera en boucle et s’arrêtera par appui sur un bouton STOP.

*

*

*

Figure

Diagramme répété
Diagramme répété
Tableau vide Tableau de variables  numériques ( &#34; $ % &#34; * &amp; ( &amp; '

Références

Documents relatifs

D Tableau 1: Classification des différentes émotions positives 13 AVOIR AVOIR FAIT FAIRE ÊTRE ÊTRE AVEC Plaisir Satisfaction Enjoyment Joie Fun (Csilcszentmihalyi, 1990; (Podilchak,

– la source de document multimédia composé: un composant doit permettre d'obtenir une description du document multimédia à adapter; dans certains cas, cette description est le

Les marques n’ont alors pas intérêt à utiliser cette stratégie lorsque leur cible principale est constituée essentiellement d’hommes plutôt âgés, experts en horlogerie

Les notions de logistiques du consommateur et de transfert d'activité logistique sont tout à fait pertinentes pour celui qui ne souhaite pas trancher entre mise

Along similar lines, Budds (2013) analyses the unfolding of Chilean water reform through the confluence of interests of military, technocratic, and business elites, in

Ainsi en identifiant si dans le pôle on retrouve les critères d’une anarchie organisée, à travers l’analyse de processus de décisions, cela nous permettra de comprendre

Pour traiter de ces questions, nous allons présenter les résultats du cheminement que nous avons suivi dans la thèse afin de révéler, puis d’éclairer

Si avant les années 1980, peu de considérations étaient accordées à ces questions, on a assisté depuis à une multiplication des stratégies d’intervention des