Vous êtes sur la page 1sur 48

!

Traitement
Informatique
Texte Texte
Son Son
Images Données Résultats Images
mesures mesures
Entrées Sorties

" # $
!

Texte Application
=> Fichier source COMPILATEUR autonome
Fichier
exécutable

Langage de Écrire en respectant la syntaxe


programmation d'un langage, la suite des
tâches devant être exécutées
par l'ordinateur, de façon
logique et structurée
Logiciel
installé dans
l'ordinateur

$ %

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

Compilation = Traduction
Assembleur

Langage Machine Le seul compréhensible


par l'ordinateur
& " ' # $ ( " ) *
$ ( " + !

, ) - " , +
!

A lg o r it h m e
S u it e d 'in s t r u c t io n s q u i u n e
f o is e x é c u t é e s c o r r e c t e m e n t
c o n d u it à u n r é s u lt a t d o n n é

A lg o r ith m iq u e
S c ie n c e q u i é t u d ie la
s t r u c t u r e lo g iq u e d e s
p ro g ra m m e s

' %

Pascal
C

Fortran
Algorithme Basic

LabVIEW Visual Basic

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

! "#
3456! ' ) '
' - , ' ,
!
!

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

!
! ! "
- ,' " ;
%

) %

!
$%

' ) $ %

) '
0 ' < 1 $ =
7 ) < - ") =
1 '
>

) ' !

< $ % " # >= ,


< ' ') =
) ' < ' * =!

) !

' ' ? !
&$% ! "

) ' @ %

o
o
o - , -
o 0 !
o >

o '
o 0 < =
o / -
o >

@ ; ) !
A B!

! ! "
$- * A B
) !

$!

"
FACE ARRIERE : DIAGRAMME

1ère variable

FACE AVANT

2ème variable

' , $ $ ' %

o
o
o *
o < " >=

!
, ' '
C * ? ' < :? =!

La palette d'outils (Tool Palette)

Bouger
Pour agir sur les l'ensemble
commandes Texte
(diag ou FA)

Pipette (copier
une couleur)

Pour câbler Colorer un objet

Placer un point d'arrêt Poser une sonde


(probe)

' ) D <
=!

* A B' , ; ' E
" ) * !

! ' (

( )

" "
$ !
) )

( )&

$ F3 FG !

( )*

; - $
; - !

#
& !

!
) ) !
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)
PALETTE DE COMMANDES

Les indicateurs (sauf tableaux)

Palette complète : On retrouve


les commandes et les
indicateurs

) "' ) ' - !
& ' @" ) !

$
! !

$%

+, - ./ /0+1

CODAGE SUR UN OCTET

de 00000000 à 11111111
Sans bit de signe

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

Type unsigned char (langage C) Type U8 en LabVIEW

Avec bit de signe de 00000000 à 01111111

positif
de 0 à 27 -1 = 127
Type char (langage C)
Type I8 en LabVIEW de 11111111 à 10000000
f
négati
Complément à deux de -1 à - 27 = -128

' +22 0 1 0- 3 4. 0 +0, 0. ! " #


1 +, - ./ &+1 .

CO DAG E S UR DE UX O CTE TS

S ans b i t d e si gne

V aleurs décim ales possibles de 0 à 2 16 -1 = 65535

Type unsigned int (langage C ) Type U 16 en LabV IE W

A vec b i t d e si gne
f
p o s it i
de 0 à 2 15 -1 = 32767
Type int (langage C)
Type I16 en LabV IE W
if
n ég at
de -1 à - 2 15 = -32768
Com plém ent à 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

DOUBLE PRECISION : 8 octets

1 bit 11 bits 52 bits

PRECISION ETENDUE : 10 octets

1 bit 15 bits 64 bits


*$%!

Vraie : True
Variable Booléenne

Fausse : False

Codage sur 1 seul bit


N'existe pas dans tous les langages :

OK en labVIEW mais pas en C !

!
$ ' %

! ' ( &

( &)

'$ 3!3 # ) !
$ " !

( &)&

' ∆HI!
; !

( &)*

) " @ " ' "


!

( &)5

) "@ " "


!

!
*

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

Contact fin de course

Marche avant
Variable Mav booléenne
Lire contact Variable contact booléenne
Mav 1
Lire contact
oui non
Contact appuyé ? Si contact = 1
alors Mav 0
sinon « aller à 4ème ligne »
Arrêt moteur fin

Organigramme Pseudo code

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

Instructions 1 Instructions 2

Une structure conditionnelle


(structure de choix) permet de
réaliser une suite d'instructions
ou une autre, en fonction du
Suite résultat d'un test.

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


résultat vrai ou faux d'un test
! "

Cliquer pour visualiser le diagramme réalisé si


condition fausse
Diagramme
délimité, exécuté si
condition vraie
Un seul diag
Condition à écrire visible à la fois

La transmission des
données se fait via un
« tunnel » d'entrée ou de
sortie.

La condition : Les tunnels de sortie


doivent être reliés dans les deux
met en jeux diagrammes conditionnels
un opérateur Le résultat booléen de la
de Le diagramme
condition est connecté au caché
comparaison sélecteur « ? »

"
!

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é
! ' ( *

%
$
H
J
* H !

'$ G!G '


) !
$
' !

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

Contact fin de course Ici, on lit l'état du contact


tant qu'il n 'a pas été enfoncé
Marche avant

Variable Mav booléenne


Lire contact
Variable contact booléenne
Mav 1
oui non
Contact appuyé ? Faire tant que contact = 0
Lire contact
Mav 0
Arrêt moteur fin

Organigramme Pseudo code

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

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

non oui
Condition While = Faire... tant que ....

Toujours réalisé au moins une fois !

Suite

2 6/ 7 0+2 , 4 +0.0 . .,4 2 048 +)


" ! "

Diagramme répété

Terminal conditionnel

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

$ % ,

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

Attente (configurée à 1s)

2 possibilités

$
( &
Le wagon doit faire 10 aller-retour.

Début
La variable i compte les répétitions
(itérations)
i 0

oui non
i=9
Variable i type entier
aller-retour Pour i = 0 à 9
aller-retour
i i+1
i i+1
fin
Fin Organigramme Pseudo code

La boucle FOR permet la répétition d'une suite


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

Instructions du début
Début Pour i = 0 à N-1, faire :
instructions à répéter
i i+1
i 0
suite du programme

oui non
i = N-1

Instructions
à répéter FOR = Pour ... faire ...

i i+1

Suite

Non réalisé si N = 0
Organigramme
2 6/ 7 0+2 , 4 +0. . ,4 2 048 +)
! ! "

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

Diagramme répété

Nombre de tours de
boucle
Terminal d'itération :
compte les répétitions

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
de boucle
! ( 5
9 11 5)

-
I GI ' ' # 1 &!
0 # !

9 11 5)&

K< =!

9 11 5)*

) GI - )
I )
!
: (

! " !

"
# " $

Exemple : Tableau nommé Tab de 3 entiers LA MEMOIRE :


type U8
Empilement
d'octets
Chaque élément du
tableau est repéré par
un indice i allant de 0 Tab[0]
à N-1
Tab[1]
Tab[2]

Les trois éléments se


retrouvent à trois adresses
différentes qui se suivent

Clic droit sur la


face avant &

'

(
"
Tableau vide ) *

&

Tableau de variables &


Indice du 1er numériques
)+
élément visible ,
-

!
Tableau vide

Tableau de variables
numériques

(
" $ %

"
* &

&

'
! (
$% 0 0 4

Indexation : Au ième tour de boucle,


le ième élément du tableau
est transmis par le tunnel d'entrée.

Lors du câblage, l'indexation se


réalise automatiquement.

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é
par le tunnel d'entrée.

"
&$% 0.+

Pas d'indexation :
la dernière valeur
calculée au dernier tour
de boucle est transmise
via le tunnel de sortie

indexation : un tableau des valeurs


calculées à chaque tour de boucle
est transmis via le tunnel de sortie . /01

! (
( :)

3I
I GI!

8 )
!

( :)&

3I
I GI! < 3- '$ =!

" 6 "
# !
( :)*7 .1.. .,/0 41 33 304 )

L MD3 ' $ ' !


M" ' !

#2/ ,
,

2/ ,

& % $ ! % .; < =%

& ( ,( % $ N $ /3 D

0 % $N D !

0 /0 ./ 24 6/ , 2 2 9> ; , .+06; .

( :)57 .1.. .,/0 41 33 3+- 2 6/

L MD3 ' $ ' !


M" ' !

#2/ ,

2/ ,

& % $ ! % N< O =?M N < ? =3?M

& ( ,( % $N $ /3 D

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?M Q

0 /0 ./ -4+24 6/ , 2 2 9> ; , .+06; < % =%

#
?
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.

9 2 3 , 0. ! " 7

Génération d'un
nombre aléatoire

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.
- ) * @ % ' @ ) !

LE FORMATAGE DU GRAPHE

7 " @ A+ 2

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


données.
donnée Le graphe reçoit simultanément
0 5 l'ensemble des données
1 10 sous forme d'un tableau de valeurs.
2 15
3 20
4 25
Les données sont généralement
5 30
calculées dans une boucle
6 35
7 40

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.

Le tableau peut être obtenu par indexation


du tunnel de sortie de la boucle

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

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
Donnée X Donnée Y Le graphe reçoit simultanément
0,1 5 l'ensemble des données
0,2 10 sous forme de 2 tableaux de valeurs.
0,3 15
0,4 20
0,5 25
0,6 30 Les données sont généralement
0,7 35 calculées dans une boucle
0,8 40

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.

Les 2 tableaux sont obtenus directement


au niveau des 2 tunnels de sortie de la boucle.
Ils sont assemblés pour former un cluster.

!
3. +0, 0. ! " 7

Connecter le tableau
des abscisses ici

Connecter le tableau
des ordonnées ici

9 2 3 , 0. ! " 7

Tracé de courbe,
échelle linéaire :
xi = xd + i * (xf-xd)/N

apparaît
automatiquement

On dispose ici
d'un cluster
(assemblage)
de 2 tableaux.

!
!' (

( ?) 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!

!
B
C

EXEMPLE : Programmer n!

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

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

A la ième itération,
Variable facto type entier on utilise le résultat
Variable i type entier calculé à l'itération
facto 1 précédente
Pour i = 1 à N faire
facto facto.i
En Labview cela se fait
i i+1
grâce au registre à décalage
afficher facto
fin

! "
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.
Au ième tour de boucle, la valeur
calculée est fonction
de la valeur calculée au tour précédent

5# / 6

5# 6

5 #2/

!!
7 * ( *

Factorielle n

Valeurs au dernier tour de boucle

La valeur calculée à la
dernière itération sort par
Clic droit sur le bord de la boucle le tunnel du registre

'''8 3769 9:74 ; <' 74

/=>7?7; 7

$ % ,@ # 8 U -

8 N< D D = ?U
/3 OG

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

6 9 )
5# / 9

6 9 )
9
5#
6 9 )
5 #2/

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
Tirer avec la aléatoires générés
souris pour
disposer de la
donnée
transmise par /
la i-2ème
itération 0

!"
!

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!

!
D

Langage classique : Langage LabVIEW :

Flot d'instructions Flot de données

@
On ne maîtrise pas
Les instructions écrites
l'ordre d'exécution
s'exécutent séquentiellement
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 Étape 2 Étape 3


diag 1 diag 2 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 '$ !

!#
@ !

!
(

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

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

Cette structure peut également être utilisée également pour


commander un système séquentiel (feux de carrefour)

!$
! !

) ' ,' ' #


' !

& *
A ,)
! (

( D) 7 $ '
! . $ G G ) !
E
!
& < =" ) ,
) ! ) ) ' " *
" + , ) !

7 '$ / " ) <) ' = ;


! <3ID =W !
7 '$ " ) ! ) 3
" 33 *!

M "
' !
, 'E ' ) / !
!

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

!
" 'E , % 'E
!

; * /
" , "
' 'E !
) ) ,' !

0 %
7 " %

; ) , ) !
'E * '
!< / =!

"
' (

( E) 7 +2 / 8 F.4 4..

# $ )
' !

<= / !

2/B % & (8/B


DC

/ C % & (2/B
E/
/B

3X? <: ) = <=


< 1 $ GI = ' ' #
!

2F

F
GX?C ; <= YZ!
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 α E IB= & '7J

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

. /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.
*