1. eivd Cours MATLAB
´cole d’ing´nieurs du canton de Vaud (eivd )
e e
D´partement d’´lectricit´ et d’informatique
e e e
institut d’Automatisation 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
Michel ETIQUE, mars 2002, Yverdon-les-Bains
version 1.2 1 mee matlab.tex19 mars 2002
2. eivd Cours MATLAB
Table des mati`res
e
1 Introduction 4
2 M´thode de travail
e 7
2.1 Edition et sauvegarde des fichiers MATLAB . . . . . . . . . . . . . 7
2.1.1 Editeur PFE . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Cr´ation de fichiers de commandes et de fonctions utilisateur . .
e . 8
2.3.1 Fichiers de commande (”script files”) . . . . . . . . . . . . 8
2.3.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Sauvegarde de donn´es sur disque . . . . . . . . . . . . . . . . .
e . 9
2.4.1 R´pertoires de sauvegarde : D :USERS et compte EINET
e . 10
3 Les bases de MATLAB 11
3.1 Cr´ation et calcul de vecteurs et matrices . . .
e . . . . . . . . . . . 11
3.1.1 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.3 Construction de matrices particuli`res
e . . . . . . . . . . . 13
3.1.4 Nombres complexes . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Op´rations sur les tableaux . . . . . . . . . .
e . . . . . . . . . . . 14
3.3 Repr´sentation graphique 2D . . . . . . . . .
e . . . . . . . . . . . 15
3.3.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Analyse de syst`mes dynamiques lin´aires ` l’aide de la boˆ `
e e a ıte a
outils control systems 17
4.1 Introduction de fonctions de transfert . . . . . . . . . . . . . . . . 17
4.1.1 Introduction sous forme polynˆmiale . . . . . . . . . . . .
o 17
4.1.2 Introduction sous forme de z´ros, pˆles et gain (”forme
e o
d’Evans”) . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2 Introduction de mod`les d’´tat . . . . . . . . . . . . . . . . . . . .
e e 19
4.3 Passage d’un mod`le ` l’autre . . . . . . . . . . . . . . . . . . . .
e a 19
4.4 Construction de sch´mas fonctionnels . . . . . . . . . . . . . . . .
e 20
4.4.1 Fonctions series, cloop . . . . . . . . . . . . . . . . . . . . 20
4.4.2 Fonction feedback . . . . . . . . . . . . . . . . . . . . . . . 22
4.5 Calcul et trac´ de r´ponses de syst`mes dynamiques lin´aires . . .
e e e e 24
4.5.1 R´ponse temporelle . . . . . . . . . . . . . . . . . . . . . .
e 24
4.5.2 R´ponse fr´quentielle . . . . . . . . . . . . . . . . . . . . .
e e 28
4.6 Analyse des propri´t´s des syst`mes . . . . . . . . . . . . . . . . .
ee e 28
4.7 Calcul affichage des marges de gain et de phase . . . . . . . . . . 28
4.8 Trac´ du lieu d’Evans . . . . . . . . . . . . . . . . . . . . . . . . .
e 29
4.9 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
version 1.2 2 mee matlab.tex19 mars 2002
4. eivd Cours MATLAB
1 Introduction
Le pr´sent document a pour but de fournir les bases n´cessaires ` l’utilisation
e e a
du logiciel MATLAB, dans le cadre des cours, des exercices et du laboratoire de
r´gulation automatique, pour lequel les boˆ ` outils Control System et Simulink
e ıtes a
sont employ´es. Il ne pr´sente donc ce logiciel que sous l’angle de son utilisation
e e
en r´gulation automatique.
e
Le logiciel MATLAB (MATrix LABoratory) est sp´cialis´ dans le domaine du
e e
calcul matriciel num´rique. Tous les objets d´finis dans MATLAB le sont donc
e e
au moyen de vecteurs et de matrices/tableaux de nombres. Un ensemble impor-
tant d’op´rateurs et de fonctions MATLAB de base facilitent leur manipulation
e
et des op´rations comme par exemple le produit et l’inversion matricielles (inv),
e
la transposition (’) ou encore le calcul des valeurs propres (eig) font partie de
la biblioth`que standard. D’autres fonctions servant ` la cr´ation et ` la mani-
e a e a
pulation de matrices et de tableaux (diag, fliplr, flipud, rot90, rand, ones, zeros,
linspace, logspace) sont ´galement disponibles en nombre.
e
L’environnement MATLAB se pr´sente sous la forme d’un espace de travail
e
(Workspace), o` un interpr´teur de commandes ex´cute des op´rations et fonc-
u e e e
tions MATLAB. Les sources de celles-ci sont disponibles, ´crites en “ langage ”
e
MATLAB, voire en C ou en Fortran. L’utilisateur peut ` sa guise les modifier,
a
mais en s’en inspirant, il peut surtout cr´er et rajouter ses propres fonctions.
e
MATLAB offre ´galement plusieurs fonctions destin´es ` la r´solution (num´rique)
e e a e e
d’´quations diff´rentielles lin´aires ou non-lin´aires par la m´thode de Runge -
e e e e e
Kutta (ode23 et ode45), l’int´gration num´rique (trapz, quad et quad8), la re-
e e
cherche des solutions d’´quations alg´briques (roots) ou transcendantes (fzero),
e e
la cr´ation et manipulation de polynˆmes (poly, polyder, polyval, conv, deconv),
e o
la transform´e de Fourier rapide (fft, fft2, ifft).
e
Des fonctions propres au traitement de donn´es (exp´rimentales, telles que
e e
celles obtenues au laboratoire), comme min, max, mean, cumsum, sort, std, diff,
ainsi que celles relatives ` l’interpolation (polyfit, interp1) sont autant d’outils tr`s
a e
pratiques pour l’ing´nieur analysant un probl`me pratique ou th´orique.
e e e
version 1.2 4 mee matlab.tex19 mars 2002
5. eivd Cours MATLAB
L’interface graphique de MATLAB est sans conteste l’un des points forts du
logiciel et facilite le trac´ de courbes et l’obtention de graphiques 2D ou 3D de
e
grande qualit´ (plot, stairs, stem, hist, mesh, surf, plot3). Le module Handle Gra-
e
phics offre la possibilit´ de contrˆler int´gralement cette interface, permettant
e o e
ainsi ` l’utilisateur de mettre en forme tous ´l´ments d’un graphique, de cr´er ses
a ee e
propres menus (uimenu) ainsi que des objets graphiques tels que sliders (ascen-
seurs), boutons, menu surgissants (uicontrol) avec une facilit´ d´concertante.
e e
Le ”langage” MATLAB contient un minimum de structures de programma-
tion (structure it´rative, structure conditionnelle, sous-routine) mais reste tr`s
e e
rudimentaire. L’avantage est qu’il est tr`s simple et tr`s rapide ` programmer,
e e a
offrant une grande tol´rance (syntaxe simple, pas de d´finition de types, etc), ce
e e
qui permet un gain appr´ciable en temps de mise au point. L’ing´nieur peut par ce
e e
moyen ˆtre plus efficace dans l’analyse d’un probl`me, en concentrant ses efforts
e e
sur celui-ci et non pas sur l’outil servant ` le r´soudre. En revanche, MATLAB ne
a e
convient pas ` la programmation d’applications d’une certaine ampleur. Dans ce
a
dernier cas, il est possible, sous certaines conditions, de programmer l’application
en C et de l’ex´cuter ` partir l’espace de travail MATLAB.
e a
Au logiciel de base s’ajoutent, selon la configuration choisie, les fonctions
provenant d’une s´rie de boˆ ` outils (toolbox ) d´di´s ` des domaines techniques
e ıtes a e e a
sp´cifiques, comme
e
– le traitement de signal (signal processing toolbox ),
– la r´gulation automatique (control system toolbox ),
e
– l’identification (system identification toolbox ),
– les r´seaux de neurones (neural networks toolbox ),
e
– la logique floue (fuzzy logic toolbox ),
– le calcul symbolique (symbolic math toolbox),
et bien d’autres encore. Ces boˆ ıtes ` outils sont simplement constitu´es d’un
a e
ensemble de fonctions sp´cialis´es programm´es ` partir des fonctions de base de
e e e a
MATLAB, permettant par exemple la synth`se de filtres, le calcul de FFTs, la
e
simulation d’algorithmes flous ou encore le calcul de r´ponses harmoniques.
e
Simulink n’est rien d’autre qu’une boˆ ` outils de MATLAB permettant au
ıte a
moyen d’une interface graphique ´volu´e la construction rapide et ais´e ainsi
e e e
que la simulation de sch´mas fonctionnels complexes, contenant des syst`mes
e e
lin´aires, non lin´aires voire non-stationnaires, y compris des op´rateurs logiques,
e e e
des outils math´matiques d’analyse, etc.
e
Dans le cadre de la r´gulation automatique, MATLAB constitue avant tout un
e
tr`s puissant outil d’analyse des syst`mes dynamiques lin´aires, dont on peut tr`s
e e e e
facilement obtenir les propri´t´s, comme les pˆles et z´ros (tf2zp, roots) ou le gain
ee o e
statique (dcgain, ddcgain) et tracer les r´ponses de tous types, la r´ponse impul-
e e
sionnelle (impulse), indicielle (step), ` un signal quelconque (lsim), ou harmonique
a
(bode, nyquist). MATLAB se prˆte aussi bien ` l’analyse des syst`mes analogiques
e a e
ou num´riques (step et dstep, impulse et dimpulse, bode et dbode, lsim et dlsim),
e
sans qu’il soit cependant possible d’´tudier des syst`mes mixtes analogiques-
e e
version 1.2 5 mee matlab.tex19 mars 2002
6. eivd Cours MATLAB
num´riques. Diff´rentes commandes permettent de construire et d’analyser des
e e
syst`mes lin´aires de structure complexe, form´s de multiples blocs connect´s
e e e e
tantˆt en s´rie, parall`le ou ´tant contre-r´actionn´s (series, cloop, feedback, pa-
o e e e e e
rallel, append, connect, blkbuild).
Pour le traitement ais´ de syst`mes non-lin´aires, de mˆme que pour la construc-
e e e e
tion de sch´mas fonctionnels complexes, on aura ` l’´vidence int´rˆt ` utiliser la
e a e ee a
boˆ ` outils Simulink, qui constitue alors un outil id´al.
ıte a e
Incontestablement, MATLAB est un formidable outil pour l’ing´nieur, y com-
e
pris pour celui traitant des probl`mes pratiques. Avec sa boˆ ` outils Simulink,
e ıte a
il est maintenant une r´f´rence au niveau mondial, non seulement dans les uni-
ee
versit´s et instituts de recherche, mais aussi dans le milieu industriel.
e
MATLAB est disponible pour plusieurs plateformes (Windows, Macintosh,
Unix, Linux). Les coordonn´es du fournisseur pour la Suisse ci-dessous.
e
The MathWorks GmbH
Sch¨rmattstrasse 6+8
u
3073 G¨mligen
u
T´l´phone
ee (031) 954.20.16
T´l´fax
ee (031) 954.20.22
Services Internet http://www.mathworks.com
http://www.mathworks.ch
ftp.mathworks.com
http://www.scientific.de
Autres liens : http://www.sysquake.com
http://www-rocq.inria.fr/scilab/
version 1.2 6 mee matlab.tex19 mars 2002
7. eivd Cours MATLAB
2 M´thode de travail
e
2.1 Edition et sauvegarde des fichiers MATLAB
2.1.1 Editeur PFE
Dans un premier temps, on peut se contenter d’introduire ses commandes
une ` une au niveau de l’espace de travail o` elles sont interpr´t´es directement.
a u ee
Cependant, par la suite, il est beaucoup plus pratique d’´crire sa s´quence de
e e
commandes compl`te au moyen d’un ´diteur, puis de sauver le tout dans un
e e
fichier avec l’extension .M. Cette s´quence pourra alors ˆtre ex´cut´e dans MAT-
e e e e
LAB par simple introduction du nom du fichier. Sur les stations du laboratoire
d’Automatique (salle C05), ”l’´diteur pour programmeur PFE” est install´ et
e e
son utilisation est recommand´e. On l’appelle soit par son icˆne ` partir du ges-
e o a
tionnaire de programmes, soit directement ` partir de MATLAB en s´lectionnant
a e
File-New-M-file.
De cette fa¸on, l’utilisateur peut rajouter ses propres fonctions et se cr´er
c e
rapidement et facilement toute une panoplie d’outils (par exemple, ”synth`se e
automatique d’un r´gulateur PID par la m´thode de Bode”). Les sources de
e e
MATLAB ´tant disponibles pour la plupart, ce n’est pas un probl`me que de
e e
modifier ` sa guise l’une ou l’autre des routines, par exemple dans de but d’obtenir
a
un trac´ particulier du lieu de Bode.
e
2.2 Aide en ligne
En plus de l’aide de Windows, une aide en ligne est disponible pour chaque
commande de MATLAB. Il suffit d’introduire :
version 1.2 7 mee matlab.tex19 mars 2002
8. eivd Cours MATLAB
help nom de commande
2.3 Cr´ation de fichiers de commandes et de fonctions
e
utilisateur
2.3.1 Fichiers de commande (”script files”)
Un fichier de commande (script file) est un fichier ASCII d’extension .M conte-
nant une suite de commandes MATLAB. Il ˆtre ex´cut´ directement en tapant
e e e
simplement son nom dans l’espace de travail MATLAB.
2.3.2 Fonctions
De nouvelles fonctions peuvent ˆtre ajout´es ` MATLAB par l’utilisateur. Il
e e a
suffit de cr´er un fichier de nom
e
nom de fonction.M
contenant les commandes ` ex´cuter et dont l’entˆte a le format :
a e e
function [liste des arguments de sortie] = nom de fonction(liste des arguments
d’entr´e)
e
Exemple La fonction suivante convertit la grandeur d’entr´e x en d´bibels et
e e
la retourne dans y.
function [ y ] = l i n 2 d b ( x )
y = 20∗ log10 ( x ) ;
Le fichier correspondant est sauv´ sous le nom lin2db.m, dans un r´pertoire
e e
figurant dans le chemin de recherche de MATLAB.
Contrairement aux fichiers de commande, les variables intervenant dans les
fonctions sont locales.
Les commentaires documentant les fonctions peuvent ˆtre ins´r´s en les faisant
e ee
pr´c´der du symbole %.
e e
D´tail pratique int´ressant, les premi`res lignes d’un fichier
e e e
nom de fichier.m
pr´c´d´es du symbole % sont affich´es lorsque l’on tape :
e e e e
help nom de fichier
version 1.2 8 mee matlab.tex19 mars 2002
9. eivd Cours MATLAB
Ceci permet de fournir une aide en ligne pour chaque fonction utilisateur
nouvellement cr´´e. Pour la fonction lin2db, on documentera par exemple comme
ee
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´es sur disque
e
Les variables d´finies dans l’espace de travail MATLAB peuvent ˆtre sauve-
e e
gard´es dans des fichiers ASCII par la commande :
e
save cheminnom_de_fichier.dat nom_de_variable -ascii
Un tel fichier ASCII peut ˆtre ult´rieurement relu soit par MATLAB (fonction
e e
load) soit par d’autres programmes (Excel, Word, etc). Dans le premier cas, il
est cependant conseill´ de sauver directement la variable dans un fichier binaire
e
*.MAT de format sp´cifique ` MATLAB :
e a
save cheminnom_de_fichier nom_de_variable
La fenˆtre graphique peut ˆtre soit imprim´e directement, soit sauv´e dans un
e e e e
fichier, lequel peut ˆtre int´gr´ dans un document (menu importation d’image)
e e e
ou imprim´ ult´rieurement. Signalons, parmi les diff´rents formats de fichiers dis-
e e e
ponibles, le format PostScript qui fournit une qualit´ irr´prochable. Par exemple,
e e
le sauvetage de la fenˆtre graphique courante s’effectue par :
e
print chemin nom_de_fichier.eps -deps
pour le format PostScript et par
version 1.2 9 mee matlab.tex19 mars 2002
10. eivd Cours MATLAB
print chemin nom_de_fichier.wmf -dmeta
pour le format Windows Meta File. Auparavant, il faut prendre garde ` ce que la
a
fenˆtre graphique courante soit bien celle que l’on souhaite imprimer en tapant
e
figure ( n u m e r o d e l a f e n e t r e a i m p r i m e r )
Attention : la commande print est tr`s rudimentaire et ne donne aucun message
e
en cas d’´chec ou si le fichier existe d´j` !
e ea
La copie de la fenˆtre graphique est ´galement possible par l’interm´diaire
e e e
du clipboard, ce qui permet par exemple de sauver la fenˆtre dans WordPerfect,
e
Word ou PowerPoint (choisir le format WMF plutˆt que le bitmap).
o
2.4.1 R´pertoires de sauvegarde : D :USERS et compte EINET
e
Il faut indiquer le chemin correspondant ` l’endroit o` MATLAB trouvera
a u
le fichier de commande ou la fonction ´crite par l’utilisateur. Dans le cas de la
e
version MATLAB install´e sur le r´seau du laboratoire d’Automatique de l’eivd,
e e
il suffit ` l’utilisateur de sauver ses propres fonctions dans le r´pertoire :
a e
D :USERS
qui est dans le chemin de recherche de MATLAB. Le disque D : est local et
les donn´es qui s’y trouvent peuvent donc ˆtre modifi´es voire carr´ment dis-
e e e e
paraˆıtre d’un cours ` l’autre. A la fin de sa session de travail, on aura donc
a
int´rˆt ` sauvegarder ses fichiers sur disquette ou son compte EINET. Le docu-
ee a
ment s:regulationdiversconnection_EINET.doc explique la mani`re de se
e
connecter son disque EINET ` partir du domaine iAi.
a
version 1.2 10 mee matlab.tex19 mars 2002
11. eivd Cours MATLAB
3 Les bases de MATLAB
3.1 Cr´ation et calcul de vecteurs et matrices
e
3.1.1 Vecteurs
Un vecteur-ligne est introduit de la fa¸on suivante :
c
v =[5,2,13,4]
Le vecteur v s’affiche alors ` l’´cran :
a e
v=
5 2 13 4
Si l’introduction est termin´e par un point-virgule, on ´vite l’affichage du vecteur
e e
v. Un vecteur-colonne peut ˆtre introduit en rempla¸ant les virgules par des
e c
points-virgules ou des retours de chariot. L’acc`s aux composantes d’un vecteur
e
s’effectue directement par des commandes du genre :
v (3)
ce qui donne ` l’´cran :
a e
ans =
13
Si comme dans le cas pr´sent, v(3) n’est pas affect´ ` une variable, par une
e e a
commande de la forme x=v(3) , MATLAB copie d’office le r´sultat dans la variable
e
syst`me ans (answer ), alors disponible pour le calcul suivant.
e
Remarque Dans MATLAB, les indices des vecteurs et matrices doivent ˆtre dese
entiers positifs. L’indice z´ro n’est donc pas plus admis que les indices n´gatifs.
e e
3.1.2 Matrices
Une matrice peut ˆtre construite de diff´rentes mani`res :
e e e
m= [ 5 , 2 , 1 3 , 4 ; 6 , 8 , 3 , 1 0 ; 0 , 1 , 2 0 , 9 ]
et l’affichage devient :
m=
5 2 13 4
6 8 3 10
version 1.2 11 mee matlab.tex19 mars 2002
12. eivd Cours MATLAB
0 1 20 9
ou encore, ayant d´fini pr´alablement les vecteurs-ligne v1, v2 et v3 :
e e
v1 = [ 5 , 2 , 1 3 , 4 ] ;
v2 = [ 6 , 8 , 3 , 1 0 ] ;
v3 = [ 0 , 1 , 2 0 , 9 ] ;
m=[ v1 ; v2 ; v3 ]
L’acc`s ` un ´l´ment de la matrice s’effectue par :
e a ee
m( 2 , 4 )
et l’on obtient :
ans =
10
Le remplacement de 2 par : (deux points) permet d’obtenir toute la colonne 4 :
m( : , 4 )
et l’´cran affiche le vecteur-colonne :
e
ans =
4
10
9
De mˆme, l’affichage d’une sous-matrice s’obtient par :
e
m( 2 : 3 , 2 : 4 )
et l’´cran affiche :
e
ans =
8 3 10
1 20 9
L’acc`s aux colonnes 2 et 4 de la matrice m se r´alise comme suit :
e e
m( : , [ 2 , 4 ] )
ce qui produit :
version 1.2 12 mee matlab.tex19 mars 2002
13. eivd Cours MATLAB
ans =
2 4
8 10
1 9
Parmi les op´rations matricielles qui ont une certaine importance pratique, si-
e
gnalons l’op´rateur de transposition
e
m’
donnant dans le cas de l’exemple
ans =
5 6 0
2 8 1
13 3 20
4 10 9
et la fonction eig qui calcule les valeurs propres d’une matrice. Soit la matrice
carr´e 4 × 4 form´e de composantes al´atoires (ici utilisation de la fonction rand)
e e e
A=rand ( 4 , 4 )
A=
0.2190 0.9347 0.0346 0.0077
0.0470 0.3835 0.0535 0.3834
0.6789 0.5194 0.5297 0.0668
0.6793 0.8310 0.6711 0.4175
Les valeurs propres (eigenvalues) sont :
eig (A)
ans =
1. 409 5
0.1082 + 0.4681 i
0.1082 − 0.4681 i
−0.0763
3.1.3 Construction de matrices particuli`res
e
Les routines ones et zeros permettent de construire des matrices dont tous les
´l´ments sont ´gaux ` 1 respectivement ` 0. Voir ´galement eye (matrice identit´),
ee e a a e e
diag (matrice diagonale), linspace (vecteur dont les composantes sont espac´es e
lin´airement entre deux limites) et logspace (vecteur dont les composantes sont
e
espac´es logarithmiquement entre deux limites).
e
version 1.2 13 mee matlab.tex19 mars 2002
14. eivd Cours MATLAB
3.1.4 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 ;
L’unit´ de l’axe imaginaire est donc indiff´remment i ou j. Des fonctions sont
e e
pr´vues pour le calcul de la partie r´elle (real(x)), de la partie imaginaire (imag(x)),
e e
du module (abs(x)), de l’argument (angle(x)) et du conjugu´ complexe (conj(x)).
e
3.2 Op´rations sur les tableaux
e
On rappelle le slogan publicitaire de MATLAB, ”live is to short to spend
time with for loops”, pour mentionner qu’effectivement, la majeure partie des
op´rations peuvent s’effectuer sans boucles de type for. Par exemple, le calcul du
e
sinus cardinal
sin (ϑ)
sinc (ϑ) =
ϑ
de l’angle θ pour les valeurs de suivantes
t h e t a =linspace (−4∗ pi , 4∗ pi , 1 0 0 ) ;
soit 100 valeurs espac´es lin´airement entre −4π et +4π, se fait avantageusement
e e
dans MATLAB par
s i n c = sin ( t h e t a ) . / t h e t a ;
o` le point pr´c´dant l’op´rateur de division indique qu’il ne s’agit pas d’une
u e e e
op´ration matricielle, mais d’une op´ration ´l´ment par ´l´ment sur deux ta-
e e ee ee
bleaux. Il faut donc bien faire la distinction entre par exemple le produit ma-
triciel
a11 a12 b11 b12 a11 · b11 + a12 · b21 a11 · b12 + a12 · b22
· =
a21 a22 b21 b22 a21 · b11 + a22 · b21 a21 · b12 + a22 · b22
et le produit, ´l´ment par ´l´ment de deux tableaux :
ee ee
a11 a12 b11 b12 a11 · b11 a12 · b12
· =
a21 a22 b21 b22 a21 · b21 a22 · b22
version 1.2 14 mee matlab.tex19 mars 2002
15. eivd Cours MATLAB
Remarque Ici, la fonction linspace a ´t´ utilis´e, une variante ´tant d’´crire
ee e e e
t h e t a =−4∗pi : 8∗ pi / ( 1 0 0 − 1 ) : 4 ∗ pi ;
3.3 Repr´sentation graphique 2D
e
Plusieurs types de repr´sentations graphiques 2D sont disponibles :
e
FONCTION DESCRIPTION
Repr´sente chaque colonne de la matrice y en fonction
e
plot(y)
de l’indice du rang.
Repr´sente les colonnes de y en fonction de celles de x.
e
plot(x,y)
Il faut que x ait soit une seule colonne, soit autant de
plot(x,cos(x))
colonnes que y, et r´ciproquement.
e
plot(t1,y1,t2,y2) Repr´sente y1 en fonction de t1 et y2 en fonction de t2
e
plot(t1,y1,’ :’,t2,y2,’-.’) (y1 et t1 doivent avoir le mˆme nombre de lignes, de
e
plot(t1,y1,’o’,t2,y2,’x’) mˆme que y2 et t2)
e
Repr´sente les colonnes y1 et y2 en fonction de t
e
plot(t,[y1,y2])
(y1, y2 et t doivent avoir le mˆme nombre de lignes)
e
Repr´sente chaque ´l´ment de y en fonction de son indice.
e ee
Le trac´ est en escaliers, utile pour les r´ponses de
e e
stairs(y)
syst`mes num´riques (pas d’interpolation entre les points
e e
repr´sent´s)
e e
Repr´sente chaque ´l´ment de y en fonction de son indice.
e ee
stem(y) Chaque point est repr´sent´ par symbole “ ´chantillon ”,
e e e
ce qui est utile pour les syst`mes num´riques.
e e
Repr´sente A (ici en [dB]) en fonction de w, l’´chelle
e e
semilogx(w,20*log10(A)) ´tant logarithmique.
e
(A et w doivent avoir le mˆme nombre d’´l´ments)
e ee
Repr´sente phase en fonction de w, l’´chelle ´tant loga-
e e e
semilogx(w,phase) rithmique.
(phase et w doivent avoir le mˆme nombre d’´l´ments)
e ee
Repr´sente y en fonction de x, les ´chelles ´tant toutes
e e e
loglog(x,y) deux logarithmiques.
(x et y doivent avoir le mˆme nombre d’´l´ments)
e ee
Il est de plus recommand´ de consulter la documentation MATLAB (ou l’aide
e
en ligne) pour les commandes axis, hold, et subplot, title, xlabel, ylabel, gtext ainsi
que figure. Cette derni`re instruction permet de sp´cifier le num´ro de la fenˆtre
e e e e
graphique dans laquelle le trac´ doit ˆtre effectu´. L’ex´cuter juste avant l’une
e e e e
des instructions de tra¸age active directement la fenˆtre graphique qui apparaˆ
c e ıt
alors ` l’´cran.
a e
version 1.2 15 mee matlab.tex19 mars 2002
16. eivd Cours MATLAB
3.3.1 Exemple
La suite des instructions ci-dessous calcule et trace le sinus, le sinus carr´ ainsi
e
que le sinus cardinal de l’angle θ d´fini ` l’aide de l’instruction linspace :
e a
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)
Le r´sultat est le suivant :
e
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−15 −10 −5 0 5 10 15
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1
−15 −10 −5 0 5 10 15
version 1.2 16 mee matlab.tex19 mars 2002
17. eivd Cours MATLAB
4 Analyse de syst`mes dynamiques lin´aires `
e e a
l’aide de la boˆ ` outils control systems
ıte a
4.1 Introduction de fonctions de transfert
4.1.1 Introduction sous forme polynˆmiale
o
L’introduction de fonctions de transfert s’effectue en deux temps, les num´rateur
e
et d´nominateur devant ˆtre donn´s s´par´ment. Le principe est simple : les
e e e e e
num´rateur et d´nominateur apparaissent sous forme de vecteurs-ligne, les com-
e e
posantes desquels ´tant les coefficients des puissances d´croissantes de s (syst`mes
e e e
analogiques) ou de z (syst`mes num´riques).
e e
Soit par exemple la fonction de transfert
1 + s · 10
G(s) = 36 ·
1 + s · 2 + s2 · 0.1
Son introduction dans MATLAB se fait par les commandes :
numG= 3 6 ∗ [ 1 0 , 1 ] ;
denG = [ 0 . 1 , 2 , 1 ] ;
Le coefficient de s0 (ou z 0 pour les syst`mes num´riques), qu’il soit nul ou
e e
non, doit toujours ˆtre donn´. Ainsi, la fonction de transfert de l’int´grateur
e e e
2.71828
G (s) =
s
est introduite sous la forme :
numG= 2 . 7 1 8 2 8 ∗ [ 1 ] ;
denG = [ 1 , 0 ] ;
Les noms donn´s aux num´rateurs et d´nominateurs sont libres. On aura
e e e
toutefois int´rˆt ` ˆtre organis´ et rigoureux dans les notations employ´es ; par
ee ae e e
exemple, en se r´f´rant au sch´ma fonctionnel universel, en r´gulation de corres-
ee e e
pondance (v(t) = 0),
v ( t )
+
e ( t ) u ( t ) +
+
w ( t ) 5 G ( s ) G ( s ) 5 G ( s ) y ( t )
c a 1 a 2
-
f _ 0 1 _ 0 3 . e p s
version 1.2 17 mee matlab.tex19 mars 2002
18. eivd Cours MATLAB
on ne saura que trop recommander l’emploi d’une notation semblable ` la sui-
a
vante,
numGc= 2 ∗ [ 1 , 2 0 ] ;
denGc = [ 1 , 0 ] ;
numGa1=1e − 3 ∗ [ 1 , 1 0 ] ;
denGa1 = [ 1 , 2 , 0 . 1 1 ] ;
numGa2 = 3 6 ∗ [ 1 , 0 . 1 ] ;
denGa2 = [ 1 , 2 0 , 1 0 ] ;
pour les fonctions de transfert
s + 20
Gc (s) = 2 ·
s
s + 10
Ga1 (s) = 0.01 ·
s2
+ 2 · s + 0.11
(s + 0.1)
Ga2 (s) = 36 · 2
s + 20 · s + 10
Notons qu’` partir de la version 5.0 de MATLAB, il existe des objets fonction de
a
transfert, que l’on peut introduire comme suit (cas de l’exemple 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=Gc∗Ga1∗Ga2 ;
Gw=Go/(1+Go) ;
Gv=Ga2/(1+Gc∗Ga1∗Ga2 ) ;
4.1.2 Introduction sous forme de z´ros, pˆles et gain (”forme d’Evans”)
e o
Il est ´galement possible d’introduire une fonction de transfert par le biais de
e
ses z´ros, pˆles et de son facteur d’Evans k. Les z´ros et pˆles doivent apparaˆ
e o e o ıtre
sous forme de vecteurs-colonne. Soit par exemple la fonction de transfert :
version 1.2 18 mee matlab.tex19 mars 2002
19. eivd Cours MATLAB
5.32 (s + 3)2 + 72
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 n´cessaires est simplement :
e
zG=[−3+j ∗7,−3− j ∗ 7 ] ’ ;
sG=[0,−10,−5+ j ∗3,−5− j ∗ 3 ] ’ ;
kG=5.32;
Il va sans dire que l’on privil´giera cette forme lorsque les num´rateur et
e e
d´nominateur de la fonction de transfert du syst`me G(s) ou G(z) ne sont pas
e e
directement disponibles sous forme de polynˆmes.
o
4.2 Introduction de mod`les d’´tat
e e
Si un syst`me est connu sous la forme de ses ´quations d’´tat (lin´aires),
e e e e
dx
=A·x+B·u
dt
y =C ·x+D·u
il suffit d’indiquer ` MATLAB les quatre matrices A, B, C, et D, par exemple :
a
A= [ − 3 , 0 ; 0 , 7 ] ;
B= [ 1 0 , 0 , 1 ] ’ ;
C= [ 1 , 2 ; 3 , 4 ] ;
D= [ 0 ] ;
4.3 Passage d’un mod`le ` l’autre
e a
Les pˆles et z´ros des fonctions de transfert sont obtenus ` l’aide de la fonction
o e a
tf2zp (transfer function to zero pole) :
[ zG, sG , kG]= t f 2 z p (numG, denG ) ;
MATLAB place alors les z´ros et les pˆles dans les vecteurs-colonne zG et sG,
e o
respectivement, et le facteur d’Evans dans la variable kG. Les noms zG, sG et kG
sont arbitraires. On acc`de ` ces valeurs par exemple en tapant leur nom :
e a
version 1.2 19 mee matlab.tex19 mars 2002
20. eivd Cours MATLAB
sG
MATLAB affiche :
sG=
−19.4868
−0.5132
Remarque : un polynˆme est introduit sous la forme d’un vecteur-ligne v
o
dont les composantes repr´sentent les coefficients des puissances d´croissantes ;
e e
ses racines sont obtenues par la fonction roots(v)
Toute une cat´gorie de routines permettent de passer d’un mod`le ` l’autre :
e e a
forme polynˆmiale → forme tf2zp [zG,sG,kG]=tf2zp(numG,denG) ;
o
en z´ros, pˆles et gain
e o
forme polynˆmiale
o → tf2ss [AG,BG,CG,DG]=tf2ss(numG,denG) ;
mod`le d’´tat
e e
forme en z´ros, pˆles et gain zp2tf [numG,denG]=zp2tf(zG,sG,kG) ;
e o
→ forme polynˆmiale
o
forme en z´ros, pˆles et gain zp2ss [AG,BG,CG,DG]=zp2ss(zG,sG,kG) ;
e o
→ mod`le d’´tat
e e
mod`le d’´tat → forme po- ss2tf
e e [numG,denG]=ss2tf(AG,BG,CG,DG) ;
lynˆmiale
o
mod`le d’´tat → forme en ss2zp [zG,sG,kG]=ss2zp(AG,BG,CG,DG) ;
e e
z´ros, pˆles et gain
e o
mod`le d’´tat → autre ss2ss [AG2,BG2,CG2,DG2]=ss2ss(AG,BG,CG,DG,T) ;
e e
mod`le d’´tat, avec matrice
e e
de transformation T
4.4 Construction de sch´mas fonctionnels
e
4.4.1 Fonctions series, cloop
Prenons pour exemple le sch´ma fonctionnel universel, dont on souhaite obte-
e
nir les fonctions de transfert en boucle ouverte Go (s) et en boucle ferm´e Gw (s).
e
Pour ce faire, faut proc´der par ´tapes, comme l’indique la figure ci-apr`s :
e e e
v ( t )
+
e ( t ) u ( t ) +
+
w ( t ) 5 G ( s ) G ( s ) 5 G ( s ) y ( t )
c a 1 a 2
-
f _ 0 1 _ 0 3 . e p s
version 1.2 20 mee matlab.tex19 mars 2002
21. eivd Cours MATLAB
1. Calcul de Ga (s) par la mise en s´rie de Ga1 et Ga2 .
e
On fait usage de la fonction series :
[ numGa, denGa]= s e r i e s ( numGa1, denGa1 , numGa2, denGa2 ) ;
2. Calcul de Go (s) par la mise en s´rie de Gc et Ga . On proc`de de mˆme :
e e e
[ numGo, denGo]= s e r i e s ( numGc, denGc , numGa, denGa ) ;
3. Calcul de Gw (s) par fermeture de la boucle (retour unitaire). On fait usage
de la fonction cloop comme suit :
[ numGw, denGw]= c l o o p ( numGo, denGo ) ;
4. La r´ponse indicielle en boucle ferm´e peut alors ˆtre calcul´e et trac´e par :
e e e e e
s te p (numGw, denGw)
Step Response
1.5
1
Amplitude
0.5
0
0 5 10 15 20 25 30 35 40
Time (sec.)
On peut au passage calculer le gain statique (gain DC) de Gw (s).
dcgain (numGw, denGw)
5. La r´ponse harmonique en boucle ouverte peut par exemple aussi ˆtre cal-
e e
cul´e :
e
bode ( numGo, denGo )
version 1.2 21 mee matlab.tex19 mars 2002
22. eivd Cours MATLAB
Bode Diagrams
50
0
Phase (deg); Magnitude (dB)
−50
−100
−100
−120
−140
−160
−180
−200
−220
−3 −2 −1 0 1 2
10 10 10 10 10 10
Frequency (rad/sec)
6. Finalement, on peut afficher la configuration pˆle-z´ro de Gw (s) :
o e
pzmap (numGw, denGw)
Pole zero map
1
0.8
0.6
0.4
0.2
Imag Axis
0
−0.2
−0.4
−0.6
−0.8
−1
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1
Real Axis
4.4.2 Fonction feedback
La fonction feedback est utile pour calculer la fonction de transfert ´quivalente
e
de syst`mes ayant pour sch´ma fonctionnel la figure ci-dessous, soit :
e e
Y (s) Ga (s)
Gv (s) = =
V (s) 1 + Ga (s) · Ga (s)
version 1.2 22 mee matlab.tex19 mars 2002
23. eivd Cours MATLAB
[ numGv, denGv]= f e ed ba c k ( numGa, denGa , numGc, denGc , s i g n e ) ;
1
v ( t ) 5 G ( s ) y ( t )
aI
-
1
G cI
( s )
f _ 0 1 _ 0 6 . e p s
Si le param`tre signe n’est pas sp´cifi´ ou vaut −1, la fonction de transfert
e e e
Gc (s) est en contre-r´action, alors qu’elle est r´actionn´e pour une valeur de signe
e e e
´gale ` 1.
e a
L’exemple ci-dessous calcule le fonction de transfert en r´gulation de maintien
e
du syst`me asservi pr´c´demment trait´.
e e e e
[ numG1, denG1 ] = s e r i e s ( numGc, denGc , numGa1, denGa1 ) ;
[ numGv, denGv ] = fe e d b a c k ( numGa2, denGa2 , numG1, denG1 ) ;
Step Response
1.5
1
Amplitude
0.5
0
−0.5
0 5 10 15 20 25 30
Time (sec.)
version 1.2 23 mee matlab.tex19 mars 2002
24. eivd Cours MATLAB
4.5 Calcul et trac´ de r´ponses de syst`mes dynamiques
e e e
lin´aires
e
4.5.1 R´ponse temporelle
e
Lorsque qu’aucun argument de sortie n’est sp´cifi´ (lhs, left handside argu-
e e
ment), le calcul et le trac´ des r´ponses sont simultan´s.
e e e
Les fonctions impulse, step, lsim, et pour les syst`mes num´riques, dimpulse,
e e
dstep, dlsim sont disponibles. Leur signification sont donn´es sur les tables 4.5.1 page
e
suivante et 4.5.1 page 26.
Le trac´ correspondant est directement obtenu en tapant les commandes telles
e
que donn´es dans les tableaux ci-dessus.
e
Les param`tres t, n, et w sont des optionnels et MATLAB les d´termine lui-
e e
mˆme par d´faut. Si l’on souhaite les fixer, on peut par exemple le faire selon les
e e
indications du tableau 4.5.1 page 26.
Lors du calcul de la r´ponse harmonique de syst`mes num´riques, il convient de
e e e
sp´cifier la p´riode d’´chantillonnage h.
e e e
Il est souvent utile d’effectuer ces calculs de r´ponse sans tracer celle-ci imm´diatement.
e e
Dans ce cas, on proc`de comme ci-dessus en sp´cifiant toutefois des arguments
e e
de sortie dans lesquels MATLAB sauvera les r´sultats de ses calculs :
e
SYSTEMES ANALOGIQUES SYSTEMES NUMERIQUES
[y,x,t]=impulse(numG,denG,t) ; [y,x]=dimpulse(numH,denH,n) ;
[y,x,t]=step(numG,denG,t) ; [y,x]=dstep(numH,denH,n) ;
[y,x]=lsim(numG,denG,u,t) ; [y,x]=dlsim(numH,denH,u) ;
y est un vecteur-colonne contenant la r´ponse cherch´e et t un vecteur-ligne
e e
contenant les instants auxquels elle a ´t´ calcul´e. x est une matrice contenant
ee e
l’´volution du vecteur d’´tat syst`me dynamique. La figure suivante montre le
e e e
calcul pr´alable des r´ponses imoulsionnelle et indicielle avant leur trac´ ` l’aide
e e ea
de la fonction plot.
[ ys , x , t ] = s t e p (numGw, denGw ) ;
[ y i ] = i m p u l s e (numGw, denGw, t ) ;
figure
plot ( t , [ y i , ys ] )
t i t l e ( ’ R´ ponses i m p u l s i o n n e l l e
e et indicielle en b o u c l e ferm´ e ’ )
e
xlabel ( ’ t [ s ] ’ )
version 1.2 24 mee matlab.tex19 mars 2002
25. eivd Cours MATLAB
SYSTEMES ANALO- REPONSE EXEMPLE
GIQUES
25
20
15
Amplitude
10
5
0
0 0.5 1 1.5 2 2.5 3
impulse(numG,denG,t) r´ponse impul-
e Time (secs)
sionnelle
1
0.8
0.6
Amplitude
0.4
0.2
0
−0.2
0 5 10 15 20 25 30
step(numG,denG,t) r´ponse
e indi- Time (secs)
cielle
0.25
0.2
0.15
0.1
0.05
Amplitude
0
−0.05
−0.1
−0.15
−0.2
−0.25
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
lsim(numG,denG,u,t) r´ponse ` une
e a Time (secs)
entr´e u quel-
e
conque d´finiee
par l’utilisateur
initial(A,B,C,D,x0,t) r´ponse
e du
syst`me lorsque
e
ses conditions
initiales sont x0
Tab. 1 –
version 1.2 25 mee matlab.tex19 mars 2002
26. eivd Cours MATLAB
SYSTEMES NUMERIQUES REPONSE
dimpulse(numH,denH,n) r´ponse impulsionnelle
e
dstep(numH,denH,n) r´ponse indicielle
e
dlsim(numH,denH,u) r´ponse ` une entr´e u quelconque
e a e
d´finie par l’utilisateur
e
dinitial(A,B,C,D,x0,n) r´ponse du syst`me lorsque ses condi-
e e
tions initiales sont x0
Tab. 2 –
PARAMETRE SIGNIFICATION EXEMPLE
t (facultatif) t=[0 :0.01 :0.2] ;
vecteur-ligne de temps, ou
sp´cifiant les instants o` la
e u t=linspace(0,0.2,201) ;
r´ponse doit ˆtre calcul´e
e e e (cr´e un vecteur temps variant entre
e
(ce param`tre est obligatoire
e 0[s] et 0.2[s] par pas de 0.01[s])
si l’on utilise lsim)
n (facultatif) n=10 ;
nombre d’´chantillons d´sir´s
e e e (seuls les 10 premiers ´chantillons de
e
la r´ponse seront affich´s)
e e
w (facultatif) w=logspace(2,5,100) ;
vecteur-ligne de pulsation, (cr´e un vecteur pulsation de 100
e
sp´cifiant les pulsations o` la
e u points espac´s logarithmiquement et
e
r´ponse doit ˆtre calcul´e
e e e variant entre 102 [rad/s] et 105 [rad/s])
u vecteur-colonne de l’entr´e e u=1.5*sin(2*pi*10*t)’ ;
simul´e du syst`me
e e (cr´e un vecteur u repr´sentant une
e e
(ce param`tre est obligatoire
e entr´e sinuso¨
e ıdale d’amplitude 1.5 et
si l’on utilise lsim ou dlsim) de fr´quence 10[Hz]. u est calcul´
e e
pour chaque instant d´fini dans le
e
vecteur t, par exemple celui donn´ ci-
e
dessus)
Tab. 3 –
version 1.2 26 mee matlab.tex19 mars 2002
27. eivd Cours MATLAB
Réponses impulsionnelle et indicielle en boucle fermée
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
−0.2
0 5 10 15 20 25 30 35 40
t [s]
De mˆme, l’exemple suivant montre le trac´ de la r´ponse d’un syst`me asservi
e e e e
a
` une rampe de consigne, en faisant notamment usage de la fonction lsim.
wr = t ’ ;
yr = l s i m (numGw, denGw, wr , t ) ;
figure
subplot ( 2 1 1 ) , plot ( t , yr )
t i t l e ( ’ Consigne et grandeur r ´ g l ´ e ’ )
e e
subplot ( 2 1 2 ) , plot ( t , wr−yr )
t i t l e ( ’ Erreur ’ )
xlabel ( ’ t [ s ] ’ )
subplot ( 1 1 1 )
Consigne et grandeur réglée
40
30
20
10
0
0 5 10 15 20 25 30 35 40
Erreur
2.5
2
1.5
1
0.5
0
0 5 10 15 20 25 30 35 40
t [s]
version 1.2 27 mee matlab.tex19 mars 2002
28. eivd Cours MATLAB
4.5.2 R´ponse fr´quentielle
e e
Les fonctions bode, nyquist, nychols, et pour les syst`mes num´riques, dbode,
e e
dnyquist, dnychols sont disponibles. Leur signification est la suivante :
SYSTEMES ANALOGIQUES SYSTEMES NUMERIQUES
bode(numG,denG,w) dbode(numH,denH,h,w)
Si les r´sultats des calculs doivent ˆtre sauvegard´s en vue d’un traitement ult´rieur,
e e e e
on indique ´galement des arguments de sortie :
e
SYSTEMES ANALOGIQUES SYSTEMES NUMERIQUES
[A,phi,w]=bode(numG,denG,w) [A,phi,w]=dbode(numH,denH,h,w)
A et phi sont des vecteurs-colonne contenant respectivement le gain et la phase
et w un vecteur-ligne contenant les pulsations correspondantes.
4.6 Analyse des propri´t´s des syst`mes
e e e
dcgain(num,den) Gain statique d’un syst`me analogique.
e
ddcgain(num,den) Gain statique d’un syst`me num´rique.
e e
damp(den) Taux d’amortissement ζ, pulsation
propre non-amortie ωn et pˆles d’un
o
syst`me analogique ayant den pour
e
d´nominateur
e
ddamp(den) Taux d’amortissement ζ, pulsation
propre non-amortie ωn et pˆles d’un
o
syst`me discret ayant den pour
e
d´nominateur.
e
4.7 Calcul affichage des marges de gain et de phase
[Am,phi m]=margin(numGo,denGo) Marges de phase Si les arguments de
et de gain d’un sortie ne sont pas
syst`me
e analo- sp´cifi´s, trace le
e e
gique. lieu de Bode et
montre graphique-
ment la valeur des
marges
version 1.2 28 mee matlab.tex19 mars 2002
29. eivd Cours MATLAB
4.8 Trac´ du lieu d’Evans
e
rlocus(num,den,k) Trace le lieu d’Evans de k est une option ; c’est
la fonction de transfert. un vecteur-ligne conte-
nant les diff´rentes va-
e
leurs du facteur d’Evans
pour lesquelles le lieu
doit ˆtre trac´.
e e
sgrid Affiche les courbes ´qui-
e A ex´cuter
e
zgrid amortissement des plan imm´diatement
e apr`s
e
de s et de z respective- rlocus
ment.
pzmap(num,den) Graphe la configuration
pˆles -z´ros de la fonction
o e
de transfert.
[k,p]=rlocfind(num,den) Trac´ interactif du lieu
e A ex´cuter directement
e
d’Evans. apr`s rlocus et sgrid ; une
e
croix est alors affich´e, e
que l’on peut d´placer
e
avec la souris sur un
point particulier du lieu.
En cliquant , on obtient
alors dans k le facteur
d’Evans correspondant et
dans p l’expression du
pˆle.
o
4.9 Divers
minreal(num,den) Force la compensation
pˆle-z´ro.
o e
printsys(num,den,’s’) Affiche les fonctions de
printsys(num,den,’z’) transfert comme frac-
tions ratrionnelles en s ou
en z
version 1.2 29 mee matlab.tex19 mars 2002
30. eivd Cours MATLAB
5 Les structures de contrˆle du ”langage” MAT-
o
LAB
Les structures de contrˆle usuelles sont disponibles :
o
INSTRUCTION EXEMPLE
delta t=0.01 ;
for variable=expression for i=1 :1 :21 ;
statements %le pas vaut par defaut 1
end y(i)=sin(2*pi*10*(i-1)*delta t) ;
end
plot(y)
delta t=0.01 ;
while expression i=0 ;
statements while i<21
end i=i+1 ;
y(i)=sin(2*pi*10*(i-1)*delta t) ;
end
if expression delta t=0.01 ;
statements i=0 ;
elseif expression if i<21,
statements i=i+1 ;
else y(i)=sin(2*pi*10*(i-1)*delta t) ;
statements end
end
version 1.2 30 mee matlab.tex19 mars 2002
31. eivd Cours MATLAB
6 Simulation de syst`mes dynamiques lin´aires
e e
et non-lin´aires avec la boˆ ` outils Simulink
e ıte a
6.1 Introduction
La boˆ ` outils Simulink est un compl´ment extrˆmement puissant ` MAT-
ıte a e e a
LAB. Les contributions de Simulink sont principalement :
1. La construction conviviale de sch´mas fonctionnels, faite ` la souris ;
e a
2. La simulation de syst`mes lin´aires et surtout non-lin´aires, ainsi que de
e e e
syst`mes non-stationnaires ;
e
3. La simulation de syst`mes mixtes analogiques et num´riques.
e e
Fig. 1 – Librairie standard de Simulink.
Pour la construction de sch´mas, le gain de temps se situe au-del` de 10 ` 100,
e a a
car il ´vite l’utilisation extrˆmement fastidieuse des fonctions MATLAB blkbuild
e e
et connect.
Si certains reprochent ` MATLAB un certain caract`re r´barbatif, Simulink,
a e e
en plus d’offrir de nouveaux outils tr`s puissants, y rem´die compl`tement en
e e e
offrant une interface utilisateur extrˆmement conviviale. Les deux logiciels res-
e
tent toutefois compl`tement li´s l’un ` l’autre, Simulink n’´tant du point de vue
e e a e
hi´rarchique qu’une boˆ ` outils de MATLAB.
e ıte a
L’interface utilisateur de Simulink est l’outil permettant d’introduire directe-
ment les sch´mas fonctionnels de syst`mes dynamiques. Bien que th´oriquement
e e e
son usage ne soit pas indispensable, on peut dire qu’il est utilis´ dans 90% des
e
version 1.2 31 mee matlab.tex19 mars 2002
32. eivd Cours MATLAB
cas de probl`mes ` r´soudre. On y acc`de ` partir l’espace de travail MATLAB
e a e e a
par la commande :
simulink
ou en appuyant sur le bouton correspondant de la barre d’outils de la fenˆtre dee
MATLAB.
Une nouvelle fenˆtre, appel´e simulink apparaˆ Elle n’est en fait qu’une bi-
e e ıt.
blioth`que de blocs fonctionnels standards, r´unis ici en sept groupes, fournis
e e
avec le logiciel. La figure 1 page pr´c´dente montre ces groupes.
e e
On remarque notamment les biblioth`ques Linear et Nonlinear contenant
e
chacune une collection de blocs lin´aires et non-lin´aires respectivement.
e e
Fid`le ` la philosophie de MATLAB, Simulink est ouvert et l’utilisateur peut
e a
rajouter ses propres blocs, qu’il peut organiser en une ou plusieurs biblioth`quese
([2, et p.4.11 et p.3-19 et ss). Dans ce sens, les possibilit´s sont quasi illimit´es.
e e
Bien que cela ne paraisse pas imp´ratif au premier abord, il se r´v`le assez
e e e
tˆt indispensable de bien connaˆ MATLAB pour utiliser Simulink de mani`re
o ıtre e
coh´rente et organis´e, i.e. professionnellement. Dans tous les cas, on a int´rˆt
e e ee
a
` utiliser Simulink en forte connection avec MATLAB ; il faut savoir que tous
les blocs Simulink peuvent ˆtre param´tr´s de mani`re symbolique. Ceci permet
e e e e
de d´finir les param`tres dans l’espace de travail MATLAB, soit manuellement,
e e
soit en ex´cutant un fichier de type script. Dans ce cas, plusieurs fichiers de pa-
e
ram´trisation peuvent ˆtre cr´´s et lanc´s dans MATLAB avant le d´but de la si-
e e ee e e
mulation. La documentation desdits fichiers permet de rationaliser et d’organiser
le grand nombre de simulations que l’on peut faire. C’est dans ce genre de situa-
tion que les comp´tences en programmation (organisation, d´composition et ana-
e e
lyse du probl`me, structuration) de l’utilisateur peuvent s’av´rer d´terminantes.
e e e
Des boˆ ` outils compl´mentaires (Real Time Workshop, Matlab C Com-
ıtes a e
piler ) permettent de g´n´rer le code C du sch´ma de simulation, ainsi que le
e e e
code objet pour des processeurs de signaux (par exemple Texas TMS320C30,
syst`me produit par la firme DSPACE). Simulink peut ˆtre programm´ relative-
e e e
ment simplement en C. Dans ce cas, les performances en terme de temps de calcul
seront nettement meilleures. Notons que le laboratoire d’Automatique de l’eivd
dispose d’une licence du compilateur C/C++ de Watcom version 10.6 support´ e
par MATLAB/Simulink. Le compilateur Borland C/C++, dont l’´cole a la licence
e
de site, n’est support´ que par MATLAB et n’apporte aucune contribution quant
e
a
` la vitesse de calcul. Il faut penser ` cette variante de programmation (en C)
a
lorsque le temps de calcul doit ˆtre r´duit et lorsque l’on souhaite int´grer ` la
e e e a
simulation du code C existant. D’autre part, on peut de cette fa¸on profiter de
c
toutes les fonctionnalit´s Windows et personnaliser son application. Enfin, il faut
e
reconnaˆ que le fait de pouvoir tester son code source C avec MATLAB/Simulink
ıtre
avant de le livrer et l’ex´cuter sur l’application r´elle permet d’acc´l´rer et facilite
e e ee
consid´rablement le d´veloppement. Il s’agit incontestablement d’un des points
e e
version 1.2 32 mee matlab.tex19 mars 2002
33. eivd Cours MATLAB
forts de MATLAB/Simulink.
La combinaison de Simulink et d’un syst`me d’acquisition en temps r´el est
e e
possible mais tr`s d´licate et limit´e en rapidit´, notamment ` cause de la lenteur
e e e e a
et de la complexit´ de Windows. Un travail allant dans cette direction a ´t´
e ee
effectu´ dans le cadre de l’institut d’Automatisation industrielle de l’eivd.
e
La programmation graphique, i.e. l’introduction directe de sch´mas fonction-
e
nels, est un outil fanstastique offert par Simulink. Cependant, les limites de ce
genre de programmation sont rapidement atteintes lorsque le syst`me est relati-
e
vement complexe, auquel cas il sera plus facile de programmer Simulink ”en texte”
de mani`re classique, i.e. en cr´ant des fonctions S (S-function), plutˆt que d’in-
e e o
terconnecter les blocs par de nombreuses lignes cr´´es ` la souris. Les fonctions
ee a
S ont un format un peu particulier, propre ` Simulink, mais s’´crivent presque
a e
aussi simplement que les fonctions MATLAB ; elles consistent ` programmer les
a
´quations diff´rentielles du syst`me ` simuler.
e e e a
6.2 Exemple introductif : simulation d’un syst`me dyna-
e
mique lin´aire
e
On se propose d’illustrer l’utilisation de Simulink par l’exemple classique d’un
moteur ` courant continu ` excitation s´par´e constante exploit´ en boucle ou-
a a e e e
verte (figure 2).
R a
L a
K
a l i e r s
T
K E
M ( t )
p
u a
( t ) M
C o e f f i c i e n t
J
i
d e f r o t t e m e n t
v i s q u e u x
a f _ 0 1 _ 0 4 . e p s
R f
Fig. 2 – Sch´ma technologique d’un entraˆ
e ınement DC ` excitation s´par´e
a e e
constante. Le frottement est purement visqueux, proportionnel ` la vitesse, de
a
coefficient Rf .
On admettra que le syst`me est parfaitement lin´aire, en faisant les hypoth`ses
e e e
simplificatrices suivantes, ceci pour simplifier l’exemple et se concentrer sur l’es-
sentiel de cette ´tude, i.e. le logiciel MATLAB/Simulink :
e
– on ne prend pas en compte l’effet des perturbations ;
– le frottement sur l’arbre moteur est purement visqueux ;
– le moteur ` courant continu ´tant compens´, l’effet de r´action d’induit est
a e e e
n´gligeable.
e
version 1.2 33 mee matlab.tex19 mars 2002
34. eivd Cours MATLAB
Plusieurs d´marches sont possibles pour la construction et l’organisation du
e
sch´ma, de mˆme que pour la simulation. On propose ici une fa¸on de faire re-
e e c
lativement laborieuse par rapport ` la simplicit´ de l’exemple, calqu´e sur des
a e e
probl`mes concrets d’une certaine envergure, pour lesquels la m´thodologie em-
e e
ploy´e est d´terminante. Comme on le verra, le lien avec MATLAB est sous-jacent.
e e
6.2.1 Mod´lisation
e
Les mod`les en t et en s du syst`me sont (les conditions initiales ´tant sup-
e e e
pos´es identiquement nulles) :
e
ua = Ra · ia + La · dia + KE · ω Ua = Ra · Ia + La · s · Ia + KE · Ω
dt
Tem = KT · ia L Tem = KT · Ia
dω
J · dt = Tem − Rf · ω J · s · Ω = Tem − Rf · Ω
Apr`s mise en ´quations, le sch´ma fonctionnel d´taill´ est celui de la figure 3.
e e e e e
i a
( t ) T e m
( t )
1 1
R R
u ( t ) S K w ( t )
f t
a
a L J
T + ×
t
+ s ×
a
1 1 s
R R f t
a
K E
f _ 0 1 _ 0 5 . e p s
Fig. 3 – Sch´ma fontionnel correspondant au sch´ma technologique de la fi-
e e
gure 2 page pr´c´dente.
e e
6.2.2 Construction du sch´ma
e
Pour introduire le sch´ma fonctionnel de la figure 3 dans Simulink, il faut
e
commencer par appeler Simulink ` partir l’espace de travail de MATLAB, comme
a
d´j` fait pr´c´demment.
ea e e
version 1.2 34 mee matlab.tex19 mars 2002
35. eivd Cours MATLAB
Fig. 4 –
Pour d´finir la fenˆtre de travail, s´lectionner New dans le menu File. Une
e e e
nouvelle fenˆtre est alors activ´e, nomm´e automatiquement Untitled. C’est dans
e e e
cette mˆme fenˆtre que le sch´ma sera construit ` partir des blocs contenus dans
e e e a
les biblioth`ques Simulink, voire d’autres blocs cr´´s par l’utilisateurs et r´unis
e ee e
dans d’autres biblioth`ques. Revenant ` la fenˆtre Simulink et double-cliquant
e a e
sur le groupe Linear, apparaissent alors certains blocs utiles ` la construction
a
(figure 4) :
– le sommateur (Sum) ;
– le gain (Gain)
– la fonction de transfert (Transfer Fcn).
S´lectionnant le premier de ces blocs ` l’aide de la souris dont le bouton gauche
e a
est maintenu press´, on am`ne le bloc dans la fenˆtre de travail en d´pla¸ant la
e e e e c
version 1.2 35 mee matlab.tex19 mars 2002