Politecnico di Bari Facoltà di Ingegneria Dispensa per il Corso di Controlli Automatici I Uso del software di calcolo Matlab 4. per lo studio delle risposte nel tempo dei sistemi lineari tempoinvarianti Ing. Mariagrazia Dotoli
Uso del software di calcolo Matlab 4. per lo studio delle risposte nel tempo dei sistemi lineari tempoinvarianti Modelli di un sistema lineare tempoinvariante Un modello di sistema lineare tempo-invariante (LTI) si individua in Matlab con quattro forme possibili: attraverso la sua funzione di trasferimento, attraverso i suoi zeri e poli, attraverso un suo modello in spazio di stato e attraverso la sua rappresentazione in fratti semplici. Data per esempio la funzione di trasferimento s + 5s + s + 6 (s) =, s + 6s + s + 6 G essa si definisce in Matlab attraverso i due vettori contenenti i coefficienti del numeratore e del denominatore:» num=[ 5 6];» den=[ 6 6]; Determiniamo nel seguito lo stesso modello attraverso gli zeri e poli, un modello in spazio di stato e infine il modello con i fratti semplici. Le funzioni Matlab usate corrispondenti sono tfzp, tfss e residue, così come quelle che realizzano il passaggio inverso sono ovviamente zptf, sstf e la stessa residue.» [z,p,k]=tfzp(num,den) z = p = k = -.965 -.58 +.77i -.58 -.77i -. -. -.» [A,B,C,D]=tfss(num,den) A = -6 - -6
B = C = -7-9 -6 D =» [R,P,K]=residue(num,den) R = P = K = -6. -4.. -. -. -. Ricordiamo che la funzione di trasferimento del sistema si può rappresentare visivamente con la procedura printsys.» printsys(num,den,'s').5.5 Mappa poli-zeri del sistema s^ + 5 s^ + s + 6 ----------------------- s^ + 6 s^ + s + 6 Imag Axis -.5 - -.5 - -4 -.5 - -.5 - -.5 - -.5.5 Real Axis Un altra procedura utile è pzmap, che mappa nel piano di Gauss gli zeri (o) e i poli (x) del sistema, come in figura.» pzmap(num,den),axis([-4.5 - ]),grid» title('mappa poli-zeri del sistema')
Infine, dall espressione in fratti semplici del sistema, si ha che la funzione di trasferimento vale 6 4 G (s) = + + + s + s + s + e la risposta all impulso del sistema vale g(t) = ( 6e t 4e t + e t )(t) + δ (t) per cui un possibile modo per visualizzare graficamente tale risposta consiste nell uso della funzione residue. In realtà, esiste una opportuna funzione Matlab del Control System Toolbox, detta impulse, che assolve al compito di calcolare e visualizzare la risposta all impulso di un sistema, nota la sua funzione di trasferimento. Ne vediamo l uso nel paragrafo successivo.. Esempio: analisi della risposta nel tempo di sistemi del primo ordine con Matlab Prendiamo in considerazione quattro diverse funzioni di trasferimento e analizziamone le corrispondenti risposte all impulso e al gradino, rispettivamente attraverso le funzioni impulse e step. I grafici sono riportati alla pagina seguente.» num=[];» den=[ ];» printsys(num,den,'s') ----- s + Aggiungiamo ora un polo reale in, dominato da quello in.» num=[];» den=[ ];» printsys(num,den,'s') --------------- s^ + s + Vediamo cosa accade aggiungendo uno zero.» num=[ ]; 4
» den=[ ];» printsys(num,den,'s') s + -------- s + Infine, spostiamo il polo da a 5.» num4=[5];» den4=[ 5]; 5 Risposte all'impulso From: U()» printsys(num4,den4,'s') Amplitude To: Y() 5 ----- s + 5-5 - 4 5 6 Time (sec.)» impulse(num,den), hold on, impulse (num,den)» impulse (num,den), impulse(num4,den4)» title( Risposte all impulso ) Si vede come le risposte all impulso dei primi due sistemi siano quasi coincidenti, poiché G (s) ha infatti in più un polo dominato in, a parte il valore iniziale differente. Nel terzo sistema cambia il valore iniziale della risposta all impulso a causa della presenza dello zero; inoltre il residuo aumenta notevolmente, passando da a -9, per cui la risposta si appiattisce più tardi. Infine, nel quarto sistema la risposta all impulso è più rapida, poiché il polo dominante è spostato da a 5.» [R,P,K]=residue(num,den) R = -9 9 8 7 6 Risposte al gradino From: U() P = Amplitude To: Y() 5-4 K = 4 5 6 Time (sec.) Analogamente si possono confrontare le risposte a gradino dei sistemi.» step(num,den), hold on, step (num,den)» step (num,den), step(num4,den4) 5
» title( Risposte al gradino ) Si nota ancora che le risposte al gradino dei primi due sistemi sono quasi coincidenti.. Nel terzo sistema cambia il valore iniziale della risposta al gradino a causa della presenza dello zero; inoltre il residuo aumenta notevolmente, passando da - a 9, per cui la risposta si appiattisce dopo. Infine, nel quarto sistema la risposta al gradino è più rapida, poiché il polo dominante si è spostato da a 5.» [R,P,K]=residue(num,conv(den,[ ])) R = P = K = - - []» [R,P,K]=residue(num,conv(den,[ ])) R = 9 9 8 7 Risposta alla rampa From: U() P = K = - [] Amplitude To: Y() 6 5 4 4 5 6 7 8 9 Time (sec.) Osservando le risposte al gradino, per esempio utilizzando la funzione zoom per osservare delle zone circoscritte, si può determinare il tempo di assestamento del sistema, e verificare che dopo tre o quattro costanti di tempo le risposte si assestano. Infine, si può usare la stessa funzione step per determinare la risposta alla rampa lineare (ed eventualmente per segnali canonici di ordine superiore). La trasformata di Laplace della risposta alla rampa vale infatti Y(s) = G(s) s G(s) = = G s s (s) * s 6
dunque la risposta alla rampa è anche determinabile come risposta al gradino del sistema con funzione di trasferimento G * (s) definita come segue. Vediamo per esempio la risposta alla rampa del primo sistema.» numstar=num;» denstar=conv(den,[ ]);» step(numstar,denstar)» title( Risposta alla rampa ). Esempio: analisi della risposta nel tempo di sistemi del secondo ordine con Matlab Prendiamo in considerazione quattro diverse funzioni di trasferimento e analizziamone le corrispondenti risposte al gradino. I grafici sono riportati alla pagina seguente.» num=[];» den=[ ];» printsys(num,den,'s') -------------- s^ + s +» num=6;» den=[ 6];» printsys(num,den,'s') 6 -------------- s^ + s + 6» num=[5];» den=[ 8 5];» printsys(num,den,'s') 5 -------------- s^ + 8 s + 5» num4=[5 ]; 7
» den4=[ ];» printsys(num4,den4,'s') 5 s + -------------- s^ + s + Per ogni coppia di poli determiniamo il coefficiente di smorzamento e la pulsazione naturale per mezzo della funzione damp.» damp(den) Eigenvalue Damping Freq. (rad/s) -.e+ +.e+i.6e-.6e+ -.e+ -.e+i.6e-.6e+» damp(den) Eigenvalue Damping Freq. (rad/s) -.e+ + 5.e+i.96e- 5.e+ -.e+ - 5.e+i.96e- 5.e+» damp(den) Eigenvalue Damping Freq. (rad/s) -4.e+ +.e+i 8.e- 5.e+ -4.e+ -.e+i 8.e- 5.e+» damp(den4) Eigenvalue Damping Freq. (rad/s) -.e+ +.e+i.6e-.6e+ -.e+ -.e+i.6e-.6e+ Vediamo ora come valutare la risposta al gradino scegliendo il vettore dei tempi e nel contempo memorizzando quello delle ordinate..8.6 Risposte al gradino Sistema Sistema Sistema Sistema 4.4» t=:.:6;» t=:.:6;» t=:.:6;» t4=:.:6;..8.6» [y,x]=step(num,den,t);» [y,x]=step(num,den,t); 8.4. 4 5 6
» [y,x]=step(num,den,t);» [y4,x4]=step(num4,den4,t4);» plot(t,y,'-',t,y,'-.',t,y,'--',t4,y4,':'),grid» legend('sistema ','Sistema ','Sistema ','Sistema 4')» title('risposte al gradino') Rispetto al primo sistema, nel secondo i poli hanno uguale parte reale e parte immaginaria più grande, dunque l inviluppo non varia (e il tempo di assestamento è confrontabile), mentre la tendenza ad oscillare aumenta, ossia i picchi della risposta sono ravvicinati. Nel terzo sistema, viceversa, la parte immaginaria è invariata e la parte reale è maggiore, dunque l inviluppo è più veloce (quindi il tempo di assestamento è più piccolo) e la tendenza ad oscillare è uguale, ossia i picchi si ripetono alla stessa distanza. Infine, nel quarto sistema è stato aggiunto uno zero, che lascia invariato l andamento della risposta ma ne cambia i residui, amplificandoli. Visualizziamo ora gli istanti di entrata nella banda di assestamento al 5% (i tempi di assestamento dei quattro sistemi).» hold on» yf=y(length(y));» yb=(yf+yf*.5)*ones(size(y));» yb=(yf-yf*.5)*ones(size(y));» plot(t,yb,'m-',t,yb,'m-')» zoom Si determinano graficamente dei tempi di assestamento per i quattro sistemi che valgono, nell ordine, circa.5,.7,.7,.7 secondi. Si tratta in tutti i casi di misure coerenti con la formula ricavata approssimando la risposta al gradino con il suo inviluppo esponenziale: t s5% δω n dove δ e ω sono rispettivamente il coefficiente di smorzamento e la pulsazione naturale della coppia di poli complessi e coniugati. Avendo memorizzato i valori delle ordinate yi, si può calcolare per ogni sistema la sovraelongazione percentuale.» Mp=(max(y)-y(length(y)))/(y(length(y))-y())* Mp = 5.8» Mp=(max(y)-y(length(y)))/(y(length(y))-y())* Mp = 5.4» Mp=(max(y)-y(length(y)))/(y(length(y))-y())* Mp = 9
.56» Mp4=(max(y4)-y4(length(y4)))/(y4(length(y4))-y4())* Mp4 = 84.9 4 Bibliografia R. C. Dorf, R. H. Bishop, Modern Control Systems, settima edizione, 995, Addison-Wesley. K. Ogata, Modern Control Engineering, terza edizione, 997, Prentice Hall. H. Saadat, Computational Aids in Control Systems Using Matlab, 99, Mc Graw-Hill. M. Tibaldi, Note introduttive a Matlab e Control System Toolbox, 99, Progetto Leonardo.