Professional Documents
Culture Documents
Appunti di SIMULINK a
dic
INDICE
Introduzione Generalit: librerie e blocchi elementari. Esempio introduttivo: costruzione e visualizzazione di un onda sinusoidale Costruzione e visualizzazione di segnali qualunque. Risoluzione di equazioni differenziali lineari a coefficienti costantii Risoluzione di equazioni differenziali lineari a coefficienti non costantii Risoluzione di sistemi di equazioni differenziali lineari a coefficienti costanti Risoluzione di equazioni differenziali non lineari del primo ordine Risoluzione di equazioni differenziali non lineari di ordine qualunque Risoluzione di equazioni differenziali non lineari tempo-varianti di ordine qualunque Simulazione di sistemi dinamici: Es. 1: Massa con attrito composto Es. 2: Motore DC Esercizi propostii con traccia della soluzione
3 3 7 12 13 18 20 22 24 26 28
31
Appunti di SIMULINK a
dic
Introduzione
Il software Simulink un applicativo che vive allinterno del programma di calcolo Matlab e ne costituisce, in buona sostanza, una potente e intuitiva interfaccia grafica che ne semplifica grandemente limpiego da parte dellutente. Medante Simulink possibile programmare lesecuzione di calcoli in ambiente Matlab in maniera molto pi rapida ed error-free rispetto alla scrittura dei lunghi e complessi m-files che sono necessari, ad esempio, per programmare in Matlab lintegrazione numerica di un sistema di equazioni differenziali di ordine elevato. Mediante gli strumenti visuali disponibili in ambiente Simulink possibile simulare dei sistemi anche molto complessi con uno sforzo da parte dellutente che si limita al tracciamento, su un foglio di lavoro elettronico, di uno schema a blocchi rappresentativo del sistema in esame. Per gli scopi che prefiggiamo in questo corso non necessario discutere approfonditamente le prerogative del software Matlab-Simulink., bens concentreremo lattenzione su alcuni task di interesse (ad esempio visualizzare un segnale, risolvere una equazione differenziale lineare a coefficienti costanti) guidando passo-passo il lettore mediante esempi concreti.
Appunti di SIMULINK a
dic
FIG. 1
Pulsante New
FIG. 2.
Appunti di SIMULINK a
dic
Nella parte destra della finestra in Fig. 2 vediamo la lista delle librerie (Continuous, Discrete, Functions & Tables, Math,, Sources) ognuna delle quali contiene una certa tipologia di componenti base: LIBRERIA Continuous Discrete Functions & Tables Math Nonlinear Signals & Systems Sinks Sources CONTENUTO Componenti lineari a tempo continuo Componenti lineari a tempo discreto Funzionalit programmabili e look-up tables Funzioni matematiche Componenti non lineari Condizionamento di segnali Visualizzatori di segnale Generatori di forme donda
FIG. 3.
Appunti di SIMULINK a
dic
FIG. 4.
Ciascun blocco elementare svolge una particolare funzione. Non scopo di questo manuale discutere in dettaglio tutti i blocchi elementari; ci limiteremo a spiegare il funzionamento dei blocchi che ci serviranno per svolgere i task sui quali ci concentreremo.
Appunti di SIMULINK a
dic
Esempio introduttivo:
Come primo passo si apra una nuova pagina di lavoro cliccando sul pulsante new a sinistra nella finestra di apertura di Simulink (v. Fig. 2). Comparir una finestra denominata Untitled (v. Fig. 5) allinterno della quale si dovr costruire lo schema a blocchi corrispondente alloperazione desiderata. In generale si devono importare nella pagina di lavoro un certo numero di blocchi elementari realizzanti le funzioni richieste che dovranno essere opportunamente interconnessi tra di loro al fine di realizzare il modello di simulazione
FIG. 5
Per visualizzare una sinusoide sono sufficienti due blocchi elementari: un blocco che generi il segnale desiderato ed un blocco che ne permetta la visualizzazione. Il primo blocco lo troveremo nella libreria Sources (blocco Sine Wave), il secondo blocco (blocco Scope), si trova nella libreria Sinks. I blocchi necessari vanno importati nella pagina di lavoro Untitled trascinando con il mouse (drag-and-drop) licona del blocco allinterno della pagina di lavoro. Il risultato di tale procedura mostrato in Fig. 6.
A. Pisano Guida introduttiva a Matlab-Simulink
Appunti di SIMULINK a
dic
FIG. 6
A questo punto conviene salvare la pagina di lavoro. La scritta Untitled verr sostituita dal nome assegnato al file, che ha suffisso mdl (ad esempio sinusoide.mdl). E altresi conveniente e soprattutto comodo ingrandire la finestra di lavoro e disporre i blocchi nella parte centrale come in Fig. 7.
FIG. 7
FIG. 8
Si deve ora collegare luscita del generatore di funzione Sine Wave con lingresso del blocco di visualizzazione Scope. Per effettuare un collegamento si deve portare la freccia del mouse nel punto di partenza dello stesso, e quindi tracciare il collegamento tenendo premuto il tasto sinistro del mouse e portandosi fino al punto di destinazione. Un
A. Pisano Guida introduttiva a Matlab-Simulink
Appunti di SIMULINK a
dic
collegamento correttamente eseguito viene indicato come in Fig. 8. Si ispezioni visivamente il collegamento, ed in particolare consigliato verificare sempre la presenza della freccia entrante nel blocco per essere certi di aver eseguito il collegamento in maniera corretta. Devono ora essere impostati i parametri di ampiezza, frequenza e sfasamento che definiscono la particolare sinusoide che si desidera generare. A tal fine necessario fare doppio click sul blocco Sine Wave, e come risultato si apre una finestra di dialogo allinterno della quale vanno impostati i parametri di funzionamento (Fig. 9).
FIG. 9
Impostati i tre parametri desiderati (scrivendo il valore corrispondente nelle caselle di testo etichettate Amplitude, Frequency e Phase) e confermata la scelta con il tasto OK (nella casella sample time si deve lasciare il valore nullo di default) resta da compiere un ultimo passo prima di avviare la simulazione . Si devono impostare la durata (cio lintervallo temporale) della simulazione ed il metodo di integrazione numerica. Tali parametri si impostano selezionado la voce Simulation Parameters dal menu Simulation della finestra di lavoro (Fig. 10). Lintervallo temporale della simulazione si imposta nella casella Stop Time. Per quanto riguarda il metodo di integrazione in questa sede ci limitiamo a segnalare che selezionando le Solver Options ed il Fixed step size come in Fig. 10 si potranno eseguire con successo tutti i task di simulazione previsti nel presente modulo. Quando sono da rappresentare fenomeni rapidamente variabili (ad es. una sinusoide a frequenza
A. Pisano Guida introduttiva a Matlab-Simulink
Appunti di SIMULINK a
dic
dellordine dei KHz) si dovr ridurre il Fixed Step Size oppure ricorrere a solutori (Solver) differenti. Come ultima operazione, si deve fare doppio click sul blocco Scope, ottenenendo come risultato la comparsa della finestra di visualizzazione in Fig. 11, quindi cliccare sul pulsante Properties (il secondo da destra, affianco al pulsante di stampa) e disselezionare nel men data History la check-box di default Limit data points to last [5000] (v. Fig. 12).
FIG. 10
FIG. 11
FIG. 12
FIG. 13
A questo punto tutto pronto per eseguire la simulazione. E sufficiente cliccare il pulsante Start Simulation (Fig. 9) e nella finestra di visualizzazione comparir il segnale generato dal blocco
A. Pisano Guida introduttiva a Matlab-Simulink
10
Appunti di SIMULINK a
dic
Sine Wave (v. Fig. 13: Amplitude=1, Frequency = 1 rad/s, Phase = 0). Se la finestra di visualizzazione fosse stata inavvertitamente chiusa sufficiente fare doppio click sul blocco Scope per riaprirla. Il lettore pu ora visualizzare sinusoidi di diversa ampiezza, frequenza o sfasamento modificando il corrispondente parametro nella finestra di dialogo del blocco Sine Wave. Per generare un segnale armonico (ad es. la somma di due sinusoidi di frequenza diversa) si devono importare un altro blocco Sine Wave ed un blocco che funga da nodo sommatore (Libreria Math, blocco Sum). Lunico parametro che definisce il comportamento del nodo sommatore una stringa di + o (es. +++) in numero pari al numero di nodi desiderati. Per il nostro caso si dovr impostare la stringa ++ ( la stringa di default) che genera due nodi a segno positivo (per fare la differenza tra due segnali il sommatore va invece configurato con la stringa +). Avviando la simulazione con il pulsante Start Simulation si pu vedere nel blocco Scope il segnale armonico costruito.
Esercizio:
11
Appunti di SIMULINK a
dic
Per generare funzioni comunque complesse (ad es. s(t)=sin(t) + e-t + t log (t+1)) si pu utilizzare la seguente configurazione:
FIG. 15
Il blocco Clock sta nella libreria Sources e fornisce in uscita la variabile temporale t. Il blocco Fcn sta nella libreria Functions & Tables e permette di scrivere una espressione matematica che viene applicata alla quantit in ingresso al blocco. Nello scrivere lespressione il segnale di ingresso si deve sempre indicare con la lettera u (si noti come in Fig. 15 il contenuto della stringa definisca proprio la funzione desiderata s(t) con la lettera u al posto di t). Avviando la simulazione (pulsante Start) e facendo doppio click sul blocco Scope si pu visualizzare landamento del segnale generato. Si ricordi di impostare correttamente i Simulation Parameters e le Scope properties ( v. Fig. 10 e Fig. 12).
12
Appunti di SIMULINK a
dic
(1)
y(0) = 1
y ' (0) = 2
y '' (0) = 3
(2)
La procedura sistematica: 1. Riscrivere lequazione in forma esplicita (cio isolando a sinistra delluguale la derivata di ordine pi elevato)
(3)
Collocare nella pagina di lavoro vuota un numero di blocchi Integrator (dalla libreria Continuous) pari allordine dellequazione differenziale (in questo caso sono 3) e collegarli tra loro in cascata come in Fig. 16
FIG. 16
13
Appunti di SIMULINK a
dic
Importare un nodo sommatore e 3 blocchi Gain (dalla libreria Math). Il nodo sommatore si collega al primo degli integratori (quello pi a sinistra). Il blocco Gain moltiplica il segnale di ingresso per il valore impostato nella corrispondente finestra di dialogo che si apre facendo doppio click sul blocco stesso (il guadagno di default unitario).
3.
FIG. 17
Come riportato in Fig. 17, le uscita dei tre integratori sono (da destra verso sinistra) rispettivamente y (il segnale cercato) e le sue derivate prima e seconda, y ed y. Questo in accordo con la funzione eseguita dal blocco, che produce in uscita lintegrale del segnale di ingresso. Nota: Facendo doppio click su un punto della finestra di lavoro ove non si trovano blocchi ivi compare una casella di testo in cui si possono scrivere delle lettere a piacere. Usualmente, come fatto in Fig. 17, si usa questa funzionalit per identificare, vicino alluscita (o allingresso) di un blocco, il nome del Segnale che esce dal (o entra nel) blocco in questione.
Come si ricava facilmente, in ingresso allintegratore pi a sinistra (Integrator 2 in Figura 17) si trover la derivata terza del segnale y. Per simulare lequazione differenziale si dovranno pertanto far confluire nel nodo sommatore tutte le quantit che compaiono a destra delluguale nellequazione (3), che definisce proprio la forma della derivata terza.
Identifichiamo, a destra delluguale nella Eq. (3), quattro diversi contributi: A. la funzione del tempo tra parentesi quadre 14
1 1 + cos (2 t ) 3
Appunti di SIMULINK a
dic
B. C.
2 3
D. il segnale y moltiplicato per 2 4. Configurare il sommatore con 4 nodi positivi e renderlo di forma rettangolare anzich circolare (stringa ++++ ed Icon shape=Rectangular nella finestra di dialogo) La funzione del tempo al punto A viene generata con un blocco Clock ed un blocco Fcn (v esempio a pag. 12). I blocchi Gain vengono fatti ruotare di 180 ( sufficiente selezionarli con un singolo click di mouse e premere per due volta la coppia di tasti CTRL + R, R=rotate) e trascinati nel foglio di lavoro fino a disporli come in Figura 18.
FIG. 18
5. Ora bisogna collegare in ingresso ai tre blocchi Gain i segnali y, y ed y per poter costruire i tre contributi ai punti B, C e D. Le uscite dei tre blocchi Gain vanno collegate ai tre ingressi liberi nel nodo sommatore. Dopo aver fatto tutti collegamenti bisogna impostare i guadagni dei tre blocchi Gain in accordo con lequazione (3). Il risultato finale in Fig. 19. E conveniente fare i collegamenti come in Fig. 19 per evitare incroci tra rami (che comunque non provocano nessun corto circuito e sono da evitarsi soltanto per aumentre la chiarezza di rappresentazione).
15
Appunti di SIMULINK a
dic
FIG. 19
6. Prima di avviare la simulazione bisogna impostare le condizioni iniziali in Eq. (2). Le condizioni iniziali si impostano mediante una finestra di dialogo che si apre facendo doppio click sui blocchi Integratori. Cliccando sullintegratore pi a destra (Integrator) si apre la seguente finestra di dialogo in cui impostre il parametro Initial condition, la condizione inizile del segnale che esce dallo specifico blocco integratore. Poich luscita del blocco in questione il segnale y, in accordo coon lEq. (2) si dovra inserire 1 come Initial Condition (e lasciare i valori di default per le altre impostazioni).
FIG. 20
16
Appunti di SIMULINK a
dic
Per gli altri integratori procedere di conseguenza impostando le Initial Condition sempre in accordo con le Eq. (2). Si deve ora collegare il blocco Scope. N.B. per effettuare un collegamento a partire da un collegamento preesistente bisogna portarsi con il mouse sul punto in cui si desidera agganciarsi e quindi tracciare con la punta del mouse il percorso desiderato per il collegamento, tenendo premuto il tasto destro del mouse. Non resta che impostare correttamente i Simulation Parameters (N.B. Stop time = 15) e le Scope properties (v. Fig. 10 e Fig. 12) ed avviare la simulazione premendo il pulsante Start. Landamento temporale della soluzione cercata riportato in Fig. 21.
FIG. 21
17
Appunti di SIMULINK a
dic
(4)
y (0 ) = 1
y ' (0) = 1
(5)
(6)
Come prima, si debbono porre in cascata un certo numero di integratori (stavolta solo 2 perch lequazione (4) di ordine 2) e si deve collegare un sommatore allingresso del primo integratore in maniera analoga a quanto fatto in Fig. 17. La componente
sin (t ) y '
potr pi essere generata mediante un blocco di guadagno (Gain). E possibile utilizzare il blocco Dot Product (dalla libreria Math), un blocco con due ingressi che fornisce in uscita il prodotto degli stessi. Al primo ingresso del blocco Dot Product si dovr mandare il segnale y (prelevato nel punto opportuno dello schema). Al secondo ingresso si dovr invece mandare il guadagno tempovariante sempre generato con i blocchi Clock ed Fcn come spiegato a pag. 12. Avendo completato tutti i collegamenti ne risulter il seguente schema (Eq. (22)
sin(t ) ,
18
Appunti di SIMULINK a
dic
FIG. 22
Si faccia attenzione alle condizioni iniziali degli integratori, da definirsi in accordo con le Eq. (5)). Nel blocco Fcn inserita la stringa - sin(u).
Per verificre la correttezza dello schema si confronti il grafico ottenuto con il seguente: Grafico della soluzione
FIG. 23
19
Appunti di SIMULINK a
dic
ESEMPIO Si visualizzino nei primi 30 secondi le soluzioni y(t) ed x(t) del seguente sistema di equazioni differenziali lineari
2 y '' + 4 y ' + 6 y + x = 3
(7) (8)
y (0 ) = 1 x (0 ) = 1
y ' (0 ) = 1
(9) (10)
Il sistema costituito dalle equazioni (7)-(8) complessivamente di ordine 3 (lordine totale la somma degli ordini delle singole equazioni). Il punto di partenza sempre la riscrittura del sistema in forma esplicita Sistema in forma esplicita:
1 3 y '' = 2 y ' 3 y x + 2 2
(11) (12)
Si devono collocare in tutto 3 blocchi Integratori (libreria Continuous) che per non dovranno essere disposti in cascata come in Fig. 16. Gli integratori vanno disposti su 2 righe distinte (perch il sistema in esame si compone di 2 equazioni). Nella prima riga (corrispondente alla equazione (11)) metter due integratori in cascata, nella seconda riga metter il terzo integratore restante (Fig. 24). Analogamente a prima, si collegano due sommatori in ingresso agli integratori pi a sinistra (uno dei sommatori deve avere 4 ingressi, per laltro ne bastano 3). Per concludere lo schema si devono generare tutte le grandezze a destra delluguale nelle equazioni (11) e (12), e tali grandezze devono essere convogliate al nodo sommatore in accordo con le due equazioni. Al solito, la funzione cos(t) generata con i blocchi Clock e Fcn. In Fig. 25 riportato lo schema finale che si deve ottenere (o almeno uno degli schemi possibili).
A. Pisano Guida introduttiva a Matlab-Simulink
20
Appunti di SIMULINK a
dic
FIG. 24
FIG. 25
N.B. I collegamenti sovrapposti in Fig. 25 sono perfettamente leciti. Le connessioni effettive sono identificate da un punto nero che risalta dal collegamento.
21
Appunti di SIMULINK a
dic
x(0) = x0
& = f (x ) x
(13)
x0
(14)
In gergo matematico tale problema si chiama Problema di Cauchy ai valori iniziali. Va evidenziato quanto segue: - i grafici che si ottengono con Simulink sono sempre grafici approssimati per due motivi: o unequazione differenziale viene risolta via software impiegando algoritmi automatici di calcolo affetti da un intrinseco errore di approssimazione (lerrore si riduce diminuendo il parametro Fixed step size nei Simulation parameters, v. Fig. 12). o ogni operazione sui numeri reali effettuata da un programma software affetta da un errore di troncamento (o arrotondamento) dovuto al fatto che un calcolatore rappresenta i numeri con una quantit finita di cifre. La risoluzione di un problema di Cauchy in ambiente Simulink estremamente semplice. Lequazione gia data in forma esplicita. E sufficiente un integratore ed un blocco Fcn che realizzi la funzione f(x).
FIG. 26
22
Appunti di SIMULINK a
dic
x(0) = 0
(15) (16)
FIG. 27
FIG. 28
23
Appunti di SIMULINK a
dic
(17)
&0 x0 , x
(18)
Stavolta servono due integratori (lequazione del secondo ordine) collegati in cascata, un blocco Fcn che dovr realizzare la funzione
&) f (x, x
chiama Mux (libreria Signals & Systems). Il blocco Mux ha un numero arbitrario di ingressi (il numero di ingressi si imposta dalla corrispondente finestra di dialogo attraverso il parametro intero Number of inputs)
FIG. 29
La funzione del blocco Mux quella di compattare tuti i segnali di ingresso in un vettore ad N componenti (N = Number of Inputs). Lutilit di questo blocco consiste nel fatto che se mando ad un blocco Fcn luscita di un blocco Mux posso scrivere nel blocco Fcn una espressione (funzione) che dipende da tutti gli elementi del vettore in uscita dal Mux. Il primo elemento del vettore sar indicato con u(1), il secondo con u(2) e cos via fino allelemento N-esimo. Facciamo un esempio: ESEMPIO: Risolvere lequazione
(19) (20) 24
& (0) = 3 x
Appunti di SIMULINK a
dic
FIG. 30
x(0) = 1 ,
(21)
& (0) = 3 x
& &(0) = 0 x
(22)
FIG. 31
25
Appunti di SIMULINK a
dic
(17)
x(0) = x0 ,
&0 x0 , x
(18)
E sufficiente introdurre una semplicissima modifica allo schema in Fig. 30. Se si aggiunge un terzo ingresso al blocco Mux e si applica a tale ingresso luscita del blocco Clock visto in precedenza (vio la variabile tempo) si potr includere nella funzione f (cio nel contenuto del blocco Fcn) anche la variabile tempo, che sar indicata con u(3). Facciamo un esempio: ESEMPIO: Risolvere lequazione
(19) (20)
FIG. 32
Si pu verificare che il seguente schema (Fig. (33)) perfettamente equivalente a quello in Fig. 32.
26
Appunti di SIMULINK a
dic
FIG. 33
27
Appunti di SIMULINK a
dic
(21)
& & + 0 .2 x & + 0.1 sign ( x & ) + 0.05 x &x & = 2 sin (t ) x
Un possibile schema Simulink il seguente
(22)
F(t)
FIG. 34
28
Appunti di SIMULINK a
dic
Nello schema in Fig. 34 un blocco compare per la prima volta: il blocco Abs (libreria Math) che estrae il valore assoluto di un segnale. Nota: facendo doppio click sui nomi dei blocchi (ad es. Integrator 1) possibile modificarli. Nello schema in Fig. 34 questo stato fatto nei blocchi Gain contenenti i 3 coefficienti di attrito (ribattezzati alfa, gamma e b) e nel blocco di tipo Fcn che genera la forza applicata F. Tale blocco ribattezzato F(t). ESERCIZIO 2
Si consideri il seguente modello matematico, che descrive il funzionamento di un servomotore in corrente continua con eccitazione a magneti permanenti.
(23)
Si desidera visualizzare landamento della velocit a vuoto (cio con Tres=0) quando si applica una tensione di alimentazione costante di ampiezza 5 V. Costruiremo lo schema Simulink facendo uso di costanti simboliche. Uno dei possibili schemi Simulink per la simulazione del sistema in esame riportato in Fig. 35. Prima di avviare la simulazione bisogna assegnare un valore ai parametri R, L, K_T, K_V, J, b. Questa procedura si compie nella finestra di Matlab scrivendo nella riga di comando le istruzioni di assegnazione (v. Fig. 36)
29
Appunti di SIMULINK a
dic
FIG. 35
FIG. 36
30
Appunti di SIMULINK a
dic
& (0) =0 ed u(t) costituito da unonda quadra di ampiezza unitaria e frequenza con y(0)= y
0.1 Hz. Si determinino i valori massimo e minimo della funzione y(t) e della sua derivata in condizione di regime.
con y(0)=1 ed u(t) costituito da unonda a dente di sega di ampiezza pari a 2 e frequenza 0.1 Hz. Si determinino i valori massimo e minimo della funzione y(t) e della sua derivata in condizione di regime.
Es.3 Si simuli il sistema caratterizzato dalla seguente equazione differenziale & &(t ) + y & (t ) + 2 y (t ) + 0.1 y 3 (t ) = u (t ) y con y(0)=1 ed u(t) costituito da unonda quadra di ampiezza unitaria e frequenza 1 Hz. Si determinino i valori massimo e minimo della funzione y(t) e della sua derivata in condizione di regime.
31
Appunti di SIMULINK a
dic
SOLUZIONE DELLEs. 1
FIG. 37
Il blocco Product (libreria Math) equivalente al blocco Dot Product per la moltiplicazione di segnali scalari. Il blocco Signal generator (Libreria Sources) in gardo di generare diverse forme donda (tra cui un onda quadra come richiesto nellesercizio) selezionabili nella finestra di dialogo dl blocco. I valori limite a regime per luscita y sono 0.77 circa. I valori limite a regime per la sua derivata y sono 0.57 circa.
SOLUZIONE DELLEs. 2
FIG. 38
32
Appunti di SIMULINK a
dic
+2.225 e
1.85 2.32
SOLUZIONE DELLEs. 3
FIG. 39
0.33 circa.
33