Simulink è uno strumento che opera in ambiente Matlab, è un potente strumento interattivo per la modellazione, simulazione ed analisi dei sistemi dinamici. Il suo ambiente di sviluppo grafico consente di creare rapidamente modelli di simulazione mediante il collegamento di blocchi funzione, il suo nome infatti deriva dalle parole Simulation (simulazione) e Link (collegamento).
Simulink è lo strumento ideale per la progettazione di sistemi di controllo, DSP (Digital Signal Processor), sistemi di comunicazione e di altre applicazioni in cui la simulazione gioca un ruolo fondamentale. Ecco 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 col RealTime 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.
» 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.
» Fuzzy Logic Toolbox: utilizza questa interessante tecnica per i regolatori dell’ultima generazione.
» 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.
Le proprietà principali di Simulink possono essere riassunte nel seguente modo:
» facilità di utilizzo: mediante interfaccia grafica è relativamente facile costruire un modello;
» ampia libreria di blocchi predefiniti;
» debugger grafico: permette di visualizzare il blocco o i blocchi che danno problemi;
» model browser per navigare in modo gerarchico nel modello;
» finestra di ricerca per modelli e librerie;
» blocchi personalizzati che possono incorporare codice C, Ada, MATLAB e Fortran.
La struttura
Analizziamo come è strutturato:
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
E’ 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 una post-processazione dei risultati. Simulink può anche prelevare delle serie temporali dal work-space durante la simulazione.
Algoritmi di integrazione
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. 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:
» 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);
» Discontinuites, 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 più dimensioni che vengono interpolate;
» Signals Routing, elementi per trasformare più scalari in un vettore (e viceversa), deviatori;
» User Defined Functions, per chiamare funzioni create dall’utente in C o Fortran o Matlab. 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, servovalvole, 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 (figura 1).
L’avvio
Un modo è quello di battere il comando simulink nella command window, ma il più comodo è quello di cliccare sulla icona del desktop di Matlab (alla sinistra del punto interrogativo), in entrambi i casi viene avviato il Simulink Library Browser. Quindi si può procedere a creare un nuovo modello (icona foglio bianco) o caricar ne 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 “save as”, si potrà dare un nome opportuno. Per disegnare il modello si trascinano (drag and 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 ciccare sul pulsante destro del mouse.
Esempio: come risolvere un’equazione differenziale
Analizziamo adesso un esempio semplicissimo per vedere, in particolare, come poter gestire una simulazione. Negli articoli successive vedremo esempi di sistema di applicazione elettronica. Vogliamo costruire un modello Simulink che risolve la equazione differenziale:
con la condizione iniziale x(0) = -1. Si inizia delineando lo schema a blocchi di questo modello matematico. L’ingresso è la funzione di forzamento: 3sin(2t); l’uscita, invece, è la soluzione dell’equazione differenziale: x(t) (figura 2).
Primo passo è comporre lo schema trascinando il blocco sine wave dalla libreria Sources nella finestra del modello (figura 3).
Successivamente trascinare il blocco integrator dalla finestra Continuos nella finestra del modello (figura 4).
Infine si trascina il blocco di uscita (Scope) dalla libreria Sinks nella finestra del modello (figura 5).
Dopo aver posizionato I blocchi del sistema si effettua i collegamenti (figura 6):
» Posizionare il puntatore sulla porta di uscita (>) del blocco sine wave.
» Trascinare l’uscita del blocco sine wave all’ingresso del blocco integrator.
» Trascinare l’uscita del blocco integrator all’ingresso del blocco scope.
A questo punto siamo pronti per la simulazione. I passi da eseguire sono i seguenti:
» Selezionare i parametri di simulazione facendo doppio click sul blocco sine wave (figura 7) e sul blocco integrator (figura 8).
» Doppio click sul blocco scope per vedere i risultati della simulazione (figura 9).
» Avvio della simulazione: nella finestra del modello, dal menù a tendina Simulation, selezionare start (figura 10).
» Osservare l’uscita x(t) nella finestra scope (figura 11).
Per verificare che l’andamento ottenuto rappresenti la soluzione cercata, si può risolvere analiticamente l’equazione; il risultato è:
che coincide con il grafico in figura 11.
Ottimo strumento, per simulare e testare sistemi in maniera rapida
La possibilità di utilizzare sorgenti di segnale di forma specifica o arbitraria permette di simulare e testare molte tipologie di modelli, validando sul sistema host la maggior parte dell’applicazione.