Una a Simulink Prof. Michele Scarpiniti Dipartimento di Ingegneria dell Informazione, Elettronica e Telecomunicazioni Sapienza Università di Roma http://ispac.diet.uniroma1.it/scarpiniti/index.htm michele.scarpiniti@uniroma1.it M. Scarpiniti Una a Simulink 1 / 38
1 2 L elaborazione dei segnali M. Scarpiniti Una a Simulink 2 / 38
M. Scarpiniti Una a Simulink 3 / 38
L obiettivo di queste slides è di introdurre ed illustrare il funzionamento di base di un utile e potente framework di Matlab, chiamato Simulink. Simulink è una libreria di oggetti, che possono essere linkati in modo grafico, particolarmente adatto per costruire in modo semplice ed immediato un algoritmo di elaborazione. Il suo nome deriva dalle parole Simulation (simulazione) e Link (collegamento). Maggiori informazioni possono essere reperite al link http://www.mathworks. com/help/pdf_doc/simulink/sl_gs.pdf da cui è anche possibile scaricare una semplice guida per poter iniziare ad utilizzare Simulink. M. Scarpiniti Una a Simulink 4 / 38
Simulink: i primi passi Simulink è l 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 C/C++ o in Fortran. Per utilizzare Simulink occorre digitare dalla shell di Matlab il seguente comando >> simulink oppure cliccare sull icona Simulink sotto il menù. M. Scarpiniti Una a Simulink 5 / 38
Simulink: i primi passi Si aprirà una finestra in cui vengono elencate tutte le librerie di simboli disponibili, raggruppate per argomento. Tutte le librerie possono essere aperte con un doppio click del mouse, per mostrare il loro contenuto. Le librerie di uso più comune e generale, sono inglobate nella libreria denominata Simulink. I blocchi più specializzati sono invece contenuti nelle restanti librerie. M. Scarpiniti Una a Simulink 6 / 38
Simulink: le caratteristiche principali Il Simulink è un framework molto versatile, caratterizzato principalmente da: 1 facilità di utilizzo: mediante interfaccia grafica è relativamente facile costruire un modello; 2 ampia libreria di blocchi predefiniti; 3 debugger grafico: permette di visualizzare il blocco o i blocchi che danno problemi; 4 model browser: per navigare in modo gerarchico nel modello; 5 finestra di ricerca per modelli e librerie; 6 blocchi personalizzati che possono incorporare codice C, Ada, MATLAB e Fortran. M. Scarpiniti Una a Simulink 7 / 38
Simulink: le caratteristiche principali Il Simulink è utilissimo per lo sviluppo di modelli complessi: i modelli possono essere raggruppati in gerarchie per creare una visualizzazione semplificata di componenti o sottosistemi; i data objects di Simulink consentono la creazione di tipi di dati MATLAB specifici per l applicazione richiesta, da utilizzare nei propri modelli Simulink. I data objects possono essere modificati dall interfaccia grafica relativa; un Library Browser, per la comoda selezione dei blocchi; le simulazioni possono essere eseguite sia da riga di comando in MATLAB, che interattivamente, o in modalità batch. M. Scarpiniti Una a Simulink 8 / 38
Simulink: la struttura Per potere usare efficientemente Simulink, occorre capire la sua struttura: I blocchi: sono sotto-sistemi con un ingresso ed una uscita, un blocco SIMO avrà ingresso ed uscita scalari, un MIMO avrà dei vettori. I blocchi source avranno solo l uscita, i blocchi sink solo l ingresso. Il blocco ha un nome che lo identifica e la funzione che lo caratterizza. I modelli: sono un insieme di blocchi connessi tra loro da collegamenti. Le librerie: sono delle raccolte di blocchi che servono per costruire i modelli, alle librerie di Simulink è possibile aggiungere le proprie, basta creare un modello con i propri blocchi e salvarlo. Il Workspace: è quello di Matlab, in esso possono venire definite, con un opportuno programma di lancio, costanti e variabili prima di avviare la simulazione e riversarvi i dati durante il run per un post-processing dei risultati. Simulink può anche prelevare delle serie temporali dal workspace durante la simulazione. Gli algoritmi di integrazione: oltre a quelli già visti in Matlab, vi sono numerosi altri metodi di integrazione che vanno scelti in funzione del tipo di sistema che occorre simulare. Particolare cura va anche posta nella scelta del passo temporale o step di simulazione. M. Scarpiniti Una a Simulink 9 / 38
Le librerie Insieme a Simulink vengono forniti più 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: 1 Sources, sorgenti di segnale come generatori ed altro da mettere in ingresso al sistema; 2 Sinks, dispositivi che devono visualizzare le uscite od instradarle nel workspace; 3 Discrete, elementi di libreria per l analisi in tempi discreti (trasformate z); 4 Continuous, elementi di libreria per l analisi nel continuo (trasformate di Laplace); 5 Discontinuities, elementi di libreria non lineari, come relè, zone morte, etc.; 6 Math Operations, blocchi matematici e logici; 7 Look-Up Tables, blocchi rappresentanti tavole ad una o più dimensioni che vengono interpolate; 8 Signals Routing, elementi per trasformare più scalari in un vettore (e viceversa), deviatori; 9 User Defined Functions, per chiamare funzioni create dall utente in C o Fortran o Matlab. M. Scarpiniti Una a Simulink 10 / 38
Le librerie Inoltre Simulink mette a disposizione funzioni per la creazione di blocchi e librerie di blocchi personalizzati. È possibile personalizzare non solo la funzionalità di un blocco ma anche la sua interfaccia utente, utilizzando icone e finestre di dialogo personalizzate. Ad esempio è possibile creare blocchi per modellare il comportamento di componenti specialistici meccanici, circuiti o software, come motori, inverter, impianti per la produzione di energia, filtri, gomme, modem, ricevitori o altri componenti dinamici. I blocchi personalizzati possono essere salvati in una propria libreria di blocchi per il futuro utilizzo e possono essere condivisi con gruppi di lavoro, distributori e clienti. M. Scarpiniti Una a Simulink 11 / 38
Un uso avanzato L utilizzo di alcuni pacchetti software opzionali che possono aumentarne le prestazioni in determinati campi di interesse: Real-Time Workshop: consente di compilare in C il modello Simulink, per una più veloce esecuzione, anche stand-alone (fuori da Simulink) e di realizzare una simulazione in real-time. Real-Time Windows Target: permette di eseguire la simulazione in tempo reale su normali PC con sistemi operativi tipo Windows dotati di interfacce di I/O verso sistemi fisici. I modelli, compilati in C con il Real-Time Workshop, vengono eseguiti da Windows. Con le schede di I/O (fornite da altre ditte) si ottiene una interazione tra sistemi hardware e sistemi virtuali: Hardware in the loop. Per via dei sistemi operativi che non sono Real-Time, ha dei limiti nei tempi di simulazione, comunque adeguati alla maggior parte dei processi relativamente lenti. M. Scarpiniti Una a Simulink 12 / 38
Un uso avanzato xpc Target: simile al precedente, utilizza sempre un target PC, ma con sistema operativo Real-Time. I modelli si sviluppano su un PC con sistema operativo normale e si trasferiscono sul target per essere eseguiti in tempo reale. SimMechanics: per la simulazione di sistemi meccanici, permette facilmente di analizzare cinematismi quali corpi e giunzioni, in quanto dispone di una ricca libreria di componenti. Stateflow: permette di modellare macchine a stati. Virtual Reality Toolbox: con questo pacchetto si possono costruire scenari 3D per le rappresentazioni grafiche di realtà virtuale, che permettono un più facile apprendimento del comportamento dinamico dei sistemi complessi. SimPowerSystems: ampia libreria che permette di simulare gli impianti elettrici in tutte le loro componenti, dai generatori, agli impianti di distribuzione e agli utilizzatori. M. Scarpiniti Una a Simulink 13 / 38
Dopo aver avviato Simulink si può procedere a creare un nuovo modello o caricarne uno già esistente. Per modelli complessi è molto meglio creare un programma Matlab (m-file) dove vengono assegnate le variabili e le costanti del modello, alla fine del file si chiama il modello Simulink, quindi si può avviare la simulazione. Nel caso si voglia creare un nuovo modello, cliccando sulla icona relativa (foglio bianco): si apre una finestra corrispondente al nuovo modello, che avrà come nome di default untitled, salvando il file con save as, si potrà dare un nome opportuno. M. Scarpiniti Una a Simulink 14 / 38
: un esempio Per disegnare il modello si trascinano (drag & drop) i blocchi dalle librerie al modello. I fili di collegamento si tracciano aiutandosi con il mouse. Un modo automatico consiste nel selezionare il blocco di partenza, tenere premuto il tasto ctrl della tastiera, spostare il mouse sul blocco di destinazione e cliccare sul pulsante destro del mouse. Come si può notare, per esempio, nel blocco dell integratore, ci sono due simboli >, uno a sinistra che indica il piedino di ingresso ed uno a destra che indica il piedino di uscita. Se si vuole, per esigenze grafiche ruotare il blocco, basta selezionarlo con il mouse (appaiono 4 puntini neri ai vertici del blocco) e battere Ctrl+R per ruotarlo di 90 gradi. M. Scarpiniti Una a Simulink 15 / 38
: un esempio Cliccando sul simbolo appare una finestra, dove è possibile introdurre i parametri del blocco integratore, ed alcune funzioni possibili. In questo caso è possibile azzerare esternamente (External reset), impostare le condizioni iniziali internamente od esternamente, impostare il valore della eventuale condizione iniziale interna, limitare l uscita entro un limite superiore ed inferiore (in questo caso si ha un integratore saturante, cambia anche l icona), imporre la tolleranza sull integrazione ed abilitare il rilevamento del passaggio dello zero. Di tutte queste cose si utilizza normalmente solo il valore iniziale. M. Scarpiniti Una a Simulink 16 / 38
: una semplice applicazione Connettendo più elementi in questo modo è possibile creare delle semplici applicazioni, come illustrato dalla figura seguente. Vediamo più in dettaglio come è stata realizzata questa semplice applicazione. M. Scarpiniti Una a Simulink 17 / 38
Una semplice applicazione: un integratore Questa semplice applicazione contiene quattro blocchi: 1 Sine Wave: genera un segnale sinusoidale. Tale elemento è disponibile nella libreria Sources; 2 Integrator: genera l integrale del segnale dato in input. Tale elemento è disponibile nella libreria Continuous; 3 Mux: combina i due segnali dati in ingresso in uno solo. Tale elemento è disponibile nella libreria Signal Routing; 4 Scope: visualizza graficamente i segnali. Tale elemento è disponibile nella libreria Sinks. M. Scarpiniti Una a Simulink 18 / 38
Una semplice applicazione: un integratore Dopo aver creato una nuova finestra, con il drag & drop si trascinano i 4 blocchi che servono sulla finestra, arrangiandoli spazialmente. A questo punto si collegano i vari blocchi con i fili, connettendo gli output di un blocco all input del blocco successivo. M. Scarpiniti Una a Simulink 19 / 38
Una semplice applicazione: un integratore La parte piu complicata e quella relativo al ramo che si biforca dal generatore all integratore. Per disegnare un tale ramo si posiziona il mouse sulla linea tra il generatore e il Mux e, tenendo premuto il tasto ctrl, si trascina una linea fino all ingresso del blocco integratore. In automatico viene disegnato il nodo di biforcazione. A questo punto e possibile salvare il modello appena creato, cliccando Save dal menu File. M. Scarpiniti Una a Simulink 20 / 38
L elaborazione dei segnali M. Scarpiniti Una a Simulink 21 / 38
L elaborazione dei segnali Dopo aver creato un modello, l utilità di Simulink è la capacità di eseguire le simulazioni del modello stesso. Per eseguire la simulazione del modello, basta cliccare sull icona del Play ( ) della finestra. Per default verranno simulati 10 secondi. Se voglio una durata diversa o cambiare altri parametri della simulazione, posso aprire ed editare la scheda di configurazione, cliccando su Configuration Parameters del menù Simulation. M. Scarpiniti Una a Simulink 22 / 38
L elaborazione dei segnali Per terminare la simulazione prima che sia trascorso il tempo di simulazione (settato di default a 10 secondi) è possibile premere sul tasto di Stop ( ). Per visualizzare il risultato della simulazione, invece, è possibile fare doppio clic sul blocco Scope: si aprirà una finestra su cui verrà graficato, a fine simulazione, il grafico dei segnali in gioco. Nel nostro semplice esempio verrà visualizzato il grafico della sinusoide generata dal generatore di segnale (in giallo) e il segnale integrato (in fucsia). M. Scarpiniti Una a Simulink 23 / 38
Un altro esempio L elaborazione dei segnali Riportiamo un secondo esempio in cui visualizziamo la risposta al gradino della seguente funzione di trasferimento: F (s) = 1 s + 1. Tra i generatori si sceglie quello di tipo step, si inserisce poi il solito scope per visualizzare il risultato. Il blocco che implementa la funzione di trasferimento è preso dalla libreria Continuous e si chiama Transfer Fcn. M. Scarpiniti Una a Simulink 24 / 38
Un altro esempio L elaborazione dei segnali L ingresso viene settato come x(t) = 5u 1 (t 2), ovvero un gradino di ampiezza 5 che inizia all istante t = 2 s. Poiché il polo della funzione di trasferimento è posto in s 0 = 1, la costante di tempo sarà τ = 1 s. Dopo un tempo 5τ, e quindi a 7 secondi, è possibile considerare terminata la salita della risposta, raffigurata nella seguente figura. M. Scarpiniti Una a Simulink 25 / 38
Risolvere un equazione differenziale L elaborazione dei segnali E anche possibile risolvere in Simulink un equazione differenziale del tipo a n d n y(t) dt n + a n 1 d n 1 y(t) dt n 1 +... + a 1 dy(t) dt + a 0 y(t) = f (t). La prima operazione è mettere l equazione precedente sotto la forma seguente: d n y(t) dt n = f (t) a n a n 1 a n d n 1 y(t) dt n 1... a 1 dy(t) a 0 y(t), a n dt a n e quindi eseguire una serie di n integrazioni mediante blocchi integratori. M. Scarpiniti Una a Simulink 26 / 38
Risolvere un equazione differenziale L elaborazione dei segnali Per meglio chiarire quanto detto, si veda come esempio il sistema meccanico massa-molla-smorzatore, che ha come equazione ẍ = 1 (f (t) bẋ kx), m con i valori, ad esempio, di m = 2 Kg, b = 1 Ns/m e k = 8 N/m. k m b Si supponga inoltre che l eccitazione sia un gradino unitario di ampiezza 5 N, e che le condizioni iniziali siano nulle. M. Scarpiniti Una a Simulink 27 / 38
Risolvere un equazione differenziale L elaborazione dei segnali A questo punto si crea il modello in Simulink. Oltre a due integratori e uno scope, vengono utilizzati anche tre blocchi gain (reperibili nella libreria Commonly used Blocks) e un blocco sottrattore (reperibile nella libreria Math Operations). M. Scarpiniti Una a Simulink 28 / 38
Risolvere un equazione differenziale L elaborazione dei segnali Il risultato è illustrato nella seguente figura, in cui è evidente l andamento oscillatorio della massa, che tende ad assestarsi intorno a b x final = 5 2 km = 5 0.125 = 0.625 m. M. Scarpiniti Una a Simulink 29 / 38
L elaborazione dei segnali Leggere e scrivere un file audio e multimediali Per leggere e scrivere un file audio di tipo wav è possibile utilizzare i blocchi From Wave File e To Wave File, che sono reperibili nella raccolta Signal Processing Blockset alle librerie Signal Processing Sources e Signal Processing Sinks rispettivamente. Questi blocchi sono obsoleti e si consigli di utilizzare i blocchi From Multimedia File e To Multimedia File, che consentono anche di leggere e scrivere file avi. M. Scarpiniti Una a Simulink 30 / 38
Leggere e scrivere audio da scheda L elaborazione dei segnali E anche possibile leggere e scrivere dati audio direttamente dalla scheda audio del computer. A tal proposito è possibile utilizzare i blocchi From Audio Device e To Audio Device, che sono reperibili nella raccolta Signal Processing Blockset alle librerie Signal Processing Sources e Signal Processing Sinks rispettivamente. E possibile, facendo doppio click sul blocco, andare a modificare le proprietà della scheda, quali numero di canali e frequenza di campionamento. E anche molto utile poter specificare la lunghezza in secondi del buffer di lettura e scrittura. Tale parametro è importante per la sincronizzazione in applicazioni real-time. M. Scarpiniti Una a Simulink 31 / 38
Il cancellatore adattativo di rumore L elaborazione dei segnali Lo scopo del prossimo esempio è di implementare un cancellatore adattativo di rumore (ANC), già visto precedentemente, che utilizza l algoritmo LMS. Nella raccolta Signal Processing Blockset, libreria Filtering è disponibile una sotto-libreria Adaptive Filters in cui è presente un blocco LMS Filter che implementa l algoritmo richiesto. Il modello del cancellatore è presentato di seguito. M. Scarpiniti Una a Simulink 32 / 38
Il cancellatore adattativo di rumore L elaborazione dei segnali Il modello proposto legge i segnali del riferimento primario e secondario da file ( radiorum.wav e noise.wav, rispettivamente) e scrive il risultato, il segnale di errore, su un file dal nome radioripulita.wav. Il blocco LMS esegue direttamente l algoritmo LMS, costruendo l errore come e[n] = d[n] y[n]. M. Scarpiniti Una a Simulink 33 / 38
Il sottrattore spettrale di rumore L elaborazione dei segnali Il prossimo esempio consiste nello sviluppare un soppressore di rumore attraverso la sottrazione spettrale. In estrema sintesi, viene stimato lo spettro di rumore su un piccolo tratto di segnale in cui non è presente segnale utile. Successivamente tale spettro è sottratto a tutto il segnale. Evidentemente tale tecnica introduce irrimediabilmente delle distorsioni. Risultati migliori possono essere ottenuti lavorando a sotto-bande. M. Scarpiniti Una a Simulink 34 / 38
Usare la webcam L elaborazione dei segnali Nelle ultime versioni di Matlab è possibile acquisire un immagine da webcam. E sufficiente creare un puntatore ad un oggetto webcam, nel modo seguente: cam = webcam ( id ); in cui id è l identificativo della webcam. Per visualizzare poi una preview, si utilizza preview ( cam ); closepreview ( cam ); Per acquisire un immagine, si usa img = snapshot ( cam ); Infine per chiudere l oggetto webcam, si utilizza clear ( cam ); M. Scarpiniti Una a Simulink 35 / 38
L elaborazione dei segnali Interfacciare Simulink con Raspberry Pi Nell ultima versione di Matlab è possibile installare il supporto per Raspberry Pi. Tale supporto consente di connettere Matlab, in particolare Simulink, a Raspberry Pi per elaborare informazioni provenienti da sensori collegati ai bus I/O di quest ultimo. Maggiori informazioni sono reperibili al seguente link: http://it.mathworks.com/hardware-support/ raspberry-pi-simulink.html. La connessione con Raspberry Pi può anche avvenire in remoto, attraverso un indirizzo IP: questa funzionalità è molto comoda, in quanto consente di elaborare in Matlab dati provenienti da un ambiente distante e non direttamente accessibile. M. Scarpiniti Una a Simulink 36 / 38
L elaborazione dei segnali Interfacciare Simulink con Raspberry Pi Una volta aperto Simulink, è possibile trovare sulla sinistra una scheda di componenti denominata Simulink Support Package for Raspberry Pi Hardware, ed aprirla con doppio click. Sono disponibili diverse funzionalità. Per inviare e ricevere dati da Rapberry Pi, si utilizzano i due blocchi: UDP Send e UDP Receive, che è possibile configurare con un indirizzo IP. E anche possibile creare un oggetto Matlab, attraverso il comando: h = raspberrypi ; M. Scarpiniti Una a Simulink 37 / 38
Bibliografia L elaborazione dei segnali Matlab. Simulink: Getting Started Guide. http://www.mathworks.com/help/pdf_doc/simulink/sl_gs.pdf. T.A. Davis. MATLAB Primer. 8-th Edition, CRC Press, 2010. A.K. Tyagi. MATLAB and Simulink for Engineers. Oxford University Press, 2012. O.I. Okoro and E. Chikuni. The Essential MATLAB & Simulink: For Engineers and Scientists. Juta Legal and Academic Publishers, 2009. J.B. Dabnev and T.L. Harman. Master Simulink. Prentice-Hall, 2003. D. Silage. Digital Communication Systems Using MATLAB and Simulink. Cyberread, 2009. A.B. Biran and M. Breiner. What Every Engineer Should Know about MATLAB and Simulink. CRC Press, 2010. M. Scarpiniti Una a Simulink 38 / 38