Professional Documents
Culture Documents
Cours MATLAB
ecole ding
enieurs du canton de Vaud (eivd )
D
epartement d
electricit
e et dinformatique
institut dAutomatisation industrielle (iAi)
Introduction au logiciel
MATLAB
in s t i t u t d '
Automatisation
in d u s t r i e l l e
version 1.2
eivd
Cours MATLAB
2 M
ethode de travail
2.1 Edition et sauvegarde des fichiers MATLAB . . . . . . . . . . . .
2.1.1 Editeur PFE . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Creation de fichiers de commandes et de fonctions utilisateur . .
2.3.1 Fichiers de commande (script files) . . . . . . . . . . .
2.3.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Sauvegarde de donnees sur disque . . . . . . . . . . . . . . . . .
2.4.1 Repertoires de sauvegarde : D :\USERS et compte EINET
3 Les bases de MATLAB
3.1 Creation et calcul de vecteurs et matrices . . .
3.1.1 Vecteurs . . . . . . . . . . . . . . . . .
3.1.2 Matrices . . . . . . . . . . . . . . . . .
3.1.3 Construction de matrices particuli`eres
3.1.4 Nombres complexes . . . . . . . . . . .
3.2 Operations sur les tableaux . . . . . . . . . .
3.3 Representation graphique 2D . . . . . . . . .
3.3.1 Exemple . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
7
8
8
8
9
10
.
.
.
.
.
.
.
.
11
11
11
11
13
14
14
15
16
4 Analyse de syst`
emes dynamiques lin
eaires `
a laide de la bote `
a
outils control systems
4.1 Introduction de fonctions de transfert . . . . . . . . . . . . . . . .
4.1.1 Introduction sous forme polynomiale . . . . . . . . . . . .
4.1.2 Introduction sous forme de zeros, poles et gain (forme
dEvans) . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Introduction de mod`eles detat . . . . . . . . . . . . . . . . . . . .
4.3 Passage dun mod`ele `a lautre . . . . . . . . . . . . . . . . . . . .
4.4 Construction de schemas fonctionnels . . . . . . . . . . . . . . . .
4.4.1 Fonctions series, cloop . . . . . . . . . . . . . . . . . . . .
4.4.2 Fonction feedback . . . . . . . . . . . . . . . . . . . . . . .
4.5 Calcul et trace de reponses de syst`emes dynamiques lineaires . . .
4.5.1 Reponse temporelle . . . . . . . . . . . . . . . . . . . . . .
4.5.2 Reponse frequentielle . . . . . . . . . . . . . . . . . . . . .
4.6 Analyse des proprietes des syst`emes . . . . . . . . . . . . . . . . .
4.7 Calcul affichage des marges de gain et de phase . . . . . . . . . .
4.8 Trace du lieu dEvans . . . . . . . . . . . . . . . . . . . . . . . . .
4.9 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
version 1.2
17
17
17
18
19
19
20
20
22
24
24
28
28
28
29
29
eivd
Cours MATLAB
30
6 Simulation de syst`
emes dynamiques lin
eaires et non-lin
eaires
avec la bote `
a outils Simulink
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Exemple introductif : simulation dun syst`eme dynamique lineaire
6.2.1 Modelisation . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.2 Construction du schema . . . . . . . . . . . . . . . . . . .
6.2.3 Initialisation des param`etres . . . . . . . . . . . . . . . . .
6.2.4 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.5 Sauvegarde des signaux puis traitement dans lespace de
travail MATLAB . . . . . . . . . . . . . . . . . . . . . . . .
6.2.6 Lancement de la simulation `a partir de MATLAB . . . . .
6.3 La biblioth`eque standard . . . . . . . . . . . . . . . . . . . . . . .
6.3.1 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.2 Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.3 Discrete . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.4 Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.5 Nonlinear . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.6 Connections . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4 Les S-functions de Simulink (version provisoire) . . . . . . . . . .
6.4.1 Conventions dappel des S-functions . . . . . . . . . . . . .
6.4.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.3 Autres fonctionnalites de Simulink . . . . . . . . . . . . . .
version 1.2
31
31
33
34
34
39
40
43
46
47
47
48
50
51
52
54
55
55
56
56
eivd
Cours MATLAB
Introduction
eivd
Cours MATLAB
Linterface graphique de MATLAB est sans conteste lun des points forts du
logiciel et facilite le trace de courbes et lobtention de graphiques 2D ou 3D de
grande qualite (plot, stairs, stem, hist, mesh, surf, plot3). Le module Handle Graphics offre la possibilite de controler integralement cette interface, permettant
ainsi `a lutilisateur de mettre en forme tous elements dun graphique, de creer ses
propres menus (uimenu) ainsi que des objets graphiques tels que sliders (ascenseurs), boutons, menu surgissants (uicontrol) avec une facilite deconcertante.
Le langage MATLAB contient un minimum de structures de programmation (structure iterative, structure conditionnelle, sous-routine) mais reste tr`es
rudimentaire. Lavantage est quil est tr`es simple et tr`es rapide `a programmer,
offrant une grande tolerance (syntaxe simple, pas de definition de types, etc), ce
qui permet un gain appreciable en temps de mise au point. Lingenieur peut par ce
moyen etre plus efficace dans lanalyse dun probl`eme, en concentrant ses efforts
sur celui-ci et non pas sur loutil servant `a le resoudre. En revanche, MATLAB ne
convient pas `a la programmation dapplications dune certaine ampleur. Dans ce
dernier cas, il est possible, sous certaines conditions, de programmer lapplication
en C et de lexecuter `a partir lespace de travail MATLAB.
Au logiciel de base sajoutent, selon la configuration choisie, les fonctions
provenant dune serie de botes `a outils (toolbox ) dedies `a des domaines techniques
specifiques, comme
le traitement de signal (signal processing toolbox ),
la regulation automatique (control system toolbox ),
lidentification (system identification toolbox ),
les reseaux de neurones (neural networks toolbox ),
la logique floue (fuzzy logic toolbox ),
le calcul symbolique (symbolic math toolbox),
et bien dautres encore. Ces botes `a outils sont simplement constituees dun
ensemble de fonctions specialisees programmees `a partir des fonctions de base de
MATLAB, permettant par exemple la synth`ese de filtres, le calcul de FFTs, la
simulation dalgorithmes flous ou encore le calcul de reponses harmoniques.
Simulink nest rien dautre quune bote `a outils de MATLAB permettant au
moyen dune interface graphique evoluee la construction rapide et aisee ainsi
que la simulation de schemas fonctionnels complexes, contenant des syst`emes
lineaires, non lineaires voire non-stationnaires, y compris des operateurs logiques,
des outils mathematiques danalyse, etc.
Dans le cadre de la regulation automatique, MATLAB constitue avant tout un
tr`es puissant outil danalyse des syst`emes dynamiques lineaires, dont on peut tr`es
facilement obtenir les proprietes, comme les poles et zeros (tf2zp, roots) ou le gain
statique (dcgain, ddcgain) et tracer les reponses de tous types, la reponse impulsionnelle (impulse), indicielle (step), `a un signal quelconque (lsim), ou harmonique
(bode, nyquist). MATLAB se prete aussi bien `a lanalyse des syst`emes analogiques
ou numeriques (step et dstep, impulse et dimpulse, bode et dbode, lsim et dlsim),
sans quil soit cependant possible detudier des syst`emes mixtes analogiquesversion 1.2
eivd
Cours MATLAB
Autres liens :
version 1.2
(031) 954.20.16
(031) 954.20.22
http://www.mathworks.com
http://www.mathworks.ch
ftp.mathworks.com
http://www.scientific.de
http://www.sysquake.com
http://www-rocq.inria.fr/scilab/
eivd
2
2.1
2.1.1
Cours MATLAB
M
ethode de travail
Edition et sauvegarde des fichiers MATLAB
Editeur PFE
2.2
Aide en ligne
En plus de laide de Windows, une aide en ligne est disponible pour chaque
commande de MATLAB. Il suffit dintroduire :
version 1.2
eivd
Cours MATLAB
2.3
2.3.1
Cr
eation de fichiers de commandes et de fonctions
utilisateur
Fichiers de commande (script files)
Un fichier de commande (script file) est un fichier ASCII dextension .M contenant une suite de commandes MATLAB. Il etre execute directement en tapant
simplement son nom dans lespace de travail MATLAB.
2.3.2
Fonctions
version 1.2
eivd
Cours MATLAB
Ceci permet de fournir une aide en ligne pour chaque fonction utilisateur
nouvellement creee. Pour la fonction lin2db, on documentera par exemple comme
suit :
function [ y ] = l i n 2 d b ( x )
%f u n c t i o n [ y ] = l i n 2 d b ( x )
%c o n v e r s i o n en dB
y = 20 log10 ( x ) ;
En tapant help lin2db, on obtiendra alors :
2.4
Sauvegarde de donn
ees sur disque
Les variables definies dans lespace de travail MATLAB peuvent etre sauvegardees dans des fichiers ASCII par la commande :
save chemin\nom_de_fichier.dat nom_de_variable -ascii
Un tel fichier ASCII peut etre ulterieurement relu soit par MATLAB (fonction
load) soit par dautres programmes (Excel, Word, etc). Dans le premier cas, il
est cependant conseille de sauver directement la variable dans un fichier binaire
*.MAT de format specifique `a MATLAB :
save chemin\nom_de_fichier nom_de_variable
La fenetre graphique peut etre soit imprimee directement, soit sauvee dans un
fichier, lequel peut etre integre dans un document (menu importation dimage)
ou imprime ulterieurement. Signalons, parmi les differents formats de fichiers disponibles, le format PostScript qui fournit une qualite irreprochable. Par exemple,
le sauvetage de la fenetre graphique courante seffectue par :
print chemin\ nom_de_fichier.eps -deps
pour le format PostScript et par
version 1.2
eivd
Cours MATLAB
R
epertoires de sauvegarde : D :\USERS et compte EINET
version 1.2
10
eivd
Cours MATLAB
3.1
3.1.1
Cr
eation et calcul de vecteurs et matrices
Vecteurs
Matrices
11
eivd
Cours MATLAB
0 1 20 9
ou encore, ayant defini prealablement les vecteurs-ligne v1, v2 et v3 :
v1 = [ 5 , 2 , 1 3 , 4 ] ;
v2 = [ 6 , 8 , 3 , 1 0 ] ;
v3 = [ 0 , 1 , 2 0 , 9 ] ;
m=[ v1 ; v2 ; v3 ]
Lacc`es `a un element de la matrice seffectue par :
m( 2 , 4 )
et lon obtient :
ans =
10
Le remplacement de 2 par : (deux points) permet dobtenir toute la colonne 4 :
m( : , 4 )
et lecran affiche le vecteur-colonne :
ans =
4
10
9
De meme, laffichage dune sous-matrice sobtient par :
m( 2 : 3 , 2 : 4 )
et lecran affiche :
ans =
8 3 10
1 20 9
Lacc`es aux colonnes 2 et 4 de la matrice m se realise comme suit :
m( : , [ 2 , 4 ] )
ce qui produit :
version 1.2
12
eivd
Cours MATLAB
ans =
2 4
8 10
1 9
Parmi les operations matricielles qui ont une certaine importance pratique, signalons loperateur de transposition
m
donnant dans le cas de lexemple
ans =
5 6 0
2 8 1
13 3 20
4 10 9
et la fonction eig qui calcule les valeurs propres dune matrice. Soit la matrice
carree 4 4 formee de composantes aleatoires (ici utilisation de la fonction rand)
A=rand ( 4 , 4 )
A=
0.2190 0.9347
0.0470 0.3835
0.6789 0.5194
0.6793 0.8310
0.0346
0.0535
0.5297
0.6711
0.0077
0.3834
0.0668
0.4175
Les routines ones et zeros permettent de construire des matrices dont tous les
elements sont egaux `a 1 respectivement `a 0. Voir egalement eye (matrice identite),
diag (matrice diagonale), linspace (vecteur dont les composantes sont espacees
lineairement entre deux limites) et logspace (vecteur dont les composantes sont
espacees logarithmiquement entre deux limites).
version 1.2
13
eivd
3.1.4
Cours MATLAB
Nombres complexes
Les vecteurs et matrices peuvent avoir des composantes complexes. Les nombres
complexes sont introduits comme suit :
x = a + j b ;
ou
x = a + i b ;
Lunite de laxe imaginaire est donc indifferemment i ou j. Des fonctions sont
prevues pour le calcul de la partie reelle (real(x)), de la partie imaginaire (imag(x)),
du module (abs(x)), de largument (angle(x)) et du conjugue complexe (conj(x)).
3.2
Op
erations sur les tableaux
=
a21 a22
b21 b22
a21 b11 + a22 b21 a21 b12 + a22 b22
et le produit, element par element de deux tableaux :
a11 a12
b11 b12
a11 b11 a12 b12
=
a21 a22
b21 b22
a21 b21 a22 b22
version 1.2
14
eivd
Cours MATLAB
Remarque Ici, la fonction linspace a ete utilisee, une variante etant decrire
t h e t a =4pi : 8 pi / ( 1 0 0 1 ) : 4 pi ;
3.3
Repr
esentation graphique 2D
version 1.2
15
eivd
3.3.1
Cours MATLAB
Exemple
La suite des instructions ci-dessous calcule et trace le sinus, le sinus carre ainsi
que le sinus cardinal de langle defini `a laide de linstruction linspace :
t h e t a =linspace (4 pi , 4 pi , 1 0 0 ) ;
s i n c = sin ( t h e t a ) . / t h e t a ;
s i n u s 2 = sin ( t h e t a ) . 2 ;
figure ( 1 ) , plot ( t h e t a , sin ( t h e t a ) , t h e t a , s i n u s 2 , . , t h e t a , s i n c , x )
m = [ sin ( t h e t a ) , s i n u s 2 , s i n c ] ;
figure ( 2 ) , plot ( t h e t a , m)
10
10
15
10
10
15
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
15
version 1.2
16
eivd
4
4.1
4.1.1
Cours MATLAB
Analyse de syst`
emes dynamiques lin
eaires `
a
laide de la bote `
a outils control systems
Introduction de fonctions de transfert
Introduction sous forme polyn
omiale
1 + s 10
1 + s 2 + s2 0.1
2.71828
s
( t )
+
-
e ( t )
G
c
( s )
( t )
a 1
( s )
( t )
+
S
a 2
( s )
f _
version 1.2
17
. e p
( t )
eivd
Cours MATLAB
s + 20
s
s + 10
+ 2 s + 0.11
(s + 0.1)
Ga2 (s) = 36 2
s + 20 s + 10
s2
Notons qu`a partir de la version 5.0 de MATLAB, il existe des objets fonction de
transfert, que lon peut introduire comme suit (cas de lexemple ci-dessus) :
numGc= 2 [ 1 , 2 0 ] ;
denGc = [ 1 , 0 ] ;
Gc=t f ( numGc, denGc )
numGa1=1e 3 [ 1 , 1 0 ] ;
denGa1 = [ 1 , 2 , 0 . 1 1 ] ;
Ga2=t f ( numGa1, denGa2 )
numGa2 = 3 6 [ 1 , 0 . 1 ] ;
denGa2 = [ 1 , 2 0 , 1 0 ] ;
Ga2=t f ( numGa2, denGa2 )
On peut alors calculer sans autre :
Go=GcGa1Ga2 ;
Gw=Go/(1+Go) ;
Gv=Ga2/(1+GcGa1Ga2 ) ;
4.1.2
version 1.2
18
eivd
Cours MATLAB
(s + 3)2 + 72
5.32
G (s) =
s
(s + 11) (s + 5)2 + 32
5.32
(s (3 + 7j)) (s (3 7j))
=
s
(s (11)) (s (5 + 3j)) (s (5 3j))
La suite de commandes necessaires est simplement :
zG=[3+j 7,3 j 7 ] ;
sG=[0,10,5+ j 3,5 j 3 ] ;
kG=5.32;
Il va sans dire que lon privilegiera cette forme lorsque les numerateur et
denominateur de la fonction de transfert du syst`eme G(s) ou G(z) ne sont pas
directement disponibles sous forme de polynomes.
4.2
Introduction de mod`
eles d
etat
4.3
Les poles et zeros des fonctions de transfert sont obtenus `a laide de la fonction
tf2zp (transfer function to zero pole) :
[ zG, sG , kG]= t f 2 z p (numG, denG ) ;
MATLAB place alors les zeros et les poles dans les vecteurs-colonne zG et sG,
respectivement, et le facteur dEvans dans la variable kG. Les noms zG, sG et kG
sont arbitraires. On acc`ede `a ces valeurs par exemple en tapant leur nom :
version 1.2
19
eivd
Cours MATLAB
sG
MATLAB affiche :
sG=
19.4868
0.5132
Remarque : un polynome est introduit sous la forme dun vecteur-ligne v
dont les composantes representent les coefficients des puissances decroissantes ;
ses racines sont obtenues par la fonction roots(v)
Toute une categorie de routines permettent de passer dun mod`ele `a lautre :
forme polynomiale forme tf2zp [zG,sG,kG]=tf2zp(numG,denG) ;
en zeros, poles et gain
forme
polynomiale
tf2ss
[AG,BG,CG,DG]=tf2ss(numG,denG) ;
mod`ele detat
forme en zeros, poles et gain zp2tf [numG,denG]=zp2tf(zG,sG,kG) ;
forme polynomiale
forme en zeros, poles et gain zp2ss [AG,BG,CG,DG]=zp2ss(zG,sG,kG) ;
mod`ele detat
mod`ele detat forme po- ss2tf
[numG,denG]=ss2tf(AG,BG,CG,DG) ;
lynomiale
mod`ele detat forme en ss2zp [zG,sG,kG]=ss2zp(AG,BG,CG,DG) ;
zeros, poles et gain
mod`ele detat autre ss2ss [AG2,BG2,CG2,DG2]=ss2ss(AG,BG,CG,DG,T) ;
mod`ele detat, avec matrice
de transformation T
4.4
4.4.1
Construction de sch
emas fonctionnels
Fonctions series, cloop
Prenons pour exemple le schema fonctionnel universel, dont on souhaite obtenir les fonctions de transfert en boucle ouverte Go (s) et en boucle fermee Gw (s).
Pour ce faire, faut proceder par etapes, comme lindique la figure ci-apr`es :
v
( t )
+
-
e ( t )
G
c
( s )
( t )
a 1
( s )
( t )
+
S
a 2
( s )
f _
version 1.2
20
. e p
( t )
eivd
Cours MATLAB
Amplitude
0.5
0
0
10
15
20
25
30
35
40
Time (sec.)
version 1.2
21
eivd
Cours MATLAB
Bode Diagrams
50
50
100
100
120
140
160
180
200
220
3
10
10
10
10
10
10
Frequency (rad/sec)
1
0.8
0.6
0.4
Imag Axis
0.2
0
0.2
0.4
0.6
0.8
1
1
4.4.2
0.8
0.6
0.4
0.2
0
Real Axis
0.2
0.4
0.6
0.8
Fonction feedback
version 1.2
Y (s)
Ga (s)
=
V (s)
1 + Ga (s) Ga (s)
22
eivd
Cours MATLAB
( t )
as
1
cs
( s )
( t )
( s )
f _
. e p
1.5
Amplitude
0.5
0.5
10
15
20
25
30
Time (sec.)
version 1.2
23
eivd
4.5
4.5.1
Cours MATLAB
Calcul et trac
e de r
eponses de syst`
emes dynamiques
lin
eaires
R
eponse temporelle
Lorsque quaucun argument de sortie nest specifie (lhs, left handside argument), le calcul et le trace des reponses sont simultanes.
Les fonctions impulse, step, lsim, et pour les syst`emes numeriques, dimpulse,
dstep, dlsim sont disponibles. Leur signification sont donnees sur les tables 4.5.1 page
suivante et 4.5.1 page 26.
SYSTEMES NUMERIQUES
[y,x]=dimpulse(numH,denH,n) ;
[y,x]=dstep(numH,denH,n) ;
[y,x]=dlsim(numH,denH,u) ;
version 1.2
et
indicielle
24
en b o u c l e ferm
ee )
eivd
SYSTEMES ANALOGIQUES
Cours MATLAB
REPONSE
EXEMPLE
25
20
Amplitude
15
10
impulse(numG,denG,t)
0
0
reponse impulsionnelle
0.5
1.5
Time (secs)
2.5
15
Time (secs)
20
25
30
0.8
Amplitude
0.6
0.4
0.2
step(numG,denG,t)
reponse
cielle
0.2
0
indi-
10
0.25
0.2
0.15
0.1
Amplitude
0.05
0
0.05
0.1
0.15
0.2
lsim(numG,denG,u,t)
initial(A,B,C,D,x0,t)
reponse `a une
entree u quelconque definie
par lutilisateur
reponse
du
syst`eme lorsque
ses
conditions
initiales sont x0
0.25
0
0.2
0.4
0.6
0.8
1
1.2
Time (secs)
1.4
1.6
1.8
Tab. 1
version 1.2
25
eivd
Cours MATLAB
SYSTEMES NUMERIQUES
dimpulse(numH,denH,n)
dstep(numH,denH,n)
dlsim(numH,denH,u)
REPONSE
reponse impulsionnelle
reponse indicielle
reponse `a une entree u quelconque
definie par lutilisateur
reponse du syst`eme lorsque ses conditions initiales sont x0
dinitial(A,B,C,D,x0,n)
Tab. 2
PARAMETRE
t
SIGNIFICATION
(facultatif)
vecteur-ligne
de
temps,
specifiant les instants o`
u la
reponse doit etre calculee
(ce param`etre est obligatoire
si lon utilise lsim)
(facultatif)
nombre dechantillons desires
(facultatif)
vecteur-ligne de pulsation,
specifiant les pulsations o`
u la
reponse doit etre calculee
vecteur-colonne de lentree
simulee du syst`eme
(ce param`etre est obligatoire
si lon utilise lsim ou dlsim)
EXEMPLE
t=[0 :0.01 :0.2] ;
ou
t=linspace(0,0.2,201) ;
(cree un vecteur temps variant entre
0[s] et 0.2[s] par pas de 0.01[s])
n=10 ;
(seuls les 10 premiers echantillons de
la reponse seront affiches)
w=logspace(2,5,100) ;
(cree un vecteur pulsation de 100
points espaces logarithmiquement et
variant entre 102 [rad/s] et 105 [rad/s])
u=1.5*sin(2*pi*10*t) ;
(cree un vecteur u representant une
entree sinusodale damplitude 1.5 et
de frequence 10[Hz]. u est calcule
pour chaque instant defini dans le
vecteur t, par exemple celui donne cidessus)
Tab. 3
version 1.2
26
eivd
Cours MATLAB
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0.2
10
15
20
t [s]
25
30
35
40
40
30
20
10
0
10
15
20
25
30
35
40
25
30
35
40
Erreur
2.5
2
1.5
1
0.5
0
version 1.2
10
15
20
t [s]
27
eivd
4.5.2
Cours MATLAB
R
eponse fr
equentielle
Les fonctions bode, nyquist, nychols, et pour les syst`emes numeriques, dbode,
dnyquist, dnychols sont disponibles. Leur signification est la suivante :
SYSTEMES ANALOGIQUES
bode(numG,denG,w)
SYSTEMES NUMERIQUES
dbode(numH,denH,h,w)
Si les resultats des calculs doivent etre sauvegardes en vue dun traitement ulterieur,
on indique egalement des arguments de sortie :
SYSTEMES ANALOGIQUES
[A,phi,w]=bode(numG,denG,w)
SYSTEMES NUMERIQUES
[A,phi,w]=dbode(numH,denH,h,w)
4.6
dcgain(num,den)
ddcgain(num,den)
damp(den)
ddamp(den)
4.7
[Am,phi m]=margin(numGo,denGo)
version 1.2
Marges de phase
et de gain dun
syst`eme
analogique.
28
Si les arguments de
sortie ne sont pas
specifies, trace le
lieu de Bode et
montre graphiquement la valeur des
marges
eivd
4.8
Cours MATLAB
Trac
e du lieu dEvans
rlocus(num,den,k)
sgrid
zgrid
4.9
A executer directement
apr`es rlocus et sgrid ; une
croix est alors affichee,
que lon peut deplacer
avec la souris sur un
point particulier du lieu.
En cliquant , on obtient
alors dans k le facteur
dEvans correspondant et
dans p lexpression du
pole.
Divers
minreal(num,den)
printsys(num,den,s)
printsys(num,den,z)
version 1.2
Force la compensation
pole-zero.
Affiche les fonctions de
transfert comme fractions ratrionnelles en s ou
en z
29
eivd
Cours MATLAB
version 1.2
30
eivd
Cours MATLAB
Simulation de syst`
emes dynamiques lin
eaires
et non-lin
eaires avec la bote `
a outils Simulink
6.1
Introduction
La bote `a outils Simulink est un complement extremement puissant `a MATLAB. Les contributions de Simulink sont principalement :
1. La construction conviviale de schemas fonctionnels, faite `a la souris ;
2. La simulation de syst`emes lineaires et surtout non-lineaires, ainsi que de
syst`emes non-stationnaires ;
3. La simulation de syst`emes mixtes analogiques et numeriques.
31
eivd
Cours MATLAB
32
eivd
Cours MATLAB
forts de MATLAB/Simulink.
La combinaison de Simulink et dun syst`eme dacquisition en temps reel est
possible mais tr`es delicate et limitee en rapidite, notamment `a cause de la lenteur
et de la complexite de Windows. Un travail allant dans cette direction a ete
effectue dans le cadre de linstitut dAutomatisation industrielle de leivd.
La programmation graphique, i.e. lintroduction directe de schemas fonctionnels, est un outil fanstastique offert par Simulink. Cependant, les limites de ce
genre de programmation sont rapidement atteintes lorsque le syst`eme est relativement complexe, auquel cas il sera plus facile de programmer Simulink en texte
de mani`ere classique, i.e. en creant des fonctions S (S-function), plutot que dinterconnecter les blocs par de nombreuses lignes creees `a la souris. Les fonctions
S ont un format un peu particulier, propre `a Simulink, mais secrivent presque
aussi simplement que les fonctions MATLAB ; elles consistent `a programmer les
equations differentielles du syst`eme `a simuler.
6.2
L
a
K
a
K
E
( t )
a l i e r s
u
a
( t )
C
e
e f f i c i e n
f r o
i s q
R
t t e m
u
e u
e n
t
t
f _
. e p
33
eivd
Cours MATLAB
Mod
elisation
Les mod`eles en t et en s du syst`eme sont (les conditions initiales etant supposees identiquement nulles) :
ua = Ra ia + La didta + KE Ua = Ra Ia + La s Ia + KE
Tem = KT ia
L Tem = KT Ia
d
J s = Tem Rf
J dt = Tem Rf
Apr`es mise en equations, le schema fonctionnel detaille est celui de la figure 3.
i
a
( t )
e m
( t )
u
a
( t )
S
1
R
+
1
a
s
R
K
a
K
E
+
s
f t
J
R
( t )
f t
f _
. e p
6.2.2
Construction du sch
ema
version 1.2
34
eivd
Cours MATLAB
Fig. 4
Pour definir la fenetre de travail, selectionner New dans le menu File. Une
nouvelle fenetre est alors activee, nommee automatiquement Untitled. Cest dans
cette meme fenetre que le schema sera construit `a partir des blocs contenus dans
les biblioth`eques Simulink, voire dautres blocs crees par lutilisateurs et reunis
dans dautres biblioth`eques. Revenant `a la fenetre Simulink et double-cliquant
sur le groupe Linear, apparaissent alors certains blocs utiles `a la construction
(figure 4) :
le sommateur (Sum) ;
le gain (Gain)
la fonction de transfert (Transfer Fcn).
Selectionnant le premier de ces blocs `a laide de la souris dont le bouton gauche
est maintenu presse, on am`ene le bloc dans la fenetre de travail en deplacant la
version 1.2
35
eivd
Cours MATLAB
Fig. 5
Pour faciliter la schematique, le bloc Gain 1 peut etre change de sens en le
selectionnant (le selectionner avec la souris) et en choisissant Flip Horizontal dans
le menu Options. On peut aussi faire usage des fonctionnalites offertes par le
bouton droit de la souris.
Il faut alors realiser les interconnections, toujours `a la souris, en en maintenant
le bouton gauche presse, la souris pointant sur la fl`eche symbolisant lentree ou la
sortie du bloc `a connecter (le curseur prend la forme dune fine croix, alors quil
a lallure dune croix en trait epais dans le cas aucune entree ou sortie ne sont
selectionnees). Le bouton gauche etant toujours presse, on am`ene la souris sur la
fl`eche du port `a relier. On obtient alors facilement le schema de la figure 6 page
suivante.
version 1.2
36
eivd
Cours MATLAB
1
Comparateur
s+1
s+1
Gain
Transfer Fcn
Transfer Fcn1
1
Gain1
Fig. 6
Les equations du moteur `a courant continu montrent que la FEM est contrereactionnee. Double-cliquer alors sur le bloc Sum et changer la liste des signes
de ++ en +-. A titre de documentation, il vaut egalement la peine de renommer ces blocs, en cliquant sur les textes les accompagnant et les remplacant par
des designations plus parlantes, comme par exemple induit, constante de couple,
charge mecanique et constante de FEM (figure 7). Tant qu`a faire, pourquoi ne
pas aussi nommer les signaux, en cliquant `a lendroit o`
u le commentaire doit
apparatre (ne pas cliquer lun des blocs ou lune des connections) et en tapant le
texte. Lutilisation daccents est aux risques et perils de lutilisateur dun logiciel
dorigine americaine !
Tem
ia
ua
1
Comparateur
s+1
Constante
de couple
Induit
w
1
s+1
Charge
mcanique
1
Constante
de FEM
Fig. 7
La parametrisation des blocs seffectue en double-cliquant et en remplissant les
rubriques de la bote de dialogue qui apparat alors (figure 8 page suivante). Par
version 1.2
37
eivd
Cours MATLAB
Fig. 8
Il reste `a specifier le signal dentree (la tension dinduit ua (t)) et les signaux
interessants `a visualiser ainsi que les moyens pour le faire. On propose pour cet
exemple que ua (t) ait la forme dun saut unite, que lon visualise en plus de la
vitesse angulaire (t) `a laide dun oscilloscope.
Pour generer la tension dinduit ua (t), on ouvre le groupe Sources de la fenetre
simulink et lon am`ene le bloc Step Input dans la fenetre de travail, en le connectant
au comparateur. Pour visualiser les signaux, on ouvre le groupe Sinks de la fenetre
simulink et lon am`ene egalement le bloc Scope. Comme lon souhaite afficher
deux signaux simultanement, il faut aller chercher dans le groupe Connections un
multiplexeur (bloc Mux).
Il est encore necessaire de parametrer ces nouveaux blocs. En double cliquant
successivement sur chacun deux, on peut specifier que :
le saut-unite seffectue d`es linstant zero, son amplitude etant 1 ;
lechelle horizontale de loscilloscope est 0.08 (selon 6.2.4 page 40 ) ;
le multiplexeur a deux entrees (ua (t) et (t)).
Apr`es avoir connecte ces blocs, on obtient le schema suivant de la figure 9 page
suivante.
version 1.2
38
eivd
Cours MATLAB
Step Input
Tem
ia
ua
numGa1(s)
Comparateur
denGa1(s)
Induit
Km
Constante
de couple
w
numGa2(s)
Mux
Scope
denGa2(s)
Charge
mcanique
Mux
Km
Constante
de FEM
Fig. 9
Il est alors temps de sauver le schema dans un fichier, ce qui se fait `a partir
du menu File, option SaveAs....On propose dappeler ce schema ex 01, `a sauver
dans d:\users. Simulink le sauve doffice avec lextension .mdl.
6.2.3
F o n c t i o n s de t r a n s f e r t
numGa1 = 1/ Ra ;
denGa1 = [ La/Ra , 1 ] ;
numGa2 = 1/ Rf ;
denGa2 = [ J / Rf , 1 ] ;
version 1.2
39
eivd
Cours MATLAB
On peut verifier que MATLAB connat desormais toutes les variables (vues par
les blocs Simulink comme des param`etres) necessaires `a la simulation en tapant
who (figure 10).
Fig. 10
6.2.4
Simulation
On peut maintenant revenir `a la fenetre Simulink ex 01 (si elle nest plus ouverte, simplement taper son nom dans MATLAB) et entrer dans le menu Simulation, option Parameters, ou plusieurs choix importants doivent etre faits ( 11 page
suivante).
version 1.2
40
eivd
Cours MATLAB
Fig. 11
Il sagit de determiner tout dabord la m
ethode dint
egration numerique
des equations differentielles. On choisira par defaut Runge-Kutta 45.
Linstant de d
epart de la simulation ainsi que celui auquel elle se termine
sont fixes notamment en fonction de la duree de la simulation desiree.
Le pas dint
egration maximum est `a ajuster avec precaution, puisquil a
une influence determinante sur la precision et le temps de calcul. On voit quil est
necessaire, avant de demarrer la simulation, de se faire une idee de la rapidite des
phenom`enes. Dans le cas de lexemple traite, la constante de temps mecanique
Tm et electrique Te
Ra J
1.84 [] 0.0061 [kg m2 ]
= 0.0139 [s]
=
2
KT KE
0.9 NAm
La
7.7 [mH]
Te =
=
= 0.0042 [s]
Ra
1.84 []
Tm =
41
eivd
Cours MATLAB
Fig. 12
En double-cliquant sur loscilloscope, on peut encore ajuster
rad sont ses echelles
horizontale et verticale, que lon choisira ici `a 0.08 [s] et 1.2 s respectivement.
A noter que 0.08
[s] represente la largeur totale de lecran de loscilloscope (soit 5
rad
divisions), 1.2 s etant equivalent `a la moitie de la hauteur (soit 3 divisions).
Il reste maintenant `a lancer la simulation, en choisissant loption Start du
menu Simulation.
Si lon bascule (Alt Tab) sur loscilloscope, laffichage est alors normalement
conforme `a la figure 13 page suivante. Au besoin, on peut appuyer sur le bouton
zoom (symbole jumelles).
version 1.2
42
eivd
Cours MATLAB
Fig. 13
6.2.5
version 1.2
43
eivd
Cours MATLAB
Fig. 14
Le schema se presente alors comme suit, sauve dans le fichier ex 02.mdl (figure 15)
Step Input
Tem
ia
ua
numGa1(s)
Comparateur
denGa1(s)
Induit
w
numGa2(s)
Km
Mux
Scope
denGa2(s)
Constante
de couple
Charge
mcanique
Mux
Km
Constante
de FEM
Clock
Mux
mesures
To Workspace
Mux1
Fig. 15
Comme precedemment, on demarre la simulation et lorsque celle-ci est terminee, on peut revenir `a lespace de travail MATLAB et decouvre lexistence de
la variable mesures, creee par le bloc To Workspace.
Le fichier MATLAB cal 01.m suivant en extrait les informations et trace les
trois courbes ua (t), (t) et Tem (t), ainsi que la puissance mecanique Pmec (t) apr`es
avoir calcule celle-ci (figure 16 page suivante).
%/
%
%
CAL 01 . M
%
%
F i c h i e r s c r i p t c o n t e n a n t l a s u i t e d e s commandes
%
n e c e s s a i r e s a l i n t e r p r e t a t i o n de l a v a r i a b l e
%
m e s u r e s p r o d u i t e par e x 0 2 . m
%
%
%
%
Version
Date
Auteur
Motif
%
0
18/03/96
MEE
Creation
version 1.2
44
eivd
Cours MATLAB
%
...
...
...
( Modifications )
%
%
%/
%
Extraction
du temps
et
des 3
signaux
ua , omega e t Tem
t = mesures ( : , 1 ) ;
ua = m e s u r e s ( : , 2 ) ;
omega = m e s u r e s ( : , 3 ) ;
Tem = m e s u r e s ( : , 4 ) ;
%
Calcul
de
la
Pmec = Tem .
%
puissance
mecanique
instantan
ee
omega ;
A f f i c h a g e s u r un e c r a n form d un c o l o n n e
f i g u r e ( gcf )
subplot ( 4 1 1 ) , plot ( t , ua )
xlabel ( t [ s ] )
ylabel ( u a ( t ) )
t i t l e ( MESURES )
de 4
graphiques
MESURES
u (t)
0.01
0.02
0.03
0.04
t [s]
0.05
0.06
0.07
0.08
0.01
0.02
0.03
0.04
t [s]
0.05
0.06
0.07
0.08
0.01
0.02
0.03
0.04
t [s]
0.05
0.06
0.07
0.08
0.01
0.02
0.03
0.04
t [s]
0.05
0.06
0.07
0.08
(t)
2
1
0
Tem(t)
0.4
0.2
0
Pmec(t)
0.2
0.1
0
Fig. 16
version 1.2
45
eivd
Cours MATLAB
6.2.6
Lancement de la simulation `
a partir de MATLAB
version 1.2
46
eivd
6.3
6.3.1
Cours MATLAB
La biblioth`
eque standard
Sources
Fig. 17
version 1.2
47
eivd
6.3.2
Cours MATLAB
Sinks
Fig. 18
Dans le cadre dun projet, cest toutefois cette derni`ere solution qui sera
preferee, lanalyse des signaux pouvant seffectuer dans MATLAB une fois la simulation terminee. On dispose alors de toutes les fonctions MATLAB pour proceder
aux analyses et traitements (par exemple, filtrage, interpolation, transformee de
Fourier, calcul de la puissance, etc). Cest une r`egle simple qui merite detre soulignee : il faut utiliser Simulink pour la simulation, et MATLAB pour
lanalyse et le traitement off line.
version 1.2
48
eivd
Cours MATLAB
~y = h (~x) + i (~u)
version 1.2
49
eivd
6.3.3
Cours MATLAB
Discrete
Cette biblioth`eque (figure 19) contient des elements discrets lineaires (dicretisation
du temps exclusivement), tels que gains, syst`emes dynamiques lineaires (transmittance isomorphe, equations detat), element de maintien, etc. Lintegrateur
limite, curieusement present dans cette biblioth`eque, est en fait un element nonlineaire.
Fig. 19
version 1.2
50
eivd
6.3.4
Cours MATLAB
Linear
Fig. 20
version 1.2
51
eivd
6.3.5
Cours MATLAB
Nonlinear
Fig. 21
Cette biblioth`eque (figure 21) contient des elements non-lineaires statiques ou
dynamiques. Cest lune des plus interessantes, puisque grace au differents blocs
mis `a disposition, on peut simuler par exemple
un element de type tout-ou-rien avec ou sans hyster`ese (Sign, Relay) ;
un element introduisant une saturation (Saturation) ;
un effet de jeu (backlash) ;
la quantification de lamplitude apportee par un convertisseur A/D ou D/A
(Quantizer) ;
un effet de seuil ou de zone morte (Dead zone) ;
un effet de limitation de la variation par rapport au temps (Rate limiter) ;
une non-linearite de type valeur absolue (Abs) ;
un element effectuant le produit de deux signaux (Product) ;
des operations logiques simples ou complexes (AND, Combinatorial logic) ;
un element creant un retard pur (Transport delay) ;
version 1.2
52
eivd
Cours MATLAB
version 1.2
53
eivd
6.3.6
Cours MATLAB
Connections
Cette biblioth`eque (figure 22) contient essentiellement des elements permettant de grouper plusieurs signaux sur une meme ligne (Mux) et celui faisant
loperation inverse (Demux).
Les blocs Inport et Outport sont mono-dimensionnels et ne sont pas directement utiles, sauf dans le cas ou la simulation est effectuee depuis lespace de travail
MATLAB `a laide dune ligne de commande, sans ouvrir linterface graphique de
Simulink. Ils permettent alors de definir clairement les signaux dentree et de sortie. Simulink les rajoute automatiquement `a un schema lorsque que lon groupe
plusieurs blocs un seul, afin dalleger le schema ou didentifier plus facilement les
ensembles de blocs dedies `a une seule fonction globale.
Fig. 22
version 1.2
54
eivd
Cours MATLAB
6.4
version 1.2
55
eivd
Cours MATLAB
Exemple
function [ s y s , x0 ] = s i 0 2 0 2 ( t , x , u , f l a g , param )
%/
%
%
si 02 02 .M
%
%
F o n c t i o n S c o n t e n a n t l e s e q u a t i o n s d i f f e r e n t i e l l e d un s y s t e m e
%
a inertie variable
%
%
%
%V e r s i o n
Date
Auteur
Motif
%0
03/12/96
MEE
Creation
%
...
...
...
( Modifications )
%
%/
%
%
%
%
%
Equation d e t a t d i f f e r e n t i e l l e
S i l e noyau de c a l c u l a p p e l l e l a f o n c t i o n s i 0 2 0 2 en p o s a n t
f l a g = 1 , i l a t t e n d en r e t o u r s y s q u i d o i t a l o r s c o r r e s p o n d r e
a l a d e r i v e e du v e c t e u r d e t a t
if
%
%
abs ( f l a g ) == 1
E x t r a c t i o n des parametres
Jn = param ( 1 ) ;
Rf = param ( 2 ) ;
La = param ( 3 ) ;
Ra = param ( 4 ) ;
KT = param ( 5 ) ;
Ke = param ( 6 ) ;
a l p h a = param ( 7 ) ;
temp = a l p h a +sin ( x ( 3 ) ) ;
xdot (1) = Ra/ Lax ( 1 ) Ke/ Lax ( 2 ) + 1 / Lau ;
xdot ( 2 ) = KT/ Jn / temp x ( 1 ) Rf / Jn / temp x ( 2 ) ;
xdot ( 3 ) = x ( 2 ) ;
s y s = xdot ;
%
%
%
%
%
E q u a t i o n de s o r t i e
S i l e noyau de c a l c u l a p p e l l e l a f o n c t i o n s i 0 2 0 2 en p o s a n t
f l a g = 3 , i l a t t e n d en r e t o u r s y s q u i d o i t a l o r s c o r r e s p o n d r e
a l a s o r t i e du s y s t e m e
elseif
%
%
%
%
%
%
%
%
f l a g == 3
sys = x ( 2 ) ;
I n f o r m a t i o n d i v e r s e s q u a n t a l a n a t u r e du s y s t e m e
S i l e noyau de c a l c u l a p p e l l e l a f o n c t i o n s i 0 2 0 2 en p o s a n t
f l a g = 0 , i l a t t e n d en r e t o u r s y s q u i d o i t a l o r s e t r e un v e c t e u r
c o n t e n a n t r e s p e c t i v e m e n t l e nombre d e t a t s a n a l o g i q u e s ,
d e t a t s d i s c r e t s , de s o r t i e s , d e n t r e e s , de r a c i n e s d i s c o n t i n u e s
a i n s i qu une i n d i c a t i o n s i l a m a t r i c e D e s t non n u l l e . De p l u s , i l
a t t e n d dans x0 l e v e c t e u r d e t a t i n i t i a l ( i . e . c o n d i t i o n s i n i t i a l e s )
elseif
f l a g == 0
sys = [ 3 , 0 , 1 , 1 , 0 , 0 ] ;
x0 = param ( 8 : 1 0 ) ;
end
6.4.3
Autres fonctionnalit
es de Simulink
Signalons que dautres outils que les methodes de resolution numerique sont
disponibles avec Simulink. En particulier, la routine linmod(si_02_02,x0) permet de dextraire un mod`ele detat du syst`eme linearise autour du point de fonctionnement specifie.
version 1.2
56