Вы находитесь на странице: 1из 39

Funes de transferncia

Objetivos: gerao de funes de transferncia MIMO arranjos de funes de transferncia estabilidade por critrio de Routh lugar das razes

Funes de transferncia MIMO


Suponhamos um modelo linear

G (x )
NX x NX

y
NX x NU

x = A x + Bu
NX x 1 NX x 1 NY x NX

NU x 1 NY x NU

y = C x + Du
NY x 1 NX x 1 NU x 1

Funes de transferncia MIMO


Aplicando a transformada de Laplace ao modelo

s X (s ) = A X (s ) + BU (s ) Y (s ) = C X (s ) + DU (s )
Obtm-se

X (s ) = (s I A) BU (s )
1

Y (s ) = C (s I A) B + D U (s )
1

Funes de transferncia MIMO


Se D uma matriz de zeros

X (s ) = (s I A) BU (s )
1

Y (s ) = C (s I A) BU (s ) = G (s )U (s )
1

E, portanto

G (s ) = C (s I A) B
1

Funes de transferncia MIMO


Ou seja,

g11 (s ) G (s ) = gN 1 (s ) Y
onde

g1NU (s ) gNY NU (s )

Yi (s ) gij (s ) = U j (s )

Funes de transferncia MIMO


Por exemplo, dadas

0,9056 0 A= 0,75 2,564 1,5302 0 B= 3,8255 0,3 1 0 C = 0 1


quais so as funes de transferncia?

0 0 D= 0 0

Funes de transferncia MIMO


>> >> >> >> >> a = x1 x2 b = x1 x2 c = y1 y2 d = y1 y2 Continuous-time model. u1 0 0 u2 0 0 x1 1 0 x2 0 1 u1 -1.5302 3.8255 u2 0 0.3 x1 0 -0.75 x2 0.9056 -2.564 A = [0 0.9056; -0.75 -2.564]; B = [-1.5302 0; 3.8255 0.3]; C = eye(size(A)); D = zeros(size(A)); modss=ss(A,B,C,D)

Funes de transferncia MIMO


>> modtf = tf(modss) Transfer function from input 1 to output... -1.53 s - 0.4591 #1: ---------------------s^2 + 2.564 s + 0.6792 3.826 s + 1.148 ---------------------s^2 + 2.564 s + 0.6792

#2:

Transfer function from input 2 to output... 0.2717 #1: ---------------------s^2 + 2.564 s + 0.6792 0.3 s ---------------------s^2 + 2.564 s + 0.6792

#2:

Funes de transferncia MIMO


Ou seja,

1,53s 0,4591 g11 (s ) = 2 s + 2,564s + 0,6792

g12 (s ) = g21 (s ) =

3,826s + 1,148 s2 + 2,564s + 0,6792 0,2717 s2 + 2,564s + 0,6792

0,3s g22 (s ) = 2 s + 2,564s + 0,6792

Funes de transferncia MIMO


>> step(modtf)

Funes de transferncia MIMO


>> impulse(modtf)

Funes de transferncia MIMO


>> t = linspace(0,10); >> u = [sin(0.2*t); sin(0.2*t)]; >> lsim(modtf,u,t)

Extraindo FTs SISO de FTs MIMO


A FT MIMO um objeto LTI, armazenando cada FT SISO de uma forma no-trivial. Para extrair estas funes da grande matriz de TFs (ou seja, retirar os gijs de G), h a funo tfdata:
>> [num, den] = tfdata(modtf) num = [1x3 double] [1x3 double] [1x3 double] [1x3 double]

den = [1x3 double] [1x3 double] [1x3 double] [1x3 double]

Extraindo FTs SISO de FTs MIMO


O resultado de tfdata no uma matriz de nmeros, nem de caracteres, mas sim uma matriz celular (cell array). Ao contrrio das matrizes comuns, uma matriz celular pode conter dados de diferentes tipos em cada elemento. Ou seja, uma matriz celular uma matriz de matrizes. As matrizes celulares so referenciadas por chaves - {}, e no por parnteses - ().

Extraindo FTs SISO de FTs MIMO


>> >> >> >> >> aa bb cc dd mc = = = = = [ 1 2 3 ]; 'Teste'; zeros(10); 12; {aa bb; cc dd}

mc = [ 1x3 double] [10x10 double] >> mc{1,2} ans = Teste >> mc{2,2} ans = 12 'Teste' [ 12]

Extraindo FTs SISO de FTs MIMO


Voltando s FTs:
>> g = tf(num{1},den{1}) Transfer function: -1.53 s - 0.4591 ---------------------s^2 + 2.564 s + 0.6792 >> step(g)

FTs em srie
Suponha o diagrama abaixo

U (s )

G1 (s )

G2 (s )

Y (s )

2s + 1 G1 (s ) = 5s + 1 1 G2 (s ) = 2s + 1

FTs em srie
Estas funes de transferncia podem ser colocadas em srie com a funo series:
>> g1 = tf([-2 1],[5 1]) Transfer function: -2 s + 1 -------5 s + 1 >> g2 = tf(1,[-2 1]) Transfer function: -1 ------2 s - 1 >> G = series(g1,g2) Transfer function: 2 s - 1 ---------------10 s^2 - 3 s - 1

FTs em srie
>> step(G)

FTs em srie
Neste caso (funes SISO em srie), tambm possvel obter a FT global simplesmente multiplicando os polinmios dos numeradores e denominadores. A funo para multiplicar polinmios conv:
>> GG = tf(conv([-2 1], 1), conv([5 1], [-2 1])) Transfer function: 2 s - 1 ---------------10 s^2 - 3 s - 1

FTs em paralelo
Suponha o diagrama abaixo

U (s )

G1 (s ) G2 (s )

+ +

Y (s )

2 G1 (s ) = 5s + 1

1 G2 (s ) = s +1

FTs em paralelo
Estas funes de transferncia podem ser colocadas em paralelo a funo parallel:
>> g1 = tf(2,[5 1]) Transfer function: 2 ------5 s + 1 >> g2 = tf(-1,[1 1]) Transfer function: -1 ----s + 1 >> G = parallel(g1,g2) Transfer function: -3 s + 1 --------------5 s^2 + 6 s + 1

FTs em paralelo
>> step(G,g1,g2) >> legend('G','g_1','g_2')

FTs e retroalimentao (feedback)


Suponha o diagrama abaixo

R(s )

U (s ) + G1 (s )
Z (s ) G2 (s )

Y (s )

2 G1 (s ) = 5s + 1

1 G2 (s ) = 10s + 1

FTs e retroalimentao (feedback)


Estas funes de transferncia podem ser colocadas de acordo com o diagrama de retroalimentao com a funo feedback:
>> g1 = tf(2,[5 1]) Transfer function: 2 ------5 s + 1 >> g2 = tf(-1,[10 1]) Transfer function: -1 -------10 s + 1 >> G = feedback(g1,g2) Transfer function: 20 s + 2 ----------------50 s^2 + 15 s - 1

FTs e retroalimentao (feedback)


>> step(G)

Critrio de Estabilidade de Routh


Dada uma equao caracterstica

an s + an 1s
Para as condies

n 1

+ + a2 s + a1s + a0 = 0

an > 0
E

ai > 0, i = 1 n

Critrio de Estabilidade de Routh


Calcula-se a Matriz de Routh

an an 1 b1 R= c1 z

an 2 an 3 b2 c2

an 4 an 5 b3

1 2 3 4 n +1

Critrio de Estabilidade de Routh


onde

an 1an 2 an an 3 b1 = an 1 b1an 4 an 1b2 c1 = b1


E assim por diante

an 1an 4 an an 5 b2 = an 1 b1an 5 an 1b3 c2 = b1

Critrio de Estabilidade de Routh


Caso todos os elementos da 1 coluna sejam no-nulos e positivos, diz-se que o sistema estvel. Para calcular a matriz de Routh, pode-se usar um cdigo como o mostrado a seguir, de routh.m:
function saida = routh(entrada) switch upper(class(entrada)) case 'TF' [num, eq] = tfdata(entrada); eq = cat(1,eq{:}); case 'CELL' eq = cat(1,entrada{:}); case 'DOUBLE' eq = entrada; end; if size(eq,1) > 1 eq = eq'; end; if eq(1) < 0 eq = -eq; end; continua ...

Critrio de Estabilidade de Routh


... continuao nz = find(eq<=0); if isempty(nz) % Constroi a matriz de Routh linha1 = eq(1:2:length(eq)); linha2 = eq(2:2:length(eq)); matriz = zeros(length(eq),length(linha1)); matriz(1,:) = linha1; matriz(2,[1:1:length(linha2)]) = linha2; for aux = 3 : length(eq) const1 = matriz(aux-1,1); linha = ((const1*matriz(aux-2,2:end))- ... (matriz(aux-2,1)*matriz(aux-1, 2:end)))/const1; matriz(aux,[1:1:length(linha)]) = linha; end; nz2 = find(matriz(:,1)<=0); if isempty(nz2) saida = 1; else saida = 0; end; else % Nao pode aplicar o criterio disp('ROUTH: A equaao caracteristica possui ... coeficientes nulos ou negativos!') saida = -1; return ; end;

Critrio de Estabilidade de Routh


Por exemplo:

20s + 2 G (s ) = 150s3 + 95s2 + 18s + (1 2K )


1 condio:

1 2K > 0

K < 0,5

Critrio de Estabilidade de Routh


Calculando a matriz de Routh

18 150 95 1 2K R= b1 0 0 c1
Para que b1 e c1 sejam positivos, K deve ser maior que -5,2. Logo,

5,2 < K < 0,5

Critrio de Estabilidade de Routh


>> G1 = tf([20 2],[150 95 18 0.4]) Transfer function: 20 s + 2 ----------------------------150 s^3 + 95 s^2 + 18 s + 0.4 >> sai = routh(G1) sai = 1

A matriz de Routh neste caso


matriz = 150.0000 95.0000 17.3684 0.4000 18.0000 0.4000 0 0

Critrio de Estabilidade de Routh


> G1 = tf([20 2],[150 95 18 12]) Transfer function: 20 s + 2 ---------------------------150 s^3 + 95 s^2 + 18 s + 12 >> sai = routh(G1) sai = 0

A matriz de Routh neste caso


matriz = 150.0000 95.0000 -0.9474 12.0000 18.0000 12.0000 0 0

Lugar das razes


A funo rlocus desenha o diagrama de lugar das razes (root locus) de uma funo de transferncia de malha aberta, conforme o diagrama abaixo:

G (s )

Lugar das razes


O diagrama construdo mostrando a variao das razes da equao caracterstica da FT de malha fechada quando K varia de zero a infinito. O diagrama comea nos plos da TF de MA, marcados com um X, e terminam convergindo para os zeros da TF de MA , marcados por um crculo, ou rumam para o infinito.

Lugar das razes


>> sys = tf([20 2],[150 95 18 1]) Transfer function: 20 s + 2 --------------------------150 s^3 + 95 s^2 + 18 s + 1 >> zero(sys) ans = -0.1000 >> pole(sys) ans = -0.3333 -0.2000 -0.1000 >> rlocus(sys)

Lugar das razes


>> sys = tf([-3 1],[5 6 1]) Transfer function: -3 s + 1 --------------5 s^2 + 6 s + 1 >> zero(sys) ans = 0.3333 >> pole(sys) ans = -1.0000 -0.2000

>> rlocus(sys)

Вам также может понравиться