SIMULINK
SIMULINK è l’acronimo delle parole SIMUlation e LINK. E’ un
ambiente di sviluppo basato su un linguaggio grafico (diagrammi a
blocchi) ed è impiegato in numerosi campi scientifici.
SIMULINK è un TOOLBOX di MATLAB molto noto nel campo
dell’analisi dei segnali e del controllo di sistemi dinamici.
SIMULINK permette di focalizzare l’attenzione dell’utente sul
problema da risolvere, svincolandolo da numerose difficoltà che si
incontrano durante la fase implementazione in altri linguaggi di
programmazione (MATLAB, Fortan, C, C++, ect.). Inoltre, consente
di interfacciarsi con numerose dispositivi in modo da eseguire
simulazioni e controlli in real-time.
Avvio di SIMULINK
Per avviare basta digitare simulink nella finestra dei
comandi o cliccare sull’icona
(nel menu Home)
Sullo schermo apparirà la
finestra Simulink Library
Browser
Blocco elementare
Ogni blocco rappresenta un sistema dinamico elementare. Un blocco
comprende le seguenti grandezze (non sempre sono tutte presenti):
insieme di ingressi
un insieme di stati
un insieme di uscite
Le grandezze di uscita sono una funzione del tempo e delle
grandezze di ingresso e degli stati del sistema:
Si parla di blocco continuo se l’uscita è una funzione continua del
tempo. Si parla di blocco discreto se il segnale di uscita è valutato
solo in specifici istanti.
( ) ( ( ), ( ), )y t f u t x t t
f(u(t),x(t),t) u(t) y(t)
Librerie
Insieme a SIMULINK vengono forniti piu di 200 blocchi integrati che implementano le funzioni di modellazione più comunemente richieste. Essi sono raggruppati in librerie che raccolgono i blocchi con funzioni simili, eccone alcune:
Sources, sorgenti di segnale come generatori ed altro da mettere in ingresso al sistema;
Sinks, dispositivi che devono visualizzare le uscite od instradarle nel workspace;
Discrete, elementi di libreria per l'analisi in tempi discreti (trasformate z);
Continuous, elementi di libreria per l'analisi nel continuo (trasformate di Laplace);
Discontinuities, elementi di libreria non lineari, come relay, zone morte, etc.;
Math Operations, blocchi matematici e logici;
Look-Up Tables, blocchi rappresentanti tavole ad una o piu dimensioni che vengono interpolate;
Signals Routing, elementi per trasformare piu scalari in un vettore (e viceversa), deviatori;
User Defined Functions, per chiamare funzioni create dall'utente in C o Fortran o MATLAB.
Librerie: continuous (1)
Questo blocco effettua la derivata numerica del
segnale di ingresso. Ad ogni passo la derivata è
calcolata utilizzando il rapporto incrementale
rispetto al valore precedente, in presenza di un
passo di campionamento ampio i risultati potrebbero
essere non precisi.
Librerie: continuous (2)
Integrator: calcola l’integrazione tempo continua del segnale di ingresso, stabilite le
condizioni iniziali ed eventuali limiti superiore ed inferiore di saturazione.
Transfer Fnc: espressione per la funzione di trasferimento, in cui il numeratore viene
rappresentato da una matrice e il denominatore da un vettore. Il numero delle uscite
eguaglia il numero delle righe della matrice al numeratore, i cui elementi sono i
coefficienti del polinomio secondo potenze decrescenti di s. Anche il vettore al
denominatore rappresenta i coefficienti del polinomio secondo potenze decrescenti di
s.
State-Space: modello nello spazio degli stati. Occorre inserire le matrici del modello
(A,B,C,D) e le relative condizioni iniziali.
Zero-Pole: funzione Guadagno, Zeri e Poli. Gli zeri vengono rappresentati da una
matrice, mentre i poli da un vettore. Il numero delle uscite coincide con il numero delle
colonne della matrice degli zeri.
Derivative: effettua la derivata numerica dell’ingresso.
Memory: rappresenta un ritardo di durata unitaria. L’uscita coincide con il valore
assunto precedentemente dall’ingresso. Occorre specificare le condizioni iniziali.
Transport Delay: ritarda di una quantità specificata il segnale di ingresso. Il ritardo
deve essere più grande del passo utilizzato nella simulazione.
Variable Transport Delay: ritarda il primo segnale di ingresso di una quantità
specificata dal secondo ingresso. Il ritardo deve essere più grande del passo utilizzato
nella simulazione.
Librerie: sources (1)
Contiene i
blocchi in grado
di produrre i
segnali di
forzamento in
input ai sistemi
Librerie: sources (2)
Constant: genera un valore costante programmabile.
Signal Generator: generatore di segnali sinusoidali, onde quadre, denti di sega e segnali casuali. Si possono impostare ampiezza e frequenza.
Step: genera un gradino di ampiezza prefissata, specificando il valore iniziale e quello finale.
Sine Wave: genera un’onda sinusoidale di ampiezza, frequenza e fase determinate.
Repeating Sequence: ripete una sequenza di valori e ad istanti predeterminati.
Discrete Pulse Generator: genera impulsi ad intervalli regolari, specificando l’ampiezza, il periodo e ritardo di fase come interi multipli del tempo di campionamento.
Pulse Generator: genera impulsi, specificando il periodo in secondi, il duty cicle (percentuale del periodo), l’ampiezza e l’istante di partenza.
Chirp Signal: genera un segnale sinusoidale con frequenza crescente. Si devono specificare la frequenza iniziale e dopo quanti secondi deve essere raggiunta una certa frequenza predeterminata.
Clock: generatore della base dei tempi.
Librerie: sources (3)
Digital Clock: genera il tempo di simulazione secondo il tempo di campionamento impostato. Durante il periodo di campionamento vengono mantenuti i valori della simulazione fino al successivo istante di campionamento.
From File: legge il contenuto di una matrice specificata dal <file>.mat. La prima riga della matrice deve contenere i valori degli istanti di campionamento e in quelle successive sono memorizzati i corrispondenti valori delle uscite.
From Workspace: legge i valori specificati in una matrice presente nel WorkSpace di MATLAB. La matrice deve contenere nella prima colonna i valori corrispondenti agli istanti di campionamento. Le successive colonne rappresentano i valori delle uscite.
Random Number: genera valori con distribuzione normale gaussiana, dati il valore medio, la varianza e un valore iniziale per il seme.
Uniform Random Number: genera numeri aventi distribuzione uniforme tra due valori prefissati. Si deve specificare anche il seme.
Band-Limited White Noise: genera rumore bianco per sistemi continui. Si specifica la potenza del rumore, istante di campionamento e il seme.
Librerie: sinks (1)
Contiene i blocchi in grado di
visualizzare e memorizzare i segnali
Librerie: sinks (2)
Scope: visualizza in funzione del tempo il segnale di ingresso applicato.
XY Graph: visualizza un grafico (x,y) utilizzando la finestra grafica di MATLAB. Il primo ingresso corrisponde all’ascissa del grafico e generalmente coincide con la base dei tempi. Si possono introdurre i valori del range del grafico.
Display: display numerico dei valori dell’ingresso. Si specifica il formato del parametro da visualizzare.
To File: salva gli ingressi applicati all’interno di una matrice in un file <untitled>.mat. Si specifica il nome del file e il nome della variabile. I valori vengono salvati per righe. La prima riga della matrice contiene la base dei tempi.
To Workspace: vengono scritti gli ingressi applicato nel WorkSpace di MATLAB. La matrice ha una colonna per ciascun ingresso ed una riga per ogni istante della simulazione. Il dato si perde se la simulazione viene interrotta o messa in pausa. Si specifica il nome della variabile di ingresso e il massimo numero di righe.
Stop: arresta la simulazione quando l’ingresso applicato è diverso da zero.
Librerie: math operations (1)
Librerie: math operations (2)
Sum: effettua la somma o la differenza degli ingressi. Si deve inserire la lista dei
segni con cui ogni ingresso entra nel blocco.
Poduct: Moltiplica o divide gli ingressi. Occorre specificare il numero degli
ingressi.
Dot Product: effettua il prodotto (prodotto scalare) elemento per elemento degli
ingressi u1 e u2 secondo l’espressione y=sum (u1.*u2).
Gain: guadagno scalare o vettoriale. Si imposta il guadagno k e il blocco calcola
l’uscita y dato l’ingresso u secondo l’espressione y= k*u.
Slider Gain: guadagno regolabile tra un valore superiore ed uno inferiore.
Matrix Gain: restituisce in uscita l’ingresso moltiplicato per una matrice
predefinita.
Math Function: implementa funzioni matematiche come quelle logaritmiche,
esponenziali, potenze e modulo.
Trigonometric Function: implementa diverse funzioni trigonometriche ed
iperboliche: sin, cos, tan, asin, acos, atan, atan2, sinh, cosh e tanh.
MinMax: restituisce il minimo od il massimo dell’ingresso. Prevede la scelta del
numero degli ingressi e quale operazione deve essere svolta su ogni ingresso.
Librerie: math operations (2)
Abs: dato l’ingresso u, calcola l’uscita y = |u|.
Sign: signum. Restituisce il valore 1 se l’ingresso è positivo, -1 per ingresso
negativo e 0 per ingresso nullo.
Rounding Function: contiene le operazioni di arrotondamento: floor, ceil, round
e fix.
Combinatorial Logic: ricerca gli elementi specificati nel vettore d’ingresso
(trattati come valori booleani) nella tabella della verità impostata e restituisce le
righe della tabella della verità stessa.
Logical Operator: effettua una operazione logica per un prefissato numero di
ingressi: AND, OR, NAND, NOR, XOR, NOT. Per un singolo ingresso,
l’operazione iene effettuata tra tutti i valori dell’ingresso memorizzati in un
vettore. Per ingressi multipli, l’operazione logica viene eseguita sugli elementi dei
diversi vettori di ingresso che occupano la stessa posizione.
Relational Operator: effettua confronti tra gli ingressi: ==, =, >, >=, < e <=.
Algebraic Constrain: vincola il segnale d’ingresso f(z) a zero e restituisce il
corrispondente valore algebrico z .Quindi il blocco fornisce il valore z tale per cui
f(z)=0. L’uscita deve influenzare l’ingresso attraverso una certa retroazione.
Occorre fornire un valore di tentativo per z.
Librerie: ricerca
Il sistema migliore per trovare un blocco,
noto il suon nome, consiste nel digitare il
nome nel panello Find di Library Browser
Modello SIMULINK
Per creare nuovo modello basta cliccare sull’icona in alto a sinistra
Si apre la finestra nella quale si può
creare il nuovo modello.
Per aggiungere un blocco, basta cliccare
sull’icona e trascinarlo tendendo premuto
il pulsante di mouse.
Schemi di simulazione (1)
I modelli di SIMULINK vengono sviluppati costruendo un diagramma
che illustra gli elementi del problema da risolvere. Tali diagrammi
sono detti schemi di simulazione o diagrammi a blocchi.
Consideriamo l’equazione:
La soluzione può essere rappresentata simbolicamente come:
Può anche essere rappresentata in due passaggi, utilizzando una
variabile intermedia x:
Questa soluzione può essere rappresentata graficamente dal
diagramma a blocchi:
' 10 ( )y f t
( ) 10 ( )y t f t dt
( ) 10 ( ) ( ) ( ) x t f t y t x t dt
10 ∫ f(t) x(t) y(t)
Schemi di simulazione (2)
In SIMULINK il processo di moltiplicazione è rappresentato da un
triangolo simile a quello utilizzato per rappresentare un amplificatore
elettrico, da qui il nome di blocco amplificatore o guadagno (gain).
In simbolo di integrazione nel blocco integratore è stato sostituito
dall’operatore 1/s, che deriva dalla notazione nelle trasformate di
Laplace.
f x y 1
s10
Trasformate di Laplace
La trasformata di Laplace serve a convertire un’equazione
differenziale lineare in un’equazione algebrica. Manipolando
opportunamente le grandezze risultanti, la soluzione di un’equazione
differenziale può essere ottenuta invertendo il processo di
trasformazione per ottenere una funzione del tempo.
La trasformata di Laplace di una funzione y(t) è definita come:
L’integrale elimina t come variabile, quindi la trasformata è una
funzione soltanto della variabile s, che può essere numero
complesso.
L’integrale esiste per la maggior parte delle funzioni più comuni, se
vengono imposti dei vincoli opportuni alla variabile s.
0
( ) ( )
stL y t y t e dt
Esempio I (1)
Risolviamo il seguente problema con 0≤t≤13:
La soluzione esatta è
Per creare lo schema di simulazione bisogna seguire questo
procedimento:
1. Inserire nella nuova finestra modello il blocco Sine Wave dalla libreria
Sources. Fare doppio clicc su di esso per aprire Block Parameters;
verificare che Amplitude sia imposto a 1, Frequency a 1, Phase a 0 e
Sample time a 0.
2. Inserire il blocco Gain dalla libreria Math Operations; impostare Gain a
10 nella finestra Block Parameters. Il valore 10 viene visualizzato
all’interno del triangolo.
3. Inserire blocco Integrator dalla libreria Continuous; impostare Initial
conditions a 0.
( ) 10(1 cos )y t t
'( ) 10sin (0) 0 y t t y
Esempio I (2)
4. Inserire il blocco Scope dalla libreria Sinks.
5. Una volta disposti i blocchi collegare la porta di input di ogni blocco alla
porta di output del blocco precedente.
6. Selezionare Configuration
parameters dal menu
Simulations e fare clic
sulla scheda Solver,
digitare 13 per Stop time.
7. Eseguire simulazione
facendo clic sul menu
Simulation e selezionare
Run (un triangolo verde).
8. Fare doppio clic su blocco
Scope per vedere il
risultato
Esempio I (3)
Esempio I (4)
Warning: Using a default value of 0.26 for maximum
step size. The simulation step size will be equal
to or less than this value. You can disable this
diagnostic by setting 'Automatic solver parameter
selection' diagnostic to 'none' in the Diagnostics
page of the configuration parameters dialog
Auto in max step size significa:
max
130.26
50 50
stop startt th
Metodi di integrazione numerica
SIMULINK possiede diversi metodi di integrazione, sia a passo fisso che a passo variabile.
Metodi a passo variabile
ode45 (default) non appropriato per sistemi stiff (Runge Kutta 4,5)
ode23 piùv eloce, ma meno preciso di ode45, anche per stiff
ode113 per soluzioni accurate, ma più lento
ode15s efficiente per sistemi stiff
ode23s meno preciso, ma più efficiente del precedente
ode23t per sistemi moderatamente stiff
ode23tb meno preciso di ode15s
discrete (default) per sistemi discreti
Metodi a passo fisso
ode5 (default) versione a passo fisso della ode45
ode4 Metodo di RungeKutta del 4 ordine
ode3 versione a passo fisso della ode23
ode1 metodo di Eulero
Parametri della simulazione (1)
L’utente deve definire:
Istanti di inizio e fine della simulazione;
Tipo di solutore numerico (se il problema richiede metodi particolari);
Parametri del solutore.
Parametri della simulazione (2)
Start time istante di inizio
Stop time istante di fine
Type metodo a passo fisso o a passo mobile
In presenza di un metodo a passo variabile:
Max step size: è la massima ampiezza del passo di integrazione. Se è
auto allora è1/50 dell’intervallo di integrazione. Occorre fissarlo minore di 0.1 tmax.
Min step size: è la minima ampiezza del passo di integrazione.
Occorre fissarlo minore di 0.01 tmin.
Relative tolerance e Absolute tolerance: definiscono il
massimo errore relativo e assoluto.
In presenza di un metodo a passo fisso:
Fixed step size: è l’ampiezza del passo di integrazione. Il valore di
default auto è pari ad un cinquantesimo dell’intervallo di integrazione.
SIMULINK lanciato da MATLAB
Un programma SIMULINK può essere lanciato da uno script o una
function (m-file).
I vantaggi consistono nel settaggio di tutte le variabili nello script
stesso:
La sintassi è molto semplice: nel nostro caso se salviamo il modello
creato come “modello.mdl” lo script MATLAB dovrà contenere il
seguente comando:
>> [T,X]=sim('modello',[0 13])
O più in generale:
>>[T,X,Y]=sim(‘modello',Timespan,options,UT)
Esempio II
Esportare una simulazione nel workspace
Per esportare i risultati della
simulazione del workspace bisogna
modificare il modello creato:
1. Selezionare e inserire il blocco To Workspace dalla libreria Sinks. Si può
specificare (facendo doppio click) qualsiasi nome di variabile come output: la variabile di default è simout.
2. Dopo avere eseguito la simulazione
si può utilizzare i comandi grafici di
MATLAB per rappresentare in un diagramma le colonne di y (o simout):
plot(y.Time,y.Data)
1. y.signals.values
Esempio III
Uso di sommatore
Un altro elemento utilizzato spesso negli schemi di simulazione è il
sommatore che, nonostante il nome, serve a sottrarre oltre che a
sommare le variabili.
Consideriamo l’equazione:
Partendo dal modello precedente
occorre aggiungere un blocco Sum
dalla libreria Math Operations:
1. Per default, vengono aggiunti due segnali di input. Per cambiarli, bisogna
fare doppio clic su blocco e digitare |+- nella finestra List of Sigs. I segni sono
ordinati in senso antiorario partendo dall’alto. Il simbolo | serve a indicare che la
porta superiore deve essere vuota.
2. Per invertire la direzione del blocco Gain fare clic su di esse e selezionare
Rotate/Flip
' 10 ( ) (0) 1
( ) 2sin 4 0 3
y y f t y
f t t t
Top Related