Esercitazione di laboratorio #6 - Controlli Automatici
Esercizio #2
Autori: M. Indri, M. Taragna (ultima modifica: 17/05/2020)
Contents
- Comandi di pulizia iniziali
- Definizione del sistema
- Punto a): studio di F(s)
- Punti b) e c): studio di Ga(s) per Kc = 1
- Punto d): calcolo di W(s) e dei suoi poli per Kc = -0.1 dopo studio della stabilità
- Punto e): errore di inseguimento in regime permanente
- Caso e.1): r(t)=t, d1(t)=0.1, d2(t)=0.5
- Caso e.2): r(t)=2, d1(t)=0.1, d2(t)=0.01t
Comandi di pulizia iniziali
clear all, close all
Definizione del sistema
s=tf('s');
F=(s-1)/((s+0.2)*(s^3+2.5*s^2+4*s))
F =
s - 1
-------------------------------
s^4 + 2.7 s^3 + 4.5 s^2 + 0.8 s
Continuous-time transfer function.
Punto a): studio di F(s)
% Guadagno stazionario di F(s) Kf=dcgain(s*F) % F(s) ha 1 polo nell'origine % Zeri e poli di F(s) zeri=zero(F) poli=pole(F) damp(F) % Diagrammi di Bode di F(jw)(valutazione fase iniziale e finale) bode(F)
Kf =
-1.2500
zeri =
1
poli =
0.0000 + 0.0000i
-1.2500 + 1.5612i
-1.2500 - 1.5612i
-0.2000 + 0.0000i
Pole Damping Frequency Time Constant
(rad/seconds) (seconds)
0.00e+00 -1.00e+00 0.00e+00 Inf
-2.00e-01 1.00e+00 2.00e-01 5.00e+00
-1.25e+00 + 1.56e+00i 6.25e-01 2.00e+00 8.00e-01
-1.25e+00 - 1.56e+00i 6.25e-01 2.00e+00 8.00e-01
Punti b) e c): studio di Ga(s) per Kc = 1
Kc = 1 Kr=0.5 Ga1=Kc*F/Kr % Diagrammi di Bode di Ga1(jw) figure, bode(Ga1) % Diagramma di Nyquist di Ga1(jw), da ingrandire opportunamente % in corrispondenza degli attraversamenti dell'asse reale % (in +4, -0.109 e 0) figure, nyquist(Ga1) w=logspace(-1,3,5000); figure,nyquist(Ga1,w)
Kc =
1
Kr =
0.5000
Ga1 =
s - 1
-------------------------------------
0.5 s^4 + 1.35 s^3 + 2.25 s^2 + 0.4 s
Continuous-time transfer function.
Punto d): calcolo di W(s) e dei suoi poli per Kc = -0.1 dopo studio della stabilità
% Dallo studio della stabilità in catena chiusa con il criterio di Nyquist: % n_ia = 0 % n_ic = 1 per 0 < Kc < 9.17 % n_ic = 3 per Kc > 9.17 % n_ic = 0 (asintotica stabilità) per -0.25 < Kc < 0 % n_ic = 2 per Kc < -0.25 Kc=-0.1 Ga=Kc*F/Kr; W=feedback(Kc*F,1/Kr) damp(W)
Kc =
-0.1000
W =
-0.1 s + 0.1
-------------------------------------
s^4 + 2.7 s^3 + 4.5 s^2 + 0.6 s + 0.2
Continuous-time transfer function.
Pole Damping Frequency Time Constant
(rad/seconds) (seconds)
-5.72e-02 + 2.12e-01i 2.61e-01 2.19e-01 1.75e+01
-5.72e-02 - 2.12e-01i 2.61e-01 2.19e-01 1.75e+01
-1.29e+00 + 1.58e+00i 6.34e-01 2.04e+00 7.74e-01
-1.29e+00 - 1.58e+00i 6.34e-01 2.04e+00 7.74e-01
Punto e): errore di inseguimento in regime permanente
Nota bene: il sistema di controllo e' di tipo 1
We=Kr*feedback(1,Ga) Wd1=feedback(F,Kc/Kr) Wd2=feedback(1,Ga)
We =
0.25 s^4 + 0.675 s^3 + 1.125 s^2 + 0.2 s
-------------------------------------------
0.5 s^4 + 1.35 s^3 + 2.25 s^2 + 0.3 s + 0.1
Continuous-time transfer function.
Wd1 =
s - 1
-------------------------------------
s^4 + 2.7 s^3 + 4.5 s^2 + 0.6 s + 0.2
Continuous-time transfer function.
Wd2 =
0.5 s^4 + 1.35 s^3 + 2.25 s^2 + 0.4 s
-------------------------------------------
0.5 s^4 + 1.35 s^3 + 2.25 s^2 + 0.3 s + 0.1
Continuous-time transfer function.
Caso e.1): r(t)=t, d1(t)=0.1, d2(t)=0.5
% errore intrinseco di inseguimento a r(t) = t pari a Kr/KGa = Kr/(Kc*Kf/Kr) % perché il sistema è di tipo 1 % effetto del disturbo d1 costante sull'uscita pari a d1/(Kc/Kr) perché ci sono poli % nell'origine solo nel blocco a valle del disturbo % effetto del disturbo d2 costante sull'uscita NULLO perché c'è almeno un % polo nell'origine nel blocco a monte del disturbo errore_r=dcgain(s*We*1/s^2) effetto_d1=dcgain(s*Wd1*0.1/s) effetto_d2=dcgain(s*Wd2*0.5/s) errore_tot=errore_r-(effetto_d1+effetto_d2) open_system('es_VI_2_1') sim('es_VI_2_1')
errore_r =
2
effetto_d1 =
-0.5000
effetto_d2 =
0
errore_tot =
2.5000
Caso e.2): r(t)=2, d1(t)=0.1, d2(t)=0.01t
% errore intrinseco di inseguimento a r(t) = 2 NULLO perché il sistema è di % tipo 1 % effetto del disturbo d1 costante sull'uscita pari a d1/(Kc/Kr) perché ci sono poli % nell'origine solo nel blocco a valle del disturbo % effetto del disturbo d2 = alfa_d2*t (rampa) sull'uscita pari ad alfa_d2/KGa = alfa_d2/(Kc*Kf/Kr) % perché il sistema è di tipo 1 errore_r=dcgain(s*We*2/s) effetto_d1=dcgain(s*Wd1*0.1/s) effetto_d2=dcgain(s*Wd2*0.01/s^2) errore_tot=errore_r-(effetto_d1+effetto_d2) open_system('es_VI_2_2') sim('es_VI_2_2')
errore_r =
0
effetto_d1 =
-0.5000
effetto_d2 =
0.0400
errore_tot =
0.4600