Matlab Lezione2

download Matlab Lezione2

of 33

Transcript of Matlab Lezione2

MATLABSeconda parteLezione del 10 dicembre 2011

Ing. Domenico BufalinoISTITUTO TECNICO INDUSTRIALE STATALE G.GALILEI

Funzione di trasferimento

Viene definita funzione di trasferimento (abbreviata in F.d.T.) di un sistema il rapporto tra la trasformata di Laplace Y(s) della funzione in uscita del sistema e la trasformata di Laplace X(s) della funzione in ingresso, quando le condizioni iniziali siano poste tutte a zero.

Funzione di trasferimentoLa funzione di trasferimento si presenta come un rapporto di due polinomi in s. Le radici del denominatore sono i poli del sistema, in corrispondenza dei quali luscita diventa infinita, e le radici del numeratore sono gli zeri, in corrispondenza dei quali luscita si annulla.

Funzione di trasferimentoLa F.d.T. pu essere rappresentata in una dele seguenti forme:Forma polinomiale

Forma in zeri/poli

Espansione in fratti semplici

Forma polinomialeIn Matlab si pu identificare una F.d.T. con due vettori che rappresentano i polinomi in s del numeratore e del denominatore Nel caso di poli nellorigine basta considerare il polinomio del denominatore risultante dalla moltiplicazione, lordine del polinomio ne sar incrementato.

Forma polinomialeUna funzione di trasferimento viene costruita a partire dai due vettori num e den con listruzione sys=tf(num,den) Ad esempio se num=1.5 e den=[1 14 40.02] Matlab risponde con: Transfer function: 1.5 -----------------s^2 + 14 s + 40.02

Forma in zeri/poli

dove K una costante reale e z un vettore colonna che rappresenta gli zeri e p rispettivamente un vettore colonna che rappresenta i poli del sistema.

Forma in zeri/poliUna funzione di trasferimento gi costruita (ad esempio con listruzione tf) pu essere convertita nella forma guadagno-zeri-poli con listruzione sys_zpk=zpk(sys) Matlab risponde Zero/pole/gain: 1.5 ------------------(s+9.997) (s+4.003)

Forma in zeri/poliLa funzione zpk() pu anche essere utilizzata per costruire direttamente la funzione di trasferimento a partire dal guadagno k e dai vettori z e p degli zeri e dei poli >> k=1.5; >> z=[]; >> p=[-9.997 -4.003]; >> sys=zpk(z,p,k) Zero/pole/gain: 1.5 ------------------(s+9.997) (s+4.003)

Forma in zeri/poliCon la funzione tf() si pu ancora passare dalla forma zeri/poli a quella polinomiale>> sys Zero/pole/gain: 1.5 ------------------(s+9.997) (s+4.003) >> tf(sys) Transfer function: 1.5 -----------------s^2 + 14 s + 40.02

Espansione in fratti sempliciAssegnata una funzione razionale fratta b(s)/a(s) con sviluppo (o espansione, o scomposizione) in fratti semplici si intende lo sviluppo:r b( s ) r r = 1 + 2 +L + n + k ( s) a ( s) s p1 s p2 s pn

Si utilizza la funzione residue Sintassi

[r, p, k]= residue(b, a)Funziona anche in modo inverso, ossia dati i residui e le radici, la funzione residue fornisce i polinomi a(s) e b(s). Sintassi

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

Espansione in fratti sempliciDove p in Matlab un vettore colonna dei poli, R un vettore colonna dei residui e k(s) un eventuale polinomio rappresentato da un vettore riga. Questa ultima forma molto usata per lantitrasformazione nel dominio tempo perch, in assenza del polinomio k(s), molto facile antitrasformare i singoli fratti di ordine uno e sommarne i contributi. In questo caso lespansione in fratti della funzione di trasferimento diventa del tipo:

Espansione in fratti sempliciI residui sono:reali se i rispettivi poli sono reali complessi coniugati se lo sono i poli,

essi si ricavano mediante la relazione:

per cui lantitrasformata del tipo:

Espansione in fratti semplici Esempio EsempioAntitrasformare la seguente trasformata di Laplace:

s +1 F (s) = 2 s + 5s + 6Scomponendo in fratti semplici si ha:

F ( s) =Da cui:

2 1 s+3 s+2

F (t ) = 2 e 3 t e 2 t

Visualizzazione delle risposte al gradino e allimpulsostep(sys) impulse(sys)

Step Response 0.5 0.4 0.3 0.2 0.1 0 0 2 Time (s ec) 4 6

0.3 0.2 Amplitude

Impulse Res pons e

A mpli tude

0.1 0

-0.1

0

2 Time (sec)

4

6

La funzione feedbackDati i modelli del sistema in linea diretta e di quello di retroazione, permette di calcolare il sistema ad anello chiuso sys = feedback(sys1,sys2) ad esempio, immettendo il comando: tf(feedback(sys_dc,1)) si ottiene la funzione di trasferimento ad anello chiuso a retroazione unitaria: Transfer function: 1.5 -----------------s^2 + 14 s + 41.52

Esempio di costruzione di un sistema lineareOgnuno dei componenti pu essere costruito autonomamente nelle varie forme disponibili (tf, zpk, ecc) G = zpk([],[-1,-1],1); C = 1; S = tf(5,[1 4]); F = tf(1,[1 1]);

Esempio di costruzione di un sistema lineare>> openloop=S*C*G Zero/pole/gain: 5 ------------(s+4) (s+1)^2 >> T=feedback(G*C,S) Zero/pole/gain: (s+4) --------------------------------(s+4.426) (s^2 + 1.574s + 2.033)

Esempio di costruzione di un sistema lineare>> Try=T*F Zero/pole/gain: (s+4) --------------------------------------(s+4.426) (s+1) (s^2 + 1.574s + 2.033) >> step(Try)0.5 0.4 A mpli tude 0.3 0.2 0.1 0 0 2 Time (se c) 4 6 Step Response

Calcoli simboliciOltre alleffettuazione di alcoli numerico come quelli visti finora, Matlab consente anche leffettuazione di calcoli simbolici ((ossia calcoli analoghi a quelli che noi eseguiamo con carta e penna quando sviluppiamo il quadrato di un binomio) >> syms a b >> expand((a+b)^2) ans = a^2+2*a*b+b^2

Calcoli simbolici (equazioni)Esempio di risoluzione di equazione di secondo grado>> syms a b x >> solve('a*x^2+b*x+c=0') ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] >> pretty(ans) [ 2 1/2] [ -b + (b - 4 a c) ] [1/2 --------------------] [ a ] [ ] [ 2 1/2] [ -b - (b - 4 a c) ] [1/2 --------------------] [ a ]

Calcoli simbolici (limiti)Esempio di calcoli di limiti >> syms x >> limit(1/x,x,0,'right') ans = Inf >> limit(sin(x)/x,x,0) ans = 1

Calcoli simbolici (derivate)Esempio di calcolo di derivate >> diff('3*x^2-2*x+1') ans = 6*x-2 >> diff('3*sin(5*x+2)') ans = 15*cos(5*x+2)

Calcoli simbolici (integrali)Esempio di calcolo di integrali (indefiniti e definiti) >> int(x^2) ans = 1/3*x^3 >> pretty(ans) 3 1/3 x >> syms a b >> int(x^2,a,b) ans = 1/3*b^3-1/3*a^3

Polinomi in forma simbolicaE possibile passare dalla forma vettoriale di un polinomio a quella simbolica con la funzione poly2sym Loperazione inversa utilizza la funzione sym2poly >> num=[3 2 1] num = 3 2 1 >> num_s=poly2sym(num,s) num_s = 3*s^2+2*s+1 >> sym2poly(num_s) ans = 3 2 1

Trasformata di LaplaceLa trasformata di Laplace di una funzione f(t) pu essere ottenuta tramite la funzione matlab laplace. Per esempio si voglia trovare la trasformata di Laplace della funzione f(t) = 5e-2t. Occorre innanzitutto definire la variabile t come simbolo >> syms t Successivamente si inserisce la funzione f(t); >> f=5*exp(-2*t); A questo punto dando il seguente comando >> L=laplace(f) Matlab risponde con: L = 5/(s+2)

Trasformata di LaplacePer avere espressioni pi leggibili si possono usare i comandi simplify e pretty.>> syms t s >> f=-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t); >> F=laplace(f,t,s) F = -5/4/s+7/2/(s+2)^2+5/4/(s+2) >> simplify(F) ans = (s-5)/s/(s+2)^2 >> pretty(ans) s - 5 ---------2 s (s + 2)

Antitrasformata di LaplaceSi voglia ora trovare lantitrasformata della funzione

Basta inserire il comando >> ilaplace(1/s-2/(s+4)+1/(s+5)) Matlab risponde con: ans = 1-2*exp(-4*t)+exp(-5*t)

Antitrasformata - Esempio>> syms t s >> F=(s-5)/(s*(s+2)^2); >> ilaplace(F) ans = -5/4+(7/2*t+5/4)*exp(-2*t) >> simplify(ans) ans = -5/4+7/2*t*exp(-2*t)+5/4*exp(-2*t) >> pretty(ans) - 5/4 + 7/2 t exp(-2 t) + 5/4 exp(-2 t)

Antitrasformata - Esempio

>> F=10*(s+2)/(s*(s^2+4*s+5)); >> ilaplace(F) ans = -4*exp(-2*t)*cos(t)+2*exp(-2*t)*sin(t)+4

Funzioni di trasferimento in forma simbolicaLe funzioni di trasferimento normalmente utilizzate in Sistemi sono rapporti di polinomi >> num=3, num_s=poly2sym(num,'s') num = 3 num_s = 3 >> den=[1 4], den_s=poly2sym(den,'s') den = 1 4 den_s = s+4

Funzioni di trasferimento in forma simbolicaLa funzione di trasferimento, come gi noto si costruisce con la funzione tf>> tf(num,den) Transfer function: 3 ----s + 4

La forma simbolica della funzione di trasferimento si ottiene semplicemente dividendo i due polinomi in forma simbolica>> num_s/den_s ans = 3/(s+4) >> pretty(ans) 3 ----s + 4

Funzioni di trasferimento in forma simbolicaVolendo visualizzare la risposta al gradino unitario occorre moltiplicare la f.d.t. per la trasformata del gradino (1/s) >> tf_s=num_s/den_s tf_s = 3/(s+4) >> Funct=tf_s/s Funct = 3/(s+4)/s >> ezplot(Funct)