Escolar Documentos
Profissional Documentos
Cultura Documentos
corrente contínua
Daniel Souza Ribeiro José Eduardo da Cruz Sales
daniel.danielribeiro@gmail.com jecsales@oi.com.br
1. INTRODUÇÃO
Um grande número de problemas de controle de
sistemas pode ser resolvido por otimização convexa,
utilizando desigualdades matriciais lineares, (LMI-linear
( )
matrix inequalities)[1]. O método básico parte da
representação do sistema em espaço de estados, e no [ ]
estabelecimento de restrições convexas, que limitam o
universo de pesquisa do controlador ótimo. Este pode ser
encontrado, então, minimizando-se o critério de restrição
sujeito à desigualdades matriciais lineares. Este método tem- [ ]
se mostrado bastante eficiente e pode ser resolvido
numericamente. Como exemplos de algoritmos para solução ( )
de LMIs, temos o LMIsolver do Robust Control Toolbox do
Matlab (www.mathworks.com), o LMItool do Scilab
(scilabsoft.inria.fr), e o LMIsolver do SeDuMi ( ) ( )
(sedumi.mcmaster.ca).
Então assegura √
2. OBJETIVO E METODOLOGIA
2.2 CONTROLE H∞
Neste trabalho pretendemos fazer a síntese de
A síntese do controlador robusto H∞ por
controladores ótimos robustos restritos às normas H2 e H∞
realimentação de estados com custo garantido, sujeito a
para um motor de corrente contínua no espaço de estados em
incertezas politópicas do sistema contínuo:
tempo contínuo.
̇
2.1 CONTROLE H2
A síntese do controlador robusto H2 por
realimentação de estados com custo garantido, sujeito a
incertezas politópicas do sistema contínuo: consiste na solução do problema de otimização convexa a
seguir:
[ ]
consiste na solução do problema de otimização convexa a
seguir:
( ) ( )
Então, assegura
1
2.3 MOTOR CC Norma Limite Controlador K Overshoot (%) Tempo de acomodação (s)
O modelo de espaço de estados do motor de corrente H2 92,0017 [41,1869 27,1139] 0 3 x 10-4
contínua de ímã permanente para controle de velocidade é
dado a seguir: H∞ 2,7705 [19,8343 419,9776] 48 1 x 10-4
com 6
Velocidade Angular - Malha aberta e Controladores H2 e Hinf
2 2
J = inércia do rotor (kg.m /s )
0
0 1 2 3 4 5 6 7 8 9
-K-
Controlador1
R
4
V Resistência
Soma2 i
d/dt(i)
1
1/L s
Kb
Indutância Integrador1
Soma1
Força contra 3
eletromotriz
d2/dt(w) w
Km 1
1/J s
Torque 2
Inércia Integrador
Soma
Scope
Carga Kf
amortecimento
-K- 1
Controlador2
0
0 1 2 3 4 5 6
2
Velocidade Angular - Controlador H2
4
3.5
3 REFERÊNCIAS
2.5
2
[1] Boyd, S., El Ghaoui, L. et alt. (1994). Linear Matrix
Inequalities in System and Control Theory. SIAM,
1.5
Philadelphia.
1
[2] Gahinet, P., Nemirovski, A. et alt. (1995). LMI Control
Toolbox User’s Guide. The Mathworks Inc., Natick,
0.5 MA.
[3] Kau, S.W., Liu, Y.S, et. alt. (2005). An LMI approach to
0
0
Time offset: 0
1 2 3 4 5
x 10
6
robust H∞ control for uncertain continuous-time systems.
Asian Journal of Control, Vol. 7, No. 2, pp. 182-186.
Figura 3 – Controle H2 [4] Scherer, C., Gahinet, P., Chilali, M. Multiobjective
0.4
Velocidade Angular - Controlador Hinf output-feedback control via LMI optimization (1997)
IEEE Transactions on Automatic Control, Vol.42, pp.
0.35
896-911.
0.3
[5] Zou, K., et. alt. (1995). Robust and Optimal Control.
Prentice Hall, New Jersey.
0.25
0.2
0.15
0.1
0.05
0
0 0.5 1 1.5
Time offset: 0 x 10
Figura 4 – Controle H∞
4. CONCLUSÕES
O método de otimização convexa utilizado na
síntese dos controladores se mostrou bastante prática e eficaz,
simplificando a tarefa do engenheiro na escolha do melhor
controlador para um dado sistema a ser controlado. No caso
do motor de corrente contínua os resultados obtidos nos
permitem construir um sistema com resposta da ordem de
10-4 segundo, que é bastante rápido. Os controladores
também se mostraram eficazes quanto a incertezas
paramétricas, comprovando a robustez do método. Como
trabalho futuro, podemos estudar o comportamento quanto à
realimentação dinâmica de saída.
3
end;
lmiterm([-(i+2) 1 1 gama],1,1);
i=1+3;
j=j+1;
APÊNDICE end;
end;
function [NormH2,K] = RobustH2(A,B1,B2,C,D) end;
% RobustH2(A,B1,B2,C,D) retorna o valor da Norma end;
H2 e do end;
% ganho robusto K do sistema contínuo LMIs=getlmis;
% x'= Ax + B1w + B2u num=decnbr(LMIs);
% z = Cx + Du c=zeros(num,1);
% com for j=1:num,
% ||H||2²= Min gama cj=defcx(LMIs,j,gama);
% Pi>0,G,L c(j)=cj;
% s.a. | -(G+G') * * * | end;
% | AiG+B2iL+Pi -Pi * * | < 0 options=[1e-7,0,0,0,1];
% | CiG+DiL 0 -gamaI 0 | [copt,xopt]=mincx(LMIs,c,options);
% | G 0 0 Pi | NormH2=sqrt(copt);
% Gf=dec2mat(LMIs,xopt,G);
% | Zi B1i' | Lf=dec2mat(LMIs,xopt,L);
% | | > 0 K=Lf*inv(Gf);
% | B1i Pi | end
%
% Traço(Zi) < gama function [NormHinf,K] = RobustHinf(A,B1,B2,C,D1,D2)
% i=1,2,...,N % RobustHinf(A,B1,B2,C,D) retorna o valor da
% P:Rnxn L:Rqxn G:Rnxn Z:Rnxn Norma Hinf e do
n=size(B2,1); % ganho robusto K do sistema contínuo
m=size(B2,2); % x'= Ax + B1w + B2u
q=size(D,1); % z = Cx + D1w + D2u
ia=size(A,3); % com
ib1=size(B1,3); % Min gama
ib2=size(B2,3); % W=W'>0,Z
ic=size(C,3); % s.a. | AiW+WAi'+B2iZ+Z'B2i' * * |
id=size(D,3); % | CiW+D2iZ -I * |
ip=ia*ib1*ib2*ic*id; < 0
e=eye(m); % | B1i' D1i' -gamaI |
for o=1:m %
d(:,:,o)=e(o,:); % i=1,2,...,N
end; % P:Rnxn L:Rqxn G:Rnxn Z:Rnxn
setlmis([]); % K=ZW^-1 => ||H||inf=sqrt(gama)
gama=lmivar(1,[1 1]);
L=lmivar(2,[q n]); n=size(B2,1);
G=lmivar(2,[n n]); m=size(B2,2);
for l=1:ip q=size(D2,1);
P(l)=lmivar(1,[n 1]); ia=size(A,3);
Z(l)=lmivar(1,[m 1]); ib1=size(B1,3);
end; ib2=size(B2,3);
ic=size(C,3);
i=1; id1=size(D1,3);
j=1; id2=size(D2,3);
for ja=1:ia
for jb1=1:ib1 setlmis([]);
for jb2=1:ib2 gama=lmivar(1,[1 1]);
for jc=1:ic Z=lmivar(2,[q n]);
for jd=1:id W=lmivar(1,[n 1]);
lmiterm([i 1 1 G],-1,1,'s'); i=1;
lmiterm([i 2 1 G],A(:,:,ja),1); for ja=1:ia
lmiterm([i 2 1 L],B2(:,:,jb2),1); for jb1=1:ib1
lmiterm([i 2 1 P(j)],1,1); for jb2=1:ib2
lmiterm([i 2 2 P(j)],-1,1); for jc=1:ic
lmiterm([i 3 1 G],C(:,:,jc),1); for jd1=1:id1
lmiterm([i 3 1 L],D(:,:,jd),1); for jd2=1:id2
lmiterm([i 3 2 0],0); lmiterm([i 1 1 W],A(:,:,ja),1,'s');
lmiterm([i 3 3 gama],-eye(m,m),1); lmiterm([i 1 1 Z],B2(:,:,jb2),1,'s');
lmiterm([i 3 4 0],0); lmiterm([i 2 1 W],C(:,:,jc),1);
lmiterm([i 4 1 G],1,1); lmiterm([i 2 1 Z],D2(:,:,jd2),1);
lmiterm([i 4 2 0],0); lmiterm([i 2 2 0],-eye(q));
lmiterm([i 4 3 0],0); lmiterm([i 3 1 0],B1(:,:,jc)');
lmiterm([i 4 4 P(j)],-1,1); lmiterm([i 3 2 0],D1(:,:,jd1)');
lmiterm([-(i+1) 1 1 Z(j)],1,1); lmiterm([i 3 3 gama],-eye(q),1);
lmiterm([-(i+1) 2 1 0],B1(:,:,jb1)); i=1+1;
lmiterm([-(i+1) 2 2 P(j)],1,1); end;
for o=1:m end;
lmiterm([(i+2) 1 1 end;
Z(j)],d(:,:,o),d(:,:,o)'); end;
4
end;
end;
LMIs=getlmis;
num=decnbr(LMIs);
c=zeros(num,1);
for j=1:num,
cj=defcx(LMIs,j,gama);
c(j)=cj;
end;
options=[1e-7,0,0,0,1];
[copt,xopt]=mincx(LMIs,c,options);
NormHinf=sqrt(copt);
Zf=dec2mat(LMIs,xopt,Z);
Wf=dec2mat(LMIs,xopt,W);
K=Zf*inv(Wf);
end
function [NH2,KH2,NHinf,KHinf] =
motor_cc(R,L,Km,Kb,Kf,J)
R1=R-.05*R; R2=R+.05*R;
R=[R1 R2];
L1=L-.05*L; L2=L+.05*L;
L=[L1 L2];
Km1=Km-.1*Km; Km2=Km+.1*Km;
Km=[Km1 Km2];
Kb1=Kb-.05*Kb; Kb2=Kb+.05*Kb;
Kb=[Kb1 Kb2];
Kf1=Kf-.01*Kf; Kf2=Kf+.01*Kf;
Kf=[Kf1 Kf2];
J1=J-.01*J; J2=J+.01*J;
J=[J1 J2];
for i=1:2
A(:,:,i)=[-R(r)/L(l) -Kb(kb)/L(l); Km(km)/J(j)
-Kf(kf)/J(j)];
B1(:,:,i)=[0; -1/J(i)];
B2(:,:,i)=[1/L(i); 0];
end;
C=[0 1];
D1=[0];
D2=[0];
[NH2,KH2]=RobustH2(A,B1,B2,C,D2);
[NHinf,KHinf]=RobustHinf(A,B1,B2,C,D1,D2);
end