Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a...

33
Guida introduttiva a Matlab-Simulink Ing. Alessandro Pisano [email protected]

Transcript of Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a...

Page 1: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Guida introduttiva a Matlab-Simulink

Ing. Alessandro Pisano

[email protected]

Page 2: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

INDICE

Introduzione 3

Generalità: librerie e blocchi elementari. 3

Esempio introduttivo: costruzione e visualizzazione di un onda sinusoidale 7

Costruzione e visualizzazione di segnali qualunque. 12

Risoluzione di equazioni differenziali lineari a coefficienti costantii 13

Risoluzione di equazioni differenziali lineari a coefficienti non costantii 18

Risoluzione di sistemi di equazioni differenziali lineari a coefficienti costanti 20

Risoluzione di equazioni differenziali non lineari del primo ordine 22

Risoluzione di equazioni differenziali non lineari di ordine qualunque 24

Risoluzione di equazioni differenziali non lineari tempo-varianti di ordine qualunque 26

Simulazione di sistemi dinamici:

Es. 1: Massa con attrito composto

Es. 2: Motore DC

28

Esercizi propostii con traccia della soluzione 31

A. Pisano – Guida introduttiva a Matlab-Simulink 2

Page 3: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Introduzione

Il software “Simulink“ è un applicativo che “vive” all’interno del programma di calcolo Matlab e ne costituisce, in buona sostanza, una potente e intuitiva interfaccia grafica che ne semplifica grandemente l’impiego da parte dell’utente. Medante Simulink è possibile “programmare” l’esecuzione 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 l’integrazione 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 dell’utente 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 l’attenzione 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.

Generalità: librerie e blocchi elementari.

SIMULINK si compone di una serie di librerie che contengono dei blocchi elementari, i quali, opportunamente interconnessi, andranno a realizzare lo schema a blocchi che rappresenta la funzionalità desiderata. Si accede alla lista delle librerie aprendo innanzitutto MATLAB (si veda in Fig. 1 la finestra di avvio di MATLAB) e quindi aprendo SIMULINK. Tale operazione puo’ esser fatta in due modi: premendo con il mouse il pulsante corrispondente (v. Fig. 1) o digitando “simulink” nella riga di comando e quindi premendo il tasto invio. In Fig. 2 la finestra di avvio del software SIMULINK (vers.6.0.0.88, release 12)

A. Pisano – Guida introduttiva a Matlab-Simulink 3

Page 4: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

PULSANTE PERAPRIRE “SIMULINK”

FIG. 1 FINESTRA DI AVVIO DI MATLAB

Pulsante “New”

FIG. 2. FINESTRA DI AVVIO DI SIMULINK

A. Pisano – Guida introduttiva a Matlab-Simulink 4

Page 5: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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 CONTENUTO

Continuous Componenti lineari a tempo continuo Discrete Componenti lineari a tempo discreto Functions & Tables Funzionalità pèrogrammabili e look-up tables Math Funzioni matematiche Nonlinear Componenti non lineari Signals & Systems Condizionamento di segnali Sinks Visualizzatori di segnale Sources Generatori di forme d’onda

Vediamo più a fondo il contenuto di alcune librerie

FIG. 3. LIBRERIE “CONTINUOUS” (SINISTRA) E “MATH” (DESTRA)

A. Pisano – Guida introduttiva a Matlab-Simulink 5

Page 6: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

FIG. 4. LIBRERIE “SINKS” (SINISTRA) E “SOURCES” (DESTRA) 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.

A. Pisano – Guida introduttiva a Matlab-Simulink 6

Page 7: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Esempio introduttivo: visualizzazione di una sinusoide 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) all’interno della quale si dovrà costruire lo schema a blocchi corrispondente all’operazione 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) l’icona del blocco all’interno della pagina di lavoro. Il risultato di tale procedura è mostrato in Fig. 6.

A. Pisano – Guida introduttiva a Matlab-Simulink 7

Page 8: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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 l’uscita del generatore di funzione “Sine Wave” con l’ingresso 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 8

Page 9: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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 all’interno della quale vanno impostati i parametri di funzionamento (Fig. 9).

FIG. 9

Pulsante “Start Simulation”

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è l’intervallo 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). L’intervallo 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 9

Page 10: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

dell’ordine 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

Page 11: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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”). L’unico 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.

FIG. 14

Pulsante “Start Simulation”

Esercizio: Visualizzare il segnale x(t)=sin(t) + 2 sin(2 t) + 3 sin (3 t + π) – 2 sin (5 t)

A. Pisano – Guida introduttiva a Matlab-Simulink 11

Page 12: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Costruzione e visualizzazione di una generica funzione del tempo

Per generare segnali non sinusoidali, sono disponibili diversi blocchi speciali. Descriviamone alcuni

BLOCCO SEGNALE GENERATO

Constant Segnale costante Step Segnale a gradino Ramp Rampa Random signal Segnale casuale

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 l’espressione 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 l’andamento del segnale generato. Si ricordi di impostare correttamente i “Simulation Parameters” e le “Scope properties” ( v. Fig. 10 e Fig. 12).

A. Pisano – Guida introduttiva a Matlab-Simulink 12

Page 13: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Soluzione di equazioni differenziali lineari a coefficienti costanti

Chiariamo innanzitutto che in ambito Simulink per soluzione di un equzione differenziale intendiamo semplicemente la visualizzazione della soluzione in un blocco di tipo Scope. Anche stavolta procediamo sviluppando un esempio pratico: ESEMPIO Si visualizzi nei primi 15 secondi la soluzione y(t) dell’equazione differenziale lineare del terzo ordine

( )tyyyy ⋅+=+++ 2cos36323 '''''' (1)

con condizioni iniziali

( ) 10 =y ( ) 20' =y ( ) 30'' −=y (2)

La procedura è sistematica:

1. Riscrivere l’equazione in forma esplicita (cioè isolando a sinistra dell’uguale la derivata di ordine più elevato)

( ) yyyty 2322cos

311 '''''' −−−⎥⎦

⎤⎢⎣⎡ ⋅⋅+= (3)

2. Collocare nella pagina di lavoro vuota un numero di blocchi “Integrator” (dalla libreria “Continuous”) pari all’ordine dell’equazione differenziale (in questo caso sono 3) e collegarli tra loro in cascata come in Fig. 16

FIG. 16

A. Pisano – Guida introduttiva a Matlab-Simulink 13

Page 14: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

3. 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).

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 l’integrale 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 all’uscita (o all’ingresso) di un blocco, il nome del Segnale che esce dal (o entra nel) blocco in questione. Come si ricava facilmente, in ingresso all’integratore più a sinistra (Integrator 2 in Figura 17) si troverà la derivata terza del segnale y. Per simulare l’equazione differenziale si dovranno pertanto far confluire nel nodo sommatore tutte le quantità che compaiono a destra dell’uguale nell’equazione (3), che definisce proprio la forma della derivata terza. Identifichiamo, a destra dell’uguale nella Eq. (3), quattro diversi contributi:

A. la funzione del tempo tra parentesi quadre ( )t⋅⋅+ 2cos311

A. Pisano – Guida introduttiva a Matlab-Simulink 14

Page 15: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

B. la derivata seconda di y moltiplicata per 32

C. la derivata prima di y moltiplicata per 1− 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 l’equazione (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).

A. Pisano – Guida introduttiva a Matlab-Simulink 15

Page 16: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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 sull’integratore 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é l’uscita del blocco in questione è il segnale y, in accordo coon l’Eq. (2) si dovra inserire 1 come “Initial Condition” (e lasciare i valori di default per le altre impostazioni).

FIG. 20

A. Pisano – Guida introduttiva a Matlab-Simulink 16

Page 17: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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”. L’andamento temporale della soluzione cercata è riportato in Fig. 21.

FIG. 21

A. Pisano – Guida introduttiva a Matlab-Simulink 17

Page 18: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Soluzione di equazioni differenziali lineari a coefficienti non costanti

Nelle equazioni differenziali a coefficienti non costanti almeno uno dei coefficienti che moltiplicano le derivate della soluzione y sono delle funzioni del tempo, anziché essere delle costanti come nella Eq. (1). Prendendo spunto dalla procedura adottata per risolvere l’equazione 1, vediamo quali modifiche si debbano introdurre per trattare una equazione a coefficienti non costanti come quella dell’esempio che segue ESEMPIO Si visualizzi nei primi 15 secondi la soluzione y(t) dell’equazione differenziale lineare tempovariante del secondo ordine

( ) 24sin ''' =+⋅+ yyty (4)

con condizioni iniziali

( ) 10 =y ( ) 10' −=y (5)

Equazione in forma esplicita:

( ) yyty 4sin2 ''' −⋅−= (6)

Come prima, si debbono porre in cascata un certo numero di integratori (stavolta solo 2 perché l’equazione (4) è di ordine 2) e si deve collegare un sommatore all’ingresso del primo integratore in maniera analoga a quanto fatto in Fig. 17.

La componente ( ) 'sin yt ⋅− a destra dell’uguale nell’equazione (6) in forma esplicita non

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 ( )tsin− ,

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) A. Pisano – Guida introduttiva a Matlab-Simulink 18

Page 19: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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

A. Pisano – Guida introduttiva a Matlab-Simulink 19

Page 20: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Soluzione di sistemi di equazioni differenziali lineari a coefficienti costanti

ESEMPIO Si visualizzino nei primi 30 secondi le soluzioni y(t) ed x(t) del seguente sistema di equazioni differenziali lineari

3642 ''' =++⋅+ xyyy (7)

( )txyx cos4'' =++ (8)

con le condizioni iniziali

( ) 10 =y ( ) 10' −=y (9)

( ) 10 =x (10)

Il sistema costituito dalle equazioni (7)-(8) è complessivamente di ordine 3 (l’ordine totale è la somma degli ordini delle singole equazioni). Il punto di partenza è sempre la riscrittura del sistema in forma esplicita Sistema in forma esplicita:

23

2132 ''' +−−⋅−= xyyy (11)

( )txyx cos4'' +−−= (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 l’altro ne bastano 3). Per concludere lo schema si devono generare tutte le grandezze a destra dell’uguale 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

Page 21: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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.

A. Pisano – Guida introduttiva a Matlab-Simulink 21

Page 22: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Soluzione di equazioni differenziali non lineari del primo ordine Analizziamo la soluzione di una equazione differenziale non lineare del prino ordine. Consideriamo per semplicità una equazione autonoma (la variabile tempo non compare esplicitamente)

( )xfx =& (13)

( ) 00 xx = (14) ℜ∈0x 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 un’equazione differenziale viene risolta via software impiegando algoritmi automatici di calcolo affetti da un intrinseco errore di approssimazione (l’errore 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. L’equazione è gia data in forma esplicita. E’ sufficiente un integratore ed un blocco Fcn che realizzi la funzione f(x).

FIG. 26

A. Pisano – Guida introduttiva a Matlab-Simulink 22

Page 23: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Particolarizziamo la Fig. 26 per la specifica equazione

( ) ( )xxxxx cossin ⋅++−=& (15)

( ) 00 =x (16) In Fig. 27 lo schema finale risultante, ed in Fig. 28 il grafico della soluzione.

FIG. 27 FIG. 28

A. Pisano – Guida introduttiva a Matlab-Simulink 23

Page 24: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Soluzione di equazioni differenziali non lineari di ordine qualunque

Analizziamo ora la soluzione di equazione differenziali non lineari di ordine qualunque in forma esplicita. Consideriamo per semplicità una equazione autonoma (la variabile tempo non compare esplicitamente) e trattiamo inizialmente il caso di una equazione del secondo ordine.

( xxfx &&& ,= ) (17)

( ) 00 xx = , ( ) 00 xx && = ℜ∈00 , xx & (18)

Stavolta servono due integratori (l’equazione è del secondo ordine) collegati in cascata, un

blocco “Fcn” che dovrà realizzare la funzione ( )xxf &, ed un blocco aggiuntivo che si

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). L’utilità di questo blocco consiste nel fatto che se mando ad un blocco “Fcn” l’uscita 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 all’elemento N-esimo. Facciamo un esempio: ESEMPIO: Risolvere l’equazione

xxxx &&&& 2)sin(2 −⋅−= (19)

( ) 10 =x , (20) ( ) 30 =x&

A. Pisano – Guida introduttiva a Matlab-Simulink 24

Page 25: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Lo schema sarà del tipo in Figura 30

FIG. 30

ESERCIZIO: Risolvere l’equazione

xxxxx &&&& 2)sin()3( −⋅−= (21)

( ) 10 =x , ( ) 30 =x& ( ) 00 =x&& (22)

SOLUZIONE: v. Fig. 31.

FIG. 31

A. Pisano – Guida introduttiva a Matlab-Simulink 25

Page 26: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

Soluzione di equazioni differenziali non lineari tempo-varianti di ordine qualunque

Analizziamo ora la soluzione di equazione differenziali non lineari e non autonome (tempovarianti) di ordine qualunque in forma esplicita. Trattiamo inizialmente il caso di una equazione del secondo ordine. L’estensione ai sistemi di ordine superiore è banale.

( ) ( ) ( )( ttxtxftx ,, &&& = ) (17)

( ) 00 xx = , ( ) 00 xx && = ℜ∈00 , xx & (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 l’uscita 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 l’equazione

( ) xtxxx &&&& 22cos)sin(2 −⋅⋅−= (19)

( ) 10 =x , (20) ( ) 30 =x&Lo schema sarà del tipo in Figura 32

FIG. 32

Si può verificare che il seguente schema (Fig. (33)) è perfettamente equivalente a quello in

Fig. 32.

A. Pisano – Guida introduttiva a Matlab-Simulink 26

Page 27: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

FIG. 33

A. Pisano – Guida introduttiva a Matlab-Simulink 27

Page 28: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

SIMULAZIONE DI SISTEMI DINAMICI Una volta scritto il modello matematico di un sistema, la simulazione non è altro che la risoluzione dell’equazione differenziale (o del sistema di equazioni differenziali) definita dal modello. ESERCIZIO 1 Simulare il comportamento di un corpo di massa M=1 [Kg] vincolato a muoversi in una direzione fissa sotto l’azione di una forza applicata sinusoidale F(t) = 2*sin(t) [N] e soggetto ad attrito composto (viscoso, statico e di tipo “drag) con coefficienti rispettivamente b=0.2 [Ns/m], α=0.1 N e γ=0.05 [N s2/m2]. Il modello può essere ricavato mediante un semplice bilancio dinamico delle forze agenti ed ha la forma seguente:

( ) ( )tFxxxxbxM =+++ &&&&&& sign γα (21)

Sostituendo i valori delle costanti e la forza applicata F(t)

( ) ( )txxxxx sin2 05.0sign 1.0 2.0 =+++ &&&&&& (22)

Un possibile schema Simulink è il seguente

FIG. 34

F(t)

A. Pisano – Guida introduttiva a Matlab-Simulink 28

Page 29: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

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.

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

( ) ( )tiktT

tbdt

tdJtTtT

tkdt

tdiLtRitv

Tem

resem

V

=

+=−

++=

ωω

ω

(23)

VARIABILI DEL SISTEMA

v(t) tensione di alimentazione ω(t) velocità angolare

Tem(t) coppia elettromagnetica Tres(t) coppia resistente

i(t) corrente di fase

PARAMETRI ELETTROMECCANICI

Kv costante di forza contro-elettromotrice kT costante di coppia

R resistenza dell’avvolgimento J momento di inerzia all’albero

L induttanza di avvolgimento b coefficiente di attrito viscoso

Si desidera visualizzare l‘andamento 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)

A. Pisano – Guida introduttiva a Matlab-Simulink 29

Page 30: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

FIG. 35

FIG. 36

A. Pisano – Guida introduttiva a Matlab-Simulink 30

Page 31: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

ESERCIZI CON TRACCIA DELLA SOLUZIONE

Es.1. Si simuli il sistema caratterizzato dalla seguente equazione differenziale

( ) ( ) ( ) ( ) ( ) ( )tutytytytyty =−++ &&&& 3

con y(0)= =0 ed u(t) costituito da un’onda quadra di ampiezza unitaria e frequenza

0.1 Hz.

( )0y&

Si determinino i valori massimo e minimo della funzione y(t) e della sua derivata in condizione di regime.

Es.2 .Si simuli il sistema caratterizzato dalla seguente equazione differenziale

( ) ( )( ) ( ) ( )tutyty

tyty =++

+ 25.0

2.0&

&&&

con y(0)=1 ed u(t) costituito da un’onda 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

( ) ( ) ( ) ( ) (tutytytyty =+++ 31.02&&& )

con y(0)=1 ed u(t) costituito da un’onda 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.

A. Pisano – Guida introduttiva a Matlab-Simulink 31

Page 32: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

SOLUZIONE DELL’Es. 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 d’onda (tra cui un onda quadra come richiesto nell’esercizio) selezionabili nella finestra di dialogo dl blocco. I valori limite a regime per l’uscita y sono ± 0.77 circa. I valori limite a regime per la sua derivata y’ sono ± 0.57 circa.

SOLUZIONE DELL’Es. 2

FIG. 38

A. Pisano – Guida introduttiva a Matlab-Simulink 32

Page 33: Guida introduttiva a Matlab-Simulinkpisano/DISPENSE-MatlabSimulink.pdf · Appunti di SIMULINK dic a INDICE Introduzione 3 Generalità: librerie e blocchi elementari. 3 Esempio introduttivo:

Appunti di SIMULINKdica

I valori limite a regime per l’uscita y sono +2.225 e −1.85 I valori limite a regime per la sua derivata y’ sono +2.16 e −2.32

SOLUZIONE DELL’Es. 3

FIG. 39

I valori limite a regime per l’uscita y sono ± 0.33 circa. I valori limite a regime per la sua derivata y’ sono ± 0.255 irca.

A. Pisano – Guida introduttiva a Matlab-Simulink 33