Laboratorio informatico per l ingegneria elettrica Luca Sani Dipartimento di Università di Pisa tel. 050 2217364 email luca.sani@dsea.unipi.it
Sommario Sistemi tempo varianti I segnali Sottosistemi Maschere Accelerator Comandi Matlab Le S-Function 2 2
Sistemi tempo varianti Simulink permette di simulare sistemi dinamici i cui parametri sono variabili nel tempo. Si utilizzano i blocchi Clock e Transportation Delay. Il blocco Clock (libreria Sources) rende disponibile l istante corrente della simulazione. Il blocco Transportation Delay (libreria Continuous) permette di simulare un ritardo temporale: l uscita è il segnale d ingresso ritardato di un tempo specificato. 3 3
Sistemi tempo varianti Si considera il seguente esempio ( ) + ( ) = ( ) + ( ) x t x t x t t x t 0.5 sin ( ) x ( 0) = 0.2 La dipendenza esplicita dal tempo è ottenuta considerando il tempo come un ulteriore ingresso del sistema. Si riporta nella forma adatta alla simulazione: ( ) = ( ) + ( ) + ( ) x t x t x t t x t 0.5 sin ( ) 4 4
Sistemi tempo varianti Si costruisce il modello Simulink associato ( ) = ( ) + ( ) + ( ) x t x t x t t x t 0.5 sin ( ) 5 5
Sistemi tempo varianti Si eseguono i vari collegamenti, si modifica il nodo sommatore, si assegna la condizione iniziale all integratore e il valore del ritardo temporale. 6 6
Sistemi tempo varianti Si accettano i parametri di simulazione di default. 7 7
I Segnali I segnali in Simulink sono flussi di valori che rappresentano l output di un blocco quando il modello è simulato. E utile pensare che i segnali viaggino lungo le linee che collegano i blocchi in uno schema. Da sottolineare che queste linee rappresentano dei collegamenti logici e non Sistemi fisici (cioè indicano Elettrici quali ingressi e Automazione e quali uscite dei vari blocchi sono connessi e la propagazione dei segnali è istantanea). 8 8
I Segnali Negli esempi fino ad adesso esaminati tutti i blocchi considerati erano caratterizzati da un ingresso e da un uscita. In altri termini le quantità in ingresso ed in uscita dei singoli blocchi erano degli scalari. Questa scelta non è sempre perseguibile né ottimale. E possibile costruire schemi Simulink di tipo multivariabile, caratterizzati dal fatto che i blocchi possono avere più di un ingresso e di un uscita. Gli schemi multivariabili possono essere realizzati sia utilizzando blocchi caratterizzati da più punti di entrata o di uscita, sia blocchi in cui l unico punto di ingresso (uscita) fisico corrisponde a n-ingressi (uscite) logiche. Questo permette di ridurre al minimo il numero di collegamenti necessari per la costruzione dello schema e di conseguenza permette di aumentare la chiarezza degli schemi stessi 9 9
I Segnali E possibile ottenere un segnale multivariabile a partire da n segnali scalari utilizzando il blocco Mux (Signal Routing) Come parametro del Mux occorre specificare il numero di ingressi 10 10
I Segnali E possibile evidenziare nello schema i segnali multivariabili (sono rappresentati in grassetto) e le dimensioni dei canali scegliendo rispettivamente l opzione Wide Nonscalar Lines e Signal Dimensions nel menu Format 11 11
I Segnali Il blocco Mux può combinare anche segnali vettoriali. In questo caso il parametro è un vettore la cui dimensione corrisponde al numero di canali di ingresso; ogni elemento specifica le dimensioni del corrispondente segnale di ingresso. 12 12
I Segnali Il blocco Mux consente di ridurre il numero delle linee in uno schema. Si rende necessario ad esempio in ingresso ad un blocco funzione (Fcn). Questo infatti è l unico modo per utilizzare più ingressi e implementare funzioni a più variabili. L ingresso u al Fcn è adesso un vettore. I singoli segnali sono rappresentati dalla variabile u seguita dall indice racchiuso tra parentesi quadre. 13 13
I Segnali E possibile scomporre un segnale multivariabile utilizzando il blocco Demux (Signal Routing) Come parametro del Mux occorre specificare il numero di segnali di uscita. Se questo è uno scalare deve essere uguale alle dimensioni del segnale di ingresso, mentre in uscita tutti i segnali sono scalari. 14 14
I Segnali E possibile riorganizzare i segnali di uscita come segnali multivariabili; in questo caso il parametro deve essere un vettore le cui dimensioni sono il numero di segnali e il valore di ogni elemento rappresenta le dimensioni del corrispondente segnale. 15 15
I Segnali Wireless In presenza di schemi complessi tracciando tutte le linee necessarie al collegamento dei vari blocchi si potrebbero venire a creare veri e propri grovigli di fili tali da rendere praticamente incomprensibile lo schema. Simulink mette a disposizione i blocchi From e Goto che consentono di realizzare collegamenti wireless. 16 16
I Segnali Wireless Ad ogni blocco Goto è associata un etichetta (vedi esempio Label). Introducendo in uno o più blocchi From si crea un collegamento wireless tale per cui tutti i segnali che entrano nel Goto escono dai From. Nel blocco Goto è necessario specificare l ambito di visibilità delle etichette Global: il Goto è accessibile da qualunque punto dello schema Local: il Goto è accessibile solo all interno del sottosistema in cui è collocato. Scoped: è accessibile all interno del sottosistema e in tutti quelli inferiori. 17 17
Comportamento dei blocchi in presenza di segnali multivariabili Molti blocchi Simulink accettano ingressi di tipo vettoriale. Simulink adatta in modo dinamico i parametri alle dimensioni del segnale di ingresso. A secondo della situazione si parla di espansione scalare degli input o dei parametri. 18 18
Espansione Scalare degli Input Nel caso che in ingresso ad un blocco si abbia un segnale scalare e un segnale multivariabile, Matlab espande il segnale scalare in modo da ottenere un segnale multivariabile delle stesse dimensioni dell altro segnale di ingresso. Esempio: si ha un nodo sommatore i cui ingressi sono un segnale scalare e uno vettoriale di dimensione 3. Quello scalare è trasformato in uno vettoriale di dimensione 3 costituito da tre segnali identici. 19 19
Nel caso che in ingresso ad un blocco si abbia un segnale vettoriale e i parametri del blocco siano scalari, Matlab esegue un espansione dei parametri, applica cioè la stessa funzione ad ogni canale del segnale di ingresso. Esempio Espansione Scalare dei Parametri Si ha un guadagno con in ingresso un segnale vettoriale di dimensione 3. Matlab applica lo stesso guadagno ad ogni canale 20 20
Esempio Espansione Scalare dei Parametri Si ha un integratore con in ingresso un segnale vettoriale di dimensione 3. Matlab calcola separatamente l integrale di ogni segnale di ingresso. 21 21
Blocchi con Parametri Multidimensionali In quasi tutti i blocchi Simulink è possibile inserire dei vettori nei campi parametri. In questo modo è possibile implementare n funzioni differenti (con l obbligo che la dimensione delle condizioni vettoriali sia pari alla dimensione dell ingresso). 22 22
Creazione di un Sottosistema La leggibilità e la chiarezza di uno schema si riduce quando il numero di blocchi presenti diviene elevato. E sempre possibile scomporre un sistema complesso in n-sottosistemi più semplici. Questo permette di: aumentare la chiarezza, una messa a punto più efficace, potendo testare separatamente ed indipendentemente la validità e la correttezza dei singoli componenti e, solo in un secondo momento, la validità dello schema nel suo complesso. 23 23
Creazione di un Sottosistema Simulink permette di organizzare uno schema in modo gerarchico. Permette cioè di raggruppare parte del modello in un unico blocco detto sottosistema (Subsystem). Questo Università diviene nuovo di blocco Pisa Simulink Dipartimento che può essere utilizzato di per costruire nuovi schemi. Un sottosistema può contenere a sua volta altri sottosistemi realizzando così un organizzazione gerarchica dello schema su un numero arbitrale di livelli. 24 24
Creazione di un Sottosistema I passi per creare un sottosistema sono: selezionare tutti i blocchi che interessa raggruppare (la selezione multipla si realizza con il mouse, tenendo premuto il tasto sinistro e muovendo il cursore in modo da creare l area che contiene tutti i blocchi, Università oppure tenendo di premuto Pisa il tasto Dipartimento Shift e selezionando con di il mouse i singoli blocchi). selezionare l opzione Create Subsystem dal menu Edit (o la combinazione CTRL-G) Al posto dei blocchi selezionati comparirà un unico blocco il cui nome di default è Subsystem. 25 25
Creazione di un Sottosistema Si riprende il modello del riscaldamento di un abitazione. Si selezionano i vari elementi che costituiscono il modello termico della casa. 26 26
Creazione di un Sottosistema Si seleziona l opzione Create Subsystem 27 27
Creazione di un Sottosistema Simulink sostituisce i blocchi selezionati con un nuovo blocco denominato Subsystem 28 28
Creazione di un Sottosistema Il nuovo blocco presenta un numero di ingressi e di uscite tali da mantenere le connessioni con gli oggetti esterni al sottosistema. In particolare: Il numero di ingressi è pari al numero di segnali provenienti dai blocchi esterni rivolti ai blocchi interni al sottosistema. Nel caso in esame si hanno i segnali provenienti dal termostato e dalla temperatura esterna. Il numero di uscite è pari al numero di segnali provenienti dai blocchi interni al sottosistema e rivolti a blocchi esterni. Nel caso in esame si ha il segnale temperatura casa collegato allo scope e all anello di controllo. 29 29
Creazione di un Sottosistema Se si seleziona il blocco creato e si clicca due volte il tasto sinistro del mouse si apre una nuova finestra che contiene: la parte del modello raggruppata Università ogni segnale di ingresso di Pisa Dipartimento di è indicato da un blocco Inport (In) ogni segnale di uscita è indicato da un blocco Outport (Out) 30 30
Creazione di un Sottosistema Simulink numera in modo progressivo i blocchi di ingresso e di uscita. L ordine degli ingressi sul lato sinistro dell icona del blocco (dall alto verso il basso) coincide con l ordine delle porte di input presenti nel sottosistema: Università ossia la di porta Pisa identificata Dipartimento con In1 è il primo ingresso di in alto e così via. Analogo discorso per la corrispondenza tra le porte di uscita e le uscite del sottosistema. Se nel sottosistema si aggiunge un blocco Outport (Inport) questo viene numerato in modo automatico e si aggiunge un uscita (ingresso) all icona del sottosistema. 31 31
Creazione di un Sottosistema Per una migliore comprensione del blocco si possono rinominare i blocchi Inport e Outport. Le nuove etichette compaiono nell icona del blocco. 32 32
Creazione di una Maschera I sottosistemi realizzati presentano alcuni inconvenienti: hanno un aspetto grafico standard e possono essere riconosciuti solo grazie al loro nome; non è prevista alcuna spiegazione sul loro funzionamento; risulta difficile assegnare i valori ai vari parametri dei blocchi interni. Per superare questa difficoltà è possibile mascherare il sottosistema tramite l operazione di mask. 33 33
Creazione di una Maschera L operazione di mask non riguarda solo gli aspetti grafici del sottosistema, ma coinvolge anche le modalità di gestione delle variabili. Creando un mask tutte le variabili utilizzate all interno del sottosistema vengono mascherate, cioè non sono più accessibili dall esterno del sottosistema e l unico modo per assegnare i valori è quello di utilizzare i parametri del blocco definiti tramite il Mask Editor. Si crea una maschera selezionando il blocco e poi scegliendo l opzione Mask subsystem. 34 34
Creazione di una Maschera Compare la finestra del Mask Editor 35 35
Creazione di una Maschera Pagina Icon: consente di specificare l aspetto grafico del blocco. Icon frame: specifica se visualizzare il rettangolo contornante il blocco. Icon trasparency: specifica se il disegno deve coprire o no il nome delle porte Icon rotation: specifica se l orientazione del disegno deve cambiare in presenza di rotazioni del blocco Drawing coordinates: specifica il sistema di coordinate per il disegno. max(x), max(y) (1,1) larghezza, altezza del blocco Autoscale Normalized Pixel 36 min(x), min(y) (0,0) (0,0) 36
Creazione di una Maschera Pagina Icon All interno del blocco è possibile inserire: Testo con i comandi text e disp Sintassi text(x, y, text) disp(text) in questo caso il testo è centrato nell icona Etichette da associare alle porte del blocco comando port_label Sintassi port_label(port_type, port_number, label) Esempio: port_label( input, 2, velocità ) 37 37
Creazione di una Maschera Pagina Icon All interno del blocco è possibile inserire: Disegni tramite il comando plot la sintassi è la stessa dell analogo comando Matlab, non sono però ammessi i modificatori che specificano il tipo e il colore delle linee. Immagini con il comando image Sintassi image(imread(file)) Esempio: image(imread('icon.tif')) 38 38
Creazione di una Maschera Pagina Icon All interno del blocco è possibile inserire: Funzioni di trasferimento con i comandi dpoly e droots mostrano rispettivamente, la funzione di trasferimento e la sua rappresentazione in termini di poli e zeri. Sintassi 39 dploy(numeratore, denominatore) droots(zeri, poli, guadagno statico) I parametri sono dati come vettori Nel campo Drawing commands è possibile inserire più comandi. E possibile far riferimento solo a variabili definite nel campo Initialization. Se si inserisce un comando errato Simulink mostrerà la stringa??? all interno del blocco. 39
Pagina Parameters Creazione di una Maschera Consente di definire i parametri del blocco, il legame tra questi e i parametri presenti nel sottosistema. 40 40
Pagina Parameters Creazione di una Maschera Per ogni parametro che apparirà nella finestra dei parametri del blocco occorre specificare: Prompt: specifica l etichetta del campo Variable: il nome della variabile nella quale memorizzare il valore Control type: specifica il tipo di campo parametri. Le possibilità sono Edit, Checkbox e Popup I comandi a lato consentono di inserire, cancellare e ordinare i parametri della maschera Nel campo Initialization commands è possibile specificare le variabili locali 41 41
Creazione di una Maschera Pagina Initialization E possibile specificare le variabili locali che ad esempio possono essere utilizzate sia per il disegno dell icona del blocco che per la definizione dei parametri dei blocchi che formano il sottosistema. 42 42
Pagina Documentation Creazione di una Maschera Consente di documentare il funzionamento del blocco 43 43
Creazione di una Maschera Pagina Documentation Consente di documentare il funzionamento del blocco definendo: Mask type: permette di specificare il tipo di blocco Block description: è la sintetica descrizione del blocco che compare nella parte alta della finestra dei parametri. Block help: è il testo che compare (in formato html) quando si preme il tasto Help 44 44
Creazione di una Maschera Esempio: si vuol realizzare una maschera al sottosistema casa 45 45
Creazione di una Maschera Nel campo drawing si inserisce la seguente stringa: plot(0,0,100,100,[20,80,80,20,20],[20,20,70,70,20],[15,50,85,15],[70,90,70,70],[42,42,29,29],[20,44,44,20],[52,68,68,52,52],[55,55,44,44,55]) 46 46
Creazione di una Maschera Premendo il comando Apply l aspetto del blocco è diventato il seguente 47 47
Creazione di una Maschera Si rientra nel sottosistema e si sostituiscono i valori numerici dei parametri con delle variabili 48 48
Creazione di una Maschera Si crea la finestra dei parametri Si seleziona il blocco e l opzione Edit Mask nel menu Edit. In questo modo ricompare l Edit Mask 49 49
Creazione di una Maschera Nella pagina Parameters si inseriscono le due variabili C e Req come campi edit. Per fare ciò occorre premere il tasto Add e poi compilare i vari campi Add 50 50
Creazione di una Maschera Una volta premuto Apply o Ok, se si ritorna al modello Simulink e si clicca sul blocco casa, compare la finestra parametri, in cui è possibile assegnare i valori 51 51
Creazione di una Maschera Si può ritornare nel Mask Editor per completare la maschera inserendo alcuni commenti come help 52 52
Creazione di una Maschera Adesso la maschera parametri si presenta nel seguente modo: 53 53
Creazione di una Maschera Da questo momento il sottosistema è mascherato e non è più direttamente visibile. Per poter accedervi occorre selezionare il blocco e scegliere l opzione Under Mask nel menu Edit 54 54
Il Simulink Accelerator Nel caso di modelli Simulink complessi i tempi di simulazione possono essere molto lunghi. Simulink mette a disposizione un tool, chiamato Accelerator, che consente di ridurre drasticamente i tempi di simulazione. A partire dal modello Simulink costruito in modo grafico, Simulink crea prima un file in linguaggio C e successivamente un eseguibile (Mex file). Con questa soluzione il tempo di simulazione si può ridurre mediamente a un decimo del tempo impiegato con il file interpretato. 55 55
Il Simulink Accelerator Le operazioni da eseguire per creare un file Simulink compilato sono: Installazione del Simulink Performance Tool Definizione del compilatore C da utilizzare Dal rompt dei comandi occorre digitare >> mex setup Matlab chiede se si vuol vedere l elenco dei compilatori C installati nel PC e successivamente di sceglierne uno. Matlab mette a disposizione un compilatore denominato Lcc 56 56
Il Simulink Accelerator 57 57
Il Simulink Accelerator Nel menu Simulation selezionare l opzione Accelerator 58 58
Il Simulink Accelerator Avviando la simulazione del modello Simulink esegue le seguenti operazioni: crea un file C corrispondente al modello Simulink compila il file e crea un eseguibile (Mex file) lancia la simulazione Tutte le volte che viene modificato lo schema Simulink si ripete la procedura di creazione del file Mex. 59 59
I comandi Matlab E possibile gestire un modello Simulink anche da prompt dei comandi di Matlab. Simulazione di un modello Per eseguire una simulazione si può utilizzare la funzione sim. Sitassi [t, x, y]=sim( model, tfinal, options, ut) dove t, x e y sono rispettivamente il vettore degli istanti di simulazione e le matrici dei corrispondenti valori degli stati e delle uscite del modello. model è il nome del file che contiene il modello da simulare. 60 60
I comandi Matlab Se tfinal è un vettore di due elementi il primo valore è l istante iniziale per la simulazione e il secondo è quello finale. Se è un vettore composto da più di due elementi il primo e l ultimo sono gli istanti di start e stop, quelli intermedi sono gli istanti in cui valutare il modello. Il parametro Options viene generato dalla funzione simset e consente di specificare i parametri e il modello di integrazione. La variabile ut consente di specificare i valori assunti dagli ingressi. Se al posto di un parametro si introduce la matrice vuota [] per la simulazione verranno utilizzati i valori specificati all interno del modello. 61 61
I comandi Matlab Osservazione Gli ingressi e le uscite del sistema sono esclusivamente quelle connesse ai blocchi Inport e Outport (la presenza di un generatore non è considerata equivalente ad un ingresso, ma viene interpretata come un elemento integrato nello schema). Esempio 62 62
I comandi Matlab Visualizzazione dei risultati Con la funzione simplot è possibile visualizzare i risultati di una simulazione con l aspetto che ricorda quello di uno scope all interno di una finestra Matlab. Sintassi simplot(data) dove data è la variabile associata ad un blocco di Output, ad esempio un To Workspace o un blocco Scope in cui è stato abilitato il salvataggio delle variabili (Data history). 63 63
I comandi Matlab Esempio 64 64
S-Function Quando è necessario simulare un sistema o una particolare funzione definita dall utente, è possibile ricorrere alle S-Function. 65 65
S-Function Per definire il comportamento di una S-Funcion, si utilizza un M-file al quale la S-Function stessa viene associata. Un modello di questo file (template) è Matlabroot\toolbox\simulink\blocks1sfuntmpl.m Questo file è suddiviso in 5 sezioni: inizializzazione calcolo delle uscite aggiornamento degli stati discreti calcolo delle derivate fine della simulazione 66 66
S-Function Una volta copiato il file modello e rinominato con il nome del S- Function inclusa nel modello Simulink, è sufficiente modificare opportunamente le sezioni per ottenere il comportamento voluto. 67 67
S-Function: inizializzazione 68 68
S-Function: inizializzazione L inizializzazione di una S-Function consiste nello specificare il numero di ingressi, delle uscite, degli stati continui e discreti, degli ingressi che si riversano direttamente sulle uscite e del numero dei passi di campionamento. 69 69
S-Function: aggiornamento degli stati e delle uscite 70 70
S-Function: aggiornamento degli stati e delle uscite La possibilità di implementare qualsiasi legge di aggiornamento dello stato, permette di ottenere ogni forma di comportamento dalla S- Function. In questo esempio è stato implementato il sistema SISO di ordine 1: dx = -3X + u Y = X Dove X è lo stato, dx è la derivata dello stato u è l ingresso Y è l uscita 71 71
S-Function: aggiornamento degli stati e delle uscite 72 72