Sei sulla pagina 1di 165

MATLAB-SIMULINK

1
Simulink
Ing. Alessandro Pisano
pisano@diee.unica.it
2
Introduzione
Librerie e blocchi elementari (1)
Realizzazione di un modello
Esempio: costruzione e visualizzazione di una sinusoide
Scelta del solutore
Modifica delle impostazioni predefinite
Utilizzo di variabili dal workspace
Librerie e blocchi elementari (2)
Esportazione dati verso il Workspace e su file esterno
Esempio: filtro passa basso
Integratore
Esecuzione automatizzata di test
Analisi spettrali (FFT)
Filtraggio digitale
Esempio: sistema termico ad 1 e 2 gradi di libert
Utilizzo di blocchi Trasnfer function
Esempio: Simulazione di un sistema di regolazione di temperatura
Creazione di sottosistemi
Mask
Esempio Distribuzione di temperatura nel rotore di una turbina
Realizzazione di sistemi MIMO LTI
Variabili popup e checkbox
Esempio: sistema di frenatura con ABS
Embedded Matlab Function
Toolbox avanzati. SimMechanics e SimDriveline
3
7
9
11
16
20
27
28
31
37
40
43
44
59
63
68
73
81
85
90
99
109
112
123
133
Indice
Alessandro Pisano - pisano@diee.unica.it
3
Finestra di avvio (v. 7.8.0)
Cartella corrente
Avvio SIMULINK
Editor M-files
Alessandro Pisano - pisano@diee.unica.it
4
Programmazione dei modelli di simulazione per via grafica
Alessandro Pisano - pisano@diee.unica.it
5
Possibilit di suddividere il modello complessivo in sottosistemi paralleli o
embricati (un sottosistema pu essere importato direttamente in un
modello di simulazione differente)
Possibilit di definire finestre di parametrizzazione (Masks)
Esportazione nel workspace Matlab dei risultati della simulazione
Esecuzione automatizzata di test
Toolbox avanzati: SimDrivelline e SimMechanics
Alessandro Pisano - pisano@diee.unica.it
6
Avvio SIMULINK
Librerie principali
New
Alessandro Pisano - pisano@diee.unica.it
7
Libreria Commonly used blocks
Alessandro Pisano - pisano@diee.unica.it
8
Libreria Sinks
Libreria Sources
Alessandro Pisano - pisano@diee.unica.it
9
Pagina di lavoro
Realizzazione di un modello Simulink
10
Realizzazione di un modello Simulink
1. Importare nella pagina di lavoro i blocchi elementari Simulink
necessari, trascinandoli con il mouse dalla rispettiva libreria
(drag-and-drop)
3. Collegare tra loro i blocchi Simulink tracciando le opportune linee di
interconnessione in modo da realizzare le funzionalit desiderate
2. Parametrizzare i blocchi Simulink nelle rispettive finestre di
parametrizzazione, alle quali si accede dalla pagina di lavoro
facendo doppio click con il mouse sopra il blocco stesso.
3 fasi
Alessandro Pisano - pisano@diee.unica.it
11
Esempio introduttivo: costruzione e visualizzazione di un segnale sinusoidale
Sono sufficienti due blocchi elementari: un blocco che generi il segnale desiderato, ed un
blocco che ne permetta la visualizzazione.
Il primo blocco lo troveremo nella libreria Sources (blocco Sine Wave),
Il secondo blocco (blocco Scope), si trova nella libreria Sinks.
I blocchi necessari vanno
importati nella pagina di lavoro
Untitled trascinando con il
mouse (drag-and-drop) licona
del blocco allinterno della
pagina di lavoro. Il risultato di
tale procedura mostrato in
Figura.
Salvare il modello e attribuire un
nome al file con estensione .mdl
Alessandro Pisano - pisano@diee.unica.it
12
Si deve ora collegare luscita del generatore di funzione Sine Wave con
lingresso del blocco di visualizzazione Scope.
Per effettuare un collegamento tra due blocchi vi una procedura rapida. Si
deve selezionare il blocco di origine (cliccandovi sopra), e si deve
successivamente selezionare il blocco di destinazione con il tasto ctrl
premuto.
Un collegamento correttamente eseguito viene
indicato come in Figura
In alternativa, si pu portare la freccia del mouse nel punto di origine del
collegamento e quindi tracciarlo tenendo premuto il tasto sinistro del mouse,
portandosi fino al punto di destinazione.
Alessandro Pisano - pisano@diee.unica.it
13
Devono ora essere impostati i parametri di ampiezza, frequenza e sfasamento
che definiscono la particolare sinusoide che si desidera generare. A tal fine
necessario fare doppio click sul blocco Sine Wave, e come risultato si apre
una finestra di dialogo allinterno della quale vanno impostati i parametri di
funzionamento.
Ampiezza
Bias
Frequenza
Sfasamento
Tasto OK
Alessandro Pisano - pisano@diee.unica.it
14
Si deve ora impostare la durata (cio lintervallo temporale) della simulazione.
Cliccando sul tasto RUN viene
eseguita la simulazione.
Dopo che stata eseguita la
simulazione si pu visualizzare il
segnale generato cliccando sul blocco
Scope.
La durata si pu impostare direttamente dai men della pagina di lavoro
Durata
(valore di default 10.0)
Tasto RUN
Alessandro Pisano - pisano@diee.unica.it
15
Ora si aumenti la frequenza della sinusoide da 1 rad/s a 2t rad/s
Si ripeta la simulazione. Si ri-aggiorni il grafico della finestra grafica Scope
cliccando sul pulsante
nella barra dei menu della finestra Scope
Grafico spigoloso
Si deve andare a modificare il metodo
di integrazione, che definisce il passo di
discretizzazione temporale che viene
impiegato nella simulazione del
modello.
16
Il metodo di integrazione (Solver) si imposta selezionando il menu della pagina di
lavoro Simulation->Configuration Parameters
Alessandro Pisano - pisano@diee.unica.it
17
La scelta del solutore con il quale di risolvono numericamente le equazioni
differenziali del modello ovviamente irrilevante per il semplice esempio in
esame che non coinvolge alcun legame differenziale.
Il motivo della spigolosit del grafico sta nel fatto che il metodo proposto di default
(ode45 a passo variabile) ha scelto dei passi di discretizzazione temporale
piuttosto elevati, e sono stati quindi generati pochi campioni del segnale
In modelli di simulazione complessi, la scelta del solutore numerico (Runge-Kutta,
Dormand-Prince, Eulero,) e delle relative caratteristiche (passo fisso/variabile,
etc) va fatta con criterio.
Alessandro Pisano - pisano@diee.unica.it
18
Runge-Kutta e Dormand-Prince sono degli ottimi solutori general-purpose.
Per simulazioni multi-domain con la copresenza di costanti di tempo molto
differenti tra loro sono consigliati i metodi a passo variabile dedicati ai problemi
Stiff (es. ode15s/stiff).
Per simulazioni con elementi discontinui (non-smooth dynamics) i metodi a passo
variabile talvolta forniscono risposte non veritiere. Il solutore Eulero a passo fisso,
con un passo sufficientemente piccolo, ritenuto affidabile per sistemi non-
smooth.
Si scelga il solutore ode1 (Eulero) a passo fisso, e se ne imposti il Fixed-Step size a
0.001
Alessandro Pisano - pisano@diee.unica.it
19
Una scelta ottimale per il solutore bilancia, per il problema in esame, la precisione
della soluzione e la mole di calcoli richiesta, che influenza il tempo di simulazione.
Per identificare un solutore adeguato serve esperienza. Il passo di campionamento
deve essere commisurato alla rapidit di variazione dei segnali in gioco. Quando si
sceglie un solutore a passo variabile si pu pensare di introdurre un limite massimo
per il passo adattativo.
Quando il modello non contiene stati continui (non vi sono cioe blocchi dinamici
come Integratori, blocchi Transfer Fcn, etc.) Simulink usa il solutore discrete
anche se viene specificato un solutore differente,.
Considerazioni aggiuntive
Alessandro Pisano - pisano@diee.unica.it
20
Modifica delle impostazione predefinite per i files Simulink allapertura
Alessandro Pisano - pisano@diee.unica.it
21
Modificare le Solver Options come in figura
Alessandro Pisano - pisano@diee.unica.it
22
Modificare le Data Import/Export Options come in figura
Alessandro Pisano - pisano@diee.unica.it
23
Si ripeta la simulazione e si riaggiorni il grafico
La sinusoide viene per mostrata a partire
dallistante t=5.
Sono stati persi i campioni precedenti.
Il motivo che, al fine di non saturare rapidamente la memoria del programma,
vige in Simulink una impostazione di default in base alla quale nei blocchi di tipo
Scope vengono visualizzati e mantenuti in memoria solo gli ultimi 5000 campioni
del segnale.
Il grafico della sinusoide ora correttamente
rappresentato.
In base alla scelta fatta per il passo fisso del
solutore, vengono ora generati, e interpolati dal
grafico, 1000 campioni per ogni secondo di
evoluzione del segnale.
Alessandro Pisano - pisano@diee.unica.it
24
Per modificare tale impostazione per uno specifico
blocco si deve cliccare sul pulsante Parameters nella
finestra del blocco Scope
La finestra Scope Parameters ha due sottomenu: General e Data History.
Dal sottomenu Data History si deve disselezionare la check-box Limit data points to last ..
Alessandro Pisano - pisano@diee.unica.it
25
Ora ripetendo la simulazione e riaggiornando il grafico la sinusoide viene
visualizzata per intero
Per visualizzare un segnale costituito dalla somma di tre sinusoidi importiamo
nella pagina di lavoro due nuove istanze del blocco elementare Sine Wave, ed
importiamo anche un blocco che rappresenti un nodo sommatore (blocco Sum
dalla libreria dei Commonly Used Blocks)
Alessandro Pisano - pisano@diee.unica.it
26
Dopo aver cancellato la linea di collegamento
preesistente tra il primo blocco Sine Wave ed
il blocco Scope, si realizzi la connessione
riportata in Figura.
Il blocco Sum deve essere
preliminarmente parametrizzato
specificando il numero di segnali in
ingresso, ed il segno con il quale
concorrono alla sommatoria, per
mezzo di una stringa (es. +++ +)
Scegliamo +++
Laspetto del blocco diventa
Alessandro Pisano - pisano@diee.unica.it
27
Ora si possono assegnare i parametri di ampiezza, frequenza, bias e sfasamento, delle
tre sinusoidi, rieseguire la simulazione e visualizzare il grafico prodotto dal blocco
Scope .
I parametri di un modello possono essere espressi utilizzando delle variabili (es.
A1,f1,b1, ) alle quali si pu assegnare un valore con un file script Matlab da
eseguirsi prima della esecuzione della simulazione.
Tutte le variabili definite nel workspace di Matlab sono disponibili e accessibili da
parte dei blocchi Simulink.
Il modello pu essere in questo
modo riparametrizzato con estrema
facilit.
A1=1;
f1=1;
b1=5;
phi1=0;
A2=4;
f2=pi;
b2=2;
phi2=pi/2;
A3=1;
f3=4*pi;
b3=2;
phi3=0;
Alessandro Pisano - pisano@diee.unica.it
28
Libreria Continuous
Libreria Discontinuities
Libreria Discrete
29
Libreria Lookup Tables
Libreria Math operations
30
Libreria Model Verification
Libreria Signal routing
Alessandro Pisano - pisano@diee.unica.it
31
Il blocco To Workspace riceve in ingresso il segnale
(scalare o vettoriale) che salva nel workspace. Il
blocco si interconnette agli altri come in Figura.
Per tracciare un collegamento a partire da un
collegamento preesistente si deve portare il mouse
nel punto di diramazione, premere il tasto destro, e
poi allontanarsi e tracciare il collegamento tenendo
il tasto destro premuto, fino a giungere al punto di
destinazione del collegamento
Vediamo come esportare in Matlab i dati prodotti eseguendo i modelli
Simulink.
Serve il blocco To Workspace dalla libreria Sinks
Alessandro Pisano - pisano@diee.unica.it
32
Il blocco To Workspace va parametrizzato specificando il
nome della variabile che verr creata nel workspace di
Matlab (scegliere y) ed il formato di salvataggio (
opportuno modificare il formato di default Structure e
selezionare invece Array) .
Per ottimizzare limpiego della memoria del programma si
pu anche impostare un fattore intero di decimazione
(es. con decimation = 10 i dati vengono salvati nel
workspace con uno step temporale 10 volte superiore,
quindi si avranno meno elementi nel vettore y).
Si mantenga il valore unitario di default.
Il vettore dei tempi viene salvato di
default sotto forma di array con il
nome tout.
Bisogna per disabilitare una
impostazione che limita a 1000 il
numero massimo di elementi per
tout. Si deve andare ne Simulation-
>Configuration Parameters, e nel
menu Data Import/Export
disselezionare la check-box Limit
Data Points to Last
Alessandro Pisano - pisano@diee.unica.it
33
Lanciando la simulazione vengono creati nel workspace di Matlab gli array y e
tout.
Verificarlo digitando il comando whos
Si pu visualizzare in Matlab il grafico del segnale con il comando
plot(tout,y),grid
Alessandro Pisano - pisano@diee.unica.it
34
Se si desidera che i dati siano non solo esportati
nel workspace di Matlab ma anche salvati in
modo permanente su un file, si pu generare un
file dati nel formato binario .mat con il blocco To
File, dalla libreria Sinks
I files con estensione mat sono detti mat-files.
Esportazione su file dei dati prodotti da modelli Simulink.
Il blocco deve essere parametrizzato specificando
nella apposita finestra di configurazione:
-Il nome (comprensivo dellestensione) del mat-file
che verr creato (es. y_test1.mat).
-Il nome che verr assegnato alla variabile
quando il mat-file sar successivamente
aperto in Matlab (scegliere y)
E possibile impostare una decimazione dei dati.
Se si sceglie una Decimation > 1 bene generare
anche un vettore dei tempi sincrono con la
variabile sottocampionata
Alessandro Pisano - pisano@diee.unica.it
35
Lanciare la simulazione, e verificare come nella cartella di lavoro sia ora presente il
file y_test1.mat
Possono essere esportati segnali vettoriali. Per mezzo del blocco Mux (libreria
Commonly Used Blocks) si possono aggregare i tre segnali sinusoidali in un unico
segnale vettoriale con tre componenti.
Alessandro Pisano - pisano@diee.unica.it
36
La struttura interna dei mat-files prevede la memorizzazione dei dati in una struttura
rettangolare
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
...



3 2 1
2 3 2 2 2 1 2
1 3 1 2 1 1 1
1 3 2 1
N m m m m
N
N
N N
t y t y t y t y
t y t y t y t y
t y t y t y t y
t t t t t


I mat-files possono essere aperti successivamente in Matlab con il comando load.
>> load y_test1
Viene generata nel workspace di Matlab una variabile matriciale avente il nome
specificato nella finestra di configurazione del blocco To File e la struttura rettangolare
riportata sopra.
Alessandro Pisano - pisano@diee.unica.it
37
Filtro passabasso
Consideriamo un filtro passa-basso RC
+
V
in
V
out
( ) ( ) ( ) t V t V t V RC
in out out
= +


Equazione differenziale
Equazione differenziale esplicitata rispetto
alla derivata di ordine pi elevato
( ) ( ) ( ) ( ) t V t V
RC
t V
out in out
=
1

Posso realizzare uno schema di simulazione utilizzando un blocco Integrator, un blocco


Sum e un blocco Gain, oltre che ovviamente un generatore di segnale per costruire la
tensione di ingresso ed un blocco Scope per visualizzare la tensione di uscita.
Alessandro Pisano - pisano@diee.unica.it
38
Modello Simulink.
Grazie al blocco Mux possibile visualizzare i segnali Vin e Vout nel medesimo blocco
Scope. Inseriamo anche un blocco To Workspace (nome variabile vout, tipo array)
R=1e4; % 10k Ohm
C=1e-5; % 10 pF
Assegniamo un valore ai parametri
scrivendo un semplice script
La costante di tempo del filtro vale RC=0.1 s
( ) ( ) ( ) ( ) t V t V
RC
t V
out in out
=
1

Alessandro Pisano - pisano@diee.unica.it


39
Finestra di parametrizzazione del Signal Generator.
4 tipologie di segnali disponibili (sinusoidale, onda quadra,
dente di sega, random)
Il filtro pu essere implementato in forma pi compatta
mediante un blocco Transfer Function
Si devono specificare i
coefficienti dei polinomi a
numeratore e
denominatore della FdT
utilizzando la notazione
Matlab per la
rappresentazione dei
polinomi
( )
( )
( ) 1
1
+
= =
sRC s V
s V
s F
in
out
] 1 [ 1 RC sRC +
Rappresentazioni equivalenti
( ) ( ) ( ) t V t V t V RC
in out out
= +


Alessandro Pisano - pisano@diee.unica.it
40
Integratore
Nella finestra di parametrizzazione dellintegratore il parametro piu importante da settare
la condizione iniziale (Initial Condition), che di default viene impostata pari a zero
Possono essere introdotte saturazioni inferiori
e/o superiori sulle uscite dellintegratore.
Se lintegratore riceve in ingresso un segnale
vettoriale, genera in uscita un vettore di pari
dimensione che contiene lintegrale delle diverse
componenti del vettore di ingresso
Pu essere anche applicato un reset sulluscita
delintegratore. Il reset riporta luscita
dellintegratore al valore della condizione iniziale
Alessandro Pisano - pisano@diee.unica.it
41
Integratore con ingresso vettoriale
Condizioni iniziali diverse per le uscite
Alessandro Pisano - pisano@diee.unica.it
42
Integratore con saturazione superiore
43
% VERIFICA CHE IL MODELLO SIA APERTO, E IN CASO CONTRARIO LO APRE
if isempty(find_system('Name','filtropassabasso'))
open_system('filtropassabasso')
end
R=1e4; % 10k Ohm
C=1e-5; % 10 pF
sim('filtropassabasso');
y1=vout;
figure(1)
plot(tout,vout)
R=1e4; % 10k Ohm
C=2e-5; % 20 pF
sim('filtropassabasso');
y2=vout;
figure(2)
plot(tout,vout)
figure(3)
plot(tout,y1,tout,y2)
Esecuzione automatica di test
Il seguente codice lancia in sequenza due simulazioni con valori diversi dei parametri R e
C, memorizza la Vout nelle due prove nei vettori y1 ed y2, e traccia dei grafici delle varie
soluzioni in tre finestre grafiche distinte
IMP. Utilizzo della funzione sim(model)
Alessandro Pisano - pisano@diee.unica.it
44
Risposte in frequenza e analisi spettrali
Impariamo ora a visualizzare la risposta in frequenza di filtri lineari, e a visualizzare lo
spettro di frequenza di un segnale campionato.
Con i valori consigliati per R e C, la pulsazione di taglio pari a 1/RC = 10 rad/sec ft=1.6 Hz
( )
( )
( ) 1
1
+
= =
sRC s V
s V
s F
in
out
1 . 0 = RC
Per il filtro considerato
omega_t=1/(R*C);
disp(['La frequenza di taglio : ', num2str(omega_t/(2*pi)), rad/sec']);
R=input('Inserire il valore di R [Ohm] (valore consigliato: R=1e4): \n');
C=input('Inserire il valore di C [Farad] (valore consigliato C=1e-5): \n');
Le seguenti istruzioni richiedono allutente linserimento da tastiera dei parametri R e C
45
Posso definire in Matlab un oggetto di tipo Transfer Function
e visualizzarne quindi la sua
risposta in frequenza (pi
precisamente: i diagrammi
semilogaritmici del modulo in
dB e della fase della Funzione
di Risposta Armonica F(jw) in
funzione della pulsazione w)
con il comando Bode
bode(F),grid;
Cambiamo il valore della
costante di tempo RC, e
ritracciamo i diagrammi
46
Ora riferiamoci allo schema modificato
Il generatore di segnali sostituito da un blocco Fcn (libreria User-Defined Functions) che riceve
in ingresso il segnale prodotto dal blocco Clock (libreria Sources) , cio il tempo corrente.
Il blocco To Workspace scrive la variabile out, di tipo array.
Il blocco Fcn puo implementare una qualunque funzione statica, e si parametrizza
compilando, nella apposita finestra di configurazione del blocco, una casella di testo in
linguaggio Matlab, con la variabile standard u che denota la variabile in ingresso al blocco
Il codice A1*sin(omega1*u)+A2*sin(omega2*u) definisce un segnale somma di due
sinusoidi con ampiezza e pulsazione parametrizzate dai coefficienti A1, omega1, A2, omega2.
Il blocco Fcn consente di implementare facilmente segnali con una espressione analitica
anche complessa, che potrebbero richiedere un elevato numero di blocchi elementari.
Alessandro Pisano - pisano@diee.unica.it
47
A1=1;
omega1=1.6*(2*pi); %rad/s (pari alla pulsazione di taglio)
A2=0;
omega2=0;
Assegniamo un valore alle costanti.
Vogliamo visualizzare lingresso e luscita del filtro, ed i relativi spettri di potenza
figure(1)
plot(tout,out(:,1),'k',tout,out(:,2),'k--'),grid,
title('Segnale di ingresso V_{in} e segnale di uscita V_{out}'),
xlabel('Tempo [s]'),
legend('V_{in}','V_{out}')
axis([0 10 -2 2])
ZOOM
48
function spettro(t,x,n)
% calcolo del vettore delle frequenze
f=0:1/t(length(t)):1/t(2);
f=f';
% calcolo della Fast Fourier Transform
Y=fft(x);
% calcolo dello densit spettrale di potenza normalizzato
% che permette di ottenere un'ampiezza unitaria dello spettro
% per una sinusoide di ampiezza unitaria
P=2*abs(Y)/length(Y);
% creazione grafico nella finestra n-esima
figure(n),
plot(f(1:ceil(length(f)/2)),P(1:ceil(length(P)/2)))
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
Si salvi nella cartella di lavoro il seguente codice nel file spettro.m
La funzione spettro riceve come argomenti, nellordine: il vettore dei tempi, il vettore del
segnale, ed il numero della finestra nella quale tracciare il diagramma
Alessandro Pisano - pisano@diee.unica.it
49
Ora si pu utilizzare la funzione spettro() per produrre i grafici desiderati
>>spettro(tout,out(:,1),1), axis([0 3 0 1.1])
>>spettro(tout,out(:,2),2), axis([0 3 0 1.1])
Vin Vout
Alessandro Pisano - pisano@diee.unica.it
50
Per ottenere uno spettro maggiormente fedele a quello, ideale, a larghezza nulla, si deve
aumentare il tempo di simulazione.
Tsim=100
Tsim=10
Vin Vout
Vin Vout
51
function [freq data]=spettro2(t,x)
% calcolo del vettore delle frequenze
f=0:1/t(length(t)):1/t(2);
f=f';
% calcolo della Fast Fourier Transform
Y=fft(x);
% calcolo dello densit spettrale di potenza normalizzato
% che permette di ottenere un'ampiezza unitaria dello spettro
% per una sinusoide di ampiezza unitaria
P=2*abs(Y)/length(Y);
freq=f(1:ceil(length(f)/2));
data=P(1:ceil(length(P)/2));
Si salvi nella cartella di lavoro il seguente codice nel file spettro2.m
Rispetto alla funzione spettro, la funzione spettro2 non produce il grafico, ma restituisce
allesterno i due vettori che consentono di produrre il grafico successivamente (ad esempio,
allinterno di una struttura subpplot)
Alessandro Pisano - pisano@diee.unica.it
52
[F,X]=spettro2(tout,out(:,1));
figure(4),
subplot(2,1,1),
plot(tout,out(:,1)),title('Segnale di ingresso'), xlabel(Tempo[s]')
grid,axis([0 10 -1.5 1.5])
subplot(2,1,2)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 5 0 1.1])
[F,X]=spettro2(tout,out(:,2));
figure(5),
subplot(2,1,1),
plot(tout,out(:,2)),title('Segnale di uscita'), xlabel(Tempo[s]')
grid,axis([0 10 -1.5 1.5])
subplot(2,1,2)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 5 0 1.1])
Analizziamo il seguente codice
Alessandro Pisano - pisano@diee.unica.it
53
Loutput del precedente codice il seguente
Concludiamo questo esempio puntualizzando come il modello possa essere reso
completamente parametrizzabile e gestibile da script avendo cura di specificare le grandezze
come la durata della simulazione, le condizioni iniziali degli integratori, il passo di
discretizzazione, etc, per mezzo di costanti simboliche.
Definiamo la variabile Tsim
Alessandro Pisano - pisano@diee.unica.it
54
% VERIFICA CHE IL MODELLO SIA APERTO, E IN CASO CONTRARIO LO APRE
if isempty(find_system('Name','filtropassabasso2'))
open_system('filtropassabasso2')
end
A1=1;
omega1=1.6*(2*pi);
A2=0;
omega2=0;
Tsim=20;
sim('filtropassabasso2');
[F,X]=spettro2(tout,out(:,1));
figure(6),
subplot(4,1,1),
plot(tout,out(:,1)),title('Segnale di ingresso'), xlabel('Tempo[s]')
grid,axis([0 10 -1.5 1.5])
subplot(4,1,2)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 5 0 1.1])
[F,X]=spettro2(tout,out(:,2));
subplot(4,1,3),
plot(tout,out(:,2)),title('Segnale di uscita'), xlabel('Tempo[s]')
grid,axis([0 10 -1.5 1.5])
subplot(4,1,4)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 5 0 1.1])
Analizziamo il seguente codice
55
A1=1;
omega1=3*(2*pi);
A2=0;
omega2=0;
Tsim=20;
sim('filtropassabasso2');
[F,X]=spettro2(tout,out(:,1));
figure(7),
subplot(4,1,1),
plot(tout,out(:,1)),title('Segnale di ingresso'), xlabel('Tempo[s]')
grid,axis([0 10 -1.5 1.5])
subplot(4,1,2)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 5 0 1.1])
[F,X]=spettro2(tout,out(:,2));
subplot(4,1,3),
plot(tout,out(:,2)),title('Segnale di uscita'), xlabel('Tempo[s]')
grid,axis([0 10 -1.5 1.5])
subplot(4,1,4)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 5 0 1.1])
Analizziamo il seguente codice (cont.)
Alessandro Pisano - pisano@diee.unica.it
56
Loutput del precedente codice il seguente
Alessandro Pisano - pisano@diee.unica.it
57
% VERIFICA CHE IL MODELLO SIA APERTO, E IN CASO CONTRARIO LO APRE
if isempty(find_system('Name','filtropassabasso2'))
open_system('filtropassabasso2')
end
R=1e4; % 10k Ohm
C=1e-5; % 10 pF
A1=1;
omega1=1.6*(2*pi);
A2=2;
omega2=10*(2*pi);
Tsim=20;
sim('filtropassabasso2');
[F,X]=spettro2(tout,out(:,1));
figure(8),
subplot(4,1,1),
plot(tout,out(:,1)),title('Segnale di ingresso'), xlabel('Tempo[s]')
grid,axis([0 10 -4 4])
subplot(4,1,2)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 15 0 2.1])
[F,X]=spettro2(tout,out(:,2));
subplot(4,1,3),
plot(tout,out(:,2)),title('Segnale di uscita'), xlabel('Tempo[s]')
grid,axis([0 10 -4 4])
subplot(4,1,4)
plot(F,X),grid
xlabel('Frequenza [Hz]')
ylabel('X(j2 \pi f)')
title('Spettro di potenza normalizzato')
axis([0 15 0 2.1])
2 armoniche distinte
58
Loutput del precedente codice il seguente
Alessandro Pisano - pisano@diee.unica.it
59
Filtraggio digitale
Molto importante nei sistemi di acquisizione dati

=

=
+ =
m
j
j k j
n
j
j k
F
j
k
F
y b y a y
0 1
k
k
F
k
F
y b y a y
0
1
1
+ =
1 = n 0 = m
Es.
Un filtro digitale del primo ordine rappresenta una implementazione discreta
del filtro passa-basso studiato nellesempio precedente
t /
1
s
T
e a

=
t /
0
1
s
T
e b

=
t = costante di tempo del filtro
Ts = passo di campionamento della sequenza di input
60
Schema SIMULINK
Blocco UNIT DELAY
(libreria discrete)
A1=1;
omega1=2*(2*pi);
Tc=0.01;
tau=0.1;
a1=exp(-Tc/tau)
b0=1-exp(-Tc/tau)
Per ruotare di 90 un blocco lo si deve
selezionare e si devono premere
successivamente i tasti CTRL + R
Alessandro Pisano - pisano@diee.unica.it
61
A1=1;
omega1=2*(2*pi);
Tc=0.01;
tau=0.1;
a1=exp(-Tc/tau)
b0=1-exp(-Tc/tau)
62
clear all
close all
clc
Tc=0.01;
tau=0.1;
a1=exp(-Tc/tau);a2=0;
b0=1-exp(-Tc/tau);b1=0;
ordine=2;
t=0:0.01:20;
y=sin(t);
rum=0.1*rand(1,length(t));
y_rum=y+rum;
figure(1)
plot(t,y);
grid,title('segnale senza rumore')
figure(2)
plot(t,rum);
grid,title('rumore')
figure(3)
plot(t,y_rum);
grid,title('segnale rumoroso')
yf=zeros(1,length(t));
for i=(ordine+1):length(t)
yf(i)=a1*yf(i-1)+a2*yf(i-2)+b0*y_rum(i)+b1*y_rum(i-1)+;
end
figure(4)
plot(t,yf);
grid,title('segnale FILTRATO ')
Implementazione del filtraggio digitale in Matlab
Alessandro Pisano - pisano@diee.unica.it
63
Ora simuliamo un sistema termico
Consideriamo un sistema termico rappresentato da un volume V circondato da una
parete e contenente un fluido
Sia Te(t) [K] la temperatura esterna alla parete, Tf(t) [K] la temperatura del fluido interno al
volume, e q(t) [J/s] una sorgente di calore interna al volume.
Sia Cf [J/K] la capacita termica del fluido, e sia Kie (J/K s) il coefficiente di scambio termico
tra interno ed esterno.
( ) t T
f
( ) t T
e
( ) t q
( ) ( ) ( ) ( ) ( ) t T t T K t q t T C
f e ie f f
+ =

Alessandro Pisano - pisano@diee.unica.it


64
Per tradurre una equazione differenziale in termini di una combinazione tra blocchi Simulink
si deve esplicitare lequazione differenziale rispetto alle derivate di ordine piu elevato.
( ) ( ) ( ) ( ) ( ) ( ) ( ) | | t T K t T K t q
C
t T
C
K
t T
C
K
t q
C
t T
f ie e ie
f
i
f
ie
e
f
ie
f
f
+ = + =
1 1

Con un blocco integratore (Integrator) e con dei blocchi Constant e Gain si pu realizzare
il seguente modello di simulazione che ipotizza dei valori costanti per q e Te
Si noti come allingresso dellintegratore, punto cui corrisponde il segnale dTf/dt, venga
costruita elemento per elemento la formula
( ) ( ) ( ) ( ) ( ) | | t T t T K t q
C
t T
f e ie
f
f
+ =
1

Alessandro Pisano - pisano@diee.unica.it


65
Per eseguire la simulazione bisogna assegnare un valore ai parametri Cf [J/K] e Kie [J/Ks],
alla condizione iniziale Tf(0), ed al valore costante dei segnali Te e q.
La condizione iniziale dellintegratore si specifica nella relativa finestra di dialogo
Tf_zero=298.16; %[K], pari a 25C
q=2000; % J/s q=2kW
Te=323.16; %[K], pari a 50C;
Cf=2e3; % J/K per 1 kg di sostanza
Kie=1e2; % J / K s , per 1 m^2 di superficie di scambio
Script di parametrizzazione
Alessandro Pisano - pisano@diee.unica.it
66
Si desidera visualizzare Tf sia in gradi Kelvin che in gradi centigradi in 2 finestre Scope separate.
La conversione da K a C pu essere realizzata con il blocco Fcn (libreria User Defined Functions
Si desidera anche modificare il profilo di q(t)
100
t
q
q(t)
Si pu utilizzare il blocco Step, libreria Sources.
Il blocco Fcn consente di realizzare una funzione
statica tra un parametro di ingresso (scalare o
vettoriale) e un parametro di uscita scalare.
Si deve scrivere lespressione della funzione,
denotando con u (parola riservata) la variabile in
ingresso al blocco
Alessandro Pisano - pisano@diee.unica.it
67
Si realizzi lo schema seguente
Grafico della temperatura Tf in
gradi centigradi
Alessandro Pisano - pisano@diee.unica.it
68
Realizziamo lo stesso modello in maniera pi compatta, utilizzando il blocco Transfer
Function (libreria Continuous).
( ) ( ) ( ) ( ) s T K s Q s T K s T sC
e ie f ie f f
+ = + | | ( ) ( ) ( ) s T K s Q s T K sC
e ie f ie f
+ = +
( ) ( ) ( ) ( ) t T K t q
K sC
s T
e ie
ie f
f
+
+
=
1
Notazione impropria, ma chiara
ie f
K sC +
1
q(t)
+
( ) t T K
e ie
+
Schema Simulink compatto
Schema a blocchi
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) t T K t T K t q t T t T K t q t T C
i ie e ie i e ie f f
+ = + =

( ) ( ) ( ) ( ) s T K s Q
K sC
s T
e ie
ie f
f
+
+
=
1
Trasformiamo secondo Laplace lequazione differenziale
( ) t T
f
69
Parametrizzazione del blocco Transfer Function
Si devono specificare i coefficienti dei polinomi a
numeratore e denominatore della FdT utilizzando la
notazione Matlab per la rappresentazione dei polinomi
(un vettore che contiene i coefficienti dl polinomio in
ordine decrescente rispetto alle potenze di s)
( )
ie f
K sC
s F
+
=
1
Il blocco deve rappresentare la Funz. di Trasf.
] [
ie f ie f
K C K sC +
( ) ( ) ( ) t u t T K t T C
f ie f f
= +

( ) ( ) ( ) t T K t q t u
e ie
+ =
] [
ie f
K C
] 1 [
( ) t u ( ) t T
f
Si pu aggirare la trasformazione secondo Laplace ragionando sui coefficienti della equazione
differenziali
70
] [
0 1
b b
( ) t u
( ) t T
( ) ( ) ( ) ( ) ( ) t u b t u b t T a t T a t T a
0 1 0 1 2
+ = + +

| |
0 1 2
a a a
FdT del secondo ordine
71
( ) ( ) ( ) ( ) ( ) t u b t u b t y a t y a t y a
0 1 0 1 2
+ = + +
Alessandro Pisano - pisano@diee.unica.it
72
Far variare nel tempo la temperatura esterna ed osservare le corrispondenti fluttuazioni
della temperatura interna
Nellipotesi che q(t) possa assumere solo due valori (il valore nullo q=0, ed un valore
costante q=Q* ) realizzare un sistema di controllo ON-OFF per regolare ad un valore
desiderato la temperatura del fluido interno al volume
Confrontare i risultati ottenuti impiegando come controllore un rele con e senza isteresi
Obbiettivi aggiuntivi
Alessandro Pisano - pisano@diee.unica.it
73
Schema SIMULINK
FILE: termico1dof_feedback.mdl
Tf_zero=298;.16 %[K], pari a 25C
q=2000; % J/s
Te=323;.16 %[K], pari a 50C;
Cf=2e3; % J/K
Kie=1e2; % J / K s
74
Sistema a ciclo aperto
Alessandro Pisano - pisano@diee.unica.it
75
Ampiezza
isteresi = 4C
Ampiezza
isteresi = 2C
76
Complichiamo il modello
Trattiamo in maniera distinta gli accumuli termici nel volume e nella parte di contorno.
Definiamo quindi un modello pi complesso che mi fornisca anche levoluzione temporale della
temperatura della parete Tp(t).
Cf [J/K] la capacita termica del gas interno al volume
Cp [J/K] la capacita termica del materiale che costituisce la parete
Kip [J/K s] il coefficiente di scambio termico tra linterno del volume e la parete.
Kpe [J/K s] il coefficiente di scambio termico tra la parete e lesterno.
( ) t T
f
( ) t T
e
( ) t q
( ) t T
p
temperatura della parete
( ) ( ) ( ) ( ) ( ) t T t T K t q t T C
f p ip f f
+ =

( ) ( ) ( ) ( ) ( ) ( ) ( ) t T t T K t T t T K t T C
f p ip p e pe p p
=

77
Esplicitiamo il sistema di equazioni rispetto alle derivate di ordine pi elevato
( ) ( ) ( ) ( ) ( ) t T t T
C
K
t q
C
t T
f p
f
ip
f
f
+ =
1

Importiamo nella pagina di lavoro un ulteriore blocco integratore la cui uscita sar la
temperatura Tp della parete.
Utilizziamo anche un visualizzatore a Display (libreria Sinks)
Lo schema pu essere realizzato come segue
( ) ( ) ( ) ( ) ( ) ( ) ( ) t T t T
C
K
t T t T
C
K
t T
f p
p
ip
p e
p
pe
p
=

78
Script di configurazione dei parametri
Tf_zero=25+273.15; %[K], pari a 25C
Tp_zero=10+273.15; %[K], pari a 10C
Cf=2e3; % J/K
Cp=10e3; % J/K
Kip=1e2; % J/K s
Kpe=1e2; % J/K s
q=2000; % J/s
Te=20+273.15 %[K], pari a 20C;
Risultati della simulazione
79
Si desidera acquisire il segnale q(t) da un file esterno.
File dati_problema.dat
Il segnale q(t) sia disponibile nella forma di un file dati di tipo ASCII
La prima riga riporta i tempi e la seconda riporta il valore del segnale
Bisogna creare un mat-file (lo chiamiamo dati_mat.mat) che contenga tali informazioni.
%clear all
load dati_problema.dat
M=dati_problema;
tempi=M(1,:); %non utilizzato
segnale=M(2,:); %non utilizzato
save dati_mat M %si puo fare direttamente >> save dati_mat dati_problema
Tf_zero=298.16; %[K], pari a 25C
Tp_zero=10+273.16; %[K], pari a 10C
Cf=2e3; % J/K
Cp=10e3; % J/K
Kip=1e2; % J/K s
Kpe=1e2; % J/K s
q=2000; % J/s
Te=20+273.16; %[K], pari a 20C;
80
Per importare il segnale si pu utilizzare il blocco Simulink From File, dalla libreria Sources
Schema Simulink
In accordo con i dati acquisiti,
la durata della simulazione deve
essere posta pari a 2.
Alessandro Pisano - pisano@diee.unica.it
81
Creazione di sottosistemi
Si vuole rendere pi compatta la rappresentazione del modello attraverso la definizione di un
macroblocco come in figura
( ) t T
f
( ) t T
e
( ) t q
( ) t T
p
( ) t T
p
Simulink consente di definire dei macroblocchi (sottosistemi) che rappresentano una particolare
interconnessione tra altri blocchi, alla quale si accede esplorando il contenuto del sottosistema.
Alessandro Pisano - pisano@diee.unica.it
82
Creazione di sottosistemi
Si dispongano i blocchi del modello come in figura, in modo che sia possibile tracciare un
rettangolo nel quale entrano i segnali di input del sottosistema e dal quale escono i segnali di
output.
83
Con il mouse si deve tracciare nella pagina di lavoro un rettangolo come quello nella slide
precedente.
Poi, dal menu Edit della pagina di lavoro Simulink, si deve selezionare il comando Create Subsystem
Ridisponendo i blocchi dello schema si puo realizzare la seguente configurazione
Cliccando sul blocco
Subsystem si accede al
suo contenuto.
Si notino i blocchi In1,
In2 , Out1 ed Out2
Alessandro Pisano - pisano@diee.unica.it
84
Rinominando i blocchi In1, In2,
Out1 ed Out2 si pu fare in
modo che nelle porte di input e
di Output del Subsystem
compaia il nome della grandezza
associata
La parametrizzazione del modello attualmente effettuata per mezzo del file di script
precedentemente illustrato, che assegna una valore alle costanti simboliche usate nel modello
Simulink definendo opportune variabili omologhe nel workspace di Matlab. Tale m-file di
script deve sempre accompagnare il file Simulink (che ha estensione .mdl) e deve essere
lanciato prima di questultimo
Pu essere conveniente disporre di una maschera di parametrizzazione interna al
modello Simulink.
In questo modo tutte le informazioni associate al modello sono contenute in un unico file (il
file .mdl) e la riparametrizzazione del modello avviene in maniera pi semplice, senza dovere
ogni volta rilanciare il file script con estensione .m
Alessandro Pisano - pisano@diee.unica.it
85
Creazione di MASK
Bisogna portarsi con il mouse sul Subsystem
Camera di Combustione, premere il tasto
destro del mouse, e selezionare Mask
Subsystem dal menu che compare
Alessandro Pisano - pisano@diee.unica.it
86
Dopo avere selezionato Mask Subsystem si deve nuovamente portarsi con il mouse sul
SubsystemCamera di Combustione, premere il tasto destro del mouse, e selezionare stavolta
Edit Mask dal menu che compare.
Finestra di configurazione della mask
Andare nel sottomen:
Parameters
Alessandro Pisano - pisano@diee.unica.it
87
Nel sottomen Parameters completare le voci Dialog Parameters come in Figura,
creando una riga per ognuno dei 6 parametri da settare .
Pulsante Add
Per ciascun parametro , oltre al nome della relativa variabile (Cf, Cp, ) si pu riportare
una frase descrittiva che comparir nella maschera di configurazione, che riportiamo
nella slide seguente.
Aggiunge una riga.
Alessandro Pisano - pisano@diee.unica.it
88
Maschera di parametrizzazione del Subsystem
Viene visualizzata facendo doppio click sul blocco Simulink del
Sottosistema
E possibile inserire manualmente il valore dei parametri nelle
opportune caselle di testo. I valori inseriti vengono memorizzati
al salvataggio del file, e riproposti alla sua riapertura.
%clear all
load dati_problema.dat
M=dati_problema;
tempi=M(1,:); %non utilizzato
segnale=M(2,:); %non utilizzato
save dati_mat M
q=2000; % J/s
Te=20+273.16; %[K], pari a 20C;
Script semplificato
Per accedere al contenuto del blocco mascherato premere il
tasto destro del mouse e poi selezionare Look Under Mask
FILE:
termico_2dof_matfile_mask01.mdl
89
Si inserisca una ulteriore mask che consenta limpostazione manuale di q e Te
FILE:
termico_2dof_matfile_mask02.mdl
%clear all
load dati_problema.dat
M=dati_problema;
tempi=M(1,:); %non utilizzato
segnale=M(2,:); %non utilizzato
save dati_mat M
Script
Alessandro Pisano - pisano@diee.unica.it
90
Esercizio
91
.
92
X0=0.1;
Y0=0.1;
A=1;
B=1;
C=5;
D=1;
93
Sistemi termici spazialmente distribuiti
Variabile di interesse: la temperatura
Barra metallica filiforme di lunghezza L = 50 cm
x
Alessandro Pisano - pisano@diee.unica.it
0 = x
L x =
( ) t x T ,
Ipotesi : barra uniforme, termicamente isolata, in assenza di sorgenti di calore
( ) ( )
( ) t x T k
x
t x T
k
t
t x T
C
p
,
, ,
2
2
2
V =
c
c
=
c
c

Equazione del calore monodimensionale


94
p
C
k

o =
il coefficiente di diffusione [m
2
/s]
p
C
la capacita termica a pressione costante per unita di massa [J/kg K]
la conduttivit termica [J/s m K ; W / mK ]
k
la densit [kg /m
3
]
( ) ( )
( ) t x T k
x
t x T
k
t
t x T
C
p
,
, ,
2
2
2
V =
c
c
=
c
c

( ) ( )
2
2
, ,
x
t x T
t
t x T
c
c
=
c
c
o
Valori per il ferro puro (rif. Schaum Trasmissione del calore, Tabella B-1 pag. 306)
J/kgK 435 =
p
c C) 100 (a W/mK 63 = k
kg/m 7856 =
C) 100 (a / m 10 8 . 1
2 5
=

s o
PDE
95
Analisi in regime stazionario
( )
0
2
2
=
c
c
x
x T
x
0 = x L x =
h h h h h 5 / L h =
4 NODI SOLUZIONE
1
x x =
2
x x =
3
x x =
4
x x =
La soluzione calcolabile in forma chiusa, ma scegliamo di risolvere lequazione
numericamente perch questo modo di ragionare di consentir di risolvere agevolmente
anche i problemi distribuiti in regime transitorio , che vedremo in seguito.
( ) ( ) x T t x T ,
Siano noti e mantenuti costanti i valori di temperatura agli estremi ( ) 0
0
T T = ( ) L T T
L
=
( ) x
L
T T
T x T
L
|
.
|

\
|

+ =
0
0
Soluzione in forma chiusa
96
( )
2
0 1 2
2
2
2
1
h
T T T
x T
x
x x
+
=
c
c
=
Definiamo il vettore che contiene le temperature incognite nei nodi soluzione.
| |
T
T T T T
4 , 3 2 1
. , , = T
( )
2
1 2 3
2
2
2
2
h
T T T
x T
x
x x
+
=
c
c
=
( )
2
2 3 4
2
2
2
3
h
T T T
x T
x
x x
+
=
c
c
=
( )
2
3 4
2
2
2
4
h
T T T
x T
x
L
x x
+
=
c
c
=
Approssimiamo lequazione in un intorno dei nodi soluzione, e mettiamo a sistema
0 2
0 1 2
= + T T T
0 2
1 2 3
= + T T T
0 2
2 3 4
= + T T T
0 2
3 4
= + T T T
L
97
Isoliamo alla sinistra delluguale le temperature incognite, ordinandole
0 2 1
2 T T T = +
0 2
3 2 1
= + T T T
0 2
4 3 2
= + T T T
L
T T T =
4 3
2
b AT =
(
(
(
(

=
2 1 0 0
1 2 1 0
0 1 2 1
0 0 1 2
A
b A T
1
4
3
2
1

=
(
(
(
(

=
T
T
T
T
Sistema di equazioni lineari
(
(
(
(

=
L
T
T
0
0
0
b
98
T0=10; %temperatura nel punto x=0
TL=50; %temperatura nel punto x=L
L=0.5; %Lunghezza della sbarra
N=4; %numero di nodi di discretizzazione
h=L/(N+1);
A=[-2 1 0 0;1 -2 1 0; 0 1 -2 1; 0 0 1 -2];
b=[-T0;0;0;-TL];
disp('il vettore incognito :')
T=inv(A)*b
disp('Vettore completo:')
T_tot=[T0 T' TL]'
x=0:h:L;
T_teorica=T0+(TL-T0)/L*x
plot(x,T_tot,'*',x,T_teorica,'r'),grid
xlabel('Ascissa lungo la sbarra [m]')
ylabel('Temperatura [C]')
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
10
15
20
25
30
35
40
45
50
Ascissa lungo la sbarra [m]
T
e
m
p
e
r
a
t
u
r
a

[

C
]
99
Modificare il codice per includere un numero
arbitrario N di nodi soluzione.
100
T0=10; %temperatura nel punto x=0
TL=50; %temperatura nel punto x=L
L=0.5; %Lunghezza della sbarra
N=10; %numero di nodi di discretizzazione
h=L/(N+1);
A=zeros(N,N);
for i=1:N,
A(i,i)=-2;
end
for j=1:N-1,
A(j,j+1)=1;
A(j+1,j)=1;
end
b=zeros(N,1);
b(1)=-T0;
b(N)=-TL;
disp('il vettore incognito :')
T=inv(A)*b
%ISTRUZIONE ALTERNATIVA
T=A\b;
disp('Vettore completo:')
T_tot=[T0 T' TL]'
x=0:h:L;
T_teorica=T0+(TL-T0)/L*x
plot(x,T_tot,'*',x,T_teorica,'r'),grid
xlabel('Ascissa lungo la sbarra [m]')
ylabel('Temperatura [C]')
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
10
15
20
25
30
35
40
45
50
Ascissa lungo la sbarra [m]
T
e
m
p
e
r
a
t
u
r
a

[

C
]
101
La soluzione in regime permanente ancora calcolabile in forma chiusa
E noto e prefissato il valore di temperatura T0 allestremo sinistro, mentre la
temperatura allestremo destro non imposta.
Ora studiamo un problema differente
Poich la sbarra termicamente isolata si avr che il flusso termico nei bordo
destro pari a zero
( ) 0 =
c
c
=L x
x T
x
( )
0
T x T = Soluzione in forma chiusa
( )
( ) ( )
2
4 3
3 4
2
2
4
4
h
T T
h
h
T T
h
x T
x
x T
x
x T
x
x x L x
x x

=
|
.
|

\
|

=
c
c

c
c
=
c
c
= =
=
0
102
0 2 1
2 T T T = +
0 2
3 2 1
= + T T T
0 2
4 3 2
= + T T T
0
4 3
= T T
Modificare il codice Matlab
b AT =
(
(
(
(

=
1 1 0 0
1 2 1 0
0 1 2 1
0 0 1 2
A
(
(
(
(

=
0
0
0
0
T
b
103
0
2 1
= + T T
0 2
3 2 1
= + T T T
0 2
4 3 2
= + T T T
0
4 3
= T T
Ora analizziamo il caso in cui anche la temperatura allestremo sinistro non
imposta.
Il sistema lineare non puo essere risolto numericamente perche
ammette infinite soluzioni
( ) . cost = x T
Soluzione in forma chiusa
Seguendo il medesimo ragionamento adottato in precedenza si ottiene il sistema:
b AT =
(
(
(
(

=
1 1 0 0
1 2 1 0
0 1 2 1
0 0 1 1
A
(
(
(
(

=
0
0
0
0
b
104
Cosa succede se le due temperature agli estremi, ancorche imposte
dallesterno, siano variabili nel tempo ?.
Lanalisi in regime stazionario perde di significato !
( ) ( )
2
2
, ,
x
t x T
t
t x T
c
c
=
c
c
o
Lequazione del calore deve ora essere considerata nella sua interezza.
Il ragionamento svolto in precedenza va opportunamente modificato.
x
0 = x L x =
h h h h h 5 / L h =
1
x x =
2
x x =
3
x x =
4
x x =
La discretizzazione del dominio sempre valida.
105
( ) ( ) ( ) ( ) ( ) | |
T
t T t T t T t T t
4 3 2 1
, , , = T
( ) t T
0
( ) t T
L
Definiamo il vettore che contiene le temperature incognite nei nodi soluzione, che a
differenza dal caso stazionario non sono pi delle costanti, ma sono delle funzioni del tempo.
Condizioni al contorno NOTE
( ) ( )
2
2
, ,
x
t x T
t
t x T
c
c
=
c
c
o
( ) ( ) t T t T
0
, 0 =
( ) ( ) t T t L T
L
= ,
Questa tipologia di condizioni al contorno sono dette di DIRICHLET.
( ) ( ) t x T t T
i i
, =
4 , 3 , 2 , 1 = i
5
L
i h i x
i
= =
106
( ) ( )
i
x x
i
x
t x T
t
t x T
=
c
c
=
c
c
2
2
, ,
o
( )
( ) ( ) ( )
2
0 1 2
2
2
2
,
1
h
t T t T t T
t x T
x
x x
+
~
c
c
=
( )
( ) ( ) ( )
2
1 2 3
2
2
2
,
2
h
t T t T t T
t x T
x
x x
+
~
c
c
=
( )
( ) ( ) ( )
2
2 3 4
2
2
2
,
3
h
t T t T t T
t x T
x
x x
+
~
c
c
=
( )
( ) ( ) ( )
2
3 4
2
2
2
,
4
h
t T t T t T
t x T
x
L
x x
+
~
c
c
=
( )
( )
i
x x
i
x
t x T
t T
=
c
c
=
2
2
,
o

4 , 3 , 2 , 1 = i
Le derivate seconde vengono approssimate mediante differenze finite, in maniera analoga a
quanto fatto in precedenza ma coinvolgendo funzioni del tempo anzich costanti
107
( )
( )
i
x x
i
x
t x T
t T
=
c
c
=
2
2
,
o

4 , 3 , 2 , 1 = i
( ) ( ) ( ) ( ) ( ) t T t T t T
h
t T
0 1 2
2
1
2 + =
o

( ) ( ) ( ) ( ) ( ) t T t T t T
h
t T
1 2 3
2
2
2 + =
o

( ) ( ) ( ) ( ) ( ) t T t T t T
h
t T
2 3 4
2
3
2 + =
o

( ) ( ) ( ) ( ) ( ) t T t T t T
h
t T
L 3 4
2
4
2 + =
o

Sostituendo le approssimazioni alle differenze finite si ottiene un sistema di equazioni


differenziali ordinarie (ODE), di ordine pari al numero di nodi soluzioni (4 nel caso in esame).
108
( ) ( ) ( ) ( ) ( ) t T
h
t T t T
h
t T
0
2
2 1
2
1
2
o o
+ + =

( ) ( ) ( ) ( ) ( ) t T t T t T
h
t T
3 2 1
2
2
2 + =
o

( ) ( ) ( ) ( ) ( ) t T t T t T
h
t T
4 3 2
2
3
2 + =
o

( ) ( ) ( ) ( ) ( ) t T
h
t T t T
h
t T
L
2
4 3
2
4
2
o o
+ =

Risulta conveniente separare alla destra delluguale le quantit incognite dalle quantit note
T
0
(t) e T
L
(t)
( ) ( ) ( ) | |
T
N
t T t T t
1 0
,
+
= u
( ) ( ) ( ) t t t Bu AT T + =

( ) ( ) ( ) ( ) ( ) | |
T
t T t T t T t T t
4 3 2 1
, , , = T
(
(
(
(

=
2 1 0 0
1 2 1 0
0 1 2 1
0 0 1 2
2
h
o
A
(
(
(
(

=
1 0
0 0
0 0
0 1
2
h
o
B
109
Devono essere note le temperature nei nodi soluzione allistante iniziale t=0, cio il vettore
costante
Ora sia il coefficiente di diffusione o che lo step h di discretizzazione spaziale influenzano
esplicitamente la soluzione. Lanalisi in regime stazionario prevedeva la scomparsa di tali
coefficienti dalle relazioni risolutive
( ) ( ) ( ) ( ) ( ) | |
T
T T T T 0 , 0 , 0 , 0 0
4 3 2 1
= T
Va rimarcato che trascorso un transitorio sufficientemente lungo i profili di temperatura non
dipendono pi dalle condizioni iniziali, e tendono ad una soluzione di regime dinamico le
cui caratteristiche sono indipendenti dalle condizioni iniziali
110
clear all
clc
L=0.5;
N=20;
rho=7856;
Cp=435;
k=63;
alfa=k/(rho*Cp);
h=L/(N+1);
A=zeros(N,N);
for i=1:N,
A(i,i)=-2;
end
for j=1:N-1,
A(j,j+1)=1;
A(j+1,j)=1;
end
B=zeros(N,2);
B(1,1)=1;
B(N,2)=1;
Ac=(alfa/h^2)*A;
Bc=(alfa/h^2)*B;
Tcamp=0.1;
Tfinale=100;
x=linspace(h,L-h,N);
t=0:Tcamp:Tfinale;
numsample=length(t);
Tinit=10*ones(1,N);
T_soluz=zeros(numsample,N);
T_dot=zeros(numsample,1);
T_soluz(1,:)=Tinit;
T0=30+5*sin(0.1*t)';
TL=30*ones(numsample,1);
for i=1:numsample-1
Tdot=Ac*T_soluz(i,:)'+Bc*[T0(i);TL(i)];
T_soluz(i+1,:)=T_soluz(i,:)+Tcamp*Tdot';
end
x_ext=linspace(0,L,N+2);
T_soluz_ext=[T0 T_soluz TL];
[X,Y] = meshgrid(x_ext,t);
h=mesh(X,Y,T_soluz_ext);
title('Distribuzione temperatura lungo la sbarra.');
xlabel('Coordinata spaziale x [m] ','FontName','times','FontSize',14);
ylabel('Tempo [s]','FontName','times','FontSize',14);
zlabel('T(x,t)','FontName','times','FontSize',14);
set(gca,'FontSize',14,'FontName','Times');
Eulero esplicito
Cond. al contorno
Grafica
111
Profilo spaziotemporale della soluzione
112
clear all
clc
L=0.5;
N=5;
rho=7856;
Cp=435;
k=63;
alfa=k/(rho*Cp);
h=L/(N+1);
A=zeros(N,N);
for i=1:N,
A(i,i)=-2;
end
for j=1:N-1,
A(j,j+1)=1;
A(j+1,j)=1;
end
B=zeros(N,2);
B(1,1)=1;
B(N,2)=1;
Ac=(alfa/h^2)*A;
Bc=(alfa/h^2)*B;
Tcamp=0.01;
Tfinale=100;
x=linspace(h,L-h,N);
t=0:Tcamp:Tfinale;
numsample=length(t);
Tinit=30*ones(1,N);
T_soluz=zeros(numsample,N);
T_dot=zeros(numsample,1);
T_soluz(1,:)=Tinit;
T0=30+20*sin(0.1*t)';
TL=30*ones(numsample,1);
for i=1:numsample-1
Tdot=Ac*T_soluz(i,:)'+Bc*[T0(i);TL(i)];
T_soluz(i+1,:)=T_soluz(i,:)+Tcamp*Tdot';
end
x_ext=linspace(0,L,N+2);
T_soluz_ext=[T0 T_soluz TL];
[X,Y] = meshgrid(x_ext,t);
h=mesh(X,Y,T_soluz_ext);
title('Distribuzione temperatura lungo la sbarra.');
xlabel('Coordinata spaziale x [m]
','FontName','times','FontSize',14);
ylabel('Tempo [s]','FontName','times','FontSize',14);
zlabel('T(x,t)','FontName','times','FontSize',14);
set(gca,'FontSize',14,'FontName','Times');
113
114
( ) ( )
2
2
, ,
x
t x T
t
t x T
c
c
=
c
c
o
( ) ( ) t T t T
0
, 0 =
( ) 0 , =
c
c
t L
x
T
Questa tipologia di condizione al contorno viene detta di NEUMANN.
Ora applichiamo una condizione al contorno che non fissi il valore della temperatura
nellestremo destro, ma imponga lisolamento termico dellestremo destro x=L in
analogia con quanto fatto nella analisi a regime.
Si ricava il modello discretizzato
( )
( ) ( )
h
t T t T
t L
x
T
N L

~
c
c
,
115
( ) ( ) | |
T
t T t 0 ,
0
= u
( ) ( ) ( ) t t t Bu AT T + =

( ) ( ) ( ) ( ) ( ) | |
T
t T t T t T t T t
4 3 2 1
, , , = T
(
(
(
(

=
1 1 0 0
1 2 1 0
0 1 2 1
0 0 1 2
2
h
o
A
(
(
(
(

=
1 0
0 0
0 0
0 1
2
h
o
B
( ) ( ) t T t
0
= u
( ) ( ) ( ) t t t Bu AT T + =

( ) ( ) ( ) ( ) ( ) | |
T
t T t T t T t T t
4 3 2 1
, , , = T
(
(
(
(

=
1 1 0 0
1 2 1 0
0 1 2 1
0 0 1 2
2
h
o
A
(
(
(
(

=
0
0
0
1
2
h
o
B
116
clear all
clc
L=0.5;
N=20;
rho=7856;
Cp=435;
k=63;
alfa=k/(rho*Cp);
h=L/(N+1);
A=zeros(N,N);
for i=1:N,
A(i,i)=-2;
end
for j=1:N-1,
A(j,j+1)=1;
A(j+1,j)=1;
end
A(N,N)=-1;
B=zeros(N,2);
B(1,1)=1;
B(N,2)=1;
Ac=(alfa/h^2)*A;
Bc=(alfa/h^2)*B;
Tcamp=0.1;
Tfinale=1000;
x=linspace(h,L-h,N);
t=0:Tcamp:Tfinale;
numsample=length(t);
Tinit=10*ones(1,N);
T_soluz=zeros(numsample,N);
T_dot=zeros(numsample,1);
T_soluz(1,:)=Tinit;
T0=10+5*sin(0.1*t)';
TL=0*ones(numsample,1);
for i=1:numsample-1
Tdot=Ac*T_soluz(i,:)'+Bc*[T0(i);TL(i)];
T_soluz(i+1,:)=T_soluz(i,:)+Tcamp*Tdot';
end
x_ext=linspace(0,L,N+2);
T_soluz_ext=[T0 T_soluz T_soluz(:,end)];
[X,Y] = meshgrid(x_ext,t);
h=mesh(X,Y,T_soluz_ext);
title('Distribuzione temperatura lungo la sbarra.');
xlabel('Coordinata spaziale x [m] ','FontName','times','FontSize',14);
ylabel('Tempo [s]','FontName','times','FontSize',14);
zlabel('T(x,t)','FontName','times','FontSize',14);
set(gca,'FontSize',14,'FontName','Times');
117
k=63
118
k=630
119
Sistema LTI (Linear Time Invariant)
MIMO (multi-input-multi-output)
( ) t T
( ) t T

( ) t AT
( ) t Bu
( ) t u
( ) ( ) ( ) t t t Bu AT T + =

Uso di Matrix Gain Integratore saturato


Alessandro Pisano - pisano@diee.unica.it
120
Un processo termico 2D a parametri distribuiti
Cilindro cavo.
Parti grigie in acciaio.
Parte bianca: volume con vapore ad alta temperatura.
Parte nera: piccolo volume interno
Es. Sezione di una turbina a vapore
statore
rotore
r
Coordinata
radiale
max
r
Alessandro Pisano - pisano@diee.unica.it
121
Es. Sezione di una turbina a vapore
Alessandro Pisano - pisano@diee.unica.it
122
Ipotesi: simmetria angolare della distribuzione di temperatura
( ) t r T ,
Si desidera calcolare la distribuzione di temperatura nel rotore (in uno dei suoi raggi)
max min
r r r s s
Mediante misure acquisite in una turbina in esercizio, si suppone nota la temperatura nella
parte bianca (regione del vapore in alta temperatura)
Problema complesso (anche nella formulazione semplificata sotto esame) perche il modello
matematico una equazione alle derivate parziali (sistema a parametri distribuiti, sistema
infinito-dimensionale)
In una modellazione pi dettagliata, si potrebbe essere interessati a valutare la distribuzione di
temperatura nella superficie delle pale di rotore, onde valutare gli stress termici sui materiali.
Alessandro Pisano - pisano@diee.unica.it
123
Eq. di diffusione (Equazione del calore) monodimensionale in coord.
cilindriche , con unica variabile spaziale la coordinata cilindrica radiale r
p
C
k
K

= il coefficiente di diffusione [m
2
/s]
p
C
la capacita termica a pressione costante per unita di massa [J/kg K]
la conduttivit termica [J/K s m]
k

la densit [g /m
3
]
124
min
r r =
max
r r =
h i r r
i
+ =
min
1 ..., , 2 , 1 , 0 + = N i
1
min max
+

=
N
r r
h
( ) ( ) t r T t T
i i
, =
r =0
Alessandro Pisano - pisano@diee.unica.it
125
Approssimazione delle derivate spaziali mediante differenze finite
( )
( ) ( )
h
t T t T
t T
r
i i
i

=
c
c
+1
( )
( ) ( ) ( )
2
1 1
2
2
2
h
t T t T t T
t T
r
i i i
i
+
+
=
c
c
Sistema di ODE
( )
( ) ( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) =
(

+
|
|
.
|

\
|
+
|
|
.
|

\
|
+ =
=
(

+
|
|
.
|

\
|
+
|
|
.
|

\
|
+ =
=
(

+
+

=
+
+
+ +
t T t T
r
h
t T
r
h
h
K
t T
h
t T
h r h
t T
h r h
K
h
t T t T t T
h
t T t T
r
K t T
i i
i
i
i
i i
i
i
i
i i i i i
i
i
1 1
2
1
2 2
1
2
2
1 1 1
2 1
1 1 2 1 1

2 1

N i ..., , 2 , 1 =
Alessandro Pisano - pisano@diee.unica.it
126
Sistema di ODE
( ) ( ) ( ) ( )
(

+
|
|
.
|

\
|
+
|
|
.
|

\
|
+ = t T t T
r
h
t T
r
h
h
K
t T
0 1
1
2
1
2
1
2 1

( ) ( ) ( ) ( )
(

+
|
|
.
|

\
|
+
|
|
.
|

\
|
+ = t T t T
r
h
t T
r
h
h
K
t T
1 2
2
3
2
2
2
2 1

( ) ( ) ( ) ( )
(

+
|
|
.
|

\
|
+
|
|
.
|

\
|
+ =
+
t T t T
r
h
t T
r
h
h
K
t T
N N
N
N
N
N 1 1
2
2 1

( ) ( ) ( ) | |
T
N
t T t T t
1 0
,
+
= u
( ) ( ) ( ) ( ) | |
T
N N
t T T T t T t T t , ..., , ,
2 , 3 2 1
= T
( ) t T
0
( ) t T
N 1 +
Boundary conditions
( ) ( ) ( ) t t t Bu AT T + =

Alessandro Pisano - pisano@diee.unica.it


127
(
(
(
(
(
(
(
(
(
(
(
(
(
(

|
|
.
|

\
|
+
+
|
|
.
|

\
|
+
+
|
|
.
|

\
|
+
+
|
|
.
|

\
|
+
=

N
N
r
h
r
h
r
h
r
h
r
h
r
h
r
h
h
K
2 1 0 0 0 0
1 0 0 0
0 1 0 0
0 0 2 1 0
0 0 0 1 2 1
0 0 0 0 1 2
1
3
2 2
1 1
2

A
( ) ( ) ( ) t t t Bu AT T + =

(
(
(
(
(
(
(

+
=
N
r
h
h
K
1 0
0 0
0 0
0 1
2

B
( ) ( ) ( ) ( ) | |
T
N N
T T T T T 0 , ..., , 0 , 0 0
1 2 , 3 2 1
= T
Condizioni iniziali
Alessandro Pisano - pisano@diee.unica.it
128
Modello Simulink
Due diverse modalit di specificare i
due segnali di input.
Linee spesse che rappresentano
segnali multidimensionali
Contenuto del SubsystemModello termico Rotore
FILES
TurbinaVapore01.mdl
T_centrorotore.mat
T_vapor.mat
Esportazione dati
verso il Workspace
Alessandro Pisano - pisano@diee.unica.it
129
Parametrizzazione del modello
Utilizziamo una mask
Alessandro Pisano - pisano@diee.unica.it
130
Costruzione della maschera di parametrizzazione
Alessandro Pisano - pisano@diee.unica.it
131
Calcolo delle Matrici A e B
Alessandro Pisano - pisano@diee.unica.it
132
Matrici A e B (per n = 6)
n=40;
r_min=0.05;
r_max=0.392;
rho=7900;
C=0.45;
k=73;
T_in=80;
h=(r_max-r_min)/n;
K=k/(rho*C*1e3)/h^2;
A=zeros(n,n);B=zeros(n,2);
for i=1:n,
A(i,i)=-(2+h/(r_min+i*h));
end
for j=1:n-1,
A(j,j+1)=1+h/(r_min+j*h);
A(j+1,j)=1;
end
B(1,1)=1;B(n,2)=1+h/r_max;
A=K*A; B=K*B;
Codice copiabile
ed seguibile
133
Documentation - descrizione della MASK
Alessandro Pisano - pisano@diee.unica.it
134
Profili temporali degli elementi del vettore T Uscita del blocco Scope T
Analisi dei risultati
Impostiamo preliminarmente due valori costanti per le temperature al contorno
( ) ( ) ( ) | | C t T t T t
T
N

(

= =
300
30
,
0
u
135
Profilo di temperatura al nodo 40
Alessandro Pisano - pisano@diee.unica.it
136
Con dei profili differenti per le boundary conditions, levoluzione del profilo di temperatura
differente.
Ora processiamo in Matlab i risultati della simulazione, creando dei grafici 3D.
r_min=0.05;
r_max=0.392;
n=40;
[X,Y] = meshgrid(linspace(r_min,r_max,n),tout);
h=mesh(X,Y,Trot)
title('Distribuzione temperatura rotore.')
xlabel('Coordinata radiale r [m]
','FontName','times','FontSize',14)
ylabel('Tempo [s]','FontName','times','FontSize',14)
zlabel('T(r,t)','FontName','times','FontSize',14)
set(gca,'FontSize',14,'FontName','Times')
Alessandro Pisano - pisano@diee.unica.it
137
Invertiamo la direzione dellasse dei tempi
138
Completiamo questo esempio mostrando limpiego, nella Mask, di variabili di configurazione
tipo popup o checkbox e un loro possibile impiego.
Si apportino le seguenti modifiche alla lista dei Parameters
139
Si apportino le seguenti modifiche alle istruzioni di Initialization
140
Si apportino le seguenti modifiche allo schema Simulink
Ora si esegua il modello con diverse scelte per le variabili pop up e checkbox, e si analizzino i
risultati.
FILES:
TurbinaVapore02.mdl
T_centrorotore.mat
T_vapor.mat
Alessandro Pisano - pisano@diee.unica.it
141
Anti-lock bracking system(ABS)
Simulazione di un sistema di frenatura con ABS Modello quarto di veicolo
ps r f
F R T I = e

e = velocit ruota
I = inerzia ruota
= forza da interazione
pneumatico/strada
ps
F
= coppia frenante
f
T
ps
F v
m
=
4
( ) s
mg
F
ps

4
=
r
R v
s
/
1
e
=
s = scorrimento
Rr = raggio ruota
( ) s
mg
R T I
r f
e
4
+ =

( ) s
mg
v
m

4 4
=
Caratteristica -s nota in forma tabellare
Sistema dinamico NON LINEARE, del secondo ordine
Alessandro Pisano - pisano@diee.unica.it
142
Modello SIMULINK
( ) s
mg
R T I
r f
e
4
+ =
( ) s
mg
v
m

4 4
=
clear all
g = 9.81;
v0 = 40; % velocita iniziale (m/s)
Rr = 0.6; % raggio
m = 200; % massa
J = 5; % inerzia
% Curva mu-slip
slip = 0:.05:1.0;
mu = [0 .4 .8 .97 1.0 .98 .96 .94 .92 .9 .88 .855 .83 .81 .79 .77 .75 .73 .72 .71 .7];
Blocco Fcn per il calcolo dello scorrimento
Lookup Table
Stop a veicolo fermo
143
Lookup Table (libreria Lookup Tables)
La caratteristica viene disegnata sulla
maschera del blocco
Blocco Stop Simulation
(libreria Sinks )
Interrompe la simulazione
quando il veicolo si ferma
Integratori saturati
Alessandro Pisano - pisano@diee.unica.it
144
Dettaglio sulla parte che
interrompe la simulazione
Alessandro Pisano - pisano@diee.unica.it
145
Soluzione semplificata per
interrompere la simulazione quando
il veicolo si ferma
Integratori saturati
Alessandro Pisano - pisano@diee.unica.it
146
Ora modelliamo lABS
La dinamica del sistema di frenatura idraulico approssimata da un filtro del primo ordine
(dinamica cassetti distributori) e da un integratore saturato (pressurizzazione).
Il controllo un rel (controllo bang-bang). Lapposito blocco Relay si trova nella libreria
Discontinuities
Kf = 3; %guadagno
PBmax = 1500; % saturazione
TB = 0.01; %costante di tempo
Alessandro Pisano - pisano@diee.unica.it
147
Modello complessivo
E stato aggiunto un blocco Manual Switch (libreria Signal Routing) per poter simulare una
frenatura non controllata (Tf=-1000).
Eseguiamo una simulazione, e visualizziamo i risultati nei blocchi Scope
FILES:
ABS_OpenClosedLoop.mdl
ABS_OpenClosedLoop_DATI.m
Alessandro Pisano - pisano@diee.unica.it
148
Frenatura non controllata (ABS disattivato)
Il pneumatico si blocca dopo 1.5 secondi circa, mentre la marcia del veicolo
continua per altri 4 secondi.
Lo scorrimento diventa unitario quando il pneumatico si blocca
149
Frenatura con ABS attivato
Il pneumatico ora si blocca solo nellultima parte della frenata.
Il bloccaggio del pneumatico avviene quando ormai la velocita di marcia
del veicolo prossima a zero, la marcia del veicolo si arresta infatti dopo
pochi decimi di secondo.
Lo scorrimento viene regolato attorno al set point desiderato 0.2.
diventando unitario solo a frenata ormai conclusa.
Nella prossima slide si confrontano due diversi test del sistema ABS con
una diversa velocita di marcia iniziale V0.
Alessandro Pisano - pisano@diee.unica.it
150
Con ABS
v0 = 40 m/s
~ 145 km/h
Con ABS
v0 = 70 m/s
~ 250 km/h
151
Embedded Matlab Function block
Consideriamo nuovamente il sistema
termico del secondo ordine
( ) ( ) ( ) ( ) ( ) t T t T
C
K
t q
C
t T
f p
f
ip
f
f
+ =
1

( ) ( ) ( ) ( ) ( ) ( ) ( ) t T t T
C
K
t T t T
C
K
t T
f p
p
ip
p e
p
pe
p
=

( ) t T
f
( ) t T
e
( ) t q
( ) t T
p
temperatura della parete
Alessandro Pisano - pisano@diee.unica.it
152
FILE: termico_2dof_matfile_mask01_EMF.mdl
Realizziamo il modello SIMULINK in maniera differente, generando i segnali q e Te con dei
blocchi Signal Builder (libreria Sources) ..
Alessandro Pisano - pisano@diee.unica.it
153
.. e realizzando le equazioni per mezzo di un blocco Embeddbed MATLAB Function (EMF)
Integratore
vettoriale
(bidimensionale)
y = uscite
u = ingressi
p = parametri
154
Il blocco Camera di Combustione conserva la medesima maschera della
implementazione precedente
Alessandro Pisano - pisano@diee.unica.it
155
Codice del blocco EMF
function ydot = fcn(y,u,p)
Cf=p(1);
Cp=p(2);
Kip=p(3);
Kpe=p(4);
q=u(1);
Te=u(2);
Tf=y(1);
Tp=y(2);
Tfdot=q/Cf+(Kip/Cf)*(Tp-Tf);
Tpdot=(Kpe/Cp)*(Te-Tp)-(Kip/Cp)*(Tp-Tf);
ydot=[Tfdot Tpdot];
Variabili globali non concesse
allinterno di blocchi EMF.
I parametri della mask non sono
direttamente accessibili da parte
della EMF
Codice analogo a quello
di un Function file
Alessandro Pisano - pisano@diee.unica.it
156
Parametrizzazione dei Signal Builder
Target
Alessandro Pisano - pisano@diee.unica.it
157
Zoomon T
Spostiamo verso sinistra
questa linea
(dopppio click su di essa)
Alessandro Pisano - pisano@diee.unica.it
158
Spostiamo verso destra
questa linea con modalit
analoghe
Spostiamo verso lalto questa
linea con modalita analoghe
Alessandro Pisano - pisano@diee.unica.it
159
Profilo completo q(t) Profilo pi complicato per q(t)
Proflo piu complicato per T(t)
Alessandro Pisano - pisano@diee.unica.it
160
Non serve piu un file script in abbinamento
Risultati della simulazione
Alessandro Pisano - pisano@diee.unica.it
161
SimMechanics
Modellazione di sistemi
meccanici multi-body
Toolbox avanzati
Alessandro Pisano - pisano@diee.unica.it
162
Modello VMRL 3D
Alessandro Pisano - pisano@diee.unica.it
163
Vista differente
Alessandro Pisano - pisano@diee.unica.it
164
Variare il controllo sul FUEL
(SubsystemControl)
Osservare la velocit dellalbero motore in RPM, e correlarne le variazioni ai
corrispondenti incrementi e decrementi del fuel rate
Alessandro Pisano - pisano@diee.unica.it
165
Toolbox avanzati
SimDriveline
Componenti e modelli
area automotive
Animazione 3D
Alessandro Pisano - pisano@diee.unica.it