ENSA Agadir
Utilisation de Matlab en Automatique
A. BADDOU, Professeur à l’ENSA d’Agadir 1
Les systèmes continus(représentation
par fonction de transfert)
Pour représenter un système par une fonction de transfert sur Matlab, on utilise la commande tf de
la façon suivante: si le système est représenté par la fonction de transfert,
10
G(p) = p2 +p+2
on utilise les commandes suivantes:
>> n = 10;
>> d = [1 1 2];
>> G = tf (n, d,′ variable′ ,′ p′ )
G=
10
− − − − − − −−
p2 + p + 2
Continuous − timetransf erf unction.
Matlab utilise la variable ’s’ par défaut, l’ajout des options ’variable’,’p’ permet de le forcer à utiliser
la variable ’p’.
Pour trouver les pôles et les zéros de G(p),
>> zero(G)
ans =
Emptymatrix : 0 − by − 1, (pas de zéros donc)
>> pole(G)
ans =
−0.5000 + 1.3229i
−0.5000 − 1.3229i
A. BADDOU, Professeur à l’ENSA d’Agadir 2
Pour visualiser la réponse impulsionnelle (réponse à δ(t)) on utilise la commande
>> impulse(G); grid;
la commande grid permet de tracer la grille sur le graphe. Le résultat de la commande est donné par
le schéma de la figure (1).
Pour visualiser la réponse indicielle (réponse à λ(t)) on utilise la commande
Impulse Response
5
3
Amplitude
−1
−2
0 2 4 6 8 10 12
Time (seconds)
Figure 1: Réponse impulsionnelle
>> step(G); grid;
Le résultat de la commande est donné par le schéma de la figure (2).
Step Response
7
5
Amplitude
0
0 2 4 6 8 10 12
Time (seconds)
Figure 2: Réponse indicielle
Remarque: A partir de l’exemple précédent, on peut définir d’autre systèmes tel que:
>> G1 = tf (3, [2 1]) : premier ordre de gain statique 3 et de constante de temps 2
A. BADDOU, Professeur à l’ENSA d’Agadir 3
3
G1 (p) = 2p+1
>> G2 = tf (3, [1 0]) : intégrateur
3
G2 (p) = p
1
√
>> G3 = tf (10, [1 1 2]) : second ordre de gains statique 5, ξ = √
2 2
et w0 = 2
10
G3 (p) = p2 +p+2
l’exécution de la commande >> step(G1 ) affiche la réponse de G1 (p) à un échelon (figure (3)).
Step Response
3
2.5
2
Amplitude
1.5
0.5
0
0 2 4 6 8 10 12 14 16 18
Time (seconds)
Figure 3: Réponse indicielle de G1 (p)
Remark 0.0.1. On peut définir une fonction de transfert de la façon suivante,
s = tf (′ s′ );
G = exp(−s) ∗ (0.8 ∗ s2 + s + 2)/(s2 + s);
T = f eedback(ss(G), 1);
step(T )
G est la fonction de transfert d’un système comportant un retard pur et un pôle nul. T est la fonction
de transfert du système G bouclé sur un retour unitaire. L’évolution de sortie du système bouclé est
donnée par la figure (4).
On peut ainsi visualiser la réponse indicielle ou impulsionnelle de n’importe quelle fonction de
transfert.
Il il existe une multitude de commande matlab qu’on peut exécuter. La commande >> help step
permet de vous expliquer comment appliquer la commande step, par exemple.
La commande lsim permet de visualiser la réponse d’une fonction de transfert à n’importe quelle
entrée connue (taper help lsim pour savoir comment l’utiliser).
A. BADDOU, Professeur à l’ENSA d’Agadir 4
Step Response
1.8
1.6
1.4
Amplitude 1.2
0.8
0.6
0.4
0.2
0
0 5 10 15 20 25
Time (seconds)
Figure 4: Evoltion de la sortie du système T
Pour tracer le diagramme de Bode d’une fonction de transfert, il suffit de taper >> bode(G1), le
résultat de l’exécution est donné sur le schéma de la figure (5).
Pour visualiser le digramme de Nyquist de G1 (p), il suffit de taper >> nyquist(G1 ), e résultat de
l’exécution est donné sur le schéma de la figure (6).
Pour visualiser le digramme de Black de G1 (p), il suffit de taper >> nicols(G1 ), e résultat de
l’exécution est donné sur le schéma de la figure (7).
On peut simuler la réponse d’une fonction de transfert de façon graphique simple et visualiser les
courbes de simulation en utilisant leToolbox Simulink (voir figure (8)).
La simulation de la réponse de la fonction de transfert G1 (p) à un échelon en utilisant cette méthode
est donnée par le schéma de la figure (9).
En double cliquant sur le bouton scope on obtient la figure (10).
On peut ainsi simuler des systèmes en boucle ouverte comme pour celui de la figure (9) ou en
boucle fermée comme pour le schéma de la figure (11).
En double cliquant sur le bouton scope on obtient la figure (12).
Le schéma de la simulation du même système en utilisant un ploc PID est donnée par la figure (13).
En double cliquant sur le bouton scope on obtient la figure (14).
Le toolbox simulink comporte une multitude de possibilités pour simuler les systèmes continus ou
discrets.
A. BADDOU, Professeur à l’ENSA d’Agadir 5
Bode Diagram
10
Magnitude (dB)
−10
−20
0
Phase (deg)
−45
−90
−2 −1 0 1
10 10 10 10
Frequency (rad/s)
Figure 5: Diagramme de Bode du premier ordre
Nyquist Diagram
1.5
0.5
Imaginary Axis
−0.5
−1
−1.5
−1 −0.5 0 0.5 1 1.5 2 2.5 3
Real Axis
Figure 6: Diagramme de Nyquist du premier ordre
A. BADDOU, Professeur à l’ENSA d’Agadir 6
Nichols Chart
40
0 dB
30 0.25 dB
0.5 dB
20 1 dB −1 dB
Open−Loop Gain (dB)
10 3 dB
6 dB −3 dB
0 −6 dB
−10 −12 dB
−20 −20 dB
−30
−40 dB
−40
−360 −315 −270 −225 −180 −135 −90 −45 0
Open−Loop Phase (deg)
Figure 7: Diagramme de Black du premier ordre
A. BADDOU, Professeur à l’ENSA d’Agadir 7
Figure 8: Utilisation du toolbox simulink (bibliothèque des systèmes continus)
A. BADDOU, Professeur à l’ENSA d’Agadir 8
Figure 9: Simulation sur toolbox simulink
Figure 10: Schéma du scope
A. BADDOU, Professeur à l’ENSA d’Agadir 9
Figure 11: Simulation de la boucle fermée sur toolbox simulink
Figure 12: Schéma du scope de la boucle fermée
A. BADDOU, Professeur à l’ENSA d’Agadir 10
Figure 13: Simulation de la boucle fermée (PID) sur toolbox simulink
Figure 14: Schéma du scope de la boucle fermée(PID)
A. BADDOU, Professeur à l’ENSA d’Agadir 11
Les systèmes discrets (représentation
par fonction de transfert)
On commence par la discrétisation d’un système continu représenté par une fonction de transfert
Gc (p), en présence d’un bloqueur d’ordre zéro à une période d’échantillonnage T e. Soit, un système
du premier ordre décrit par,
2
Gc (p) = p+3
Pour obtenir la fonction de transfert échantillonnée on utilise les commandes suivantes (Te = 0.5):
>> Gc = tf (2, [1 3])
>> Gc =
2
− − −−
p+3
>> Gd = c2d(Gc , 0.5)
Gd =
0.5179
−−−−−
z − 0.2231
Sample time: 0.5 seconds
Discrete-time transfer function.
Pour afficher les zéros de Gd (z) on utilise la commande
>> zero(Gd )
ans =
Emptymatrix : 0 − by − 1 (pas de zéros donc)
A. BADDOU, Professeur à l’ENSA d’Agadir 12
Pour afficher les pôles de Gd (z) on utilise la commande
>> pole(Gd )
ans =
0.2231
Il est bien connu que la fonction de transfert dépend fortement de la période d’échantillonnage. Si au
leu de Te = 0.5 on prend Te = 0.2, la fonction de transfert Gd (z) redevient,
>> Gd = c2d(Gc, 1)
Gd =
0.3008
−−−−−−−
z − 0.5488
Sample time: 1 seconds
Discrete-time transfer function.
La nouvelle fonction de transfert échantillonnée n’a pas de zéros, mais le pôle redevient 0.5488, qui
est différent de celui du cas où Te = 0.5.
Remarques:
1. Gd (z) dépend du choix de Te .
2. L’ordre de Gc (p) est le même que celui de Gd (z) (l’échantillonnage ne modifie pas l’ordre).
3. Si po est un pôle de Gc (p) alors epo Te est le pôle de Gd (z)(-3 est le pôle de Gc (p) et e−3×0.2 =
e−0.6 = 0.5488 est le pôle de Gd (z)).
4. Si G1 et G2 sont deux fonctions de transfert échantillonnées définies sur matlab alors, on peut
obtenir le produit, la somme, la soustraction ou la fraction (rapport) des deux fonctions de
transfert en tapant G1 ∗ G2 , G1 + G2 , G1 − G2 ou G1 /G2 , respectivement.
Pour visualiser la réponse de Gd (z) à une entrée impulsion (cas où Te = 0.2), il suffit d’exécuter la
commande dimpulse:
>> dimpulse(0.3008, [1 − 0.5488]); grid
le résultat est donné par le schéma de la figure (15).
Pour visualiser la réponse de Gd (z) à une entrée échelon (cas où Te = 0.2), il suffit d’exécuter la
commande dstep:
>> dstep(0.3008, [1 − 0.5488]); grid
Le résultat de l’exécution est donné par le schéma de la figure (16)(sortie en fonction du nombre
A. BADDOU, Professeur à l’ENSA d’Agadir 13
Impulse Response
0.35
0.3
0.25
Amplitude 0.2
0.15
0.1
0.05
0
0 5 10 15 20
Time (seconds)
Figure 15: Réponse impulsionnelle de Gd (z)
d’itération).
Comme pour les systèmes continus, la commande dlsim permet de visualiser la réponse d’une fonction
de transfert échantillonnée à n’importe quelle entrée donnée (taper help dlsim pour savoir comment
l’utiliser).
Step Response
0.7
0.6
0.5
Amplitude
0.4
0.3
0.2
0.1
0
0 5 10 15 20
Time (seconds)
Figure 16: Réponse indicielle de Gd (z)
Le Toolox Simulink permet aussi la simulation des fonctions de transfert échantillonnées de façon
très simple. La bibliothèque des systèmes discrets sur simulink est représentée par la figure (17).
La simulation de la réponse indicielle de la fonction de transfert échantillonnée Gd (z) est faite sur le
schéma de la figure (18). Noter que pour ajouter un bloc, il suffit de cliquer dessus sur la bibliothèque
et de le glisser sur le fichier modèle.
Pour le configurer, il suffit de double cliquer dessus, la fenêtre qui lui est associée s’ouvre pour vous
permettre de configurer ses paramètres.
A. BADDOU, Professeur à l’ENSA d’Agadir 14
Figure 17: Bibiothèque des systèmes discrets
En double cliquant sur le scope on obtient le schéma de la figure (19)(sortie en fonction du temps).
Pour une période d’échantillonnage Te = 0.2, la correction du système Gd (z) en utilisant un
intégrateur pur p1 (approximation arrière) est donnée sur le schéma de la figure (20). En double cli-
quant sur le scope on obtient la figure (21).
La correction du même système en utilisant un bloc PID est représentée sur le schéma de la figure
(22). En double cliquant sur le scope on obtient le schéma de la figure (23).
Pour tester la capacité du PID à éliminer l’effet des perturbations, le schéma de la figure (24)
présente un exemple dans lequel une perturbation apparait à l’itération 10 avec une amplitude de 0.2
et disparait à l’itération 14. Le schéma du scope de la figure (25) montre que le correcteur a éliminé
A. BADDOU, Professeur à l’ENSA d’Agadir 15
Figure 18: Simulation de la réponse indicielle de Gd (z)
Figure 19: Résultat de la simulation de la réponse indicielle de Gd (z)
l’effet de la perturbation.
Après avoir rappelé les deux façons de simuler des systèmes linéaires représentés par des fonctions
de transfert en utilisant Matlab:
1. En interaction, consistant à exécuter des commandes sur l’invité de matlab (>> step(G) par
exemple),
2. Par l’exploitation des potentialités offertes par la programmation graphique du Toolbox Simulink,
il est temps de passer à une troisième façon de simuler ces systèmes en utilisant un script (langage de
programmation). Un premier petit programme consistant à simuler la réponse de
0.3008
Gd (z) =
z − 0.5488
à un échelon unitaire en utilisant le langage (script) matlab est donné par le schéma de la figure (26).
L’exécution du programme (en tapant son nom à l’invité de matlab) permet de tracer les courbes de
A. BADDOU, Professeur à l’ENSA d’Agadir 16
Figure 20: Schéma de la correction de Gd (z) avec un intégrateur
Figure 21: Résultat de la simulation de la corection de Gd (z) avec un intégrateur
la figure (27). En changeant la ligne du programme permettant le calcule de la commande u et le titre
du graphe on obtient la réponse du système à une impulsion, voir le schéma de la figure (28).
Le programme de la figure (26) a été écrit en s’inspirant d’un langage de base de programmation.
En s’inspirant des fonctions préprogrammées de matlab, on aurait pu le simplifier et obtenir les
mêmes résultats ou plus. La figure (29) en est un exemple. La figure (30) donne 4 schémas: les
réponses indicielle et impulsionnelle du système continu (courbes continues) et les réponses indicielle
et impulsionnelle du système discret (courbes discontinues).
Remarque: Le système bouclé représenté par le schéma de la figure (26) peut être simulé par script
simple donné par la figure (31). Le résultat de son exécution est donné par le schéma de la figure (32).
A. BADDOU, Professeur à l’ENSA d’Agadir 17
Figure 22: Schéma de la correction de Gd (z) avec un PID
Figure 23: Résultat de la simulation de la corection de Gd (z) avec un PID
A. BADDOU, Professeur à l’ENSA d’Agadir 18
Figure 24: Schéma de l’élimination du bruit par le PID
Figure 25: Résultat de la simulation de l’élimination du bruit par PID
A. BADDOU, Professeur à l’ENSA d’Agadir 19
Figure 26: Script d’une simulation de la réponse indicielle de Gd (z)
Figure 27: Résultat de l’execution du script (réponse indicielle)
A. BADDOU, Professeur à l’ENSA d’Agadir 20
Figure 28: Résultat de l’execution du script(réponse impulsionnelle)
Figure 29: Script d’une simulation de G(p) et Gd (z)
A. BADDOU, Professeur à l’ENSA d’Agadir 21
Figure 30: Résultat de l’execution du script (G(p) et Gd (z) )
Figure 31: Script d’une simulation(correction de Gd (z) par intégrateur )
A. BADDOU, Professeur à l’ENSA d’Agadir 22
Figure 32: Résultat de l’execution du script ( correction de Gd (z) par intégrateur )
A. BADDOU, Professeur à l’ENSA d’Agadir 23