Sei sulla pagina 1di 79

Universit degli studi di Catania

Facolt di ingegneria Dipartimento di ingegneria


industriale e meccanica
Ing. Antonio Pellegrino
INTRODUZIONE A SIMULINK
COSE SIMULINK?
Simulinkl'ambiente di programmazione grafico associato a 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 l'utente di
crearne di nuovi, eventualmente anche programmati in linguaggio MATLAB o
in altri linguaggi come il linguaggio C.
COSE SIMULINK?
Un ingegnere moderno deve possedere, tra laltro, anche la capacit di progettare e realizzare
sistemi di controllo automatico utilizzando, tra laltro, come strumenti di lavoro, software di
sviluppo quali MATLAB/Simulink.
Laprogettazione delle logicadi controllo attraverso MATLAB/Simulink rappresentala fase che
precede (solo per fare un esempio) lo sviluppo delle centraline elettroniche per applicazioni
automotive e la successiva implementazione del sistema reale. Tipici sistemi meccanici
controllati in retroazione per applicazioni automotive sono il controllo dellastabilit(ESP) e il
sistemaanti bloccaggioinfrenata(ABS)
Naturalmente esistono innumerevoli altre applicazioni nel campo della robotica,
dellautomazione industriale, del controllo dei parametri ambientali che garantiscono il
benesserenellambitodellaclimatizzazione.
COSE SIMULINK?
Simulink un applicativo costruito utilizzando i comandi di Matlab
Vantaggi:
Interfacciagrafica
Blocchi predefiniti solamente da connettere
Elevata flessibilit nella variazione del progetto
Riduzione dei tempi di progetto
Riduzione dei costi rispetto a un test pratico
Per accedere a simulinkbasta digitare simulinknella commandwindowdi MATLAB
ACCEDERE A SIMULINK
Oppure cliccare sullapposita icona in alto nella schermata iniziale di MATLAB
Cliccare licona nuovo modello nellangolo in
alto a sinistra per aprire un nuovo file Simulink
Selezionare licona Simulinkper ottenere gli
elementi del modello
ACCEDERE A SIMULINK
Allavvio si distinguono due
parti:
- le librerie
-il workspace
GETTING STARTED
WithSimulink
Nellelibreriesonopresenti i blocchi elementari cheutilizzereteper lesercitazione
Nel workspacesi costruisceil modellointerconnettendoi blocchi presi
dallalibrerie
I vari elementi si portano nel workspacesemplicemente trascinandoveli dentro come se
fossero icone
Per poter variare i parametri di un blocco occorre prima trascinarlo nel workspace.
Facendo doppio click sullicona trascinata nel workspacesi apre una maschera che ci
consente di impostare i parametri che caratterizzano il segnale
GETTING STARTED
WithSimulink
Vi sono svariate librerie; nellambito della nostra
esercitazione verranno utilizzati principalmente
le seguenti:
Sources: Blocchi chegenerano
segnali di variogenere
Sinks: Blocchi per la visualizzazione
graficadei segnali
Math: Blocchi per lelaborazione
matematicadei segnali
Continuous: Blocchi checi consentono,
Tra laltro di effettuare operazioni di integrazione
E derivazione nel tempo
GETTING STARTED
WithSimulink 1esempio familiare
Aprendo la finestra Help, quindi
Simulink Help ed in seguito Product
Demos apparir una collezione di esempi
di vario genere che possono aiutarci a
comprendere le potenzialit del software
che andremo a utilizzare
GETTING STARTED
WithSimulink 1esempio familiare
Tra i vari esempi che vengono proposti selezionare
modelingananti-lock BrakingSystem allinterno di
Automotiveapplicationse cliccando due volte col
mouse
GETTING STARTED
WithSimulink 1esempio familiare
Facendo partire la simulazione si otterranno i seguenti risultati
rappresentati graficamente :
GETTING STARTED
WithSimulink 1esempio familiare
Provando a disconnettere il blocco Ctrl possibile, analizzando un sistema
di frenatura sprovvisto di ABS , visualizzare gli effetti del sistema anti-
bloccaggio in termini di tempo di frenata e di bloccaggio delle ruote
GETTING STARTED
WithSimulink 1esempio familiare
Provando a disconnettere il blocco Ctrl possibile, analizzando un sistema
di frenatura sprovvisto di ABS , visualizzare gli effetti del sistema anti-
bloccaggio in termini di tempo di frenata e di bloccaggio delle ruote
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Dopo avere introdotto il software iniziamo ad utilizzarlo procedendo alla
soluzione di una classica equazione differenziale del secondo ordine,
analizzando la risposta ad una sollecitazione esterna di uno tra i pi classici
sistemi meccanici, unsistemamassa-molla-smorzatore:
Applicando la prima legge della dinamica o legge di Newton, lequilibrio
delle forze cui sottoposto il sistema il seguente:
M
F kx x r x M = + +
- - -
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Consideriamo le due variabili di stato posizione e
velocit:
x x =
1
-
= x x
2
|
.
|

\
|
=
- - -
x k x r F
M
x
1
Si pu dunque scrivere lequazione di moto del
sistema risolvendo rispetto allaccelerazione
|
.
|

\
|
=
- -
1 2 2
1
x k x r F
M
x
Si vuole studiare il sistema con condizioni iniziali nulle (il carrello nella
posizione di riferimento x1=x=0 con velocit nulla x2=x=0), quando ad esso
sottoposta una forza costante di 50N a partire dallistante di tempo t=0. Si assuma
M=1kg, B=4Ns/m e K=20N/m.
(1)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Per rappresentare graficamente in Simulink il modello meccanico a parametri
concentrati appena descritto interpretiamo la (1) ottenendo laccelerazione
per mezzo di sommatorie , i cui ingressi sono combinazioni, tramite
opportuni guadagni della forza F e delle variabili velocit e posizione
retroazionate.
Queste ultime vengono ottenute rispettivamente, la prima dallaccelerazione per
mezzo di un semplice blocco integratore e la seconda dalla velocit integrando
nel tempo ancora una volta
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
velocit spostamento
Costante della molla
smorzamento
1/massa
accelerazione
Forza
Come si vede chiaramente la lo schema a blocchi Simulink sopra non altro che
la trasformazione in ambiente grafico dellequazione differenziale:
|
.
|

\
|
=
- - -
x k x r F
M
x
1
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Osserviamo pi in dettaglio i vari blocchi coinvolti:
BLOCCO STEP
Si trova allinterno della libreria SOURCES in quanto si tratta di
un segnale sorgente.
La libreria SOURCES contiene tra laltro segnali di
tipo sinusoidale, costanti, pulsanti, a dente di
sega e di tipo rampa
Consiste nel fornire un segnale di tipo gradino
Cio nel fornire un segnale che da un certo valore
si porta in maniera istantanea ad un altro
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO STEP - PARAMETRI
Istante di tempo in cui si verifica il gradino
Valore iniziale della funzione
valore finale della funzione
Tempo di campionamento
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
E possibile creare, anzich un solo segnale di step, una serie di pi gradini agenti
in contemporanea.
tale funzione risulta utile se, ad esempio, si vuole conoscere la risposta del
sistema per diverse funzioni gradino aventi ampiezza diversa.
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Selezionare questa opzione permette di rilevare esattamente
listante in cui avviene una discontinuit. Ad esempio se si sta
simulando il moto di una palla che rimbalza, laver
selezionato questa opzione assicura che nella simulazione
compaia listante in cui la palla incontra il terreno ed inverte il
suo moto. Se non selezionato Enable- zero crossing i
risultati della simulazione potrebbero essere falsati e, ad
esempio, potrebbe aversi limpressione che la palla inverta il
suo moto a mezzaria.
(ulteriori informazioni possono ottenersi richiamando lHelp)
RISOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO SOMMATORE
Si trova allinterno della libreria Math
Operations
La libreria Mathoperations(libreria che
contiene tutti i blocchi che servono ad
effettuare lelaborazione matematica dei
segnali) contiene, tra le altre funzioni i
blocchi valori assoluto, moltiplicatore,
esponenziale, blocchi per lelaborazione dei
numeri complessi etc.
Permette di sommare o sottrarre uno o pi
segnali sia di tipo costante che di tipo
variabile nel tempo
RISOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO SOMMATORE - PARAMETRI
Forma del blocco : circolare o
rettangolare . Da scegliere in base alla
zona in cui sono collocati i segnali di
provenienza nel workspace
sequenza dei segni (nel caso in esame
+--)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO GAIN
Si trova allinterno della libreria Math
Operations
Si trova, come il blocco sommatore all
interno della libreria Math Operations
Permette, come risulta chiaro dal nome
stesso del blocco, di amplificare o ridurre
un determinato segnale
Nel caso pi semplice di ingresso
monodimensionale e gain
monodimensionale il risultato una
semplice moltiplicazione
RISOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO GAIN
Risultato del blocco gainper un ingresso a
gradino unitario ed un guadagno pari a 50
(caso pi semplice, input e gain1x 1
(semplici valori numerici))
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO GAIN
Risultato dellapplicazione di un blocco gain su un vettore di 3 elementi gradino e un vettore di 3 elementi
guadagno. Prodotto segnale guadagno elemento per elemento (Element wiseK.*u)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO GAIN
Risultato dellapplicazione di un blocco gain su un vettore di 3 elementi gradino e un vettore di 3 elementi
guadagno. Prodotto segnale guadagno elemento per elemento (Element wiseK.*u)
RISOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO GAIN
Risultato dellapplicazione di un blocco gain su un vettore di 3 elementi gradino e un vettore di 3 elementi
guadagno. Prodotto segnale guadagno riga per colonna input per gain (matrixu*K)
RISOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO GAIN
Risultato dellapplicazione di un blocco gain su un vettore di 3 elementi gradino e un vettore di 3 elementi
guadagno. Prodotto segnale guadagno riga per colonna input per gain (matrixu*K)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO SCOPE
Si trova allinterno della libreria Sinks
La libreria Sinks contiene tra laltro il
blocco chepermettedi esportaresegnali da
un subsystem allesterno, il blocco che
permettedi interromperelasimulazioneei
blocchi cheinterfacciano i segnali in uscita
da simulink con il workspace e con
eventuali filesesterni
Il blocco Scope mostra landamento dei
suoi input rispettoal tempo.
Pu avere assi multipli , uno per porta.
Tutti gli assi hanno in comune lo stesso
rangedi valori del tempo nellassexmentre
gli assi ysonoindipendenti.
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO SCOPE
Blocco scope con assi
multipli (2 porte) di
cui uno contenente
landamento di due
segnali in input
Lo Scope ti permette di modificare la quantit di tempo di simulazione esaminata
ed il rangedi valori da visualizzare. possibile spostare e modificare le dimensione
della finestra Scope cos come i parametri dello Scope durante la simulazione.
Quando viene iniziata una simulazione Simulink non apre lo scope nonostante
scriva ugualmente i dati allinterno degli scope collegati. Di conseguenza, se si apre
un blocco scope (cliccandoci sopra dopo una simulazione) il segnale/i di input
vengono rappresentati
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Se il segnale continuo lo scope produce un grafico continuo. Se invece il segnale
discreto il blocco Scope produce inveceunsegnale a scalini.
Lo scope provvisto di una barra degli strumenti che permette di zoomare particolari
zone dei dati registrati, di salvare i dati nello workspaceper elaborarli in MATLAB, di
limitare i dati mostrati, di conservare le impostazioni degli assi da una simulazione
allaltra.
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Vediamo adesso come si fa ad inviare i dati registrati dallo scope allo workspacein
maniera da poterli salvare sotto forma di diagrammi che possibile consultare
anche senza il bisogno di avviare nuovamente la simulazione.
Cliccare su parameters nello Scopepoi nella finestra Data
Historyselezionare SaveData toworkspacee dare un nome
alla variabile da memorizzare (Format: structurewith time)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
A questo punto occorre aprire il workspacedal menu a tenda Desktop
cliccare sulla variabile prova memorizzata
cliccare su timee quindi sullicona plot (bianca e blu)
Quindi cliccare due volte su signalse successivamente su
values
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
A questo punto apparir il grafico desiderato che possibile elaborare e salvare tramite
le apposite barre degli strumenti di MATLAB (inserire titolo, label assi, cambiare font ,
colori, etc)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
A questo punto apparir il grafico desiderato che possibile elaborare e salvare tramite
le apposite barre degli strumenti di MATLAB (inserire titolo, label assi, cambiare font ,
colori, etc)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
A questo punto apparir il grafico desiderato che possibile elaborare e salvare tramite
le apposite barre degli strumenti di MATLAB (inserire titolo, label assi, cambiare font ,
colori, etc)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO INTEGRATORE
Si trova allinterno della libreria Continuos
LalibreriaContinuoscontienetralaltroil
blocco di derivazione ed i blocchi di
traslazione temporale (in ritardo) dei
segnali continui
Il bloccointegratoreforniscelintegrale
del suoinput allistantedi tempo
La seguente equazione rappresenta
loutput del blocco integratore come
funzione della funzione di input e della
condizioneinizialeyo
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO INTEGRATORE Imposizione della condizione iniziale
Parametri del blocco integratore
Effetto del blocco integratore:
accelerazione e velocit del sistema
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO MUX
Si trova allinterno della libreria Signal Routing
LalibreriaSignal Routingcontiene, tragli altri,
i blocchi GoToeFrom, il bloccoDemux, il blocco
switch
Il blocco MUX permette di combinare i suoi
input e di creare un solo output sotto forma di
vettore. Tutti gli input devonoesseredellostesso
tipo e devono appartenere alla stessa tipologia
numerica(doubleuint8etc.)
Gli elementi del segnale di Output vengono
ordinati dallalto in basso oppure da sinistra a
destra, secondoleportedi ingresso
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
COMMENTI DEI RISULTATI
In figura riportato il risultato della
simulazione per il sistema massa-molla
oggettodel nostroprimoesempio. Si vede
chedopo unapiccolaebreveoscillazione
il carrello si ferma a circa 4 metri dalla
posizioneiniziale(posizionex=4, in viola
evelocitugualeazero, ingiallo)
Risposta del sistema a diversi
valori del segnale gradino che
costituisce la forza
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO RAMP
Si trova allinterno della libreria SOURCES
inquantosi trattadi unsegnalesorgente.
Il bloccoRAMP generaunsegnalecheinizia
in un determinato istante di tempo e ad un
determinato valore e cambia con una
determinatavelocitdaspecificare
I parametri del blocco Slope, Start Time e
initial output determinano le caratteristiche
del segnaleinuscita.
Il blocco RAMP fornisce segnali di tipo
double.
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO RAMP PARAMETRI E FINESTRA DI DIALOGO
SLOPE la velocit di variazione del
segnale generato. Di default pari a uno.
START TIME Listante di tempo al quale
il segnale comincia ad essere generato. Di
default pari a 0
INITIAL VALUE Il valore iniziale del
segnale. Il valore di default pari a zero.
I segnali del blocco RAMP possono essere combinati tra loro e con altre forme di
segnale. In questo modo possono essere create svariate forme di input permettendo
cos di analizzare la risposta di un qualsivoglia sistema in analisi a differenti forzanti.
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO RAMP
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCHI GO TO E FROM
Si trovano allinterno della libreria Signal Routing
in cui contenuto anche il blocco MUX visto in
precedenza
Il bloccoGoTopermettedi passareil suoinput
ai suoi corrispondenti blocchi From. I blocchi
GoToeFrompermettonodi passareunsegnale
daunbloccoadunaltrosenzaconnetterli
effettivamentetraloro. UnbloccoGoTopu
passareil suosegnaledi input apidi unblocco
Frommentreil bloccoFrompuriceveresegnali
solodaunbloccoGoTo.
Linput al bloccoGoTovienepassatoai blocchi
Fromassociati comesequesti fosserofisicamente
connessi.
I blocchi Go To e i blocchi From sono legati
tramitei GoToTags
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCHI GO TO E FROM
Il parametro Tagvisibilitydetermina la
posizione dei blocchi fromaffinch
possa avvenire laccesso ai segnali inviati
dai blocchi from:
locale significa che i blocchi Go Toe
i blocchi fromche utilizzano lo stesso
tagdevono appartenere allo stesso
subsystem.
scoped significa che i blocchi Go To
e Fromcon lo stesso nome devono
appartenere allo stesso subsystem
oppure a qualsiasi livello della gerarchia
del modello che sia al di sotto del blocco
Go To
global - Significa che i blocchoGo To
e i blocchi Fromcon lo stesso nome
possono essere ovunque nel modello
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCHI GO TO E FROM UN SEMLICE ESEMPIO
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCHI GO TO E FROM UN SEMLICE ESEMPIO
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO FCN
Si trova allinterno della libreria user defined
functionsallinterno della quale si trovano tutti i
modi attraverso i quali definire funzioni di tipo
personalizzato
Il bloccoFCNpermettedi applicarelefunzioni
matematichespecificateai suoi input.
Lespressionepuessereformatada:
- u, linput del blocco. Seuunvettoreu(i)
rappresentaliesimoelementodel vettore. u(1)
oppuresolourappresentail primoelemento
- costanti numeriche
- operatori aritmentici
- Parentesi
- funzioni matematiche abs, acos, asin, atan, atan2,
ceil, cos, cosh, exp, fabs, floor, hypot, ln, log, log10,
pow, power, rem, sgn, sin, sinh, sqrt, tan, andtanh.
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
BLOCCO FCN
Lespressione differisce da una
espressione MATLAB per il fatto che
non pu eseguire calcoli matriciali.
Linput del blocco pu essere uno
scalareoun vettore, Loutput sempre
unoscalare.
Se linput del blocco un vettore e la
funzione agisce sugli elementi in
ingresso individualmente (ad esempio
la funzione seno) il blocco opera solo
sul primoelementodel vettore.
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
EMBEDDED MATLAB FUNCTIONS
Si trovaallinternodellalibreriauser defined
functionsallinternodellaqualesi trovanotutti i
modi attraversoi quali definirefunzioni di tipo
personalizzato.
Permette di comporre una funzione MATLAB
allinternodi Simulink equindi di crearedellefunzioni
personalizzate (in quanto create dallutente) che in
funzionedi unaopivariabili di input generanounoo
pi output attraverso la sequenza di calcoli e gli
algoritmi stabiliti dal programmatore
lutilizzo di una EMBEDDED MATLAB FUNCION
prevede la conoscenza, almeno basilare, di MATLAB,
per cui ai rudimenti di questo linguaggio di
programmazione/matematica si far cenno nelle
prossimeslide
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
EMBEDDED MATLAB FUNCTIONS
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Cliccando sulliconaNewM-Filedellabarradegli strumenti in alto asinistra
vienelanciato leditor di MATLAB con cui si possono scrivereesalvaredei file
funzione o degli script (sequenze di comandi MATLAB) richiamabili in un
secondomomento.
Il direttorio di default in cui MATLAB salva i filedellutente quello indicato
nellafinestraCurrentDirectory.
Aggiungendo un nuovo direttorio allalistadei direttori, MATLAB ricercai file
funzione ed i file script anche in quel direttorio. buona norma evitare di
salvarei propri filenel direttoriodi default al finedi manteneredistinti i singoli
progetti edargomenti di ricerca.
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Ci sono due generi di M-file:
Scripts che non accettano argomenti dentrata o argomenti di uscita. Loro operano su dati nel
workspace.
Functions che possono accettare argomenti dentrata e argomenti di uscita. Una variabile
interna `e locale alla funzione.
Le funzioni
Lefunzioni sonodegli M-filescheaccettanoargomenti di entrataefornisconorisultati inuscita. Il
nomedellafunzioneedellM-filedeveesserelostesso.
Lasintassi nelloscrivereun M-filedi tipofunzionelaseguente(primo rigodadigitaredurantela
scritturadel file)
function[uscita1,uscita2,uscita3] =nomefunzione(ingresso1,ingresso2);
FUNZIONI E SCRIPTS
CENNI DI MATLAB
Al momento di richiamare la funzione creata precedentemente (attraverso
leditor di MATLAB) occorre utilizzare la seguente sintassi:
[u1,u2,u3] = nomefunzione(valore1,valore2)
In cui u1,u2 ed u3 sono i nomi, arbitrari, che assegno alle variabili di uscita e
valore1,valore2 sono i dati numerici in input della funzione.
Per chiarezza si riportano in seguito dei semplici esempi di listato di funzione
e la maniera di richiamare questultima nella commandwindowdi MATLAB.
Naturalmente per ci che riguarda le funzioni MATLAB allinterno di
Simulink non occorrer richiamarle dalla commandwindowpoich la
funzione sar inserita come blocco allinterno della simulazione
Le funzioni
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Le funzioni - esempi
Si voglia adesso costruire una funzione che, dati i lati a e b di un rettangolo fornisca larea A, il
perimetro p e la diagonale d Il listato da digitare nelleditor il seguente:
function [ A , p , d ] =rettang ( a , b )
A = a * b;
p = 2 * ( a + b );
d =sqrt ( a^2 + b^2 );
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Le funzioni - esempi
al momentodi richiamarelafunzionenellafinestradei comandi occorrerdigitare, adesempio:
>>[g,e,f]=rettang(2,3)
I tre valori che costituiscono il vettore risultato saranno rispettivamente larea, il perimetro e la
diagonale del rettangolo avente i lati con lunghezze specificate tra parentesi tonde.
Gli Script
Quando si esegue uno script precedentemente creato, MATLAB esegue semplicemente
la sequenza di comandi inseriti nel listato. Anche se gli script, a differenza delle
funzioni, non forniscono dati in uscita linsieme delle variabili da essi create rimane nel
workspacee pu essere utilizzato per i calcoli successivi. Inoltre, inserendo allinterno
del listato i comandi opportuni (ad esempio plot) possibile produrre dei grafici.
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Gli scripts
Per poter inseriredei commenti allinterno di uno script (ad esempio dellespiegazioni sui
calcoli inseriti) occorresemplicementescrivereil testoprecedutodal simbolo% .
Si riportaunsempliceesempiodi script per il calcolodellindicedi massacorporea:
%sempl i ce scr i pt per i l l ust r ar e i l f unzi onament o
del l ' edi t or di MATLAB
di sp( ' DETERMI NAZI ONE DELL I NDI CE DI MASSA CORPOREA' )
di sp( ' gent i l ment e pot r est i di r mi quant o pesi ?' )
peso= i nput ( ' di gi t a i l t uo peso i n kg' )
di sp( ' gent i l ment e pot r est i di r mi quant o sei al t o/ a?' )
al t ezza=i nput ( ' gi gi t a l a t ua al t ezza i n met r i ' )
di sp( ' I NDI CE DI MASSA CORPOREA I MC' )
I ndi ceMC=peso/ al t ezza^2;
di sp( [ ' I ndi ceMC=' , num2st r ( I ndi ceMC) ] )
Il risultato nella finestra dei comandi il seguente:
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Gli scripts
Come pu vedersi nel listato dello script
sonopresenti unaprimarigadi commento
(in verde) ed i comandi disp e input che
permettono di far apparire scritte,
commenti e istruzioni nella finestra dei
comandi edi recepiredati ininput richiesti
allutente.
Il comando disp permette di visualizzare un
vettore o una matrice senza mostrare il nome
del vettoreounastringadi testo.
Ad esempio se si vuole fare apparire sulla
finestra dei comandi la frase mi piace
esercitarmi con MATLAB sar sufficiente
digitareallinternodelleditor di MATLAB:
disp(mi piaceesercitarmi conMATLAB)
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Gli scripts
La sintassi da utilizzare dunque, in questo caso la seguente:
se invece si vuole utilizzare il comando dispper visualizzare un risultato memorizzato su
una variabile occorrer utilizzare allinterno delleditor di MATLAB la seguente sintassi:
disp(variabile)
Oppure
disp(['variabile=',num2str(variabile)])
Il comando input richiede un input da parte dellutente e serve ogni qual
volta si vuole far si che un determinato valore di variabile sia assegnato
manualmente da chi opera nella commandwindow. La sintasisda utilizzare
la seguente:
variabile = input('richiesta variabile')
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Gli scripts
Il comandonum2str convertenumeri omatrici nellalororappresentazionestringa. Digitando:
num2str(variabile)
si converte una matrice (o un numero) nella sua rappresentazione stringa con circa 4 cifre di
precisioneedunesponenteserichiesto.
Il comando
num2str(a,6)
convertelavariabileainunarappresentazionestringaconunmassimodi 6cifredi precisione.
Esempio:
>>num2str(rand(2,2),3)
ans =
0.815 0.127
0.906 0.913
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Costrutto if
La struttura if valuta un espressione logica che esegue un gruppo di asserzioni
quandolespressioneverificata.
elseif esegueunaltro gruppo di comandi quando altreespressioni logicheopzionali
sonoverificate.
else stabilisce quali comandi eseguire qualora nessuna delle espressioni logiche
presenti inif edelseif siaverificata.
Unakeyword end terminalultimo gruppo di asserzioni. I gruppi di asserzioni sono
delineati daquattrokeywords, nonsonoprevisteparentesi.
Il semplicecostrutto if contenuto nellesempio seguenteillustraperfettamente
il mododi operareconquestastruttura:
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
%sempl i ce scr i pt per i l l ust r ar e i l f unzi onament o del l ' edi t or di MATLAB
di sp( ' DETERMI NAZI ONE DELL I NDI CE DI MASSA CORPOREA' )
di sp( ' gent i l ment e pot r est i di r mi quant o pesi ?' )
peso= i nput ( ' di gi t a i l t uo peso i n kg' )
di sp( ' gent i l ment e pot r est i di r mi quant o sei al t o/ a?' )
al t ezza=i nput ( ' gi gi t a l a t ua al t ezza i n met r i ' )
i f al t ezza >= 1. 80
di sp( ' compl i ment i , al t ezza mezza bel l ezza' ) ;
el sei f al t ezza >=1. 60 && al t ezza <1. 80
di sp( ' ok, sei per f et t ament e nel l a nor ma' ) ;
el se
di sp( ' mi di spi ace ami co, pot evi nascer e un p pi al t o' ) ;
end
di sp( ' I NDI CE DI MASSA CORPOREA I MC' )
I ndi ceMC=peso/ al t ezza^2;
di sp( [ ' I ndi ceMC=' , num2st r ( I ndi ceMC) ] )
i f I ndi ceMC >50
di sp( ' SUPER OBESO' )
el sei f I ndi ceMC<=50 && I ndi ceMC>40
di sp ( ' PATOLOGI CAMENTE OBESO' )
el sei f I ndi ceMC<=40 && I ndi ceMC>35
di sp ( ' GRAVEMENTE OBESO' )
el sei f I ndi ceMC<=35 && I ndi ceMC>30
di sp ( ' OBESO' )
el sei f I ndi ceMC<=30 && I ndi ceMC>25
di sp ( ' sovr appeso' )
el sei f I ndi ceMC<=25 && I ndi ceMC>18. 5
di sp ( ' REGOLARE' )
el sei f I ndi ceMC<=18. 5 && I ndi ceMC>16
di sp ( ' MAGREZZA' )
el se di sp( ' GRAVE MAGREZZA' )
end
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Si noti come sia presente loperatore logico && (and) in corrispondenza dellasserzione
corrispondenteadelseif.
Gli Operatori logici & ed && hanno lo stesso significato (AND - affinch lasserzione sia
verificataoccorrecheentrambelecondizioni specificatesianovere) mamentreil primooperasu
matrici il secondooperasuscalari.
Operatori di confronto
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Costrutto for
Il loop for ripete un gruppo di asserzioni un numero finito di volte. La parola chiave end
terminaleasserzioni.
Si riporta un semplice esempio per capire questo semplice ma potente costrutto. Lesempio
calcola il valore del rapporto aureo come frazione tra lennesimo e ln-1esimo numero della
seriedi Fibonacci.
%scr i pt di esempi o per spi egar e i l cost r ut t o f or
%quest o scr i pt cal col a i l r appor t o aur eo e i pr i mi
%100 numer i del l a ser i e di Fi bonacci
i =2;
x( i - 1) =0;
x( i ) =1;
f or i =2: 100;
x( i +1) = x( i ) +x( i - 1)
end
gr at i o = x( i +1) / x( i ) ;
di sp( [ ' Val or e del r appor t o aur eo' , num2st r ( gr at i o) ] )
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Costrutto while
Il ciclo while ripete un gruppo di asserzioni un determinato numero di volte finch una
determinatacondizioneverificata. Laparolachiaveend terminaleasserzioni.
Si riporta un piccolo e semplice esempio che somma, ad ogni iterazione, 2 al valore di x
fintantochverificatalacondizionex<25. Il primovaloredi x unnumerocasualecompreso
tra0e3.
%pi ccol o esempi o per i l l ust r ar e i l cost r ut t o whi l e
x=3*r and;
whi l e x<25;
x=x+2
end
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Ciclo while con 2 condizioni imposte
Come possibleeseguire una serie di istruzioni iterativamente fintantoch una delle due condizioni
imposte non pi vera?
Si utilizza il ciclo while con loperatore logico & o &&
Esempio:
%esempi o di whi l e con due condi zi oni
i =r and;
x=r and;
whi l e x<25 && i <90
x=x+1
i =i +3
end
Il ciclo while viene eseguito mentre le condizioni poste sono vere. Se ad esempio si vuole proseguire
con le iterazioni fino a che x<25 ed i<90 il ciclo whileriportato nellesempio fa al caso nostro.
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Istruzione break
Listruzionebreak fasi chesi escavelocementedaunciclofor owhile seunacertacondizione
verificata. Inuncicloannidatolistruzionebreakescesolamentedal ciclointerno.
Si riportaunesempiodi ciclofor incui inseritaallinternolistruzionebreak:
%esempi o di ci cl o f or con br eak
a=1;
b=1;
f or a=1: 100;
a=a+b
i f a>25 br eak;
el se di sp( ' ni ent e br eak' )
end
end
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Costrutto switch
Il costruttoswitch permettedi darerisultati (odi farescelte) inbaseadei valori di output;
qualcheesempiochiarisceal megliolasintassi elutilizzo.
Esempio1
%pi ccol o pr ogr amma per i l l ust r ar e i l cost r ut t o swi t ch
d=f l oor ( 3*r and) ;
swi t ch d
case 1
di sp( ' un 1' )
case 2
di sp ( ' un 2' )
ot her wi se
di sp( ' un 3' )
end
CENNI DI MATLAB
FUNZIONI E SCRIPTS
Strutture di controllo del flusso - Costrutti if, for, while e switch
Costrutto switch
Il costruttoswitch permettedi darerisultati (odi farescelte) inbaseadei valori di output;
qualcheesempiochiarisceal megliolasintassi elutilizzo.
Esempio 2
%secondo esempi o per i l l ust r ar e i l
cost r ut t o swi t ch
z=f l oor ( 10*r and)
swi t ch z
case {1, 3, 5, 7, 9}
di sp ( ' di spar i ' )
case {2, 4, 6, 8}
di sp( ' par i ' )
ot her wi se
di sp( ' zer o' )
end
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
ESEMPIO Si visualizzi nei primi 15 secondi la soluzione y(t) dellequazione
differenziale lineare del terzo ordine :
con condizioni iniziali:
La procedura sistematica:
1. Riscrivere lequazione in forma esplicita (cio isolando a sinistra
delluguale la derivata di ordine pi elevato)
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
2. 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:
3. Importare un nodo sommatore e 3 blocchi Gain (dalla libreria Math). Il
nodosommatoresi collegaal primodegli integratori (quellopiasinistra).
Comevisto precedentemente, Il blocco Gainmoltiplicail segnaledi ingresso per
il valore impostato nella corrispondente finestra di dialogo che si apre facendo
doppioclicksul bloccostesso(il guadagnodi default unitario).
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Come si ricava facilmente, in ingresso allintegratore pi a sinistra
(Integrator2inFigura17) si troverladerivataterzadel segnaley.
Per simulare lequazione differenziale si dovranno pertanto far confluire
nel nodo sommatoretuttelequantitchecompaiono adestradelluguale
nellequazione(3), chedefiniscepropriolaformadelladerivataterza.
Identifichiamo, a destra delluguale nella Eq. (3), quattro diversi contributi:
1) la funzionedel tempo
2) la derivata seconda di y moltiplicata per
3) la derivata prima di y moltiplicata per
4) il segnale y moltiplicato per
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
La funzione del tempo al punto A viene generata con un blocco Clock ed un
blocco Fcn .
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. Il risultato finale in figura:
SOLUZIONE DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Prima di avviare la simulazione bisogna impostare le condizioni iniziali . Le
condizioni iniziali si impostano mediante una finestra di dialogo che si apre
facendo doppio click sui blocchi Integratori. Cliccando sullintegratore si apre la
finestra di dialogo in cui impostare il parametro Initial condition
RISULTATI DELLA SIMULAZIONE
Y Y Y
SOLUZIONE DI SISTEMI DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
In questo esempio si vogliono visualizzare nei primi 30 secondi le soluzioni
y(t) ed x(t) del seguente sistema di equazioni differenziali lineari:
Con le condizioni iniziali:
Il sistema costituito dalle equazioni riportate sopra 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 :
SOLUZIONE DI SISTEMI DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
Si devono collocare in tutto 3 blocchi Integratori (libreria Continuous) che per non
dovranno essere disposti in cascata. Gli integratori vanno disposti su 2 righe distinte
(perch il sistema in esame si compone di 2 equazioni).
Nella prima riga metter due integratori in cascata, nella seconda riga metter il terzo
integratore restante.
SOLUZIONE DI SISTEMI DI EQUAZIONI
DIFFERENZIALI NEL DOMINIO DEL
TEMPO TRAMITE SIMULINK
y
x