Introduzione a MATLAB®

30
Introduzione a SIMULINK 16/12/2013 Katarzyna Bizon [email protected]

Transcript of Introduzione a MATLAB®

Page 1: Introduzione a MATLAB®

Introduzione a SIMULINK 16/12/2013

Katarzyna Bizon

[email protected]

Page 2: Introduzione a MATLAB®

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.

Page 3: Introduzione a MATLAB®

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

Page 4: Introduzione a MATLAB®

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)

Page 5: Introduzione a MATLAB®

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.

Page 6: Introduzione a 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.

Page 7: Introduzione a MATLAB®

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.

Page 8: Introduzione a MATLAB®

Librerie: sources (1)

Contiene i

blocchi in grado

di produrre i

segnali di

forzamento in

input ai sistemi

Page 9: Introduzione a MATLAB®

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.

Page 10: Introduzione a MATLAB®

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.

Page 11: Introduzione a MATLAB®

Librerie: sinks (1)

Contiene i blocchi in grado di

visualizzare e memorizzare i segnali

Page 12: Introduzione a MATLAB®

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.

Page 13: Introduzione a MATLAB®

Librerie: math operations (1)

Page 14: Introduzione a MATLAB®

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.

Page 15: Introduzione a MATLAB®

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.

Page 16: Introduzione a MATLAB®

Librerie: ricerca

Il sistema migliore per trovare un blocco,

noto il suon nome, consiste nel digitare il

nome nel panello Find di Library Browser

Page 17: Introduzione a MATLAB®

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.

Page 18: Introduzione a MATLAB®

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)

Page 19: Introduzione a MATLAB®

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

Page 20: Introduzione a MATLAB®

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

Page 21: Introduzione a MATLAB®

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

Page 22: Introduzione a MATLAB®

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

Page 23: Introduzione a MATLAB®

Esempio I (3)

Page 24: Introduzione a MATLAB®

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

Page 25: Introduzione a MATLAB®

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

Page 26: Introduzione a MATLAB®

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.

Page 27: Introduzione a MATLAB®

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.

Page 28: Introduzione a MATLAB®

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)

Page 29: Introduzione a MATLAB®

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

Page 30: Introduzione a MATLAB®

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