Sei sulla pagina 1di 32

una piattaforma per la simulazione multidominio e la progettazione model-based di sistemi

dinamici. Fornisce un ambiente grafico interattivo e librerie di gruppi di blocchi personalizzabili,


e pu essere ampliato per applicazioni specializzate.

Simulink integrato in MATLAB, al fine di dare accesso immediato e unampia gamma di


strumenti per sviluppare algoritmi, analizzare e visualizzare simulazioni, creare script

Librerie di blocchi predefiniti espandibili a blocchi personalizzati


Editor grafico interattivo per lassemblaggio e la gestione dei diagrammi a blocchi
Possibilit di gestire progetti complessivi dividendo i modelli in gerarchie di componenti
Model Explorer consente di navigare, creare, configurare e ricercare tutti i segnali, i parametri
le propriet e il codice generato associato a un modello
Le API (Application programming interfaces) abilitano la connessione ad altri programmi di
simulazione e consentono di includere codice scritto manualmente
Blocco funzionale Embedded MATLAB per importare algoritmi Matlab Simulink
Modi di simulazione (Normal, Accelerator e Rapid Accelerator) per lesecuzione di simulazioni
in modo interpretato o alla velocit del codice C compilato mediante solutori fissi o variabili
Simulink lambiente di programmazione grafico associato al MATLAB.

E particolarmente indicato per costruire schemi a blocchi di sistemi dinamici lineari e non lineari
e per eseguire la loro simulazione. Mette a disposizione una grande serie di moduli predefiniti,
con la possibilit per lutente di crearne di nuovi, eventualmente anche programmati in C o
Foltran.
Per far partire Simulink occorre essere nello shell di Matlab e cliccare sullicona:

clicca qui
Librerie Simulink
clicca qui apparir la seguente pagina di lavoro
dov possibile inserire i blocchi delle
librerie.
Creare un modello:

1. Trascinare o copiare e incollare dalla finestra della libreria i blocchi desiderati nel nuovo
modello
2. Connettere le icone dei blocchi

3. Selezionare e aprire ogni blocco impostando i parametri necessari

4. Impostare la simulazione modificando i parametri nella sezione:


Simulation > Configuration Parameters

5. Far partire la simulazione cliccando su Simulation > Start


Ogni blocco pu avere una o pi porte di entrata, tramite cui vengono trasmessi gli input, e una
Porta duscita, tramite cui vengono esportati gli output.
Connessioni dirette

1. Posizionare il mouse in corrispondenza della porta di uscita del primo blocco che si vuole
connettere e trascinare il mouse fino alla porta di entrata del secondo blocco

2. Posizionare il mouse in corrispondenza della porta di uscita del primo blocco che si vuole
connettere e trascinare il mouse fino al secondo blocco

3. Selezionare il primo blocco o gruppo, poi selezionare il secondo tenendo premuto il tasto
CTRL
Connessioni ramificate

1. Posizionare il mouse sulla freccia di connessione gi esistente tra due blocchi, in


corrispondenza del punto da cui si vuol far partire la ramificazione, poi trascinare premendo
il tasto CTRL fino al blocco da connettere
Disconnessioni

Premere il tasto SHIFT e trascinare il blocco in unaltra area del modello

Inserire un blocco in una connessione

Trascinare il blocco da inserire sulla linea di connessione tra i due blocchi principali

Annotazioni

1. Per inserire delle notazioni fare un doppio click su unarea vuota del modello, in questo
modo si apre una casella di testi
2. Per inserire formule, lettere greche, ecc usando la notazione Latex, selezionare
lannotazione e selezionare Enable TeX Commands sal men Edit
3. Creando un modello Simulink da un file .m usare:
add_block(built in/Note,test/Pippo,Positione,[550 0 0 180])
La creazione di un sottosistema permette di semplificare la visualizzazione di un modello
complesso e rende pi semplice organizzare la struttura anche gerarchica dei blocchi

Creazione di un subsystem

1. Aggiungere un Subsystem block al modello (cercare nelle librerie), poi aprirlo e inserire i
blocchi voluti; usare Import blocks e Outport blocks per usare input e output esterni
2. Aggiungere i blocchi al modello normalmente, poi raggrupparli selezionandoli e cliccare su
Create Subsystem dopo aver cliccato col tasto destro del mouse
3. E possibile impostare permessi di accesso di lettura e scrittura ai blocchi di un sottosistema
dal dialog box impostando Access parameter ReadOnly o NoReadOrWrite

Sottosistemi condizionali
1. enable susystem: Enable block dalla libreria Signals & Systems
2. triggered subsystem: Trigger block dalla libreria Signals & Systems
3. triggered and enable subsystem: Enable + Trigger block dalla libreria Signals & Systems
4. control flow subsystem: Control Flow Blocks con i flussi di controllo for, if-else, switch, while
Workspace
Simulink ha un proprio workspace in cui salvare le variabili simile a quello di Matlab. Le variabili
si un modello sono visibili solo allinterno del workspace di quel modello.
Se esistono due variabili, uno nel wokspace di Matlab, laltro in quello del modello, con lo stesso
nome, Simulink user la variabile workspace del proprio modello senza pericolo di conflitto con
altri modelli.

S-Function
Una S-Function una descrizione in linguaggio macchina di un blocco di Simulink. Queste
funzioni possono essere scritte in Matlab, C, C++, Ada o Fortran. La S-Function in C, C++, Ada e
Fortran S-functions sono complicate come MEX-files e vengono linkate dinamicamente a Matlab
quando necessario. Le S-functions consentono di aggiungere dei propri blocchi ai modelli
Simulink

Funzioni MATLAB
E possibile inserire una funzione scritta in Matlab usando il blocco MATLAB FUNCTION
Parametri di blocco

I blocchi di Simulink prevedono la possibilit di impostare parametri generali e specifici di ogni


blocco tramite unapposita interfaccia accessibile dal men del blocco.

E inoltre possibile cambiare i valori dei parametri di blocco durante una simulazione, sia tramite
la finestra di dialogo delle propriet del blocco, sia tramite riga di comando da Matlab usando
set_param.

Se il blocco di Simulink utilizza delle variabili da workspace di Matlab, durante la simulazione


possibile cambiare i parametri assegnando un nuovo valore a queste variabili.

Per rendere effettive le modifiche necessario aggiornare il modello.


Librerie

Oltre alle librerie disponibili da Simulink possibile creare delle proprie librerie.
Per fare ci sufficiente selezionare dal men la voce File > New > Library

La libreria pu essere visionata col comando open_system.

Prima di poter copiare dei blocchi da una libreria necessario averla salvata!
Una volta aperta una libreria non pu essere modificata, pu essere sbloccata selezionando dal
men Edit > Unlock Library

Note

1. Time step: determinato dal componente che cambia pi velocemente nel sistema simulato
2. Per effettuare il run di un modello Simulink da un file .m usare il comando
sim <modelname>
3. La maggior parte dei blocchi di Simulink ha un proprio set di parametri che possono avere
dei valori passati da un file .m. Questo consente di avere simulazioni in batch con
ridefinizioni dei valori tramite iterazioni in un ciclo di controllo
Come esempio costruiamo un modello di un sistema con una funzione di trasferimento di ordine
1, con entrata di tipo a gradino unitario.

Prendiamo dalla biblioteca Souce il modulo Step input, da Continuous il modulo Transfer Fcn e
da Sinks il modulo Scope.

Con un doppio click del mouse su un blocco possiamo settare i parametri, direttamente per
mezzo di finestre di dialogo.

Diamo per lo step un tempo di partenza a 0 e un valore finale a 1, per la funzione di


trasferimento diamo come polinomio al numeratore 1 ([1]) e come polinomio del denominatore
s+1 ([1 1]).

In seguito uniamo i blocchi tra di loro utilizzando il mouse con il tasto sinistro premuto.
Possiamo vedere come il cursore del mouse si trasformi in una doppia croce avvicinandosi
allentrata del blocco successivo, per poi diventare la punto di una freccia al momento che il
collegamento effettivo.
Costruiamo un modello Simulink che risolva lequazione differenziale:

con condizioni iniziali x(0) = - 1

Schema a blocchi di questo modello matematico

1. Lingresso la funzione forzante 3sin(2t)


2. Luscita la soluzione dellequazione differenziale x(t)
Schema a blocchi di questo modello matematico in Simulink

1. Nella libreria del Simulink cercare il blocco Sine Wave e trascinarlo sul nuovo modello
2. Cercare nella libreria il blocco Integrator e trascinare anche questo sul nuovo modello
3. In fine cercare il blocco Scope e trascinare anche questultimo nello stesso modello Simulink

LE FRECCE INDICANO LA DIREZIONE DEI FLUSSI DEI SEGNALI


Selezionare i parametri di simulazione

Amplitude: 10
Frequency (rad/sec): 2*pi*50

QUESTO PRODURR LINGRESSO DESIDERATO 3sin(2t)


Selezionare i parametri di simulazione

Initial condition: -1

QUESTO SETTA LA CONDIZIONE INIZIALE X(O) = -1


Selezionare i parametri di simulazione

Doppio click sullo scope e selezionare Data History


Togliere la spunta a: Limit data points to last (altrimenti il Matlab visualizza sullo scope solo
gli utimi 5000 punti della simulazione)
Avviare la simulazione dalla finestra Simulation selezionando Start
Osservare il risultato della simulazione

Per verificare che landamento


ottenuto rappresenti la soluzione
cercata, si risolve lequazione
analiticamente.

Il risultato analitico

X(t)=0.5 1.5 cos(2t)

Che coincide esattamente con il


risultato della simulazione
riportato nella schermata dello
scope.
Costruiamo un modello Simulink che risolva lequazione differenziale:

1. Sistema massa-molla-smorzatore (2 ordine)

2. Condizione iniziale 0

3. Ingresso forzante f(t) un gradino di ampiezza 3

4. Parametri m=0.25 c=0.5 k=1


Lobiettivo rappresentare la seguente equazione:

dalla quale sar necessario isolare laccelerazione e successivamente integrare due volte ed
ottenere la posizione rappresentata dalla funzione x(t).
Risultati:

posizione

velocit

accelerazione
Come detto precedentemente, il Simulink utilizza un proprio Workspace nel quale alloca le
variabili utilizzate nel modello.

Lutilizzo di questo Workspace utile per effettuare il salvataggio dei plot delle grandezze che si
desidera monitorare nella simulazione.
Con riferimento allesempio precedente, aggiungere per ciascuna variabile da monitorare un
blocco to workspace e collegare al suo ingresso la grandezza tempo-variante. Inoltre
necessario aggiungere anche un ulteriore to workspace per la grandezza tempo che viene
conteggiato con il blocco clock.
Per i blocchi to workspace necessario inserire il variable name ed inoltre impostare il Save
format su Array.
Questo permette al Matlab di salvare i valori delle grandezze monitorate in un vettore (array)
per effettuare successivamente, in fase di plot lassociazione della grandezza al corrispettivo
istante temporale del clock.
Avviare la simulazione e al termine aprire il Command Window di Matlab e digitare il seguente
comando:
>> plot(ts,posizione);
>> title('posizione')
>> xlabel('tempo [s]')
>> ylabel('posizione [m]')
>> grid
>> figure(2)
>> plot(ts,velocita)
>> title('velocit')
>> xlabel('tempo')
>> ylabel('velocit [m/s]')
>> grid
>> figure (3)
>> plot(ts,accelerazione)
>> title('accelerazione')
>> xlabel('tempo [s]')
>> ylabel('accelerazione [m/s^2]')
>> grid
Ciascuna immagine pu essere salvata come file JPEG in una qualsiasi cartella del PC.