Trabalho Finalola Que Tal
-
Upload
renan-pieczkoski -
Category
Documents
-
view
221 -
download
0
description
Transcript of Trabalho Finalola Que Tal
-
Universidade de Passo Fundo
Engenharia Eletrica
Controle Automatico III
Trabalho final
Alunos:Ines GoicoecheaCristian Borrim
Professor:Fernando Passold
20 outubro 2013
-
Indice
1. Sistema 7 21.1. Equacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2. Condicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Estabilidade - Metodo de Jury . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Determinar BoG(z) 3
3. Controlador proporcional 33.1. Malha fechada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2. Resposta a entrada degrau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.3. Ganho maximo Kmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4. Controlador pelo metodo de Zdau (polos dominantes) 94.1. Polo dominante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2. Entrada degrau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5. Controlador pelo metodo dead beat (tempo mnimo) 125.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.2. Controlador C(z) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.3. Malha fechada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.4. Malha aberta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.5. Entrada degrau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155.6. Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6. Controlador PID (Ziegler - Nichols) 186.1. PID analogico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186.2. Entrada degrau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196.3. PID digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1
-
1. Sistema 7
1.1. Equacao
O nosso sistema e G(s) =2,0(35s2 + 12s+ 1)
5s4 + 11s3 + 10,75s2 + 5, 5s+ 0, 75
1.2. Condicoes
As condicoes para o controle sao:
Tempo de ajuste (ts): ts < 10 segundos
Sada em regimen permanente: 7.5
Acao de controle restringida a` valores entre 0 < u(kT ) < 10 volts
Periodo de amostragem (Ts): Ts = 0,1 segundos
1.3. Estabilidade - Metodo de Jury
Primeiro comprovamos as condicoes preliminares:
1. |a0| < an 0, 80252 < 1 OK2. D(1) > 0 D(1) = 0, 00002 OK3. (1)nD(1) > 0 (1)nD(1) = 14, 3430 OK
Tabela de Jury:
Linha z0 z1 z2 z3 z4
1 0.80252 -3.3888 5.369 -3.7827 12 1 -3.7827 5.369 -3.3888 0.802523 -0.356 -6.5023 -1.0603 0.3531 04 0.3531 -1.0603 -6.5023 -0.356 05 0.1267 2.3148 0.3775 0 0
Condicoes:
1. |a0| < |an| OK2. |b0| < |bn1| 0,356 < 0,3531 OK3. |c0| < |cn2| 0,1267 < 0,3775 OK
2
-
2. Determinar BoG(z)
Para comecar, inserimos o sistema em Matlab e adotamos Ts = 0,1 segundos
>> num = conv( [2], [35 12 1])num =
70 24 2>> den = [5 11 10.75 5.5 0.75]den =
5.0000 11.0000 10.7500 5.5000 0.7500>> Ts = 0.1Ts =
0.1000>> [numd,dend]=c2dm(num,den,Ts)numd =
0 0.0658 0.0675 0.0580 0.0597dend =
1.0000 3.7827 5.3690 3.3888 0.8025>> printsys(numd,dend,'z')num/den =
0.06578 z3 0.067492 z2 0.057999 z + 0.059747z4 3.7827 z3 + 5.369 z2 3.3888 z + 0.80252
>> roots(numd)ans =0.94000.98580.9802
>> roots(dend)ans =
0.9802 + 0.0000i0.9489 + 0.0672i0.9489 0.0672i0.9048 + 0.0000i
Entao, o nosso BoG(z) e:
BoG(z) =0,06578z3 0,067492z2 0,057999z + 0,059747z4 3,7827z3 + 5,369z2 3,3888z + 0,80252
E em forma de zero/pole/gain:
BoG(z) =0,06578(z + 0,94)(z 0,9802)(z 0,9858)
(z 0,9802)(z 0,9048)(z2 1,898z + 0,9048)
3. Controlador proporcional
3.1. Malha fechada
Para comecar, obtemos a funcao de transferencia em malha fechada e tambem em formatode zero/pole/gain. H(s) = 1 e a realimentacao e unitaria:
3
-
>> FTMF = feedback(BoG, 1)FTMF =
0.06578 z3 0.06749 z2 0.058 z + 0.05975z4 3.717 z3 + 5.302 z2 3.447 z + 0.8623
Sample time: 0.1 secondsDiscretetime transfer function.>> zpk(FTMF)ans =
0.06578 (z+0.94) (z0.9802) (z0.9858)(z0.9802) (z0.9824) (z2 1.754z + 0.8955)
Sample time: 0.1 secondsDiscretetime zero/pole/gain model.
Agora separamos numerador e denominador:
>> [num mf,den mf]=tfdata(FTMF , 'v')num mf =
0 0.0658 0.0675 0.0580 0.0597den mf =
1.0000 3.7170 5.3015 3.4468 0.8623Obtemos os polos em malha fechada:
polos mf = roots(den mf) %Obtemos os polos em malha fechadapolos mf =
0.8772 + 0.3550i0.8772 0.3550i0.9824 + 0.0000i0.9802 + 0.0000i
>> [theta ,rho]=cart2pol(real(polos mf(1)) ,imag(polos mf(1)))%Verificamos se estao fora do circulo unitario
theta =0.3845
rho =0.9463
>> deg=(rho*180)/pi %Transformando a (deg)deg =
54.2190
4
-
3.2. Resposta a entrada degrau
A entrada degrau e:
step(FTMF)
Pode-se observar que o overshoot e muito elevado (101), entao precisamos descobrir o Kmaxpermitido antes de que fique inestavel. Para isso, utilizamos os graficos.
>> rlocus(num mf, den mf)hold onx = [1 : 0.1 : 1];y = sqrt(ones(1,length(x))x.2);hold on;plot(x, y, ':' ,x ,y , ':')axis('equal')
5
-
E assim obtemos o grafico:
3.3. Ganho maximo Kmax
Com rlocfind olhamos o ganho possvel:
>> rlocfind(numd, dend)Select a point in the graphics windowselected point =
0.8206 + 0.5809ians =
2.7876
O valor maximo de overshoot tem que ser de 0.5, que se obtem com = 0,7. Portanto,utilizamos uma linha guia no Matlab e observamos os valores:
>> zgrid(0.7,0.5,'new')
6
-
>> rlocus(numd, dend)>> axis('equal')>> hold on>> rlocfind(numd, dend)Select a point in the graphics windowselected point =
0.9080 + 0.2434ians =
0.4404
Comprovamos agora a nova sada para entrada degrau, com o controlador proporcionalobtido:
>> K = 0.44K =
0.4400>> [num mf,den mf]=feedback(K*numd,dend,1,1,1)num mf =
0 0.0289 0.0297 0.0255 0.0263den mf =
1.0000 3.7538 5.3393 3.4143 0.8288>> printsys(num mf,den mf, 'z')num/den =
0.028943 z3 0.029697 z2 0.025519 z + 0.026289z4 3.7538 z3 + 5.3393 z2 3.4143 z + 0.82881
>> dstep(num mf, den mf)
7
-
O overshoot e ligeiramente menor, mas sao necessarios mais controladores de outros tipospara que fique ainda mais baixo.
8
-
4. Controlador pelo metodo de Zdau (polos dominantes)
4.1. Polo dominante
Para comecar, temos que procurar o polo mais dominante da planta. A nossa planta e:
G(s) =2,0(35s2 + 12s+ 1)
(5s4 + 11s3 + 10,75s2 + 5, 5s+ 0, 75
Que em forma da transformada Z fica:
BoG(z) =0,06578(z + 0,94)(z 0,9802)(z 0,9858)
(z 0,9802)(z 0,9048)(z2 1,898z + 0,9048)No plano z, as razes dominantes sao aquelas que estao dentro e proximas do crculo unitario
enquanto a regiao (no plano-z) menos significativa e que est proxima da origem do plano-z.O polo mais proximo ao crculo unitario e:
z = 0,9802 temos que cancelar o polo mais dominanteEntao, a funcao de transferencia em malha aberta fica:
F (z) =K0,06578(z + 0,94)(z 0,9802)(z 0,9858)
(z 0,9048)(z2 1,898z + 0,9048)Geramos a figura do lugar das razes:
>> fnum=numfnum =
70 24 2>> fden=conv([1 0.9048],[1 1.898 0.9048])fden =
1.0000 2.8028 2.6221 0.8187>> printsys(fnum,fden,'z')num/den =
70 z2 + 24 z + 2z3 2.8028 z2 + 2.6221 z 0.81866
zgrid(0.7,0.5,'new');hold on;rlocus(fnum, fden);hold on;zgrid(0.7, 0.5)>> rlocfind(fnum,fden)selected point =
0.9971 + 0.1354ians =
2.9781e05
9
-
4.2. Entrada degrau
A resposta a entrada degrau e:
10
-
>> K = 0.0000178K =
1.7800e05>> [num mf,den mf]=feedback(K*fnum,fden,1,1,1)num mf =
0 0.0012 0.0004 0.0000den mf =
1.0000 2.8016 2.6225 0.8186>> printsys(num mf,den mf, 'z')num/den =
0.001246 z2 + 0.0004272 z + 3.56e05z3 2.8016 z2 + 2.6225 z 0.81863
>> dstep(num mf,den mf)polyval(num mf,1)/polyval(den mf,1)ans =
0.7252
O overshoot e a metade que ao comeco, mais ainda nao tem atingido o desejavel: 0.5.
11
-
5. Controlador pelo metodo dead beat (tempo mnimo)
5.1. Objetivo
O objetivo deste controlador e fazer o sistema em malha fechada atingir o regime permanenteno menor tempo possvel (no tempo mnimo absoluto, k = 1) ou dentro de um numero finitode perodos amostrados.
Temos BoG(z), obtido previamente:
BoG(z) =0,06578(z + 0,94)(z 0,9802)(z 0,9858)
(z 0,9802)(z 0,9048)(z2 1,898z + 0,9048)
5.2. Controlador C(z)
Agora temos que obter a funcao C(z) com o Matlab:
[num BoG,den BoG]=tfdata(BoG, 'v') %Obtemos em forma vetorialnum BoG =
0 0.0658 0.0675 0.0580 0.0597den BoG =
1.0000 3.7827 5.3690 3.3888 0.8025>> roots(num BoG) %Extraemos as raizes para obter os polos e zerosans =0.94000.98580.9802
>> polos BoG=roots(den BoG)polos BoG =
0.9802 + 0.0000i0.9489 + 0.0672i0.9489 0.0672i0.9048 + 0.0000i
>> zeros BoG=roots(num BoG)zeros BoG =0.94000.98580.9802
>> num c=poly (polos BoG ) ;>> den c aux=poly(zeros BoG)den c aux =
1.0000 1.0260 0.8817 0.9083>> den c=conv(den c aux,[1 1]) %Temos que incluir um integrador para error nuloden c =
1.0000 2.0260 0.1443 1.7900 0.9083>> C=tf(num c,den c,Ts)C =
z4 3.783 z3 + 5.369 z2 3.389 z + 0.8025z4 2.026 z3 + 0.1443 z2 + 1.79 z 0.9083
Sample time: 0.1 secondsDiscretetime transfer function.>> zpk(C) % C(z) em forma zero/pole/gain
12
-
ans =(z0.9802) (z0.9048) (z2 1.898z + 0.9048)
(z+0.94) (z0.9802) (z0.9858) (z1)Sample time: 0.1 secondsDiscretetime zero/pole/gain model.
Entao, a nossa funcao C(z) e:
(z 0,9802)(z 0,9048)(z2 1,898z + 0,9048)(z + 0,94)(z 0,9802)(z 0,9858)(z 1)
5.3. Malha fechada
Fechamos a malha de realimentacao:
FTMA=series (C,BoG)FTMA =
0.06578 z7 0.3163 z6 + 0.5505 z5 0.3061 z4 0.2559 z3 + 0.4632 z2 0.249 z + 0.04795z8 5.809 z7 + 13.18 z6 13.02 z5 + 0.7638 z4 + 10.93 z3 10.83 z2+ 4.515 z 0.7289
Sample time: 0.1 secondsDiscretetime transfer function.>> zpk (FTMA) % Formato zero/pole/gainans =
0.06578 (z+0.94) (z0.9802) (z0.9802) (z0.9858) (z0.9048)(z2 1.898z + 0.9048)
(z+0.94) (z0.98) (z0.9804) (z0.9858) (z1) (z0.9048)(z2 1.898z + 0.9048)Sample time: 0.1 secondsDiscretetime zero/pole/gain model.
A versao com os polos e zeros cancelados fica:
>> FTMAr=minreal (FTMA,1e4) ;>> zpk(FTMAr)ans =
0.06578(z1)
Sample time: 0.1 secondsDiscretetime zero/pole/gain model.
13
-
5.4. Malha aberta
Entao, a nossa funcao de transferencia em malha aberta e:
FTMA(z) = C(z) BoG(z) = 0,06578z 1
Agora vamos estabelecer o ganho K de nosso controlador. Para isso, precisamos tracar olugar das razes em malha aberta:
>> rlocus(FTMA)>> axis equal>> hold on>> zgrid(1,1)>> [K,polos mf]=rlocfind(FTMA)Select a point in the graphics windowselected point =0.0021
K =15.2349
polos mf =0.9400 + 0.0000i0.9489 + 0.0672i0.9489 0.0672i0.9858 + 0.0000i0.9802 + 0.0000i0.9802 0.0000i0.9048 + 0.0000i0.0021 + 0.0000i
14
-
5.5. Entrada degrau
Obtemos o grafico da resposta a` entrada degrau
FTMF=feedback(K*FTMA,1) %Fechamos a malha com o ganho obtidoFTMF =
1.002 z7 4.819 z6 + 8.386 z5 4.664 z4 3.899 z3 + 7.056 z2 3.794 z + 0.7305z8 4.807 z7 + 8.358 z6 4.636 z5 3.9 z4 + 7.033 z3 3.77 z2+ 0.7208 z + 0.001564
Sample time: 0.1 secondsDiscretetime transfer function.>> zpk(FTMF)ans =
1.0021 (z+0.94) (z0.9802) (z0.9802) (z0.9858) (z0.9048)(z2 1.898z + 0.9048)(z+0.94) (z0.9802) (z0.9802) (z0.9858) (z0.9048) (z+0.002146)
(z2 1.898z + 0.9048)Sample time: 0.1 secondsDiscretetime zero/pole/gain model.>> step(FTMF)
Depois, obtemos y() no Matlab:
>> [num mf,den mf]=tfdata(FTMF, 'v')num mf =
15
-
0 1.0021 4.8191 8.3865 4.6640 3.8986 7.0562 3.79370.7305den mf =
1.0000 4.8066 8.3582 4.6360 3.9002 7.0328 3.7705 0.72080.0016>> y infty=polyval(num mf,1)/polyval(den mf,1)y infty =
1.0000
5.6. Simulink
Este tipo de resposta tem um elevado esforco de controle. Utilizamos o Simulink para ver aresposta de u(k):
figure; stairs(t,u)figure; plot(t,y)title('Acao de Controle [u(k)]')xlabel('tempo (s)'); ylabel('u(k)')figure; stairs(t,u)title(' A o de Controle [u(k)]'); xlabel('tempo (s)');ylabel('u(k)')
E obtemos as seguintes respostas:
16
-
17
-
6. Controlador PID (Ziegler - Nichols)
A abordagem que vamos utilizar e projetar um PID na forma analogica, e depois vamosdigitalizar todo pelo metodo de Tustin.
6.1. PID analogico
Primeiro, achamos o Ku(Km) e nos baseando no resultado, achamos o resto dos ganhoskp, ki, kd. Com um comando de Matlab achamos o wm.
>> rlocus(G)>> [km,pole]=rlocfind(G)Select a point in the graphics windowselected point =0.9130 + 3.9907i
km =1.0949
pole =0.9123 + 3.9907i0.9123 3.9907i0.2000 + 0.0000i0.1754 + 0.0000i
>> wm=max(imag(pole))wm =
3.9907>> kp=0.6*km;>> kd=(kp*pi)/(4*wm);>> ki=(kp*wm)/pi;>> nk=[kd kp ki];>> dk=[1 0];>> gc=tf(nk,dk)gc =
0.1293 s2 + 0.6569 s + 0.8345
sContinuoustime transfer function.>> gd=series(G,gc)gd =
9.05 s4 + 49.09 s3 + 74.44 s2 + 21.34 s + 1.669
5 s5 + 11 s4 + 10.75 s3 + 5.5 s2 + 0.75 sContinuoustime transfer function.>> GT=feedback(gd,1)GT =
9.05 s4 + 49.09 s3 + 74.44 s2 + 21.34 s + 1.6695 s5 + 20.05 s4 + 59.84 s3 + 79.94 s2 + 22.09 s + 1.669
Continuoustime transfer function.>> step(GT,'r')>> hold on>> step(GS,'g')
18
-
6.2. Entrada degrau
A resposta a entrada degrau fica:
Vermelho: Regulado
Verde: Nao regulado
Observamos que os valores ficaram melhor do que sem controlador PID:
Overshoot Peak response Settling time Rise timeNo regulado 81,1 1,32 14,2 0,267Regulado 24,7 1,25 6,94 0,431
6.3. PID digital
Agora, digitalizamos o controlador PID com o metodo Tustin:
>> Dgc = c2d(gc, Ts, 'tustin')Dgc =
3.284 z2 5.088 z + 1.971
z2 1Sample time: 0.1 secondsDiscretetime transfer function.>> sys cl = feedback(Dgc*BoG,1)sys cl =
19
-
0.216 z5 0.5564 z4 + 0.2825 z3 + 0.3583 z2 0.4183 z + 0.1177z6 3.567 z5 + 3.813 z4 + 0.6765 z3 4.208 z2 + 2.97 z 0.6848
Sample time: 0.1 secondsDiscretetime transfer function.
O controlador PID e:
C(z) =3,284z2 5,088z + 1,971
z2 1Entao, a nossa funcao fica:
BoG(z)C(z) =0,216z5 0,5564z4 + 0,2825z3 + 0,3583z2 0,4183z + 0,1177z6 3,567z5 + 3,813z4 + 0,6765z3 4,208z2 + 2,97z 0,6848
Em modo zero/pole/gain:
>> zpk(sys cl)ans =
0.21604 (z+0.94) (z0.9802) (z0.9858) (z0.7746)2(z+1.006) (z0.9865) (z0.9802) (z0.8445) (z2 1.762z + 0.8334)
Sample time: 0.1 secondsDiscretetime zero/pole/gain model.
BoG(z)C(z) =0,21604(z + 0,94)(z 0,9802)(z 0,9858)(z 0,7746)2
(z + 1,006)(z 0,9865)(z 0,9802)(z 0,8445)(z2 1,762z + 0,8334)
20