Esercitazione di laboratorio #6 - Controlli Automatici

Esercizio #2

Autori: M. Indri, M. Taragna (ultima modifica: 17/05/2020)

Contents

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