You are on page 1of 28

Initiation à la CAO en réglage automatique INTRODUCTION

1 INTRODUCTION
Ce document constitue un support d'initiation aux logiciels MATLAB et
SIMULINK qui sont regroupés dans la même application sur Macintosh. Cette ap-
plication porte le nom de “MATLAB”. Il s’agit de la version 5.1.

MATLAB et SIMULINK sont des logiciels interactifs de très hautes per-


formances, extrêmement utiles pour les applications scientifiques et celles de l'in-
génieur. Ils fournissent dans un environnement convivial des outils d'analyse
numérique, de calcul matriciel, de traitement du signal, de visualisation de don-
nées ainsi que d'analyse et de synthèse des systèmes de commande.

Dans le cadre universitaire, ces logiciels constituent des outils standards


pour les cours d'introduction à l'algèbre linéaire ainsi que pour des cours plus
avancés dans d'autres domaines. Dans l'industrie, ils sont utilisés pour la recherche
ainsi que pour la résolution des problèmes pratiques de l'ingénieur et des
problèmes mathématiques.

MATLAB est destiné à l’étude des systèmes linéaires ou linéarisés, alors


que SIMULINK est orienté vers la simulation des systèmes non linéaires. Ils sont
combinés dans un environnement unique permettant d’exploiter conjointement
leurs capacités respectives.

MATLAB dispose d'un très grand nombre de fonctions directement utilis-


ables pour l'étude des problèmes rencontrés en réglage. Il fournit aussi à l'utili-
sateur la possibilité de créer de nouvelles fonctions par l'intermédiaire de fichiers
de commande facilement réalisables.

Dans MATLAB, les systèmes peuvent se représenter par une fonction de


transfert ou par un modèle d'état, ce qui permet l'application des techniques de
réglage dites “classiques” et “modernes”. Le traitement des systèmes analogiques
ou discrets est considéré. Les réponses temporelles et frequentielles ainsi que le
lieu des pôles d'un système peuvent se calculer et se représenter graphiquement.
D'autres fonctions permettent le traitement des problèmes liés au réglage optimal,
à l'estimation et à l'identification d'un système, au placement des pôles, etc.

Ce document doit permettre à l'utilisateur de se familiariser tout d'abord


avec les outils de base dont dispose MATLAB, puis de prendre connaissance des
possibilités offertes dans le domaine du réglage et, par la suite, d’exploiter les ca-
pacités de SIMULINK. Des exemples illustrent les différentes commandes facili-
tant ainsi leur compréhension et leur exploitation.

SIMULINK peut être considéré comme une extension de MATLAB. Les


capacités supplémentaires que cet élément apporte sont traitées au chapitre 5.

1
Initiation à la CAO en réglage automatique OUTILS DE BASE

2 OUTILS DE BASE
2.1 Commandes générales
» who : Affiche les variables actuellement présentes en
mémoire.

» whos : Affiche les variables actuellement présentes en


mémoire ainsi qu’une série d’informations
comme leur nature, leur taille en nombre de
lignes et de colonnes pour les matrices, leur
taille en bytes, etc...

» exist ('NomVariable') : Affiche la valeur 1 si la variable NomVariable


existe, et la valeur 0 si la variable n’existe pas.

» clear NomVariable : Efface de la mémoire la variable NomVariable.

» clear : Efface toutes les variables en mémoire

» help NomFonction : Affiche la description et la syntaxe de la fonction


NomFonction.

» save NomFichier : Enregistre dans le fichier NomFichier l'ensemble


des variables définies et actuellement présentes
en mémoire.

» load NomFichier : Charge les variables stockées dans le fichier


NomFichier.
Il existe également une description interactive des fonctions accessible au
moyen de l'option “About MATLAB” du menu .

2.2 Caractères spéciaux


; : Utilisé à la suite d'une commande, ce caractère
supprime l'écho à l'écran de cette commande et
de son résultat.

... : Ajouté au cours d'une commande, ce caractère


permet la continuation de la commande à la
ligne suivante.

5, 6 et / : Correspondent respectivement à [, ] et \

2
Initiation à la CAO en réglage automatique OUTILS DE BASE

2.3 Valeurs particulières


ans : Variable créée automatiquement quand le
résultat d'une expression n'est pas affecté à une
variable.
pi : Constante correspondant au nombre π.

i, j : Constantes correspondant à – 1 .

2.4 Définitions de scalaires


» z=1+2*i : Définit le nombre z = 1 + 2i .

» a=2 : Définit la variable a = 2 .

»a : En actionnant la touche RETURN, on visualise


la valeur de a.

2.5 Définitions de vecteurs


» x=[-1 0 2] ou x=[-1,0,2] : Définit le vecteur ligne: x = [ -1 0 2 ] .

–1
» x=[-1;0;2] : Définit le vecteur colonne: x = 0 .
2

» x=[-1.3 sqrt(3) 6*4/5] : Définit le vecteur: x = [ -1.3 1.7321 4.8 ] .

» x(5)=x(1) : Etend la dimension de x jusqu'à 5 et assigne la


valeur prescrite à la dernière composante.
L'élément x(4) n'étant pas défini, il vaut 0 par
défaut: x = [ -1.3 1.7321 4.8 0 -1.3 ] .
» y=[y0:D:yMax] : Définit un vecteur ligne dont la première
composante est y0 et la dernière yMax.
Les valeurs intermédiaires sont obtenues par
adjonction successive de l’incrément D.
» y=[y0:yMax] : Si l'incrément D est omis, il vaut par défaut 1.
Donc, y = [ y0, y0+1, ..., yMax-1, yMax ] .

» y=[1:5] : Définit le vecteur: y = [ 1 2 3 4 5 ]

3
Initiation à la CAO en réglage automatique OUTILS DE BASE

» y=linspace(y0,yMax,n) : Définit un vecteur ligne dont les n composantes


sont linéairement espacées entre les valeurs y0 et
yMax.

» y=linspace(-pi,pi,4) : Définit le vecteur:

y = [ -3.1416 -1.0472 1.0472 3.1416 ]

» w=logspace(d1,d2,n) : Définit un vecteur ligne dont les n composantes


sont logarithmiquement espacées entre les
valeurs 10d1 et 10d2. C'est une fonction adaptée à
la création de vecteurs de pulsations utilisés pour
visualiser des réponses fréquentielles.

» w=logspace(-2,1,50) : Génère 50 points compris entre 0.01 et 10.

2.6 Définitions de matrices

1 2 3
» A=[1 2 3;4 5 6;7 8 9] : Définit la matrice: A = 4 5 6
7 8 9

» r=[10,11,12]

» A=[A;r] : Modifie A par adjonction de r comme nouvelle


1 2 3
ligne: A = 4 5 6
7 8 9
10 11 12

» ones(n,m) : Définit une matrice de dimension n x m avec tous


les éléments égaux à 1.

» O=ones(2,3) : Définit la matrice: O = 1 1 1


1 1 1

» zeros(n,m) : Définit une matrice de dimension n x m avec tous


les éléments égaux à 0.

» size(A) : Définit un vecteur dont la première composante


est le nombre de lignes de A et la seconde son
nombre de colonnes.

4
Initiation à la CAO en réglage automatique OUTILS DE BASE

» eye(n,m) : Définit une matrice identité de dimension n x m.

» E=eye(size(A)) : Définit une matrice E de même dimension que A,


qui contient des 1 sur la diagonale principale et
des 0 partout ailleurs.

1 0 0
E = 0 1 0
0 0 1
0 0 0

» diag(v) : Si v est un vecteur à n composantes, alors diag(v)


est une matrice carrée de dimension n qui porte
sur la diagonale principale les éléments du
vecteur v.

» D=diag([1 2 3]) : Définit la matrice diagonale:

1 0 0
D = 0 2 0
0 0 3

» V=[ ] : Définit une matrice V de dimension 0 x 0.

2.7 Manipulations de matrices ou de vecteurs


» A(:,j) : Représente la j-ième colonne de A.

» A(i,:) : Représente la i-ième ligne de A.

» A(:,k:m) : Représente [A(:,k), A(:,k+1), ..., A(:,m)].

» A(:,2)=[ ] : Efface la 2-ième colonne de la matrice A. On


obtient:

1 3
A = 4 6
7 9
10 12

» A(i,j) : En actionnant la touche RETURN on visualise la


valeur de l'élément (i,j) de la matrice A.

5
Initiation à la CAO en réglage automatique OUTILS DE BASE

Exemple
Soit A=[1 2 3;4 5 6;7 8 9;10 11 12];

123
» A=A(1:3,:) : Produit la matrice A = 4 5 6
789

» A(3,2) : Visualise la valeur 8

2.8 Opérations matricielles ou vectorielles


Soient x=[-1 0 2], A=[1 2 3;4 5 6;7 8 0] et Z=[1+5*i,2+6*i;3+7*i,4+8*i];

❏ Complexe conjugé transposé

1 4 7
» B=A' : Correspond à B = AT = 2 5 8
3 6 0

–1
» x=x' : Produit le vecteur x = 0
2

» W=Z' : Produit la matrice W = 1 – 5i 3 – 7i


2 – 6i 4 – 8i

❏ Transposé

» W=Z.' : Produit la matrice W = 1 + 5i 3 + 7i


2 + 6i 4 + 8i
❏ Addition et soustraction
Les opérations sont définies uniquement si les variables ont la même di-
mension ou si une des variables est un scalaire.

2 6 10
» C=A+B : Produit la matrice C = 6 10 14
10 14 0

6
Initiation à la CAO en réglage automatique OUTILS DE BASE

–2
» y=x-1 : Produit le vecteur y = – 1
1

❏ Multiplication et division

Les dimensions des variables doivent être compatibles.

» x'*y : Produit le scalaire ans = 4

2 1 –1
» x*y' : Produit la matrice ans = 0 0 0
–4 –2 2

5
» b=A*x : Produit le vecteur b = 8
–7

– 3.1416
» pi*x : Produit le vecteur ans = 0
6.2832

» C=A.*B : Correspond à la multiplication élément par


élément des matrices A et B, cij = aij bij:

1 8 21
C = 8 25 48
21 48 0

» B/A : Correspond formellement à BA-1, si A est une


matrice carrée inversible.

» z=x./y : Correspond à la division élément par élément


des vecteurs x et y. Donne le vecteur:

0.5
z = 0
2

7
Initiation à la CAO en réglage automatique OUTILS DE BASE

❏ Puissance

» A^n : Correspond à An. Cette opération est définie si A


est une matrice carrée et si n est un scalaire.

» z=y.^x : Correspond à une élévation en puissance,


élément par élément. Donne le vecteur:

– 0.5
z = 1
1

1
» z=x.^2 : Donne le vecteur z = 0
4

2.9 Fonctions
❏ Fonctions matricielles élémentaires

Ces fonctions sont définies uniquement pour des matrices carrées. Soit A
une matrice de dimension n x n;

» det(A) : Déterminant de la matrice A.

» inv(A) : Inverse de la matrice A.

» expm(A) : Exponentielle de la matrice A.

» logm(A) : Logarithme naturel de la matrice A.

» sqrtm(A) : Racine carrée de la matrice A.

» poly(A) : Vecteur ligne de dimension n+1 dont les


éléments sont les coefficients du polynôme
caractéristique det(sI-A) ordonnés en puissances
décroissantes.

» eig(A) : Vecteur colonne contenant les valeurs propres


de la matrice A.

8
Initiation à la CAO en réglage automatique OUTILS DE BASE

❏ Fonctions mathématiques élémentaires


Il existe un ensemble de fonctions mathématiques élémentaires qui s'ap-
pliquent aux éléments de vecteurs ou de matrices.

» sin(A) : Sinus des éléments de la matrice A.


» cos(A) : Cosinus "

» tan(A) : Tangente "


» asin(A) : Arc sinus "
» acos(A) : Arc cosinus "

» atan(A) : Arc tangente "


» abs(A) : Valeur absolue "
» sqrt(A) : Racine carrée "

» real(A) : Partie réelle des éléments de la matrice A.


» imag(A) : Partie imaginaire "
» conj(A) : Complexe conjugué "

» exp(A) : Exponentielle "


» log(A) : Logarithme naturel "
» log10(A) : Logarithme à base 10 "
❏ Fonctions pour l'analyse des données
Les fonctions suivantes opèrent sur les colonnes d'une matrice ou sur les
éléments d'un vecteur ligne ou colonne.
Soient x=[6 4 1 2 5 3] et A=[9 8 4;1 6 5;3 2 7]

» mx=max(x) : Fournit l'élément le plus grand du vecteur x,


mx = 6 .
» mA=max(A) : Définit un vecteur contenant la valeur maximale
de chaque colonne de la matrice A,
mA = [ 9 8 7 ] .

» mvx=mean(x) : Calcule la valeur moyenne du vecteur x,


mvx = 3.5 .

9
Initiation à la CAO en réglage automatique OUTILS DE BASE

» mvA=mean(A) : Définit un vecteur contenant la valeur moyenne


calculée sur chaque colonne de la matrice A,
mvA = [ 4.333 5.333 5.333 ] .

» sx=sort(x) : Classe les éléments du vecteur x selon l'ordre


croissant, sx = [ 1 2 3 4 5 6 ] .

» sA=sort(A) : Classe les éléments de chaque colonne de la


1 2 4
matrice A selon l'ordre croissant,sA = 3 6 5
9 8 7

» sux=sum(x) : Calcule la somme de tous les éléments du


vecteur x, sux = 21 .

» suA=sum(A) : Définit le vecteur contenant la somme calculée


sur chaque colonne de la matrice A,
suA = [ 13 16 16 ] .

❏ Fonctions opérant sur des polynômes

MATLAB dispose également de fonctions qui opèrent sur des polynômes


représentés par des vecteurs de coefficients.

Soient p=[1 -6 -72 -27], a=[1 2 3] et b=[4 5 6]

» r=roots(p) : Définit un vecteur colonne dont les composantes


sont les racines du polynôme s 3 – 6s 2 – 72s – 27 ,

12.1229
r = – 5.7345
– 0.3884

» p2=poly(r) : Calcule les coefficients d'un polynôme définit


par ses racines, p2 = [ 1 -6 -72 -27 ] .

» c=conv(a,b) : Effectue le produit des polynômes


2 2
a(s) = s + 2s + 3 et b(s) = 4s + 5s + 6 puis
fournit un vecteur contenant les coefficients du
polynôme résultant, c = [ 4 13 28 27 18 ] .

10
Initiation à la CAO en réglage automatique OUTILS DE BASE

2.10 Graphiques
Avec MATLAB les données peuvent être examinées graphiquement.
Pour la représentation d'un graphe à l’écran il est possible de choisir le
type d'échelle désiré pour les axes x et y.

plot : Graphe linéaire en x et y.


loglog : Graphe logarithmique en x et y.
semilogx : Graphe logarithmique en x, linéaire en y.
semilogy : Graphe linéaire en x, logarithmique en y.
Une fois que le graphe est visualisé à l’écran, il est possible d'introduire un
titre et des noms indicatifs pour les axes x et y.

title : Titre pour le graphe.


xlabel : Nom indicatif pour l'axe des x.
ylabel : Nom indicatif pour l'axe des y.
La commande axis('square') permet de définir une région de dessin carrée
lorsque des proportions doivent être respectées entre les deux axes.

Exemple
1

0.8

0.6
» t=[0:0.05:2*pi]; 0.4
» y=sin(t); 0.2

» plot(t,y)
sin(t)

» xlabel('t') -0.2

» ylabel('sin(t)') -0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7

11
Initiation à la CAO en réglage automatique OUTILS D'ETUDE DES SYSTEMES DYNAMIQUES

3 OUTILS D'ETUDE DES SYSTEMES


DYNAMIQUES
3.1 Description des systèmes dynamiques linéaires
Cette section montre comment décrire et manipuler des modèles dy-
namiques dans MATLAB.

❏ Fonction de transfert

La fonction de transfert est une représentation très utilisée pour la descrip-


tion des systèmes dynamiques analogiques ou discrets.

• Forme polynomiale d'une fonction de transfert analogique:

n0 s m + n1 s m – 1 + … + nm
Soit y ( s ) = -------------------------------------------------------------- u(s)
d 0sn + d 1sn – 1 + … + d n

Dans MATLAB, nous décrivons ce système par les deux vecteurs ligne
suivants:

num = [ n 0 ,n 1 ,… ,n m ]

den = [ d 0 ,d 1 ,… ,d n ]

Exemple

s 3 + 2s + 5
Considérons le système H ( s ) = -------------------------------------------
-
3s 3 + 5s 2 + 2s + 1

L'introduction de ce système dans MATLAB se fait par les commandes


suivantes:

» num=[1,0,2,5]

» den=[3,5,2,1]

12
Initiation à la CAO en réglage automatique OUTILS D'ETUDE DES SYSTEMES DYNAMIQUES

• Représentation pôles-zéros d'une fonction de transfert analogique:

K ( s + z 1 )… ( s + z m )
Soit H ( s ) = ------------------------------------------------
-
( s + p 1 )… ( s + p n )

Dans MATLAB nous décrivons le système par deux vecteurs colonne et


un scalaire comme suit:

k = K

z = [ – z 1 ;– z 2 ;… ;– z m ]

p = [ – p 1 ;– p 2 ;… ;– p n ]

Exemple

4(s + 1)(s + 2) -
Considérons le système H ( s ) = -------------------------------------------------
(s + 3)(s + 4)(s + 5)

L’introduction de ce système dans MATLAB se fait par les commandes


suivantes:

» k=4

» z=[-1;-2]

» p=[-3;-4;-5]

La représentation pôles-zéros (p,z) peut être convertie sous forme polyno-


miale (num,den) en appliquant la commande poly.

» num=poly(z)*k

» den=poly(p)

L'opération inverse s'effectue en appliquant la commande roots.

» z=roots(num)

» p=roots(den)

13
Initiation à la CAO en réglage automatique OUTILS D'ETUDE DES SYSTEMES DYNAMIQUES

• Les systèmes linéaires, invariants et discrets dans le temps se représentent dans


MATLAB de façon similaire aux systèmes analogiques:

Exemple (forme polynomiale)

m–1
n0 z m + n1 z + … + nm
Soit y ( z ) = --------------------------------------------------------------u (z)
d 0zn + d 1zn – 1 + … + d n

Dans MATLAB le système est décrit par:

num = [ n 0 ,n 1 ,… ,n m ]

den = [ d 0 ,d 1 ,… ,d n ]

La représentation pôles-zéros peut aussi être utilisée pour les systèmes dis-
crets comme elle a été décrite pour les systèmes analogiques dans le paragraphe
précédent. La fonction c2dm permet de passer d’une représentation continue à la
représentation discrète correspondante (en indiquant la période d’échantillon-
nage).

❏ Combinaison de fonctions de transfert


MATLAB fournit la possibilité de connecter en série deux systèmes dy-
namiques qui sont décrits chacun par une fonction de transfert.
Cette opération qui consiste à réduire plusieurs systèmes dynamiques con-
nectés en série en un seul système équivalent est intéressante car elle facilite, entre
autres, l'analyse de la réponse du système global.
La commande MATLAB correspondante est conv. Sa fonction est d'effec-
tuer la convolution de deux vecteurs.
Soit (num1,den1) et (num2,den2) la représentation de deux systèmes dy-
namiques 1 et 2 connectés en série.

num1 num2
u -------------- -------------- y
den1 den2
num
-----------
den

La fonction de transfert du système équivalent est représentée par deux


vecteurs ligne définis comme suit.

14
Initiation à la CAO en réglage automatique OUTILS D'ETUDE DES SYSTEMES DYNAMIQUES

» num=conv(num1,num2)

» den=conv(den1,den2)

Exemple

s+2 s 2 + 0.4s + 4
Soit H 1 ( s ) = ----------------------------------
- et H 2 ( s ) = ------------------------------ deux systèmes
0.5s 2 + s + 0.5 s 2 + 0.5s + 2
mis en série.
Calculer la fonction de transfert H(s) du système équivalent.

» num1=[1 2]

» den1=[0.5 1 0.5]

» num2=[1 0.4 4]

» den2=[1 0.5 2]

» num=conv(num1,num2) : Produit un vecteur ligne qui contient les


coefficients du polynôme du numérateur du
système équivalent:

num = [ 1 2.4 4.8 8 ]

» den=conv(den1,den2) : Produit un vecteur ligne qui contient les


coefficients du polynôme du dénominateur du
système équivalent:

den = [ 0.5 1.25 2 2.25 1 ]

s 3 + 2.4s 2 + 4.8s + 8
Alors H ( s ) = ------------------------------------------------------------------------------
0.5s 4 + 1.25s 3 + 2s 2 + 2.25s + 1

Remarque
Il est intéressant de remarquer que la commande conv, judicieusement ma-
nipulée, permet la réduction de n'importe quel schéma bloc (chaîne directe, chaîne
de retour).

15
Initiation à la CAO en réglage automatique OUTILS D'ETUDE DES SYSTEMES DYNAMIQUES

3.2 Réponses temporelles des systèmes linéaires


MATLAB fournit des commandes pour le calcul des réponses temporelles
des systèmes dynamiques linéaires et stationnaires. Nous présentons ci-dessous le
cas de systèmes analogiques. Des commandes analogues existent aussi pour le cas
de systèmes discrets.

Soit un système représenté par sa fonction de transfert, (num,den).

» y = impulse(num,den,t) : Calcul de la réponse du système à une impulsion


unité.
t: vecteur temps pour lequel la réponse du
système est calculée.
y: vecteur de la réponse calculée.

» y = step(num,den,t) : Calcul de la réponse du système à un saut unité.

» y = lsim(num,den,u,t) : Calcul de la réponse du système à une entrée


quelconque.
u: vecteur du signal d'entrée.

Exemples

2s 2 + 5s + 1
Soit le système H ( s ) = -----------------------------
s 2 + 2s + 3

1) Calcul de la réponse impulsionnelle du système:

1
» num=[2 5 1];
» den=[1 2 3]; 0.5

» t=[0:0.1:10]; 0

» y1=impulse(num,den,t);
y1

-0.5

» plot(t,y1) -1

» xlabel('t'), ylabel('y1')
-1.5

-2
0 1 2 3 4 5 6 7 8 9 10

16
Initiation à la CAO en réglage automatique Fichiers de MATLAB (M-Files)

2) Calcul de la réponse du système à une entrée sinusoidale:

2
» num=[2 5 1];
1.5
» den=[1 2 3];
1
» t=[0:0.1:20]; 0.5
» u=sin(t);

y2
0
» y2=lsim(num,den,u,t); -0.5

» plot(t,y2) -1

» xlabel('t'), ylabel('y2') -1.5

-2
0 2 4 6 8 10 12 14 16 18 20

4 Fichiers de MATLAB (M-Files)


4.1 Fichiers de commandes
Il est possible d'éditer dans un fichier une suite de commandes MATLAB
que l'on est susceptible d'utiliser un grand nombre de fois. Après enregistrement,
ce fichier peut-être modifié si nécessaire puis exécuté comme un programme.
Pour créer un nouveau fichier de commande, choisir New M-file dans le
menu File. Une fenêtre Untitled apparaît alors, dans laquelle la suite de com-
mandes désirées peut être éditée comme dans un traitement de texte.

Pour enregistrer le fichier, choisir Save as ... dans le menu File, introduire
le nom désiré, par exemple toto, sélectionner le dossier de destination, puis enreg-
istrer. Le nom du fichier doit comporter l’extension .m.

Il existe deux moyens d'exécuter le fichier de commandes. D'une part si la


fenêtre Command est active, il suffit d'introduire le nom du fichier:
» toto

D'autre part, si c'est la fenêtre toto.m qui est active, par exemple lors de
l'édition du fichier, il suffit de choisir la commande Save and Execute dans le
menu File pour enregistrer les modifications et exécuter les commandes.

Les fichiers de commandes partagent les variables définies dans la fenêtre


de commande. Il s’agit donc de variables globales.

17
Initiation à la CAO en réglage automatique Fichiers de MATLAB (M-Files)

4.2 Fonctions
La plupart des fonctions disponibles dans MATLAB ou dans ses toolboxes
sont également définies dans des fichiers de commandes. Afin de pouvoir être ap-
pelés comme des fonctions, ces fichiers doivent posséder une structure particu-
lière. Ces fonctions se distinguent des fichiers de commandes standard par la
possibilité de passer des paramètres d’entrée et de sortie.
Le fichier de définition d’une fonction doit commencer par la ligne de
commandes suivante:
function [S1,S2,...]=NomFonction(E1,E2,...)
NomFonction est une chaîne de caractères qui correspond au nom de la
fonction. Ce nom doit être différent de celui des autres fonctions déjà disponibles.
Le fichier de commandes doit porter le même nom que la fonction. E1, E2, ... sont
les variables transmises à la fonction lorsqu’elle est invoquée. S1, S2, ... sont les
variables retournées par la fonction après son exécution. Ces dernières variables
doivent être définies dans le corps de la fonction. Les autres variables définies à
l’intérieur de la fonction sont locales.
Pour faciliter l’usage de la fonction, des lignes de commentaires peuvent
être introduites. Elles doivent être précédées du symbole %. Les lignes de com-
mentaires qui suivent directement l’entête de la fonction seront affichées si l’util-
isateur introduit la commande:
» help NomFonction
La définition et l’appel d’une fonction sont illustrés dans les deux figures
présentées ci-dessous.

SomProd.m

18
Initiation à la CAO en réglage automatique Introduction à SIMULINK

5 Introduction à SIMULINK
5.1 Construction de modèles
SIMULINK utilise des diagrammes donnés sous forme de blocs pour
représenter les systèmes dynamiques. Il contient des librairies de blocs qui peu-
vent être utilisés pour construire le modèle du système. L'utilisateur a aussi la pos-
sibilité de définir de nouveaux blocs et de créer ainsi sa propre librairie. La
librairie standard est divisée en plusieurs groupes de blocs selon leurs caractéris-
tiques.

On accède à SIMULINK à partir de MATLAB en tapant simulink. Une


nouvelle fenêtre apparaît qui affiche la librairie principale. Chacun des blocs de la
librairie principale peut être ouvert par un double clic pour montrer les blocs élé-
mentaires. Ces derniers peuvent être déplacés dans une fenêtre de travail créée par
la commande New du menu File. Le déplacement d'un bloc met une copie de ce
bloc dans la nouvelle fenêtre, le bloc original restant intact. La copie a les mêmes
caractéristiques que le bloc original. Les blocs peuvent aussi être copiés et collés
dans la même fenêtre.

La plupart des blocs peuvent être ouverts pour afficher leurs paramètres
dans une fenêtre séparée. Les valeurs par défaut de ces paramètres peuvent être
modifiées. La plupart des blocs possède une touche d'aide qui informe sur le fonc-
tionnement du bloc.

Les blocs ont des ports d’entrée et de sortie. Pour connecter deux blocs, on
doit cliquer sur le port de sortie du premier bloc, déplacer la souris jusqu'au port
d’entrée du deuxième bloc et relâcher le bouton de la souris. Une ligne avec une
flèche au bout est ainsi créée. La flèche indique la direction du flot d'information.
Pour supprimer une connexion, il suffit de la choisir et d'appuyer sur le bouton de-
lete. A titre d’exemple, le modèle du système décrit par l’équation différentielle de
2
Van der Pol ẋ˙ = ẋ ( 1 – x ) – x est construit. Les conditions initiales des deux in-

19
Initiation à la CAO en réglage automatique Introduction à SIMULINK

tégrateurs sont posées égales à 1 dans la fenêtre de dialogue obtenue en ouvrant


les blocs correspondants. L’expression 1-u[1]*u[1] est introduite dans le bloc f(u).

Le modèle peut être sauvé comme fichier MATLAB. Dans le cas présenté
le fichier porte le nom “Exemple”. Si ce fichier est ouvert lorsque la fenêtre Com-
mand de MATLAB se trouve en premier plan, le modèle est visualisé sous forme
de commandes. Si il est ouvert lorsque la fenêtre simulink se trouve en premier
plan, le modèle est visualisé sous forme de blocs.

5.2 Simulation graphique interactive dans SIMULINK


La simulation peut s’effectuer de façon interactive directement dans SIM-
ULINK après avoir défini le modèle du système et les valeurs des paramètres de
chaque bloc. Pour débuter la simulation, il faut choisir la commande Parame-
ters... du menu Simulation et définir les valeurs des paramètres de la simulation:
temps initial et final, pas d'intégration, algorithme d'intégration, etc. Dans l’exem-
ple donné ci-dessous, c’est la méthode d’intégration de Runge-Kutta qui a été
sélectionnée.

La simulation peut être lancée à l'aide de la commande Start du menu


Simulation. On peut observer l’évolution d’un signal en cours de simulation grâce
au bloc Scope de la librairie Sinks. La réponse obtenue pour le modèle introduit
à la section 5.1 est donnée ci-après.

On peut également changer une entrée durant la simulation. La simulation


peut être interrompue et reprise à l'aide des commandes correspondantes du menu
Simulation. Les résultats de la simulation peuvent être sauvés dans un fichier ou
envoyés dans MATLAB à l'aide des blocs To File ou To Workspace. Toute la
puissance de MATLAB est alors disponible pour l'analyse numérique et graphique
des résultats.

20
Initiation à la CAO en réglage automatique Introduction à SIMULINK

5.3 Simulation pilotée depuis MATLAB


Si la rapidité d’exécution prime sur l’interactivité, la simulation d’un
système dont le modèle a été défini dans SIMULINK peut s’effectuer directement
depuis MATLAB. Dans ce cas, les réponses ne sont disponibles qu’à la fin de la
simulation. Si c’est la méthode d’intégration de Runge-Kutta à pas variable qui est
choisie pour simuler la réponse du système, les commandes à introduire sont les
suivantes:
» options(1)=1e-3; % Erreur relative
» options(2)=0.0001; % Pas d’intégration minimum
» options(3)=0.1; % Pas d’intégration maximum
» options(4)=0; % Option inactive dans ce cas
» options(5)=0; % Pas d’alerte si le pas d’intégration minimum est
atteint.
» options(6)=0; % Affichage de la réponse seulement si aucun
membre de gauche n’est défini.
» tfinal=10; % Temps final pour la simulation
» x0=[1;1]; % Valeurs initiales des intégrateurs
» [t,x,y]=rk45(‘Exemple’,tfinal,x0,options); % Intégration
» plot(t,x); % Affiche les sorties des intégrateurs

Certains des paramètres sont optionnels comme indiqué dans le “help” de


la fonction rk45. La réponse obtenue pour l’exemple considéré est représentée ci-
dessous.

D’autres méthodes d’intégration numérique comme celles d’Euler, d’Ad-


ams ou de Gear peuvent être utilisées de la même façon. Seul le nom d’appel de
la fonction est différent.

21
Initiation à la CAO en réglage automatique Introduction à SIMULINK

-1

-2

-3
0 1 2 3 4 5 6 7 8 9 10

5.4 S-functions
Un modèle créé dans SIMULINK est enregistré en langage MATLAB
sous forme d’une fonction qui contient la description du système et porte le même
nom que le modèle correspondant. Ces fonctions de description de modèles s’ap-
pelles S-functions. Dans le cas de modèles complexes pour lesquels une descrip-
tion par équations différentielles est déjà disponible, il peut être judicieux de
définir directement le modèle dans un fichier de commandes écrites plutôt que
dans un diagramme complexe.

Pour être défini de la sorte, le modèle doit être écrit sous forme d’un
système d’équations différentielles d’ordre un (ou, dans un cas discret, sous forme
d’un système d’équations aux différences d’ordre un). Pour l’exemple mentionné,
ceci est rendu possible par l’introduction de deux variables supplémentaires
x 1 = x et x 2 = ẋ . L’équation de Van der Pol prend alors la forme du système:

ẋ 1 = x 2
2
ẋ 2 = x 2 ( 1 – x 1 ) – x 1

Les variables auxiliaires introduites apparaissent sous forme de dérivées


premières dans les membres de gauche du système. Elles sont appelées les vari-
ables d’état et sont regroupées dans le vecteur d’état x = [ x 1 x 2 ]. Ce sont les
valeurs initiales des variables d’état qui doivent être connues pour que l’intégra-
tion numérique puisse être effectuée. Ces valeurs initiales constituent le vecteur
x0. Les grandeurs que l’on désire visualiser sont regroupées dans le vecteur de sor-
tie y. Dans notre exemple il s’agit d’un scalaire égal à la première variable d’état.

y = x1

22
Initiation à la CAO en réglage automatique Introduction à SIMULINK

Les éventuelles grandeurs d’entrée appliquées au système sont quant à


elles regroupées dans le vecteur d’entrée u. La forme générale de l’entête de la
fonction qui sera appelée lors de l’intégration et qui contient la description d’un
système dans le format mentionné est la suivante:
[sys,x0]=sfun(t,x,u,flag, P1,P2,...,P10)
Seuls les noms de la fonction sfun et les paramètres facultatifs P1, P2, ...,
P10 peuvent être modifiés. Le nombre réduit des paramètres P qui peuvent être
passés à la fonction ne constitue pas une limitation en soit puisqu’il peut s’agir de
matrices de grandes dimensions. Les vecteurs x et u contiennent respectivement
les valeurs de l’état et des entrées à l’instant t. Le contenu du vecteur sys retourné
par la fonction dépend de la valeur du paramètre flag. Seules les valeurs correspon-
dant à un système analogique sont données ci-dessous.
flag sys Description
0 sizes Dimensions des paramètres
1 dx Dérivée de l’état
3 y Sortie
avec: sizes(1) Nombre d’états continus
sizes(2) Nombre d’états discrets
sizes(3) Nombre de sorties
sizes(4) Nombre d’entrées
sizes(5) Nombre de racines discontinues
sizes(6) Vaut 1 si il existe une connexion directe en-
tre l’entrée et la sortie
Dans le cas de l’équation de Van der Pol, la S-function se présente de la
façon suivante:
VDP.m

23
Initiation à la CAO en réglage automatique Introduction à SIMULINK

La forme générale de l’appel à l’algorithme d’intégration de Runge-Kutta


pour simuler le système dont le modèle est décrit par sfun est la suivante:
[t,x,y]=rk45(‘sfun’,tfinal,x0,options,ut,P1,P2,...,P10)
Les paramètres qui interviennent sont les même que ceux définis précé-
demment. Ceux qui doivent être omis sont à remplacer par une paire de crochets
vide []. Les paramètres P1, P2, ..., P10 sont les paramètres optionnels qui peuvent
être passés à la fonction sfun. Le vecteur ut représente la séquence temporelle des
entrées appliquées au système. Il peut s’agir d’une chaîne de caractères ou d’un
tableau de valeurs. Par exemple, la chaîne ‘sin’ à pour conséquence l’évaluation
de la fonction sin au temps t et l’utilisation du résultat de cette évaluation comme
entrée du système.
La chaîne peut également être une expression de MATLAB. Par exemple
si le système possède deux entrées:
ut=‘ones(2,1)*sin(3*t+2)’
Dans ce cas, ut est évalué à chaque pas de l’intégration comme une com-
mande. Les variables globales contenues dans l’espace mémoire de MATLAB
peuvent également être contenues dans l’expression de ut.
Si ut est un tableau de valeurs, la première colonne doit être un vecteur
contenant le temps échantillonné. Les p dernières colonnes doivent contenir les
échantillons correspondant à chacune des p entrées. Si nécessaire, les valeurs des
entrées entre ces échantillons sont évaluées par interpolation linéaire.
L’appel au modèle VDP représentant l’équation de Van der Pol et son in-
tégration par la méthode de Runge-Kutta peuvent s’effectuer depuis un fichier de
commande intitulé “DemoVDP” comme décrit ci-après.

DemoVDP.m

24
Initiation à la CAO en réglage automatique Introduction à SIMULINK

5.5 Outils d’analyse de SIMULINK


Des moyens d’analyse des systèmes non linéaires autres que la simulation
existent également dans SIMULINK. Il s’agit en fait d’utiliser les outils d’analyse
dédiés aux systèmes linéaires; ceci après linéarisation du modèle non linéaire au
moyen de la fonction linmod.Cette fonction fournit les matrices A, B, C et D qui
correspondent à la représentation linéaire analogique suivante:

x̃˙ = Ax̃ + Bũ

ỹ = Cx̃ + Dũ
où x̃ , ũ et ỹ représentent respectivement les écarts des vecteurs d’état, d’entrée et
de sortie par rapport à leurs valeurs nominales x , u et y :

x̃ = x – x

ũ = u – u

ỹ = y – y
La syntaxe de la fonction de linéarisation est la suivante:
[A,B,C,D]=linmod(‘model’, x , u ,pert,xpert,upert,P1,P2,...,P10)
Si les valeurs nominales ne sont pas spécifiées, elles sont considérées com-
me nulles. Les paramètres pert, xpert et upert permettent de fixer les incréments
de perturbations des variables lors du calcul des dérivées partielles nécessaire à la
linéarisation. Ces paramètres possèdent aussi des valeurs utilisées par défaut s’ils
ne sont pas fixés lors de l’appel de la fonction ou s’ils sont omis avec le symbole
[]. Les paramètres facultatifs P1, P2, ..., P10 peuvent également être passés à la
fonction ‘model’. Le modèle ‘model’ doit posséder des entrées constituées de
blocs Inport et des sorties de blocs Outport comme indiqué ci-dessous dans le cas
d’un entraînement électrique en vitesse et de son amplificateur:

Il ne faut en aucun cas oublier que le modèle linéaire est obtenu


numériquement et qu’il peut donc être complètement faux si les incréments sont
mal choisis. Un incrément trop faible peut conduire à des erreurs en raison de la

25
Initiation à la CAO en réglage automatique Introduction à SIMULINK

précision limitée de représentation des nombres dans un ordinateur, un incrément


trop grand peut conduire au même résultat s’il masque des variations rapides de la
fonction dérivée.

De façon tout-à-fait similaire, la fonction dlinmod permet d’obtenir un


modèle d’état linéaire discret. La syntaxe de la fonction dlinmod est la même que
pour linmod à l’exception d’un argument supplémentaire, en deuxième position,
pour indiquer la période d’échantillonnage. Si cette période d’échantillonnage est
nulle, on obtient une approximation analogique du modèle discret.

Les fonctions d’analyse disponibles dans MATLAB sont largement basées


sur une description par fonctions de transfert des systèmes linéaires considérés. La
fonction ss2tf permet d’obtenir une telle représentation sur la base des matrices
obtenues précédemment:

[num,den]=ss2tf(A,B,C,D)

Si le modèle défini dans SIMULINK ne comprend que des blocs linéaires,


l’exécution successive des commandes linmod et ss2tf est équivalente à une ré-
duction du schéma fonctionnel en une fonction de transfert globale dont le
numérateur est num et le dénominateur den. Ceci est utile pour calculer la fonction
de transfert d’un système en boucle fermée.

Les valeurs nominales à introduire dans la fonction linmod correspondent


à un état d’équilibre stationnaire ( ẋ = 0 ) et doivent donc être consistantes avec
les équations du modèles. La fonction trim permet de déterminer une approxima-
tion de ces valeurs.

[ x , u , y , ẋ ]=trim(‘model’, x 0 , u 0 , y 0 ,ix,iu,iy)

Cette fonction étant basée sur une méthode itérative, les estimations ini-
tiales x 0 , u 0 et y 0 des valeurs nominales x , u et y doivent être fournies. Si elles
sont inconnues, elles peuvent être posées égales à zéro; néanmoins, des valeurs
proches de celles cherchées facilitent la convergence de l’algorithme.

Comme il y a généralement plus de degrés de liberté que d’inconnues lors


de la recherche de valeurs nominales, des spécifications supplémentaires doivent
être ajoutées par l’intermédiaire des variables ix, iu et iy. Ces vecteurs contiennent
respectivement les indices des états, des entrées et des sorties qui doivent être
maintenus égaux aux estimations initiales fournies. Seules les autres composantes
sont alors évaluées par l’algorithme.

26
Initiation à la CAO en réglage automatique Introduction à SIMULINK

Dans le cas de l’entraînement, nous cherchons l’entrée et l’état qui corre-


spondent à une vitesse angulaire constante de 10 rad/s.
» xb0=0; % Estimation initiale de x
» ub0=0; % Estimation initiale de u
» y=10; % Valeur choisie pour la sortie
» ix=[]; % Ne pas fixer l’état
» iu=[]; % Ne pas fixer l’entrée
» iy=[1]; % fixer la première (et unique) sortie
» [xb,ub,yb,dx]=trim(‘Servo’,xb0,ub0,y,ix,iu,iy);

L’exécution de cette séquence de commandes fournit:

xb=2.5 (x )
ub=1 (u )
yb=10 (y )
dx=0 ( ẋ )

Le vecteur dx montre avec quelle précision les valeurs nominales obtenues


satisfont l’état stationnaire du modèle non linéaire.

Le modèle non linéaire peut maintenant être linéarisé autour des valeurs
nominales (ou point de fonctionnement) obtenues. Comme une entrée de 1V est
inférieure à la limite de saturation de l’amplificateur qui est de 10V, aucune non
linéarité apparaît dans le schéma fonctionnel. La fonction de transfert obtenue cor-
respond donc à celle de l’entraînement multipliée par le gain du régulateur.

» [A,B,C,D]=linmod(‘Servo’,xb,ub)
» [num,den]=ss2tf(A,B,C,D)

Ce qui donne:

num=20
den=[1 2]

Dans cet exemple simple, une étude pour des valeurs nominales condu-
isant à une sortie de 100 rad/s échoue. En effet, cette valeur correspond à une en-
trée à la limite de la saturation de l’amplificateur. En ce point de discontinuité, les
dérivées partielles nécessaires à l’évaluation des fonctions linmod et trim ne sont
pas définies, montrant ainsi une des limites supplémentaires de ces deux fonctions.

27
Initiation à la CAO en réglage automatique ANNEXE

6 ANNEXE
La fonction drlocus de Matlab permet de tracer le lieu des pôles. Sa syn-
taxe est la suivante:
drlocus(num,den,ax)
Les paramètres num et den (vecteurs lignes contenant les coefficients des
polynômes en z dans l’ordre décroissant des puissances de z) sont respectivement
le numérateur et le dénominateur de la fonction K ( z )G' ( z ) (lorsque le gain K p
est posé égal à 1). Le paramètre ax spécifie les bornes des axes comme cela est fait
avec la fonction axis. La commande:
drlocus(num,den,’auto’)
affiche le lieu des pôles et choisit automatiquement les bornes sur les axes.
Une autre fonction de Matlab appelée rlocfind permet, à l’aide d’un cur-
seur, de localiser un point sur le lieu des pôles et d’obtenir ses coordonnées et le
gain K p correspondant. Sa syntaxe est la suivante:

Kp = rlocfind(num,den)
Les marges de gain et de phase (qui sont de précieux indicateurs de robust-
esse) peuvent être obtenues à l’aide des fonctions dbode et margin dont la syntaxe
est décrite ci-dessous:
[mag,phase,w] = dbode(num,den,h)
[Gm,Pm,Wcg,Wcp] = margin(mag,phase,w)
Le numérateur et le dénominateur de la fonction de transert dont on cher-
che le diagramme de Bode sont donnés par les vecteurs lignes num et den qui con-
tiennent les coefficients des polynômes en z dans l’ordre décroissant des
puissances de z. Le paramètre h est la période d’échantillonnage. Les paramètres
retournés par la fonction dbode servent de paramètres d’entrée pour la fonction
margin qui retourne la marge de gain Gm (sans unité) située à la pulsation Wcg et
la marge de phase Pm (en degré) localisée à la pulsation Wcp. Les détails concer-
nant ces fonctions peuvent être facilement obtenus en tapant help dbode ou help
margin.

28

You might also like