MATLAB
MATLAB (MATrix LABoratory) è un linguaggio di programmazione per applicazioni scientifiche (elaborazione numerica dei segnali, progetto di simulatori, sintesi di sistemi di controllo, ecc.) MATLAB è un interprete di comandi. I comandi possono essere forniti interattivamente o contenuti in files su disco (M-files) Comprende un vasto set di funzioni predefinite e numerose librerie (toolbox) per svariate applicazioni Le potenzialità di MATLAB possono essere facilmente estese (è semplice creare nuovi toolbox) E' possibile convertire un programma MATLAB in codice C e C++ in modo automatico
Come appare Matlab?
Matlab come Calcolatrice
Definizione Variabili
Workspace Tutte le variabile definite o calcolate vengono tenute automaticamente in memoria e posso essere richiamate successivamente.
Lettura e scrittura dati su FILE
Help
Help topic
ALCUNE ISTRUZIONI DI USO COMUNE >>help richiama l help in linea help comando visualizza l help relativo al comando indicato >>who/whos >> dir corrente elencano le variabili in uso elenca i files contenuti nella directory >>clear all elimina tutte le variabili della sessione corrente >>clear var1 var2 workspace elimina le variabili var1 e var2 dal
VETTORI
Vettore Colonna
Vettori
Vettori
Vettori
Funzioni Standard e costanti
Funzioni Standard e costanti
Funzioni con argomenti Vettoriali
Polinomi
Polinomi
Polinomi
Prodotto tra Polinomi
M-FILE
Programma in M-file
Programmazione in MATLAB
Funzioni
Esempio di funzione che calcola statistica A line at the top of a function M-file contains the syntax definition. The name of a function, as defined in the first line of the M-file, should be the same as the name of the file without the.m extension.
Matrici
Matrici
Matrici
Matrici
WildCard
Estrazione Sottomatrice
La Grafica Matlab
Alcuni parametri dei Grafici
Salvataggio figura su file
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0-3 -2-1 0 1 2 3
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0-4 -3-2 -1 0 1 2 3 4
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0-3 -2-1 0 1 2 3
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0-3 -2-1 0 1 2 3
0.5 0-0.5 2 1 0-1 -2-2 -1 0 1 2
0.5 0-0.5 2 1 0-1 -2-2 -1 0 1 2
Control System Toolbox
Da TF a State Space
Da TF a State Space Gs () 3 2 s 160 s 12s 300s 100
Se il modello presenta un ritardo finito, questo può essere incluso nel modo seguente: G s 2 2 s 2e 0.5s 2s 2 >>sys=tf(2,[1 2 2], InputDelay,0.5);
DIAGRAMMI DI BODE
Altra Modalità W s G ( s)* G ( s) 1 G ( s )* G ( s )* G ( s ) 1 2 1 2 3
Cancellazioni G 1 () s G 3 () s 2 () s G3 a () s
Amplitude Risposta Libera 1.5 Response to Initial Conditions 1 0.5 0-0.5-1 -1.5 0 5 10 15 20 25 30
Risposta Forzata
Risposta Forzata Amplitude 1 Linear Simulation Results 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 7 8 9 10 Time (sec)
Risposta Completa Amplitude 1 Linear Simulation Results 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 5 10 15 Time (sec)
Nel caso in cui si voglia valutare la risposa al GRADINO Amplitude 2 G s s 2 2s 2 Step Response 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 1 2 3 4 5 6 7 8 9 1 Time (sec)
E possibile visualizzare le caratteristiche principali della risposta al gradino Amplitude 1.4 1.2 Step Response System: sys Peak amplitude: 1.04 Overshoot (%): 4.31 At time (sec): 3.1 1 0.8 0.6 0.4 0.2 0 0 1 2 3 4 5 6 7 8 9 10 Time (sec)
Amplitude Nel caso in cui si voglia valutare la risposa all IMPULSO 0.7 Impulse Response 0.6 0.5 0.4 0.3 0.2 0.1 0-0.1 0 1 2 3 4 5 6 Time (sec)
DIAGRAMMI DI BODE Il sistema Lineare può essere assegnato in uno delle 2 forme possibili: sys=tf(num,den); sys=zpk([zeri],[poli]); Si stabilisce decide l intervallo di frequenze per il quale si vuole disegnare il diagramma di Bode o Nyquist (w min <w<w max ). Si definisce un vettore w contenete l insieme ordinato delle frequenze che si vogliono graficare con il comando logspace: 2 3 10 w 10 ex: 300 punti nell intevallo : w=logspace(-2,3,300)
Calcolo dei residui
1.5( s 4) 3 G s ( s 2)( s 3)( s 1) Calcolo dei residui R R R R 1 2 3 4 5 G s 2 3 ( s 2) ( s 3) ( s 1) ( s 1) ( s 1) R
Amplitude 3 MODI NATURALI 2 1 0-1 -2-3 0.18 3 2.8 2.62 2.25 0 1 2 3 4 5 6 7 8 Time (sec) 2 3 G s ( s 2) ( s 3) ( s 1) ( s 1) ( s 1)
ESEMPIO (s + 1) W(s)----------------------------- s^3 + 6 s^2 + 18 s + 20 I coefficienti del numeratore e denominatore ordinati si memorizzano su opportuni vettori >> num =[1 1]; den [ 1 6 18 20]; si genera poi il sistema: >> sys=tf(num,den); 10 w 10 2 2 si specifica l asse delle frequenze: ad esempio 300 punti nell intevallo : w=logspace(-2,2,300) >>bode(sys,w);
To: Y(1) Phase (deg); Magnitude (db) Bode Diagrams -20 From: U(1) -40-60 -80 50 0-50 -100-150 -200 10-2 10-1 10 0 10 1 10 2 Frequency (rad/sec)
Phase (deg) Magnitude (db) -20 Bode Diagram -30-40 -50-60 -70-80 45 0 System: sys Peak gain (db): -22 At frequency (rad/sec): 2.19-45 -90-135 -180 10-2 10-1 10 0 10 1 10 2 Frequency (rad/sec)
Phase (deg) Magnitude (db) MARGINI DI STABILITA 40 Bode Diagram Gm = -26 db (at 1 rad/sec), Pm = -83.4 deg (at 1.52 rad/sec) 20 0-20 -40-60 -90-135 -180-225 -270 10-1 10 0 10 1 Frequency (rad/sec)
Phase (deg) Imaginary Axis Magnitude (db) D. BODE D. NYQUIST 40 Bode Diagram Gm = -26 db (at 1 rad/sec), Pm = -83.4 deg (at 1.52 rad/sec) Nyquist Diagram 20 0 10-20 -40 5-60 -90 0-135 -180-5 -225-10 -270 10-1 10 0 10 1 Frequency (rad/sec) -15-20 -15-10 -5 0 Real Axis
Fase Modulo db Dal diagramma di Bode al diagramma di NyquisT Se si dispone dei diagrammi di Bode di G(jw) è conveniente utilizzare questi come ausilio per il tracciamento del diagramma di Nyquist. A tal fine si sceglie sul diagramma di Bode un insieme di pulsazioni campione, e, facendo riferimento alla forma polare di G(jw), si riportano sul piano complesso i valori del modulo e della fase letti dai diagrammi d Bode Esempio G( jw ) 0.02 (1 jw /10)(1 jw / 20)(1 jw /100) 0 2 x 10-3 0-50 -2-4 G ( w) -100 10-2 10-1 10 0 10 1 10 2 0-6 -8-10 G( jw ) -90-180 -270 10-2 10-1 10 0 10 1 10 2 Diagramma di Bode Si fissano alcuni valori sul diagramma di bode e si riportano nel piano complesso in modulo e fase -12-14 -16-18 - 0.01-0.005 0 0.00 5 0.0 1 0.01 5 0.0 2 Diagramma di Nyquist 0.02 5
Il diagramma di Nyquist può essere tracciato utilizzando il comando: nyquist ( ): Imaginary Axis sys() s K s( s 1)( s 2) 1 0.8 4 db 2 db Nyquist Diagram 0 db -2 db -4 db 0.6 6 db -6 db 0.4 10 db -10 db 0.2 0 20 db -20 db -0.2-0.4-0.6 0.1667 1 K lim -0.8-1 -1-0.9-0.8-0.7-0.6-0.5-0.4-0.3-0.2-0.1 0 Real Axis Nel caso in cui sia stato disegnato un diagramma di Nyquist Il comanda grid traccia i luoghi a modulo costante a ciclo chiuso M M F( jw ) 1 F( jw )
Analisi nel dominio del tempo tramite codice MATLAB
y(t) y d (t) 1.6 Risposta al gradino 1 Risposta al disturbo 1.4 0.8 1.2 0.6 1 0.4 0.8 0.2 0.6 0 0.4-0.2 0.2-0.4 0 0 10 20 30 40 50 Tempo -0.6 0 10 20 30 40 50 Tempo
Luogo delle radici W cl kg() s () s 1 kg ( s ) u K 1 ( s 2)( s 1) y ( s) 1 kg( s) 0 ( s) D( s) kn( s) 0 n gradod() s m gradon() s n m Al variare del guadagno K (reale) da - a + le radici dell equazione caratteristica (s) descrivono una curva nel paino complesso S cui si da il nome di luogo delle radici. i i n m ( s) ( s p ) k ( s z ) 0 (s) al variare di K ha sempre n radici in campo complesso Al variare del guadagno K tra 0<k<+ le n radici di (s) partono per K=0 dagli n poli di D(s) Per k=, m radici tendono agli gli m zeri di N(s). Le restanti n-m radici vanno all infinito
Esempio 1 Gs () ( s 1)( s 2) 1 ( s ) 1 k 0 ( s 1)( s 2) u K 1 ( s 2)( s 1) y ( s 1)( s 2) k 0 2 s s k 3 2 0 s 1,2 3 1 4k 2 k 0 1.5 k k 0.25 k 0 2 1 k
Imaginary Axis u K 1 ( s 3)( s 2)( s 1) y >>sys=zpk([],[-1-2 -3],1) >>rlocus(sys) ( s 3)( s 2)( s 1) k 0 6 Root Locus 4 2 0-2 -4-6 -8-6 -4-2 0 2 4 Real Axis
Il Luogo delle Radici può essere tracciato utilizzando il comando rlocus(): Imaginary Axis sys() s K s( s 1)( s 2) 4 Root Locus 3 2 1 0-1 -2-3 -4-6 -5-4 -3-2 -1 0 1 2 Real Axis
Imaginary Axis >> sys=zpk([],[-1-2 -3],1); >> k=0:1:100; >> rlocus(sys,'r.',k) 4 Root Locus 3 2 1 0-1 -2-3 -4-7 -6-5 -4-3 -2-1 0 1 Real Axis
Imaginary Axis Il Luogo negativo sys() s K s( s 1)( s 2) 5 Root Locus 4 3 2 1 0-1 -2-3 -4-5 -4-3 -2-1 0 1 2 3 4 Real Axis
Il Luogo delle Radici può essere tracciato utilizzando il comando rlocus(): Imaginary Axis sys() s K s( s 1)( s 2) Il comando grid() disegna i luoghi a smorzamento COSTANTE del sistema del 2 ordine Gs () cos p 1 s w 2 n 2 2 2 wns wn wn w n 2 w n 1 Root Locus 4 0.86 0.76 0.64 0.5 0.34 0.16 3 2 0.94 1 0.985 6 0 5 4 3 2 1-1 0.985-2 0.94-3 0.86 0.76 0.64 0.5 0.34 0.16-4 -6-5 -4-3 -2-1 0 1 2 Real Axis 0 1 p 1 * p 1,2 2 w jw 1 n n
Con il comando rlocfind(), posizionandosi con il mouse sul plot del luogo delle radici, è possibile determinare il valore del guadagno K in quel punto del luogo ed il valore delle radici a ciclo chiuso.
Imaginary Axis u K ( s 10) s( s 2)( s 1) y s( s 2)( s 1) k( s 10) 0 Root Locus 10 5 0-5 -10-15 -10-8 -6-4 -2 0 2 Real Axis
Imaginary Axis u K ( s 3) ss ( 2) y s( s 2) k( s 3) 0 4 Root Locus 3 2 1 0-1 -2-3 -4-8 -7-6 -5-4 -3-2 -1 0 1 2
>>sisotool u K 1 s( s 2)( s 1) y >> sys=zpk([],[0-2 -3],6) Zero/pole/gain: 6 ------------- s (s+2) (s+3) >> sisotool >>
Analisi con sisitool
Phase (deg) Magnitude (db) Analizzare al variare del guadagno K il comportamento del sistema: K sys() s s( s 1)( s 2) u K s( s 1)( s 2) y 50 Bode Diagram 0-50 -100-150 -90-135 -180-225 -270 10-2 10-1 10 0 10 1 10 2 Frequency (rad/sec)
Phase (deg) Magnitude (db) I margine di fase e di ampiezza possono essere calcolati con l istruzione: margin(): sys() s K s( s 1)( s 2) 50 0 Bode Diagram Gm = 15.6 db (at 1.41 rad/sec), Pm = 53.4 deg (at 0.446 rad/sec) -50-100 -150-90 -135-180 -225-270 10-2 10-1 10 0 10 1 10 2 Frequency (rad/sec)
RAPPRESENTAZIONE CARTESIANA o POLARE (Nyquist) di G(jw) Diagramma polare della funzione complessa G(jw) = luogo di punti del piano complesso ottenuti al variare di 0<w Su questa curva è consuetudine porre delle frecce che indicano il verso di percorrenza per valori crescenti della pulsazione w. RAPPRESENTAZIONE POLARE G( jw ) Im G jw j G( jw ) G( jw) G( jw) e SIMMETRIA CONIUGATA G( jw) G( jw) * G jw arg G jw Re ( jw) j Im ( jw) G Re ( jw) j Im ( jw) G G G G( jw ) Re G jw Ricordando che: G(-jw)=G(jw)* è possibile tracciare anche il luogo dei punti G(jw) con w 0 sul piano complesso. Tale curva si ottiene come immagine speculare rispetto all asse reale del diagramma polare di G(jw) con w>0. Quindi considereremo sempre il diagramma polare o di Nyquist di G(jw) per - <w con sopra indicato il verso di percorrenza con delle frecce per valori crescenti della pulsazione w.
Sistema di controllo DIGITALE completo di Strumentazione
SISTEMI A DATI CAMPIONATI Nello studio dei sistemi a controllo digitale il sottosistema formato dalla connessione in cascata del MANTENITORE di ordine ZERO, PROCESSO e CAMPIONATORE può essere modellata adeguatamente per mezzo di un sistema tempo discreto chiamato sistema a dati campionati. ) G z *( SISTEMA A SEGNALI CAMPIONATI G*( z) Si può dimostrare che il valore dell uscita y(t) (nei soli istanti di campionamento) del sistema continuo a dati campionati può essere calcolata per mezzo di un opportuno sistema tempo discreto. u * ( kt ) y * ( kt )
Funzione di Trasferimento di sistemi a dati campionati (approccio nello spazio degli stati ) ut () u * () t H 0 (s) x( t) Ax( t) Bu( t) y( t) Cx( t) Du( t) u () t r G(s) A,B,C,D A( t to) t A( t ) 0 to y * () t yt () W( s) C( SI A) 1 B D Poiché si utilizza uno ZOH Il segnale u r (t) in ingresso al sistema e costante a tratti kt<t<(k+1)t. Si calcola l uscita del sistema nei soli istanti di campionamento: x( t) e x e Bu( ) d u( t) u( kt ) kt t kt T AT T 0 A F e G e Bd
Si dimostra che negli istanti di campionamento l uscita del sistema TEMPO CONTINUO è identica a quella di un opportuno SISTEMA TEMPO DISCRETO, caratterizzato dalle seguenti matrici: F, G: AT T 0 A F e G e Bd x( k 1) Fx( k) Gu( k) y( k) Cx( k) Du( k) Quindi ad ogni sistema continuo (A,B,C,D) è associata una intera famiglia di sistema a dati campionati. Le matrici F e G sono infatti funzione del periodo di campionamento T
Amplitude Risposta al Gradino di un sistema tempo continuo e del corrispondente sistema a dati campionati 1.5 Step Response 1 0.5 0 0 5 10 15 20 Time (sec)
1 s 2+0.4s+1 Transfer Fcn1 1 1 Step 5s+1 Transfer Fcn2 Zero-Order Hold s 2+0.4s+1 Transfer Fcn Floating Scope 1 0.9 0.8 0.7 Zero-Order Hold1 0.4050z+0.3529] 1.0000z 2-0.9124z+0.6703] Discrete Transfer Fcn 0.6 0.5 Floating Scope1 0.4 0.3 0.2 0.1 0 0 5 10 15 20 25 30
Ingresso Uscita 1 0.9 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 5 10 15 20 25 30 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 5 10 15 20 25 3
Possibili problemi di intersampling 1.8 1.6 Sistema discreto Sistema continuo 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 2 2.5 3 3.5 4