01.03 Introduzione a Simulink

35
Introduzione a Simulink (versione di Matlab 6.1) Eugenio Denti Versione 5 – 8 maggio 2009 Il Simulink è un software per la modellizzazione e la simulazione di sistemi dinamici, di amplissima diffusione, che negli ultimi è diventato uno standard in campo sia industriale che di ricerca. Si tratta di un tool di Matlab che consente la modellizzazione di sistemi dinamici lineari e non lineari, analogici e digitali, sotto forma di schemi a blocchi che possono essere costruititi in appositi file grafici (modelli Simulink) utilizzando blocchi elementari messi a disposizione dell’utente in una vastissima libreria. Può essere effettuata la simulazione della risposta ad ingressi definiti dall’utente o ad assegnate condizioni iniziali, scegliendo tra un notevole numero di metodi di integrazione numerica differenti. Il programma è corredato da un manuale molto ricco ed accurato (--> Simulink / Help / Simulink help) e da numerosissimi esempi dimostrativi che sono contenuti nei “demos” di Matlab (--> Matlab / Help / Demos / Simulink). Per ogni esempio viene messo a disposizione dell’utente, in chiaro, il relativo modello Simulink che può essere studiato e copiato in tutto od in parte ed inserito nei modelli costruiti dall’utente. E’ quindi molto semplice imparare ad utilizzarlo, prendendo spunto dagli esempi riportati nei “demos” ed utilizzando il manuale. Queste brevi note hanno il solo scopo di aiutare a “rompere il ghiaccio” fornendo le indicazioni essenziali per iniziare. Volendo consultare un testo in italiano: Matlab Simulink e Control ToolboxAlberto Cavallo, Roberto Setola, Francesco Vasca Napoli, Liguori 2002 ISBN 88-207-3368-4 Versione 5 – 8 maggio 2009 1

description

simulino

Transcript of 01.03 Introduzione a Simulink

Page 1: 01.03 Introduzione a Simulink

Introduzione a Simulink(versione di Matlab 6.1)

Eugenio Denti

Versione 5 – 8 maggio 2009

Il Simulink è un software per la modellizzazione e la simulazione di sistemi dinamici, di amplissima diffusione, che negli ultimi è diventato uno standard in campo sia industriale che di ricerca.

Si tratta di un tool di Matlab che consente la modellizzazione di sistemi dinamici lineari e non lineari, analogici e digitali, sotto forma di schemi a blocchi che possono essere costruititi in appositi file grafici (modelli Simulink) utilizzando blocchi elementari messi a disposizione dell’utente in una vastissima libreria. Può essere effettuata la simulazione della risposta ad ingressi definiti dall’utente o ad assegnate condizioni iniziali, scegliendo tra un notevole numero di metodi di integrazione numerica differenti.

Il programma è corredato da un manuale molto ricco ed accurato (--> Simulink / Help / Simulink help) e da numerosissimi esempi dimostrativi che sono contenuti nei “demos” di Matlab (--> Matlab / Help / Demos / Simulink). Per ogni esempio viene messo a disposizione dell’utente, in chiaro, il relativo modello Simulink che può essere studiato e copiato in tutto od in parte ed inserito nei modelli costruiti dall’utente.

E’ quindi molto semplice imparare ad utilizzarlo, prendendo spunto dagli esempi riportati nei “demos” ed utilizzando il manuale.Queste brevi note hanno il solo scopo di aiutare a “rompere il ghiaccio” fornendo le indicazioni essenziali per iniziare.

Volendo consultare un testo in italiano:“Matlab Simulink e Control Toolbox”Alberto Cavallo, Roberto Setola, Francesco VascaNapoli, Liguori 2002ISBN 88-207-3368-4

Versione 5 – 8 maggio 2009 1

Page 2: 01.03 Introduzione a Simulink

Esempio introduttivo (svolto utilizzando la versione 6.1 di Matlab)

Costruzione dello schema a blocchi del sistema da simulare (Schema Simulink)

Lanciare Matlab dal menù start come per tutti gli altri programmi.Apparirà la finestra riportata qui a lato.

Lanciare Simulink con un click del mouse sull’apposita icona.

Apparirà la finestra riportata sotto nella quale sono presenti tutti i blocchi di libreria di Simulink disponibili nella versione di Simulink installata sul proprio computer.

Aprire un nuovo file grafico destinato a contenere lo schema a blocchi del sistema da simulare (Schema Simulink) con un click del mouse sull’apposita icona.

Apparirà la finestra riportata qui sotto che rappresenta il nuovo file grafico, per il momento vuoto.

A questo punto è possibile costruire lo schema a blocchi del sistema da simulare aprendo le librerie di Simulink e trascinando con il mouse i blocchi di libreria desiderati direttamente nello schema Simulink.Le librerie che serviranno nell’esempio che segue sono:

Continuous libreria dei blocchi lineari continuiSources libreria delle sorgenti di segnaleSinks libreria dei blocchi di memorizzazione / visualizzazione grafica dei segnali

Esempio

Di seguito si illustra come costruire uno schema Simulink che permette di determinare la risposta al gradino della seguente funzione di trasferimento:

caratterizzata da due poli reali negativi ed uno zero positivo e la cui risposta al gradino unitario ha valore finale unitario e valore iniziale della derivata pari a –2.

Versione 5 – 8 maggio 2009 2

Page 3: 01.03 Introduzione a Simulink

Primo passo (inserire nel sistema il blocco che rappresenta la funzione di trasferimento)

Aprire la libreria dei blocchi di tipo Continuous con un click del mouse qui

e trascinare nello schema il blocco che rappresenta la generica funzione di trasferimento nella forma zeri-poli.

Con un doppio click sul blocco appena inserito nel sistema, aprire la finestra per l’assegnazione dei parametri del blocco ed assegnare i valori di zeri, poli e guadagno (in realtà è sufficiente modificare i poli ed il guadagno perché lo zero è quello di default):

Una volta chiusa (cliccando su OK) la finestra per l’assegnazione dei parametri del blocco il sistema apparirà come segue:

Versione 5 – 8 maggio 2009 3

Page 4: 01.03 Introduzione a Simulink

Secondo passo (inserire nel sistema il blocco che rappresenta l’ingresso a gradino)

Con procedura analoga a quella già illustrata al primo passo, aprire la libreria Sources delle sorgenti di segnale, aggiungere il blocco che rappresenta l’ingresso a gradino al sistema ed assegnare i parametri del blocco.

In questo caso, dati i particolari valori scelti per i poli della funzione di trasferimento, i parametri del gradino possono essere lasciati uguali a quelli di default.

Connettere i due blocchi tracciando una linea di connessione con il mouse (tasto sinistro) dall’uscita del blocco step all’ingresso del blocco che rappresenta la funzione di trasferimento (la procedura è assolutamente intuitiva e non necessita di alcun comando particolare).

Versione 5 – 8 maggio 2009 4

Page 5: 01.03 Introduzione a Simulink

Terzo passo (inserire nel sistema un blocco per la memorizzazione del segnale di uscita)

In modo del tutto analogo a quanto già visto, aprire la libreria Sinks dei blocchi di memorizzazione e visualizzazione grafica dei segnali, aggiungere al sistema un blocco di tipo To workspace e connetterlo all’uscita del blocco che rappresenta la funzione di trasferimento.

Il blocco To workspace permette di memorizzare il segnale di uscita nel work space (memoria di lavoro) di Matlab sotto forma di vettore.Con un doppio click sul blocco si può aprire la finestra per l’assegnazione dei parametri e scegliere il nome che si preferisce per il vettore da memorizzare, ad esempio “y”:

E’ inoltre necessario cambiare il formato di memorizzazione da “Structure” ad “Array”.Una volta chiusa (cliccando su OK) la finestra per l’assegnazione dei parametri del blocco il sistema apparirà come segue:

Versione 5 – 8 maggio 2009 5

Page 6: 01.03 Introduzione a Simulink

Quarto passo (inserire i blocchi per la memorizzazione del tempo di simulazione)

A questo punto è opportuno (anche se non sarebbe indispensabile) aggiungere un blocco Clock prelevato dalla libreria Sources delle sorgenti di segnale e connetterlo con un ulteriore blocco To workspace. Quest’ultimo conviene generarlo duplicando il blocco To workspace inserito precedentemente; in questo modo i parametri restano gli stessi.

Il blocco Clock genera una variabile che contiene il tempo di simulazione, che può essere quindi memorizzato nel workspace sotto forma di vettore, grazie al nuovo blocco To workspace.

Per concludere la costruzione dello schema, aprire la finestra per l’assegnazione dei parametri del nuovo blocco To workspace e scegliere il nome che si preferisce per il vettore dei tempi, ad esempio “tempo”:

Quinto passo (avviare la simulazione)

La simulazione si avvia mediante un click sull’apposita freccia

NOTA La memorizzazione del tempo e delle variabili di uscita nel workspace consentirà successivamente di effettuare il grafico della funzione y(t). In realtà esistono anche altri metodi per visualizzare le variabili, alternativi al blocco To workspace (ad esempio i blocchi Scope della libreria Sinks), tuttavia la memorizzazione delle variabili sotto forma di vettore nel workspace ha il vantaggio di consentire di effettuare qualunque tipo di calcolo sulle variabili stesse, nonché grafici diversi (ad esempio di una variabile in funzione di un’altra), senza dover ripetere la simulazione. Esiste poi un ulteriore vantaggio legato al fatto che se si realizza un programma per effettuare i grafici relativi ad un certo sistema dinamico, detto programma funzionerà anche da promemoria, a distanza di tempo, circa il significato dei simboli, le unità di misura, ecc. (vedere più avanti “Note sul post-processing grafico e sull’uso del blocco To workspace ” ).

Versione 5 – 8 maggio 2009 6

Copiare ed incollare

Page 7: 01.03 Introduzione a Simulink

Visualizzazione dei risultati

Conclusa la simulazione i dati inviati ai blocchi To workspace saranno disponibili nella memoria di Matlab (workspace) come si può immediatamente verificare mediante i comandi “who” oppure “whos”, come si vede nella finestra qui sotto.

La risposta al comando “whos” evidenzia il fatto che sia “tempo” che “y” sono vettori colonna di 53 elementi. Si noti il fatto che esiste anche una variabile tout che è il nome di default che il programma usa per memorizzare il tempo automaticamente (questo rende non indispensabile l’uso del blocco Clock. Tuttavia è comunque opportuno usare quest’ultimo per motivi che saranno illustrati più avanti).I dati disponibili nel workspace possono essere ovviamente utilizzati per qualunque tipo di analisi ed in particolare, nel caso specifico, per ottenere un grafico dei risultati mediante il comando “plot(tempo,y)” il cui risultato è riportato di seguito.

Versione 5 – 8 maggio 2009 7

Page 8: 01.03 Introduzione a Simulink

Definizione dei parametri di simulazione

Esaminando il grafico sopra riportato si vede immediatamente che il passo di simulazione utilizzato è eccessivamente grande, infatti il picco della risposta è chiaramente mal rappresentato. Ciò dipende dal fatto che sono stati utilizzati i parametri di simulazione di default che hanno portato ad uscite caratterizzate da un numero troppo piccolo di punti.

In effetti, prima di avviare la simulazione di un qualunque modello, è necessario definire nel modo più appropriato sia il metodo di integrazione numerica da utilizzare che il passo, come anche il tempo di fine simulazione.Ciò si effettua mediante l’apposito menù simulation / simulation paramenters:

che apre la finestra per l’assegnazione dei parametri di simulazione:

Una possibile scelta per il caso in esame è:

Versione 5 – 8 maggio 2009 8

Page 9: 01.03 Introduzione a Simulink

con la quale si ottengono vettori di 161 elementi ed il seguente grafico della risposta:

Versione 5 – 8 maggio 2009 9

Page 10: 01.03 Introduzione a Simulink

Salvataggio del modello

Il modello costruito può essere ovviamente salvato con procedura standard (file / save as ... ):

Le versioni recenti di Simulink salvano i modelli in files con estensione “.mdl”. E’ opportuno evitare caratteri bianchi sia nel nome del file che nella path.

Note sul post-processing grafico e sull’uso del blocco To workspace

I Comandi per generare i grafici possono anche essere inseriti in un file di tipo “.m” (programma Matlab). Questo evidenzia in modo particolare il vantaggio di usare il To workspace. La disponibilità in memoria di tutte le uscite del modello Simulink consente infatti di associare al modello stesso un file di tipo “.m” contenente tutta la grafica, con i seguenti vantaggi (importanti per sistemi complessi):

Sintesi Una grafica preparata e messa a punto contestualmente allo schema Simulink risulta generalmente più sintetica e leggibile rispetto ad esempio ad un insieme di blocchi Scope più o meno annidati all’interno del sistema.

Semplicità di stampa Si possono realizzare pagine grafiche già pronte per essere stampate ed inserite nelle relazioni tecniche.

Documentazione Una grafica commentata, completa di descrizione del significato delle variabili, unità di misura, ecc) consente un’immediata “visione” dell’I/O del sistema ed una migliore e più rapida comprensione di quello che fa il sistema stesso, anche a distanza di anni od esaminando il lavoro fatto da altri.

In questo contesto si inquadra anche l’uso del “Clock ---> To workspace” che consente di avere un pieno controllo sul nome e sulle modalità di memorizzazione della variabile tempo, in modo che essa sia sempre coerente con le istruzioni contenute nel file grafico “.m”. La variabile tempo generata automaticamente da Simulink potrebbe cambiare nome o essere generata con un passo di memorizzazione diverso da quello delle altre variabili (definito nei blocchi To workspace) senza che l’utente se ne renda conto, con conseguente generazione di condizioni di errore durante l’esecuzione del file di grafica.

Versione 5 – 8 maggio 2009 10

Page 11: 01.03 Introduzione a Simulink

Uso dei bottoni

Notare che il file di grafica può anche essere attivato mediante un “bottone” posto nello schema Simulink.

Il bottone consente, semplicemente ciccando sul bottone stesso, di eseguire un qualunque comando Matlab o di lanciare un programma Matlab scritto dall’utente.Il nome del comando o del programma da eseguire si inserisce nella casella delle “properties” del bottone. La scritta sul bottone si inserisce tramite il comando edit ---> edit mask.

Versione 5 – 8 maggio 2009 11

Page 12: 01.03 Introduzione a Simulink

ATTENZIONE: quando si clicca su un bottone è necessario che il puntatore di Matlab si trovi nella cartella nella quale è presente il programma “.m” da eseguire, altrimenti Matlab non trova il programma (a meno che questo non sia un comando standard o non si trovi in una delle cartelle definite nella “path” di Matlab).In altri termini quando si digita sulla Command Window il comando “pwd” (print current working directory) si deve ottenere la path della cartella contenente il modello Simulink che si vuole eseguire, nonché il programma “.m” che effettua i grafici. A titolo di verifica si può utilizzare il comando “dir” che fornisce l’elenco di tutti i files contenuti nella cartella corrente.

ESEMPIO:>> pwdans = C:\.....\CorsoDDV\Introduzione_a_Simulink

>> diril_mio_primo_sistema.mdlil_mio_primo_sistema_plot.m

Se la cartella corrente non è quella giusta, si può cambiare mediante il comando “cd” (Change current working directory). La path della cartella desiderata deve essere messa tra apici se contiene dei caratteri bianchi, altrimenti non è necessario.

ESEMPIO:>> pwdans = C:\MATLAB6p1\work

>> cd 'C:\.....\CorsoDDV\Introduzione_a_Simulink'>> pwdans =C:\.....\CorsoDDV\Introduzione_a_Simulink

Notare infine che un Modello Simulink può essere aperto da Matlab digitando semplicemente nella Command Window il nome del file “.mdl” che contiene il modello.

Versione 5 – 8 maggio 2009 12

Page 13: 01.03 Introduzione a Simulink

Estendendo il concetto dell’utilizzazione di files di tipo “.m” che accompagnano un Modello Simulink, una metodologia di lavoro piuttosto efficace e spesso utilizzata prevede che un Modello Simulink (“.mdl”) sia sempre accompagnato da:

- un file “.m” nel quale vengono definiti tutti i dati di input, da lanciare, eventualmente tramite un apposito bottone, prima dell’esecuzione della simulazione;

- un file “.m” che effettua i grafici di tutte le uscite, da lanciare, eventualmente tramite un apposito bottone, dopo l’esecuzione della simulazione.

Se i nomi dei files saranno scelti in modo opportuno, ad esempio:

le modalità di utilizzazione degli stessi saranno inequivocabili. Vedere a questo proposito il modello “esempio_introduttivo.mdl” che è l’esempio sviluppato nel corso di questa introduzione, reso più “professionale” applicando gli accorgimenti di cui sopra.

Versione 5 – 8 maggio 2009 13

Pulisce la memoria

Lancia il file:esempio_introduttivo_dati.m Lancia il file:

esempio_introduttivo_plot.m

Chiude tutte le finestre grafiche

Notare che qui la FdT è generica (i dati sono definiti nel file dati).

Page 14: 01.03 Introduzione a Simulink

File: “esempio_introduttivo_dati.m”

% File dati per il modello Simulink che determina la risposta al gradino% di una F.d.T. definita nella forma "poli-zeri-guadagno"

% Eugenio Denti - 8 ott. 2003

clear all format compact

% Definizione della funzione di trasferimento disp(' '),disp('Funzione di trasferimento:') guadagno = 1 zeri = [ 1 ] poli = [ -1 -2 ]

% Definizione del gradino disp(' '),disp('Caratteristiche ingresso:') tempo_inizio_gradino = 1 valore_gradino = 1 % FINE

File: “esempio_introduttivo_plot.m”

% File per la visualizzazione grafica dei risultati% per il modello Simulink che determina la risposta al gradino% di una F.d.T. definita nella forma "poli-zeri-guadagno"

% Eugenio Denti - 8 ott. 2003

% Apertura di una nuova figura figure % Esecuzione dei grafici subplot(211),plot(tempo,u),ylabel('Ingresso u [-]'),xlabel('Tempo [sec]') subplot(212),plot(tempo,y),ylabel('Uscita y [-]'), xlabel('Tempo [sec]') subplot(211),title('Esempio introduttivo a Simulink')

% Modifica della scala del primo grafico subplot(211) scala = axis; incremento = 0.05*(scala(4)-scala(3)); axis([scala(1) scala(2) scala(3)-incremento scala(4)+incremento]); % FINE

Versione 5 – 8 maggio 2009 14

Page 15: 01.03 Introduzione a Simulink

Metodi diversi per la modellizzazione di sistemi dinamici

Il modello di un sistema dinamico può essere realizzato in Simulink in tre modi:

1) Metodologia “full simulink” Il modello viene interamente costruito combinando elementi presenti nella libreria dei blocchi Simulink.

2) Matlab function Il modello viene realizzato programmandolo in linguaggio Matlab e memorizzato in una Function di tipo “.m” che viene poi richiamata nel Modello Simulink mediante il blocco M-function di Simulink.

3) S-function Il modello viene realizzato programmandolo in linguaggio Matlab nel particolare formato previsto dal blocco S-function di Simulink e richiamato nel Modello Simulink mediante il blocco stesso.

Il metodo 1) è il migliore in molti casi, soprattutto dal punto di vista della velocità di esecuzione in fase di simulazione. Se tuttavia il modello è molto complesso, in quanto costituito da un elevato numero di equazioni che possono essere facilmente programmate in linguaggio Matlab (ma richiederebbero un lavoro non indifferente per essere “costruite” mediante blocchi Simulink) e soprattutto nel caso in cui il modello preveda numerose condizioni di scelta del tipo “ if-then-else”, allora può essere conveniente ricorrere ad uno degli altri due metodi.

Il metodo 2) è più semplice dal punto di vista della velocità di programmazione, soprattutto nella fase di sviluppo prototipale di un modello. L’uso della M-function consente di realizzare una dipendenza funzionale generica del tipo y=f(x). Quindi nel caso alcuni termini del vettore y siano da integrare nel dominio del tempo, l’uso della M-function comporta la necessità di utilizzare i blocchi “Integrator” di Simulink esternamente alla M-function.Le M-function comportano però alcuni svantaggi sostanziali che ne sconsigliano l’utilizzazione nelle versioni definitive dei codici Simulink. Tra questi i più importanti sono: lentezza di esecuzione in fase di simulazione; impossibilità di compilare il modello e di realizzare simulazioni “Real-time” (questa limitazione sembra superata nelle versioni più recenti di Simulink); possibilità di utilizzare esclusivamente metodi di integrazione numerica a passo fisso (o meglio, l’uso di metodi di integrazione a passo variabile, con le M-function, comporta per utenti non esperti il rischio di ottenere risultati errati).

Tutte le volte che appare opportuno programmare il modello in linguaggio Matlab, è comunque possibile utilizzare il terzo metodo che non presenta nessuno degli svantaggi delle M-function ed il cui unico svantaggio consiste in una leggera difficoltà iniziale, per l’utente inesperto ad impadronirsi della particolare sintassi con la quale devono essere realizzate le S-function.

La S-function è una normale function di Matlab (nel senso che è contenuta in un file di tipo “.m”) la quale deve essere però realizzata con una particolare struttura interna (vedere esempio più avanti) e con la seguente dichiarazione dei dati di ingresso/uscita nella prima riga:function [sys,x0]=nome_del_file(t,x,u,flag)La S-function è specificatamente progettata per realizzare sistemi dinamici del tipo:

Essa prevede in ingresso esclusivamente i segnali relativi al vettore degli ingressi ( ) del sistema ed in uscita esclusivamente i segnali relativi al vettore delle uscite ( ) del sistema (rispettivamente “u” e “sys” nella prima riga riportata sopra). Gli altri ingressi (t, x e flag) vengono gestiti automaticamente da Simulink durante la simulazione. In particolare la variabile flag assume

Versione 5 – 8 maggio 2009 15

Page 16: 01.03 Introduzione a Simulink

valore 0 al primo passo, quando Simulink “chiama” la function per definire la struttura del sistema dinamico e le condizioni iniziali; in questo caso i vettori di uscita sys ed x0 assumono il significato spiegato nei commenti presenti all’interno della funcion;

valore 1 quando Simulink chiama la function per valutare le derivate ;valore 3 (per i sistemi continui) quando Simulink chiama la function per valutare le uscite del

sistema.Per maggiori dettagli vedere l’help di Simulink.

A titolo di esempio si riportano nelle pagine che seguono i modelli di un sistema Massa-Molla-Smorzatore realizzati con le tre metodologie sopra descritte (figure 1, 2 e 3).Questi modelli sono disponibili anche in formato elettronico nelle seguenti cartelle che accompagnano il presente documento:

SistemaMCK \ SistemaMCK Metodologia “full simulink”SistemaMCK \ SistemaMCK1 Metodologia Matlab functionSistemaMCK \ SistemaMCK2 Metodologia S-function

Sono inoltre disponibili in formato elettronico due ulteriori esempi di realizzazione del sistema Massa-Molla-Smorzatore. Il primo, contenuto nella cartella:

SistemaMCK \ SistemaMCK3

è del tutto analogo all’MCK2. La sola differenza è che l‘uscita della S-function viene gestita come vettore, evitando l’uso del blocco demux (figura 4).Il secondo, più interessante, contenuto nella cartella:

SistemaMCK \ SistemaMCK4

è stato realizzato per mostrare come un sistema dinamico rappresentato mediante una S-function possa essere lanciato anche da un programma Matlab (figure 5 e 6). Il sistema sistMCK4.mdl infatti non contiene bottoni per caricare dati e non è pensato per essere aperto e lanciato mediante un click sull’apposita freccia di avviamento della simulazione. E’ invece pensato per essere lanciato mediante il programma run4.m presente nella stessa cartella. Per farlo funzionare, dunque, è sufficiente digitare il comando run4.m senza bisogno di aprire sistMCK4.mdl. L’esame dei commenti presenti nel file run4.m consentirà facilmente di comprenderne il funzionamento.

Le S-function utilizzate negli esempi MCK3 ed MCK4 non sono riportate nelle figure perché sono del tutto analoghe a quella in figura 3.

Versione 5 – 8 maggio 2009 16

Page 17: 01.03 Introduzione a Simulink

Figura 1): modello interamente costruito combinando elementi presenti nella libreria Simulink

Versione 5 – 8 maggio 2009 17

Page 18: 01.03 Introduzione a Simulink

Il nome della function di Matlab che contiene la descrizione del modello viene assegnato facendo doppio click sul blocco M-function. Nel caso in esame la function è stata memorizzata nel file di nome “Sistema1.m” riportato di seguito:

File “Sistema1.m”:function [y]=sistema1(x)

% Sistema massa molla smorzatore

% Parametri global m c k

F = x(1); y = F/m -c/m*x(3) -k/m*x(2); % x(3) e' la velocità% x(2) e' la posizione

Nota: il comando “global” permette alla function di conoscere il valore dei parametri definiti nel file di input (o comunque presenti nel Work Space). Nel file di input (o sul Work Space) deve essere assegnato lo stesso comando global.

Figura 2): modello realizzato mediante M-function.

Versione 5 – 8 maggio 2009 18

Page 19: 01.03 Introduzione a Simulink

Il nome della function di Matlab che contiene la descrizione del modello nel formato previsto dalla S-function viene assegnato facendo doppio click sul blocco S-function. Nel caso in esame la function è stata memorizzata nel file di nome “Sistema2.m” riportato di seguito:

File “Sistema2.m”:function [sys,x0]=sistema2(t,x,u,flag)% Sistema massa molla smorzatore% Parametri del sistema utilizzati in questa S-function global m c k% Definizione del sistema dinamico e delle condizioni iniziali if flag == 0 sys = [2; 0; 3; 1; 0; 1]; x0 = [0; 0]; % OUTPUTS: sys(1) number of continuous states % sys(2) number of discrete states. % sys(3) number of outputs % sys(4) number of inputs % sys(5) number of roots that the system has. % sys(6) set to 1 if the system has direct feed-through of % its inputs (used for systems within systems). % x0 vector of initial conditions% Equazioni della dinamica del sistema nella forma x_dot = f(x,u,t) elseif flag == 1, F = u(1); x_dot(1) = F/m -c/m*x(1) -k/m*x(2); % NOTA: x(1) e' la velocità x_dot(2) = x(1); % x(2) e' la posizione % uscite della S-function (per flag = 1 ---> sys = x_dot) sys = x_dot;% Definizione delle uscite del sistema dinamico nella forma y = g(x,u,t) elseif flag == 3 F = u(1); accelerazione = F/m -c/m*x(1) -k/m*x(2); velocita = x(1); posizione = x(2); % uscite della S-function (per flag = 3 ---> sys = y) sys = [ accelerazione velocita posizione ];% Errore else sys = []; end

Versione 5 – 8 maggio 2009 19Figura 3): modello realizzato mediante S-function.

Page 20: 01.03 Introduzione a Simulink

Figura 4): modello realizzato mediante S-function, con uscita vettoriale.

Figura 5): modello realizzato mediante S-function in modo da poteressere lanciato da un programma Matlab (vedere fig. 6)

Versione 5 – 8 maggio 2009 20

Page 21: 01.03 Introduzione a Simulink

File “run.m”:

% -------------------------------------------------------------------------% Questo file matlab lancia una simulazione dinamica utilizzando il modello% descritto nel file sistMCK4.mdl% ------------------------------------------------------------------------- % E. Denti 7/5/2009 clear all close all % Caricamento dati del sistema dati4 % definizione della stosia temporale dell'ingresso% (nella matrice u la prima colonna è il tempo, la seconda l'ingresso) u= [ 0 0 1 0 1.1 1 1000 1 ]; % definizione del tempo totale di simulazione tempomax = 16; % definizione dei parametri di simulazione param = simset('OutputVariables','ty') % NOTA: si possono definire tutti i parametri di simulazione % (dare il comando help simset per informazioni) % in questo caso viene definito solo il valore ty per il % parametro OutputVariables. Ciò comporta il fatto che in % uscita dal comando sim (vedi sotto) si abbia solo tempo e % vettore delle uscite mentre il vettore di stato x rimane vuoto % lancio simulazione [tempo,x,y] = sim('sistMCK4',tempomax,param,u); disp('Simulazione conclusa') % plot risultati grafici4 % NOTA: non volendo specificare parametri di simulazione% assegnare un alfanumerico bianco al posto di param:% ovvero: [tempo,x,y] = sim('sistMCK4',tempomax,[],u);

Figura 6): esempio di programma di lancio del modello sistMCK4.mdl

Versione 5 – 8 maggio 2009 21