Esercizio di progetto del controllore a tempo discreto

Transcript

Esercizio di progetto del controllore a tempo discreto
Esercizio di progetto del controllore nel discreto con discretizzazione del sistema ............................................1
Specifiche..............................................................................................................................................................1
Discretizzazione del sistema .................................................................................................................................1
Calcolo del luogo delle radici ................................................................................................................................3
Identificazione della regione ammissibile per le radici ........................................................................................4
Progetto del controllore .......................................................................................................................................7
Esercizio di progetto del controllore nel discreto con discretizzazione del sistema
4 Dicembre 2013
clear all
close all
Specifiche
Sia data la seguente FdT
Si progetti un controllore a tempo discreto utilizzando il metodo che discretizza il sistema da controllare e
progetto con il luogo delle radici nel discreto, in modo da soddisfare le seguenti specifiche:
a) Tempo di assestamento ad un ingresso a gradino unitario minore di 10 secondi.
b) Massimo sorpasso percentuale dell'uscita per un ingresso a gradino inferiore al 16 %%
t_a = 10; % tempo di assestamento massimo della funzione di trasferimento obiettivo
PO = 16; % massimo sorpasso percentuale della funzione di trasferimento obiettivo
Gs = tf(1,[10,1,0])
Gs =
1
---------10 s^2 + s
Continuous-time transfer function.
Discretizzazione del sistema
La prima fase del progetto consiste nel discretizzare il sistema con la funzione c2d con metodo 'zoh', in quanto
il sistema da controllare è preceduto nella implementazione tecnologica del controllo da un sample and hold.
Per procedere alla discretizzazione, individuiamo il periodo di campionamento nel seguente modo:
1. In base alla specifiche dinamiche che si vogliono raggiungere, identifichiamo la pulsazione di rottura e
la pulsazione di taglio del sistema obiettivo in catena chiusa.
2. Applichiamo il Teorema di Shannon su questo valore della pulsazione di taglio per ottenere la
pulsazione di campionamento.
A titolo di esemio si studi il diagramma di bode del sistema
avente due poli coincidenti in sigma = 0.3
tmp= tf(1,[1.0, 0.6, 0.09]); % funzione di trasferimento di esempio
bode(tmp) % funzione di trasferimento di esempio
grid % come is può notare, il diagramma di bode ha un ritardo di fase di
% 90 gradi in corrispondenza della pulsazione di taglio individuata
% in omega_c = sigma = 0.3
sigma = 3/t_a; % parte reale dei poli del sistema obiettivo
omega_r = sigma; % Pulsazione di rottura
omega_c = 20* omega_r % Pulsazione di taglio, una decade sopra la pulsazione di rottura.
omega_s = 2 * omega_c % Pulsazione di campionamento
T = (2*pi)/omega_s % Periodo di campionamento
Gz = c2d(Gs,T,'zoh') % Discretizzazione del sistema
poliGz=pole(Gz) % calcoliamo i poli p_1 e p_2 della funzione di trasferimento discreta
zeriGz=zero(Gz) % calcoliamo lo zero z della funzione di trasferimento discreta
omega_c =
6
omega_s =
12
T =
0.5236
Gz =
0.01347 z + 0.01324
--------------------z^2 - 1.949 z + 0.949
Sample time: 0.5236 seconds
Discrete-time transfer function.
poliGz =
1.0000
0.9490
zeriGz =
-0.9827
Calcolo del luogo delle radici
In base alle regole di tracciamento dei luoghi delle radici possiamo affermare che:
1. Il luogo inizia dai due poli del sistema in catena aperta p_1 = 1 e p_2 = 0.9006
2. il luogo termina sullo zero in z= -0.9657 e un ramo va all'infinito.
3. un tratto dell'asse reale appartiene al luogo delle radici se ha un numero di singolarità dispari alla sua
destra.
4. il luogo delle radici sono simmetrici.
Lo studente potrà fare uno schizzo del luogo delle radici e confrontare il risultato con quanto ottenuto con la
funzione matlab rlocus
rlocus(Gz)
Identificazione della regione ammissibile per le radici
Il passo successivo è quello di tradurre le specifiche sul tempo di assestamento e massimo sorpasso
percentuale in una regione ammissibile nel piano di Gauss.
Il calcolo della regione per soddisfare la specifica sul tempo di assestamento è abbastanza semplice, e la
vedremo in seguito. Andiamo invece ora a discutere il calcolo della regione che soddisfi la specifica sul massimo
sorpasso percentuale.
La relazione tra P.O. e la costante di smorzamento è
$$ P.O. = 100 e^{\frac{-\delta \pi}{\sqrt{1-\delta^2}}}
che può essere analizzata per via grafica:
figure
delta=[0:0.01:1];
for index=1:length(delta)
po(index)= 100*exp((-delta(index)*pi)/(sqrt(1-delta(index)^2)));
end;
plot(delta,po);
grid;
title(['Percentual overshoot vs damping ratio']);
xlabel(['Damping ratio']);
ylabel(['Percentual Overshoot']);
% è possibile analizzare il vettore po per calcolare a quale valore di
% delta corrisponde il P.O. < 16
index=min(find(po<16));
delta_t=delta(index) % coefficiente di smorzamento target
theta = acos(delta_t); % angolo della regione circolare ammessa.
sigma_t = 3/t_a; % parte reale dei poli target
delta_t =
0.5100
Tracciamo sul luogo delle radici nel piano continuo s la regione ammissibile compatibili con delta_t e sigma_t
figure
sgrid('new');
hold on
% print a line that crosses the real axis in sigma_t= -0.3 (limit on settling time)
plot(-sigma_t,[-3:0.01:3],'r-')
% print the angular sector between arcos(delta)= +1.05 rad and -1.05 rad (limit on P.O.)
x=[-1.2:0.01:0];
y=tan(theta)*x;
plot(x,y,'b-'); % x is the real part of 's'
plot(x,-y,'b-'); % y is the imag part of 's'
successivamente riportiamo tali regioni sull'equivalente luogo delle radici a tempo discreto
figure
zgrid('new')
hold on
% print a circle with radius e^\sigma T (limit on settling time)
t=[0:0.01:2*pi];
plot(exp(-sigma*T)*cos(t),exp(-sigma*T)*sin(t),'r-');
% print the limit of the sector between arcos(delta)= theta (rad) and -theta (rad), (limit on P.O.)
x=[-3:0.01:0];
y=tan(theta)*x;
for index=1:length(x)
xz(index)= exp(x(index)*T)*cos(y(index)*T); % xz is the real part of 'z'
yz(index)= exp(x(index)*T)*sin(y(index)*T); % xy is the imag part of 'z'
end;
plot(xz,yz,'b-');
plot(xz,-yz,'b-');
Progetto del controllore
Il controllore è progettato per cancellare il polo del in p_2=0.9490, e aggiungere un polo in modo da consentire
al luogo delle radici del sistema complessivo di entrare nella zona ammissibile, scegliamo quindi il polo del
controllore in p_c=0, in modo che l'incontro del luogo delle radici sia in z=(p_1+p_c)/2 = 0.2, e lo zero z_c in
0.9490.
Cz=tf([1,-0.9490],[1,0],T)
Fz=series(Cz,Gz)
rlocus(Fz)
Cz =
z - 0.949
--------z
Sample time: 0.5236 seconds
Discrete-time transfer function.
Fz =
0.01347 z^2 + 0.000454 z - 0.01256
---------------------------------z^3 - 1.949 z^2 + 0.949 z
Sample time: 0.5236 seconds
Discrete-time transfer function.
usando il comando rlocfind, individuiamo il guadagno che forzi i poli a collocarsi nell'intorno del punto in cui si
uniscono sull'asse reale.
K=rlocfind(Gz)
% ad esempio otteniamo il guadagno
Select a point in the graphics window
selected_point =
0.4201 + 0.0038i
K =
16.2332
Terminiamo l'esercizio andando a effettuare il test del controllore in una simulazione con Simulink.
open_system('Esercizio131204s');
sim('Esercizio131204s');
figure
plot(t,yd)
Published with MATLAB® R2013a