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