Vous êtes sur la page 1sur 27

ELISA 4

2022-2023 TRAVAUX DIRIGES #8

ETUDE DE CORRECTEURS PAR


TRANSPOSITION

COMMANDE NUMERIQUE DE SYSTEMES

Exercice 1

On considère la boucle de commande suivante :

Partie 1. Etude de la dynamique du système sans correcteur

1. Calculez la FTBO(p) du système de commande.

1
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑝𝑝) =
𝑝𝑝(𝑝𝑝 + 1)

2. Calculez la FTBF(p) du système de commande.

1
𝑝𝑝(𝑝𝑝 + 1) 1 1
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑝𝑝) = = =
1 1 + 𝑝𝑝(𝑝𝑝 + 1) 1 + 𝑝𝑝 + 𝑝𝑝2
1+
𝑝𝑝(𝑝𝑝 + 1)

3. Tracez les diagrammes de Bode de la FTBO, et déterminer les marges de phase de gain.

TD9
-1-
4. Tracez la réponse indicielle en boucle fermée. Déterminer toutes les caractéristiques de cette
réponse.

Dépassement 16%, donc 𝜁𝜁 = 0.5


Temps de montée : 𝑡𝑡𝑚𝑚 = 1.64𝑠𝑠
Temps de réponse à 5% 𝑡𝑡𝑟𝑟5% = 8.08𝑠𝑠

5. Tracez le lieu des racines de la FTBO(p). On souhaite corriger le système de façon à ce que la boucle
fermée présente un coefficient 𝜁𝜁 = 0.45 et un temps de montée de 1,5s. A l’aide du lieu des racines,
conclure quant à la possibilité de réaliser une telle correction avec un gain K.

TD9
-2-
Il est impossible de corriger le système avec un simple gain K

Partie 2. Correction du système à l’aide d’un correcteur numérique

On souhaite corriger le système à l’aide d’un correcteur numérique. La boucle de commande est schématisée
sur la figure suivante :

6. Calculez la fonction de transfert du système précédé du bloqueur d’ordre 0 pour Te=0.1s.

On peut faire le calcul à la main avec le tableau donné avec les TZ ou on peut le faire directement avec la
commande c2d de Matlab
𝐵𝐵0 (𝑝𝑝) �𝑇𝑇𝑒𝑒 − 𝜏𝜏(1 − 𝑎𝑎)�𝑧𝑧 − 𝑎𝑎𝑇𝑇𝑒𝑒 + 𝜏𝜏(1 − 𝑎𝑎) 𝑇𝑇𝑒𝑒
⟹ ; 𝑎𝑎 = 𝑒𝑒 − 𝜏𝜏 = 0.91
𝑝𝑝(1 + 𝜏𝜏𝜏𝜏) 𝑧𝑧 − (1 + 𝑎𝑎)𝑧𝑧 + 𝑎𝑎
2

0.0049𝑧𝑧 + 0.0047
𝐺𝐺(𝑧𝑧) =
𝑧𝑧 2 − 1.9𝑧𝑧 + 0.9
Gz=c2d(Pp,0.1, 'zoh')
Gz =
0.004837 z + 0.004679
----------------------
z^2 - 1.905 z + 0.9048

TD9
-3-
7. On souhaite avoir les caractéristiques suivantes en boucle fermée:

- 𝑀𝑀𝑀𝑀 = 45°
- 𝑡𝑡𝑚𝑚 = 1.5𝑠𝑠

Calculer la fonction de transfert du correcteur continu qui répond au cahier des charges.

Si 𝑡𝑡𝑚𝑚 = 1.5𝑠𝑠 alors 𝜔𝜔 = 2𝑟𝑟𝑟𝑟𝑟𝑟. 𝑠𝑠 −1


Si 𝑀𝑀𝑀𝑀 = 45° alors 𝜁𝜁 = 0.45

13
Il faut donc qu’a 𝜔𝜔0 = 2𝑟𝑟𝑟𝑟𝑟𝑟. 𝑠𝑠 −1 ⟹ 𝐺𝐺 = 0𝑑𝑑𝑑𝑑 ⟹ 𝐾𝐾 = 1020 = 4.46

Si on veut 𝑀𝑀𝑀𝑀 = 45° il faut à 𝜔𝜔0 = 2𝑟𝑟𝑟𝑟𝑟𝑟. 𝑠𝑠 −1 45° 𝑑𝑑𝑑𝑑 𝑝𝑝ℎ𝑎𝑎𝑎𝑎𝑎𝑎, or 𝜑𝜑(𝜔𝜔0 ) = 153°, on a alors 𝑀𝑀𝑀𝑀 = 180 −
153 = 27° . il faut par conséquent ajouter 18° de phase ; on utilise donc un correcteur à avance de
phase.

1 + sin(Δ𝜑𝜑𝑚𝑚𝑚𝑚𝑚𝑚 ) 1 + sin(18)
𝑎𝑎 = = = 1.89
1 − sin(Δ𝜑𝜑𝑚𝑚𝑚𝑚𝑚𝑚 ) 1 − sin(18)
1
𝜏𝜏 = = 0.3677𝑠𝑠
𝜔𝜔0 √𝑎𝑎

1 + 𝑎𝑎𝑎𝑎𝑎𝑎 1 + 0.6874𝑝𝑝
𝐶𝐶(𝑝𝑝) = 𝐾𝐾𝑐𝑐 � � = 4.46 ∗
1 + 𝜏𝜏𝜏𝜏 1 + 0.3637𝑝𝑝

8. Donnez la fonction de transfert du correcteur numérique équivalent avec l’approximation de Tustin.


On prendra 𝑻𝑻𝒆𝒆 = 𝟎𝟎. 𝟏𝟏𝟏𝟏
>> cp=4.46*(1+0.6874*p)/(1+0.3637*p)

cp =

3.066 s + 4.46
--------------
0.3637 s + 1

>> Cz=c2d(cp,0.1,'tustin')

Cz =

7.95 z - 6.872
--------------
z - 0.7583

TD9
-4-
9. Avec Matlab :

- Comparez les réponses indicielles continue et numérique.


- Comparez les diagrammes de Bode continue et numérique
- Comparez les marges de phase et de gain continues et numériques

Conclure sur la pertinence de l’approximation réalisée.

Le temps de réponse du système continu et numérique sont proche mais une note une différence :
- Pour le temps de montée, ils sont identique
- Pour le temps de réponse à 5%, on note une différence de 0.3sec. On va expliquer cela en regardant
les marges de phase et de gain.

Sur les diagrammes de Bode, on observe que la marge de phase est différente, mais relativement proche. Ce
qui explique que les temps de montée sont presque identique. On notera toutefois que la numérisation
change la fréquence de la marge de gain, cette différence s’expliquer par l’approximation bilinéaire qui peut

TD9
-5-
amener une distorsion proche de la fréquence de Nyquist. Il faudra changer Te pour que les marges de gain
soit sensiblement identiques.

Exercice 2 : correcteur PI et P

On considère désormais que le processus P(p) commandé est défini par la relation :

1
𝑃𝑃(𝑝𝑝) =
(1 + 𝑝𝑝)(1 + 2𝑝𝑝)

Ce processus est inséré dans une boucle de commande numérique donné sur la figure 3.

𝜑𝜑𝑐𝑐 (𝑡𝑡) 𝜑𝜑(𝑡𝑡)

On se propose dans cette partie de déterminer un correcteur analogique et de le transposer en numérique.


Dans un premier temps on va réaliser la synthèse d’un correcteur analogique Proportionnel Intégrale tel que

- La FTBF(p) soit équivalente à un système du second ordre de coefficient 𝜉𝜉 = 0,7


- La bande passante de la FTBF soit la plus grande possible.

2. En considérant que le processus asservi est entièrement analogique, déterminez les paramètres du
𝐾𝐾(1+𝜏𝜏𝜏𝜏)
correcteur PI analogique 𝐶𝐶(𝑝𝑝) = 𝑝𝑝 permettant de répondre au cahier des charges.

Indice : pour réaliser le correcteur C(p) pour avoir une grande BP, il faut compenser la constante de temps
de P(p) la plus contraignante

𝐾𝐾(1+𝜏𝜏𝜏𝜏) 1
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑝𝑝) = 𝑝𝑝 (1+𝑝𝑝)(1+2𝑝𝑝)

Pour obtenir une FTBF du second ordre il faut compenser une des constantes de temps du processus. On
compense la plus pénalisante, i.e. celle qui limite la bande passante de la FTBF. Ainsi :
𝐾𝐾(1 + 2𝑝𝑝)
𝐶𝐶(𝑝𝑝) =
𝑝𝑝
2
𝐾𝐾 𝐾𝐾 𝐾𝐾 = 𝜔𝜔𝑛𝑛 √2
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑝𝑝) = 𝑝𝑝(1+𝑝𝑝)+𝐾𝐾 = 𝑝𝑝2+𝑝𝑝+𝐾𝐾 ⇒ � ⇒ 𝜁𝜁 = 2 ⇒ 𝐾𝐾 = 0,5
2𝜁𝜁𝜔𝜔𝑛𝑛 = 1

TD9
-6-
1+2𝑝𝑝
D’où : 𝐶𝐶(𝑝𝑝) = 2𝑝𝑝

3. En déduire le correcteur C(z) « équivalent » selon la méthode de Tustin avec Te = 0,5 seconde.

(1+2𝑝𝑝) 2 𝑧𝑧−1 𝑧𝑧−1 9𝑧𝑧−7


𝐶𝐶(𝑝𝑝) = 2𝑝𝑝
si 𝑝𝑝 ≈ 𝑇𝑇 𝑧𝑧+1 = 4 𝑧𝑧+1 alors 𝐶𝐶(𝑧𝑧) = 8(𝑧𝑧−1)

On peut le vérifier avec Matlab en utilisant la commande « tustin ».


ndp=[2 1];ddp=[2 0];
Cdp=tf(ndp,ddp) ;
Cdz=c2d(Cdp,0.5,'tustin')

1.125 z - 0.875
Cdz = ---------------
z - 1

4. Procédez à la simulation des boucles de commande analogique et numérique. On vous demande


de réaliser le fichier Simulink suivant.Tracez sur les mêmes figures la commande analogique et
commande numérique ainsi que la sortie analogique et sortie numérique

Code Matlab utilisé :

ndp=[2 1]; ddp=[2 0];


Cdp=tf(ndp,ddp);
Cdz=c2d(Cdp,0.5,'tustin')
[ndz,ddz]=tfdata(Cdz,'v') ;
%
T=0.5; tsim=10;
sim('PItrans_mdl')
figure(8);plot(t,sc,t,sd,'LineWidth',2);grid
TD9
-7-
title('\fontsize{12}\bfFig.8 : Comparaison des réponses indicielles')
legend('Sortie Cde Analogique','Sortie Cde Numérique')
%
figure(9);plot(t,mc,'LineWidth',2);hold on;
stairs(td,md,'-.r','LineWidth',2); grid; hold off
title('\fontsize{12}\bfFig.9 : Comparaison des Commandes')
legend('Cde Analogique','Cde Numérique')
%

Résultats :
Fig.8 : Comparaison des réponses indicielles

1.2

Sortie Cde Analogique

0.8

Sortie Cde Numérique

0.6

0.4

0.2

0 2 4 6 8 10

Fig.9 : Comparaison des Commandes

1.5

Cde Analogique

Cde Numérique

0.5

0 2 4 6 8 10

5. Comparez les résultats numériques et analogiques et conclure.


1. La commande numérique donne un dépassement plus important que la commande analogique.
En fait l’échantillonnage introduit un retard pur toujours déstabilisant de l’ordre de T/2 = 0,25s.

2. La commande numérique donne un signal de 1,125 à t = 0s.


La commande analogique donne un signal de 1 à t = 0s.
Ce signal non nul à t = 0s résulte de l’action dérivée.
TD9
-8-
Dans les deux cas la commande se stabilise à 1 (effet d’intégration)

On considère la même boucle de commande numérique. On cherche à corriger le processus par un


correcteur proportionnel simple de gain K, soit C(z)=K.

6. Calculez G(z)= Z[B0(p)P(p)] sachant que Te = 0,5s

Ils peuvent utiliser Matlab

Pdp=tf(1,[2 3 1]); T=0.5 ;


G2dz=c2d(Pdp,T)
G2zpk=zpk(G2dz)

0.04893 z + 0.03811 0.048929 (z+0.7788)


G2dz = ---------------------- G2zpk = ---------------------
z^2 - 1.385 z + 0.4724 (z-0.7788) (z-0.6065)

7. Tracez le lieu d’Evans en utilisant Matlab.

System: G2dz
Root Locus

Gain: 13.9

Pole: 0.352 + 0.937i

Damping: -0.000593

1.5

Overshoot (%): 100

Frequency (rad/s): 2.42

0.5 /T
0.6 0.4/T /T

0.7 /T 0.3 /T

0.5
0.8 /T 0.2 /T

0.9 /T 0.1 /T

1 /T

1 /T
0.9
0.9 /T 0.1 /T
System: G2dz System: G2dz 0.8

0.7
0.6
Gain: 120 Gain: 0.103 0.5
0.8 /T 0.2 /T
Imaginary Axis

-0.5
0.4

0.3
Pole: -2.25 - 4.48e-08i Pole: 0.69 + 0.00272i
0.7 /T 0.3 0.2 /T

0.1
0.6 0.4/T /T
Damping: -0.25 Damping: 1 0.5 /T

-1

Overshoot (%): 225 Overshoot (%): 0

Frequency (rad/s): 6.49 Frequency (rad/s): 0.742

-1.5

-2

-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1

Real Axis

8. Déterminez la valeur K0 du gain pour obtenir en boucle fermée un mode du second ordre
d’amortissement égal à 0,7.

TD9
-9-
Root Locus

0.3 /T
0.6

0.2 /T

0.5
System: G2dz

Gain: 0.92

Pole: 0.67 + 0.241i


0.4

Damping: 0.7

Overshoot (%): 4.59

0.3
Frequency (rad/s): 0.969 0.1 /T

0.2
Imaginary Axis

0.1
0.2
0.3
0.4
0.5
0.6

0.1 0.7

0.8

0.9

-0.1
0.2 /T 0.1 /T

0.5 0.6 0.7 0.8 0.9 1 1.1

K0=0,92
Real Axis

9. Déterminez la valeur de KOS qui rend le système juste oscillant et précisez la pulsation des auto-
oscillations.

Root Locus

1.2

System: G2dz

Gain: 13.9

1.1
Pole: 0.352 + 0.936i

Damping: -0.000343

Overshoot (%): 100

Frequency (rad/s): 2.42

0.4 /T

0.9

0.8
0.1
Imaginary Axis

0.3 /T

0.2
0.7

0.3

0.6

0.2 /T

0.4

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

𝐾𝐾𝑜𝑜𝑜𝑜 = 13,9
Real Axis

𝜔𝜔𝑜𝑜𝑜𝑜 = 2,42 rad/s

Nota :
On remarquera qu’un tel système commandé par un gain continu n’est jamais instable en boucle fermée.
L’échantillonnage est un facteur d’instabilité.

Exercice 3 : étude d’un correcteur PID analogique et numérique

On souhaite corriger le processus de fonction de transfert

10
𝑃𝑃(𝑝𝑝) =
(1 + 𝑝𝑝)(2 + 𝑝𝑝)(3 + 𝑝𝑝)

Pour ce faire, on insère ce process dans une boucle à retour unitaire et on va chercher à déterminer les
caractéristiques du correcteur PID parallèle telles que :

TD9
-10-
𝐾𝐾𝑝𝑝 : 𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑃𝑃

1 𝐾𝐾𝑖𝑖 𝐾𝐾𝑝𝑝
𝐶𝐶(𝑝𝑝) = 𝐾𝐾𝑝𝑝 �1 + + 𝑇𝑇𝑑𝑑 𝑝𝑝� = 𝐾𝐾𝑝𝑝 + + 𝐾𝐾𝑑𝑑 𝑝𝑝, 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 𝐾𝐾𝑖𝑖 = 𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝐼𝐼
𝑇𝑇𝑖𝑖 𝑝𝑝 𝑝𝑝 ⎨ 𝜏𝜏𝑖𝑖
⎩𝐾𝐾𝑑𝑑 = 𝐾𝐾𝑝𝑝 𝜏𝜏𝑑𝑑 𝑔𝑔𝑎𝑎𝑎𝑎𝑎𝑎 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝐷𝐷

On va chercher à régler la correcteur via la méthode de Zeigler-Nichols en boucle fermée avec la tableau
suivant :

A. Etude de la fonction de transfert du processus continue

1. Tracez les diagrammes de Bode de la fonction de transfert du processus. Donnez les marges de
gain et de phase du processus. En déduire la valeur du gain 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 qui rend le système juste
oscillant. A l’aide de Matlab, déterminez la valeur de la période d’oscillation 𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜

% Question 1
p=tf('s')
Te=0.1
Pp=10/((p+1)*(p+3)*(p+2)) % déf. de la FT
figure(1)
asymp(Pp)
allmargin(Pp)
[Gm,Pm] = margin(Pp);
Kosc=Gm
Kprime=10*Kosc
KoscdB = 20*log10(Gm) % marge de gain en dB
Pm
Tosc=2*pi/3.31

TD9
-11-
Résultats :

marges =

struct with fields:

GainMargin: 6.0000 ⟹ 𝑲𝑲𝒐𝒐𝒐𝒐𝒐𝒐 = 𝟔𝟔


𝟐𝟐𝟐𝟐
GMFrequency: 3.3166 ⟹ 𝑻𝑻𝒐𝒐𝒐𝒐𝒐𝒐 = 𝟑𝟑.𝟑𝟑𝟑𝟑𝟑𝟑𝟑𝟑 = 𝟏𝟏. 𝟖𝟖𝟖𝟖𝟖𝟖
PhaseMargin: 90.0000
PMFrequency: 1.0000
DelayMargin: 1.5708
DMFrequency: 1.0000
Stable: 1

Diagrammes de Bode :

Bode Diagram
20

-20
Magnitude (dB)

-40

-60

-80

-100

-120
0

-45

-90
Phase (deg)

-135

-180

-225

-270
0.01 0.1 1 10 100

Frequency (rad/s)

TD9
-12-
2. Effectuez les différents réglages du PID dans les configurations suivantes :
- PID classique
- PID Léger dépassement
- PID sans dépassement

Pour chaque cas :

- Donnez la fonction de transfert du PID parallèle et de la FTBO du système


- Tracez et comparez (dépassement, temps de réponse…) les réponses indicielles avant/après
correction.
- Tracez et comparez (résonance, bande passante, marges de gain/phase…) les diagrammes de Bode
de la FTBO avant/après correction.

Résultats obtenus :
Cas 1 : PID classique
𝐾𝐾𝑝𝑝 = 0,6 ∗ 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 = 3,6
𝐾𝐾𝑖𝑖 = 1,2 ∗ 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 /𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜 = 3,82 FTBF_c1 =
3
𝐾𝐾𝑑𝑑 = ∗ 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 ∗ 𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜 = 0,84 8.4 s^2 + 36 s + 38.2
40
------------------------------------
3,82 s^4 + 6 s^3 + 19.4 s^2 + 42 s + 38.2
𝐶𝐶𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 (𝑝𝑝) = 3,6 + + 0,84𝑝𝑝
𝑝𝑝

Avec le PID classique, on a déminué le temps de réponse du


système, de 0.4s. Par contre on a annulé l’erreur statique

TD9
-13-
Bode Diagram
100

50

Magnitude (dB)
0

-50

-100
0

-90

Phase (deg)
-180
>> allmargin(FTBOC_c1)

-270
-2 -1 1 2
10 0
GainMargin: Inf 10 10 10 10
Frequency (rad/s)
GMFrequency: Inf
PhaseMargin: 28.7916
PMFrequency: 2.6176
En fréquence :
DelayMargin: 0.1920
DMFrequency: 2.6176 - on a rajouter un intégrateur ; d’où l’erreur statique nulle
Stable: 1 en BF (ajout d’une pente +1 en BO)
- On a diminuée la marge de phase, d’où les dépassements
𝑀𝑀𝑀𝑀
>> zpk(FTBOC_cl) plus important (𝜁𝜁 = 100 = 0.287)

ans =

8.4 (s+2.353) (s+1.933)


-----------------------
s (s+3) (s+2) (s+1)

Cas 2 : PID avec léger dépassement

𝐾𝐾𝑝𝑝 = 0,33 ∗ 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 = 1,98


Résultats obtenus :
𝐾𝐾𝑖𝑖 = 0,666 ∗ 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 /𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜 = 2,12
𝐾𝐾𝑑𝑑 = 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 ∗ 𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜 ∗ 1/15 = 1,25

2,12
𝐶𝐶𝑃𝑃𝑃𝑃𝐷𝐷𝑑𝑑𝑑𝑑𝑑𝑑 (𝑝𝑝) = 1,98 + + 1,25𝑝𝑝
𝑝𝑝

TD9
-14-
Avec le PID avec faible dépassement, on a encore déminué le
temps de réponse du système, de 0.65s. On annule toujours
l’erreur statique du fait de l’ajout de l’intégrateur.

Cas 3 : PID sans dépassement

𝐾𝐾𝑝𝑝 = 0,2 ∗ 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 = 1,2


𝐾𝐾𝑖𝑖 = (2/5) ∗ 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 /𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜 = 1,2
𝐾𝐾𝑑𝑑 = 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 ∗ 𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜 ∗ 1/15 = 0,75
- on a rajouter un intégrateur ; d’où l’erreur statique nulle
en BF (ajout d’une pente +1 en BO)
1,2 - L’ajout de l’action dérivée à rajouter +90° de phase
𝐶𝐶𝑃𝑃𝑃𝑃𝐷𝐷𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 (𝑝𝑝) = 1,2 + + 0,75𝑝𝑝 - On a augmenté la marge de phase, d’où les dépassements
𝑝𝑝
𝑀𝑀𝑀𝑀
moins important (𝜁𝜁 = 100 = 0.726)

TD9
-15-
Résultats obtenus :

Avec le PID sans dépassement, on a encore augmenter le temps


de réponse du système, de 0.41s. Cependant, on annule toujours
l’erreur statique du fait de l’ajout de l’intégrateur et le système
réagi de manière plus douce, il sera donc plus robuste vis-à-vis
des perturbations.

- on a rajouter un intégrateur ; d’où l’erreur statique nulle


en BF (ajout d’une pente +1 en BO)
- L’ajout de l’action dérivée à rajouter +90° de phase
- On a gardé la même marge de phase, d’où les
𝑀𝑀𝑀𝑀
dépassements moins important (𝜁𝜁 = 100 = 0.726), mais
on a diminué la fréquence à laquelle se situe la marge de
phase, on a donc diminué le temps de réponse du système
TD9
-16-
Conclusion :

Il n’y a aucun moyen de régler le correcteur de manière a voir à


la fois un système rapide et sans dépassement avec la méthode
de Z-N en boucle fermée. On a toutefois améliorer les
performances.

B. Numérisation de système

3. Déterminez la fonction de transfert 𝐺𝐺(𝑧𝑧) du processus associée au BOZ (utilisez la fonction c2d de
Matlab) pour 𝑇𝑇𝑒𝑒 = 0.1𝑠𝑠 . Donnez les pôles, les zéros, le facteur de gain et le gain statique de 𝐺𝐺(𝑧𝑧).
Gz =

0.001436 z^2 + 0.004951 z + 0.001064


------------------------------------
z^3 - 2.464 z^2 + 2.018 z - 0.5488

Sample time: 0.1 seconds


Discrete-time transfer function.

poles =

0.9048
0.8187
0.7408

zeros =

-3.2168
-0.2303

k=

0.0014 facteur de gain

K=

1.6667 gain statique

4. Tracez le lieu d’Evans de 𝐺𝐺(𝑧𝑧) et déterminez le gain ainsi que la période des auto oscillations.

TD9
-17-
Les pôles pour avoir la FTBF juste oscillantes sont sur le cercle unité. Ici on a 2 pôles complexes conjugués :

𝑧𝑧𝑝𝑝 = 0.9586 ± 0.2914𝑖𝑖 => 𝑘𝑘 = 4

5. Pour chaque cas étudié dans la question 2, déterminer le correcteur PID équivalent en numérique.
Testez plusieurs équivalences et comparez les fonctions de transferts obtenues (utilisez le help de
Matlab).

Correcteur PID cas 1 Résultats obtenus :

PID_cl_z_tustin=c2d(PID_cl, Te, 'tustin') PID_cl_z_tustin =


PID_cl_z_matched=c2d(PID_cl, Te, 'matched')
20.59 z^2 - 33.22 z + 13.39
---------------------------
z^2 - 1

Sample time: 0.1 seconds


Discrete-time transfer function.

PID_cl_z_matched =

10.36 z^2 - 16.73 z + 6.75


--------------------------
z-1

TD9
-18-
Correcteur PID cas 2

%%% cas 2 PID avec dépassement %%%%%%%% PID_dep_z_tustin =


PID_dep_z_tustin=c2d(PID_dep, Te, 'tustin')
PID_dep_z_matched=c2d(PID_dep, Te, 'matched') 27.09 z^2 - 49.79 z + 23.13
---------------------------
z^2 - 1

Sample time: 0.1 seconds


Discrete-time transfer function.

PID_dep_z_matched =

13.53 z^2 - 24.86 z + 11.55


---------------------------
z–1

Correcteur PID cas 3 PID_sd_z_tustin =

%%% cas 3 PID sans dépassement %%%%%%%% 16.26 z^2 - 29.88 z + 13.86
PID_sd_z_tustin=c2d(PID_sdep, Te, 'tustin') ---------------------------
PID_sd_z_matched=c2d(PID_sdep, Te, 'matched') z^2 - 1

Sample time: 0.1 seconds


Discrete-time transfer function.

PID_sd_z_matched =

8.123 z^2 - 14.92 z + 6.922


---------------------------
z-1

6. Pour chaque cas étudié dans les questions 4 :


- Calculez la FTBO et la FTBF
- Tracez sur la même figure les réponses indicielles continue (obtenues dans la question 2) et
numérique (obtenues dans la question 4).
Conclure sur la meilleure approximation pour le PID numérique.

Correcteur PID cas 1 Résultats obtenus :

FTBO_cl_tustin=Gz*PID_cl_z_tustin FTBO_cl_tustin =
FTBFz=feedback(Gz, 1)
FTBFz_cl_tustin=feedback(FTBO_cl_tustin,1 0.02958 z^4 + 0.05424 z^3 - 0.1233 z^2 + 0.03096 z
) + 0.01425
figure ------------------------------------------------------------
step(FTBFz), hold on, z^5 - 2.464 z^4 + 1.018 z^3 + 1.916 z^2 - 2.018 z +
step(FTBFz_cl_tustin), hold on,
0.5488
TD9
-19-
step(FTBF), hold on, step(FTBF_c1), grid
on

FTBO_cl_matched=Gz*PID_cl_z_matched FTBO_cl_matched =
FTBFz_cl_matched=feedback(FTBO_cl_matched
,1) 0.01488 z^4 + 0.02727 z^3 - 0.06211 z^2 + 0.01562
figure z + 0.007182
step(FTBFz), hold on,
--------------------------------------------------------------
step(FTBFz_cl_matched), hold on,
z^4 - 3.464 z^3 + 4.482 z^2 - 2.566 z + 0.5488
step(FTBF), hold on, step(FTBF_c1), grid
on
FTBFz_cl_tustin =

0.02958 z^4 + 0.05424 z^3 - 0.1233 z^2 + 0.03096 z


Les autres cas sont identiques en terme de script + 0.01425
Matlab ------------------------------------------------------------
z^5 - 2.435 z^4 + 1.072 z^3 + 1.792 z^2 - 1.987 z +
0.5631

FTBFz_cl_matched =

0.01488 z^4 + 0.02727 z^3 - 0.06211 z^2 + 0.01562


z + 0.007182
--------------------------------------------------------------
1.015 z^4 - 3.437 z^3 + 4.42 z^2 - 2.551 z + 0.556

Réponses indicielles avec approximation de Tustin

TD9
-20-
Réponses indicielles avec approximation « matched »

La meilleure approximation est celle de l’équivalence


des pôles soit 𝒑𝒑 − 𝒑𝒑𝒊𝒊 ⇔ 𝒛𝒛 − 𝒛𝒛𝒊𝒊 ; 𝒛𝒛𝒊𝒊 = 𝒆𝒆𝑻𝑻𝒆𝒆 𝒑𝒑𝒊𝒊 . Cette
méthode reste toutefois la plus difficile à mettre ne
œuvre à la main…

Exercice 4 : Introduction aux correcteurs à temps de réponse minimal

On considère la boucle de commande élémentaire suivante :

L’erreur aux instants d’échantillonnage, 𝜀𝜀𝑛𝑛 = 𝜀𝜀(𝑛𝑛𝑛𝑛), est appliquée au calculateur. Celui-ci fournit les
échantillons 𝑚𝑚𝑛𝑛 qui commandent le processus 𝑃𝑃(𝑝𝑝) à travers le « bloqueur d’ordre zéro ».

TD9
-21-
En partant du principe que

𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 )
𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 ) ⎧𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) =
𝑧𝑧 − 𝑧𝑧𝑃𝑃 + 𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 )
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = ⟹ 𝑧𝑧 − 𝑧𝑧𝑃𝑃
𝑧𝑧 − 𝑧𝑧𝑃𝑃 ⎨𝜀𝜀(𝑧𝑧) = 𝐸𝐸(𝑧𝑧)
⎩ 𝑧𝑧 − 𝑧𝑧𝑃𝑃 + 𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 )

On peut démontrer que (démonstration en annexe):

 la réponse en temps minimal est obtenue lorsque la FTBF a ses pôles en z = 0

𝒌𝒌(𝟏𝟏 − 𝒛𝒛𝑷𝑷 ) 𝒌𝒌(𝟏𝟏 − 𝒛𝒛𝑷𝑷 ) 𝒌𝒌𝒐𝒐𝒐𝒐𝒐𝒐 (𝟏𝟏 − 𝒛𝒛𝑷𝑷 )


𝑭𝑭𝑭𝑭𝑭𝑭𝑭𝑭(𝒛𝒛) = = si 𝜶𝜶 = 𝟎𝟎 ⇒ 𝑭𝑭𝑭𝑭𝑭𝑭𝑭𝑭(𝒛𝒛) =
𝒛𝒛 − 𝒛𝒛𝑷𝑷 + 𝒌𝒌(𝟏𝟏 − 𝒛𝒛𝑷𝑷 ) 𝒛𝒛 − 𝜶𝜶 𝒛𝒛

𝑒𝑒 −𝑇𝑇
La valeur optimale de k est donc 𝑘𝑘𝑜𝑜𝑜𝑜𝑜𝑜 = 1−𝑒𝑒 −𝑇𝑇 .

Dans ce cas 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝑘𝑘𝑜𝑜𝑜𝑜𝑜𝑜 (1 − 𝑧𝑧𝑃𝑃 )𝑧𝑧 −1 = 𝑧𝑧𝑃𝑃 𝑧𝑧 −1 et le gain statique de la FTBF est égal à 𝑧𝑧𝑃𝑃 = 𝑒𝑒 −𝑇𝑇 .

 la FTBF est juste oscillante lorsqu’elle a ses pôles en z = -1

𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 ) 𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 )


𝐹𝐹𝑇𝑇𝑇𝑇𝑇𝑇(𝑧𝑧) = =
𝑧𝑧 − 𝑧𝑧𝑃𝑃 + 𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 ) 𝑧𝑧 − 𝛼𝛼

La valeur de 𝑘𝑘𝑜𝑜𝑜𝑜 est donnée pour la valeur de k plaçant le pôle de la FTBF, 𝛼𝛼 en -1.

1 + 𝑧𝑧𝑃𝑃 1 + 𝑒𝑒 −𝑇𝑇
𝛼𝛼 = 𝑧𝑧𝑃𝑃 − (1 − 𝑧𝑧𝑃𝑃 )𝑘𝑘𝑜𝑜𝑜𝑜 = −1 ⇒ 𝑘𝑘𝑜𝑜𝑜𝑜 = =
1 − 𝑧𝑧𝑃𝑃 1 − 𝑒𝑒 −𝑇𝑇

Le système est juste oscillant en boucle fermée s’il admet un pôle sur le cercle unité soit :

𝑘𝑘(1 − 𝑧𝑧𝑃𝑃 ) 𝛼𝛼 = −1 (1 + 𝑧𝑧𝑃𝑃 )


𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = si � ⇒ 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) =
𝑧𝑧 − 𝛼𝛼 𝑘𝑘 = 𝑘𝑘𝑜𝑜𝑜𝑜 𝑧𝑧 + 1

On va chercher à vérifier ces 2 propriétés avec un correcteur PI.

𝛽𝛽
On désire que la 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) de la boucle de commande soit égale à (𝑧𝑧−1) de telle sorte que la présence de
l’intégration (pôle en 𝑧𝑧 = 1) annule l’erreur de position en régime permanent.

TD9
-22-
10. Calculez la transmittance 𝐶𝐶(𝑧𝑧) du correcteur conduisant à ce résultat.
(1−𝑧𝑧 ) 𝛽𝛽 𝛽𝛽(𝑧𝑧−𝑧𝑧𝑃𝑃 )
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝐶𝐶(𝑧𝑧) (𝑧𝑧−𝑧𝑧𝑃𝑃) = 𝑧𝑧−1 ⇒ 𝐶𝐶(𝑧𝑧) = (1−𝑧𝑧 ; 𝑧𝑧𝑝𝑝 = 𝑒𝑒 −𝑇𝑇
𝑃𝑃 𝑃𝑃 )(𝑧𝑧−1)

11. Sachant que l’on adopte T = 0,5 s déterminez le correcteur 𝐶𝐶(𝑧𝑧) permettant d’annuler l’erreur
séquentielle de position en temps minimal.
𝛽𝛽
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝑧𝑧−1+𝛽𝛽 ⇒ 𝛽𝛽 = 1 ⇒ 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝑧𝑧 −1
(𝑧𝑧−0.6065) 2.5413𝑧𝑧−1.5413 2.5413−1.5413𝑥𝑥
𝐶𝐶(𝑧𝑧) = 0.3935(𝑧𝑧−1) = ⇒ 𝐶𝐶(𝑥𝑥) =
𝑧𝑧−1 1−𝑥𝑥

12. Pour quelle valeur du gain statique de 𝐶𝐶(𝑧𝑧) le système est-il juste oscillant ?
Le système est juste oscillant lorsque la 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) admet le pôle 𝑧𝑧 = −1 soit :
𝛽𝛽
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝑧𝑧−1+𝛽𝛽 ⇒ 𝛽𝛽 = 2
𝛽𝛽(𝑧𝑧−𝑧𝑧𝑃𝑃 ) 2(𝑧𝑧−0.6065) 5.0826𝑧𝑧−3.0826
𝐶𝐶(𝑧𝑧) = (1−𝑧𝑧 ⇒ 𝐶𝐶𝑜𝑜𝑜𝑜 (𝑧𝑧) = 0.3935(𝑧𝑧−1) =
𝑃𝑃 )(𝑧𝑧−1) 𝑧𝑧−1

5.0826 − 3.0826𝑥𝑥
𝐶𝐶(𝑥𝑥) =
1 − 𝑥𝑥
Le gain statique du correcteur est alors égal à : 𝐾𝐾𝐶𝐶 = 𝑙𝑙𝑙𝑙𝑙𝑙(𝑧𝑧 − 1)𝐶𝐶(𝑧𝑧) = 2
𝑧𝑧→1

3. Créez le fichier Simulink et vérifiez par la simulation ces divers résultats


T=0.5; tsim=3;
% Réponse en temps minimum
ndzPI=[2.5413 -1.5413]; ddzPI=[1 -1];
sim('TD9’)
figure(5);plot(t,s,'LineWidth',3); hold on;
stairs(td,m,'r','LineWidth',2); grid; hold off;
legend('Sortie s(t)','Commande m(t)')
title('\fontsize{12}\bfFig.5 : Réponse indicielle à temps mini avec PIopt')
% Réponse oscillante
ndzPIos=[5.0826 -3.0826]; ddzPIos=[1 -1];
tsim=3;
sim('TP9’)
figure(6);plot(t,s,'LineWidth',3); hold on;
stairs(td,m,'r','LineWidth',2); grid; hold off;
legend('Sortie s(t)','Commande m(t)')
title('\fontsize{12}\bfFig.6 : Réponse indicielle oscillante avec PIos')
%

TD9
-23-
Fig.4 : Réponse indicielle à temps mini avec PIopt
3 2.5413 − 1.5413𝑥𝑥
Sortie s(t) 𝐶𝐶(𝑥𝑥) =
Commande m(t)
1 − 𝑥𝑥
2.5
On vérifie que l’erreur statique de
position est bien nulle (effet de
2
l’intégrateur).
La commande est égale à 1 en
1.5 régime permanent (action intégrale).

0.5

0
0 0.5 1 1.5

Fig.5 : Réponse indicielle oscillante avec PIos 5.0826 − 3.0826𝑥𝑥


6 𝐶𝐶𝑜𝑜𝑜𝑜 (𝑥𝑥) =
1 − 𝑥𝑥
5
La commande oscille entre :
4 (5,08) et (-3,08) (lu dans le
3 workspace)
2
Sa valeur moyenne est égale à 1.
1

0 La sortie oscille entre sM et sm.


-1 𝑠𝑠𝑠𝑠 = 5.08 ∗ (1 − 𝑒𝑒𝑒𝑒𝑒𝑒( − 0.5))
-2 =2
𝑠𝑠𝑠𝑠 = (2 + 3.08) ∗ 𝑒𝑒𝑒𝑒𝑒𝑒( − 𝑇𝑇)
-3 Sortie s(t)
Commande m(t)
− 3.08 = 0
-4
0 0.5 1 1.5 2 2.5 3

TD9
-24-
𝑒𝑒 −0,2𝑝𝑝
En fait le processus analogique commandé présente un retard pur de 0,2 seconde aussi 𝑃𝑃(𝑝𝑝) = 1+𝑝𝑝

4. Calculez 𝐺𝐺(𝑧𝑧) = 𝑍𝑍[𝐵𝐵0 (𝑝𝑝)𝑃𝑃(𝑝𝑝)] sachant que T = 0,5 s

Calcul par la transformée en z modifiée :


𝑧𝑧 − 1 𝑒𝑒 −0,2𝑝𝑝 𝑧𝑧 − 1 1
𝐺𝐺(𝑧𝑧) = 𝑍𝑍 � �= 𝑍𝑍𝑚𝑚 � �
𝑧𝑧 𝑝𝑝(1 + 𝑝𝑝) 𝑧𝑧 𝑝𝑝(1 + 𝑝𝑝) 𝑚𝑚=1−0,2=0,6
0,5

𝑧𝑧 − 1 1 0,7408 0,2592𝑧𝑧 + 0,1343 0,2592(𝑧𝑧 + 0,5181)


𝐺𝐺(𝑧𝑧) = � − �=� �=� �
𝑧𝑧 𝑧𝑧 − 1 𝑧𝑧 − 0,6065 𝑧𝑧(𝑧𝑧 − 0,6065) 𝑧𝑧(𝑧𝑧 − 0,6065)

Calcul avec Matlab :

% Calcul avec la TZ modifiée : Cf. Corrigé


% Calcul avec "inputdelay"
Pdpret1=Pdp;
Pdpret1.InputDelay=0.2;
Gdzret=c2d(Pdpret1,0.5)
Pdpret2=tf(n,d,'iodelay',0.2)
Gdzret=c2d(Pdpret2,0.5)
%

Gdzret =
0.2592 z + 0.1343
z^(-1) * -----------------
z - 0.6065

5. Calculez la transmittance 𝐶𝐶(𝑧𝑧) du correcteur annulant l’erreur séquentielle de position en temps


minimal (Cf. question n°1).
𝐾𝐾(𝑧𝑧−𝑧𝑧 ) 𝛽𝛽 𝛽𝛽𝛽𝛽(𝑧𝑧−𝑧𝑧 )
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝐶𝐶(𝑧𝑧) 𝑧𝑧(𝑧𝑧−𝑧𝑧 𝑍𝑍) = 𝑧𝑧−1 ⇒ 𝐶𝐶(𝑧𝑧) = 𝐾𝐾(𝑧𝑧−1)(𝑧𝑧−𝑧𝑧
𝑃𝑃
𝑃𝑃 𝑍𝑍 )

6. Sachant que T = 0,5 s déterminez le correcteur 𝐶𝐶(𝑧𝑧) permettant d’annuler l’erreur séquentielle de
position en temps minimal.
𝛽𝛽
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝑧𝑧−1+𝛽𝛽 ⇒ 𝛽𝛽 = 1 ⇒ 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑧𝑧) = 𝑧𝑧 −1
3,858(𝑧𝑧−0.6065)𝑧𝑧 3,858(1−0.6065𝑥𝑥)
𝐶𝐶(𝑧𝑧) = (𝑧𝑧−1)(𝑧𝑧+0,5181)
⇒ 𝐶𝐶(𝑥𝑥) = (1−𝑥𝑥)(1+0,5181𝑥𝑥)

7. Reprenez votre fichier Simulink créer précédemment et ajouter un retard. vérifiez par la simulation
ce résultat
.

TD9
-25-
% ndzret=conv([3.858 0],[1 -0.6065]);
ddzret=conv([1 -1],[1 0.5181]);
tsim=3;
sim('C42_TP1_4PIret_mdl')
figure(8);plot(t,s,'LineWidth',2); hold on;
stairs(td,m,'-.r','LineWidth',2);
stem(td,snT,'--s','LineWidth',2);grid; hold off;
legend('Sortie s(t)','Commande m(t)','Sortie(nT)')
title('\fontsize{12}\bfFig.8 : Réponse indicielle du processus avec retard')
%

Fig.6 : Réponse indicielle du processus avec retard


4
Sortie s(t)
3.5 Commande m(t)
Sortie(nT)
3

2.5

1.5

0.5

-0.5
0 0.5 1 1.5 2 2.5 3

On observera que le correcteur ainsi calculé joue son rôle aux seuls instants d’échantillonnage ! En effet
l’erreur séquentielle est nulle aux instants kT. Pour obtenir les auto-oscillations on double le gain statique
du correcteur pratiquement 1,97.

TD9
-26-
%%%%%%%%%%%%%%%% Cours SLD %%%%%%%%%%%%%%%%
% Partie 2 Commande des Systèmes Linéaires Discrets
% Mis à jour le 03 novembre 2021
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
clear all;clc
n=1;d=[1 1];Pdp=tf(n,d);

% Correcteur PI numérique
% ---------------------------------------
T=0.5; tsim=3;
% Réponse en temps minimum
ndzPI=[2.5413 -1.5413]; ddzPI=[1 -1];
sim('C42_TP1_3PI_mdl')
figure(5);plot(t,s,'LineWidth',3); hold on;
stairs(td,m,'r','LineWidth',2); grid; hold off;
legend('Sortie s(t)','Commande m(t)')
title('\fontsize{12}\bfFig.5 : Réponse indicielle à temps mini avec PIopt')
% Réponse oscillante
ndzPIos=[5.0826 -3.0826]; ddzPIos=[1 -1];
tsim=3;
sim('C42_TP1_3PIos_mdl')
figure(6);plot(t,s,'LineWidth',3); hold on;
stairs(td,m,'r','LineWidth',2); grid; hold off;
legend('Sortie s(t)','Commande m(t)')
title('\fontsize{12}\bfFig.6 : Réponse indicielle oscillante avec PIos')
%

% Calcul avec la TZ modifiée : Cf. Corrigé


% Calcul avec "inputdelay"
Pdpret1=Pdp;
Pdpret1.InputDelay=0.2;
Gdzret=c2d(Pdpret1,0.5)
Pdpret2=tf(n,d,'iodelay',0.2)
Gdzret=c2d(Pdpret2,0.5)
%
% ndzret=conv([3.858 0],[1 -0.6065]);
ddzret=conv([1 -1],[1 0.5181]);
tsim=3;
sim(‘TD9_retard')
figure(8);plot(t,s,'LineWidth',2); hold on;
stairs(td,m,'-.r','LineWidth',2);
stem(td,snT,'--s','LineWidth',2);grid; hold off;
legend('Sortie s(t)','Commande m(t)','Sortie(nT)')
title('\fontsize{12}\bfFig.8 : Réponse indicielle du processus avec retard')

TD9
-27-

Vous aimerez peut-être aussi