Sei sulla pagina 1di 24

MATLAB

Utilizzo di MATLAB per la


Dinamica e Controllo dei Processi Chimici

Sommario:
PARTE I - Elementi Introduttivi : Polinomi e Intervalli, Trasformate
di Laplace, Scomposizione in frazioni parziali, Funzioni di
trasferimento
PARTE II - Analisi della risposta : Risposta a step, Risposta a
forzanti generiche.

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


ELEMENTI INTRODUTTIVI
MATLAB (=MATrix LABoratory): software per simulazione
ed analisi di sistemi lineari e non lineari (elemento base=
matrice).
Operazioni di assegnazione: introduzione di variabili
(scalari, vettori, matrici) da tastiera mediante l’operatore “=”.

Istruzioni WHO e WHOS:

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


VETTORI
Definizione di un vettore riga indicando i suoi elementi
inclusi in parentesi quadre e separati da uno spazio o da
una virgola. Es. vettore riga q avente elementi 4 2 -1 5:
q = [4 2 -1 5] oppure q = [4,2,-1,5]
Per definire un vettore colonna q avente elementi 4 2 -1
5 si usa l’apice: p = [1 2 3 4]’.
Lunghezza di un vettore q: length(q) (restituisce il
numero di elementi del vettore).
Accesso ad un elemento di un vettore tramite indice.
NB.
Elemento
nullo = [ ]

N.B. Non necessario dimensionamento delle variabili.


Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
MATRICI
Mediante definizione dei vettori che compongono le
righe della matrice separati da un “;”.
Esempio: definizione di una matrice A 2x4:
A = [1 2 3 4;5 6 7 8]
Come operatore di trasposizione si usa l’apice!
Dimensioni di una matrice: [m,n]=size(A) che restituisce
numero di righe (m) e colonne (n) della matrice A.
Accesso ad un elemento di una
matrice tramite 2 indici (numero
riga e numero colonna).

clear : per cancellare variabili


Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
INTERVALLI
Sono vettori i cui elementi sono numeri equispaziati.
Definizione mediante l’incremento (D):
x = xMIN:D:xMAX

Definizione mediante il numero di punti (N):


x=linspace(xMIN,xMAX,N) (lineare)
x=logspace(xMIN,xMAX,N) (logaritmico)
Esempi
1. Definire l’intervallo da 0 a 10 con passo 2: x=0:2:10
2. Definire l’intervallo da 0 a 10 con 5 punti equispaziati
linearmente: x=linspace(0,10,5)
3. Definire l’intervallo da 10 a 104 con 100 punti
equispaziati logaritmicamente: x=logspace(1,4,100)
Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
POLINOMI
Si rappresentano come vettori riga aventi per elementi i
coefficienti del polinomio in ordine di potenza
decrescente (inclusi i coefficienti nulli!).
 p(s)=s3-2s2-s+2  p=[1 -2 -1 2];
 q(s)=s3+1  q=[1 0 0 1]; (N.B. q=[1 1]  q(s)=s+1)
 z(s)= s3-s2-2s  z=[1 -1 -2 0];

Operazioni fondamentali:
 Prodotto: c=conv(p,q)
 Radici di un polinomio: roots(p)
 Polinomio di radici assegnate: q=poly([-1 2 1])

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


TRASFORMATE DI LAPLACE
Si ottengono mediante l‘istruzione
laplace(y(t))
Definizione di oggetti simbolici utilizzando l’ istruzione syms
 Esempi:
syms a s t
laplace(a*t) a/s2
laplace(exp(-a*t)) 1/(s+a)

Espressioni “matematiche” : pretty(l)


Anti-trasformata: ilaplace(x(s))
 Esempi:
syms a s t
ilaplace(a/s) a
ilaplace(a/s^2) at
Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
SCOMPOSIZIONE IN FRAZIONI
PARZIALI
Si ottiene mediante l’istruzione:
[c,p,k]=residue(a,b)
INPUT: polinomio al numeratore (a) e polinomio al
denominatore (b) della funzione fratta (rapporto tra input
e output del sistema nel dominio delle s).
OUTPUT: tre vettori
 vettore colonna c contenente le costanti Ci ;
 vettore colonna p contenente i poli della funzione fratta (radici
del polinomio al denominatore);
 vettore riga k relativo alla eventuale parte impropria (solo se
m>nNON CI INTERESSA!!).

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


SCOMPOSIZIONE IN FRAZIONI
PARZIALI
Esempio:
s2  s  6 4/3 2/3 3
y( s)  3   
s  2s  s  2 ( s  2) ( s  1) ( s  1)
2

[c,p,k]=residue(a,b)

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


SCOMPOSIZIONE IN FRAZIONI
PARZIALI
Esempio:
1 1 1 1
y( s )    
s  1 s  2 s  2 s  1 s  12
2

Scomposizione Antitrasformazione
>> a=1; syms s t
>> b=poly([-2 -1 -1]) ; >> ys=1/(s+2) - 1/(s+1) + 1/(s+1)^2
[c,p,k]=residue(a,b) ys =
1/(s+2)-1/(s+1)+1/(s+1)^2
c=
>> pretty(ys)
1.0000 1 1 1
-1.0000 ----- - ----- + --------
1.0000 s+2 s+1 2
p= (s + 1)
-2.0000 >> yt=ilaplace(ys)
-1.0000 yt =
exp(-2*t)+exp(-t)*(1+t)
-1.0000
>> pretty(yt)
k= exp(-2 t) + exp(-t) (1 + t)

Corso di Dinamica e Controllo dei Processi Chimici


30 Aprile 2019
FUNZIONI DI TRASFERIMENTO
Rappresentazione polinomiale:
G=tf(num,den)
Esempi: >> G=tf([1 2],[1 2 1])
s2
G( s )  2 Transfer function:
s  2s  1 s+2
-------------
s^2 + 2 s + 1

1
G( s ) 
2s  14 s  1
Poli di una funzione di trasferimento:
pole(G)
Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
FUNZIONI DI TRASFERIMENTO
Rappresentazione tramite zeri e poli:
G=zpk(zeri,poli,gain)
Esempio:
>> zpk([3 -1],[-2 4],5)

G( s )  5
s  3s  1 Zero/pole/gain:

s  2s  4  5 (s-3) (s+1)


------------------
(s+2) (s-4)

Conversione dalla forma “zeri-poli” a quella polinomiale


e viceversa:
tf(G) e zpk(G)
Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
TEMPO DI RITARDO
La definizione di un sistema con tempo di ritardo si
ottiene con le istruzioni:
 rappresentazione polinomiale:
G=tf(num,den,’ioDelay’,tD) (forma polinomiale)
 rappresentazione tramite zeri e poli:
G=zpk(zeri,poli,gain, ,’ioDelay’,tD) (s-pi)

Esempi: >> tf(1,[2 1],'ioDelay',3)

1 Transfer function:
G( s)  e 3 s
2s  1 1
exp(-3*s) * ---------
2s+1

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


RISPOSTA AD UNO STEP
Si ottiene con l’istruzione
1) step(G)
INPUT: funzione di trasferimento (G) del sistema di cui si
vuole la risposta.

2) y = step(G,t)
INPUT: funzione di trasferimento (G) del sistema di cui si
vuole la risposta e vettore dei tempi (t) che va definito
(intervalli);
OUTPUT: variabile (y) in cui viene memorizzata la
risposta y(t).

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


GRAFICO RISPOSTA
Si ottiene con l’istruzione
plot(t,y)
INPUT: istanti di tempo in cui è stata valutata la risposta
(asse delle ascisse, t), valori della risposta (y).
Opzioni aggiuntive:
 plot(t,y,’r’)  specifica il colore (r) della linea
 plot(t,y,’- -k’)  specifica colore (k) e tipologia (- -) della linea
 plot(t,y,’og’)  linea sostituita da simboli (o) di colore g (green)
Per scegliere estremi degli assi:
axis([xmin xmax ymin ymax])

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


RISPOSTA AD UNO STEP
ESEMPIO:
1 1
G( s)  G( s) 
0.5s  1 2s  1

>> G=tf(1,[0.5 1]);


>> t=0:0.1:10;
>> y=step(G,t);
>> plot(t,y,'b')
>> axis([0 4 0 1.1])
>> xlabel('tempo [s]','Fontsize',12)
>> ylabel('y(t)','Fontsize',12)
>> title('Risposta a step','Fontsize',14)
>> hold

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


RISPOSTA AD UNO STEP
ESEMPI:
Risposta sistemi I ordine
1
G( s )  t p  0.5;1;0.25
t ps  1

Risposta sistemi II ordine


1 t 5
G( s )  2 2
t s  2t s  1   2;1;0.5;0.1
Risposta sistemi II ordine con zero
t as 1 t  5;  1.5
G(s)  2 2
t s  2t s  1 t a  8;20;2
Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
RISPOSTA AD UN IMPULSO
Si ottiene con l’istruzione
impulse(G)
INPUT: funzione di trasferimento (G) del sistema di cui si
vuole la risposta.
y=impulse(G,t)
INPUT: funzione di trasferimento (G) del sistema di cui si
vuole la risposta e vettore dei tempi (t);
OUTPUT: variabile (y) in cui viene memorizzata la
risposta y(t).
1
G( s ) 
5s  1
Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
RISPOSTA AD UNA FORZANTE
GENERICA
Si ottiene con l’istruzione
lsim(G,f)
INPUT: funzione di trasferimento (G) del sistema di cui si
vuole la risposta e forzante (che occorre definire).
y=lsim(G,f,t)
INPUT: funzione di trasferimento (G) del sistema di cui si
vuole la risposta, e forzante (che occorre definire
utilizzando gli intervalli) e vettore dei tempi (t);
OUTPUT: variabile (y) in cui viene memorizzata la
risposta y(t).

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


RISPOSTA AD UNA FORZANTE
GENERICA
Esempio: Onda Rettangolare

1
G( s ) 
10 s  1
» G=tf(1,[10 1]);
1
1.0 G( s )  » t=0:.1:100;
0.8
2s  1 » f(1:201)=1;
» f(202:1001)=0;
0.6 » plot(t,f,'--r')
0 t<0 » axis([0 80 0 1.2])
f(t)

0.4
f(t)= 1 0<t<20 » hold
» y=lsim(G,f,t);
0.2 0 t>20 » plot(t,y,'g')
0.0
0 10 20 30 40
t [s]

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


RISPOSTA AD UNA FORZANTE
GENERICA
Esempio: Rampa
1
G( s ) 
2.0
5s  1

1.5
» G=tf(1,[5 1]);
» t=0:.1:100;
0 t<0
f(t)

1.0 » f(1:1001)=t(1:1001);
f(t)=
t t>0 » plot(t,f,'--r')
0.5 » axis([0 20 0 20])
» hold
0.0 » y=lsim(G,f,t);
0 2 4 6 8 » plot(t,y,‘b')
t [s]

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019


RISPOSTA AD UNA FORZANTE
GENERICA
Esempio: Rampa “finita”
1
2.0 G( s ) 
4s  1
1.5

» G=tf(1,[4 1]);
f(t)

1.0 » t=0:0.1:100;
» f(1:21)=t(1:21);
0.5 » f(22:1001)=2;
» plot(t,f,'--r')
0.0 » axis([0 20 0 2.1])
0 2 4 6 8
» y=lsim(G,f,t);
t [s] » hold
0 t<0 » plot(t,y,'b')
f(t)= t 0<t<2
2 t>2
Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019
RISPOSTA AD UNA FORZANTE
GENERICA 1
Esempio: Dente di sega G( s) 
10s  1
» G=tf(1,[10 1]);
» t=0:0.1:100;
» f(1:101) = 4*t(1:101);
» f(101:201) = 4*t(101:201)-8*t(1:101);
» f(201:1001) = 0;
» plot(t,f,' --m')
» axis([0 80 0 41])
» y=lsim(G,f,t);
» hold
» plot(t,y,'k','LineWidth',2)

0 t<0
4t 0<t<10
f(t)=4tu(t) – 8(t-10)u(t-10) + 4(t-20)u(t-20)=
-4t 10<t<20
Corso di Dinamica e Controllo dei Processi Chimici 0 t>20 30 Aprile 2019
RISPOSTA AD UNA FORZANTE
GENERICA
Forzante composta
50
1
40 G( s ) 
30 4s  1
20
10
0 0 t<0
f(t)

-10
-20
40 0<t<5
-30 f(t)= -40 5<t<20
-40
-50 0 t>20
0 5 10 15 20 25 30 35 40
t [s]

Corso di Dinamica e Controllo dei Processi Chimici 30 Aprile 2019