Você está na página 1de 5

Síntese de Controladores Robustos H2 e H∞ baseados em LMIs para motor de

corrente contínua
Daniel Souza Ribeiro José Eduardo da Cruz Sales
daniel.danielribeiro@gmail.com jecsales@oi.com.br

RESUMO: A utilização de desigualdades matriciais lineares para resolver problemas de controle de


sistemas tem-se revelado um método prático e eficaz. Neste trabalho utilizamos as LMIs para encontrar um
controlador ótimo robusto por espaço de estados para um motor de corrente contínua utilizando as normas
H2 e H∞ como restrição. Os resultados obtidos confirmam a efetividade e robustez do método.

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

[ ] [ ][ ] [ ] [ ] As figuras 1 e 2 mostram a resposta ao degrau do


sistema em malha aberta e com os dois controladores no
ponto central dos parâmetros, com a carga em vazio.
[ ][ ]

com 6
Velocidade Angular - Malha aberta e Controladores H2 e Hinf

i = corrente de armadura (A)


5

ω = velocidade angular do rotor (rad/s)


R = resistência de armadura (Ω) 4

L = indutância de armadura (H) 3

Kb = constante da força contra-eletromotriz (N.m/A)


2

Km = constante de torque mecânico (N.m.s)


Kf = coeficiente de atrito (N.m/A) 1

2 2
J = inércia do rotor (kg.m /s )
0
0 1 2 3 4 5 6 7 8 9

w = distúrbio (torque de carga) (N.m.s) Time offset: 0 x 10

u = tensão aplicada (V) Figura 1 – Resposta ao degrau

O diagrama de blocos a seguir simula o


comportamento do motor, e pode ser usado para verificar a 6
Velocidade Angular - Controladores H2 e Hinf

efetividade dos controladores.


5

-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

Os valores dos parâmetros que utilizaremos, com Time offset: 0 x 10

suas incertezas, são os seguintes: R= 2,06±5%, L=


Figura 2 – Controle H2 e H∞
0,000238±5%, Kb= 0,0235±5%, Km= 0,0235±10%, Kf=
1,2x10-6±1%, J=1,07x10-6±1%, que formam os vértices do
politopo convexo.
Podemos notar que ambos controladores são rápidos
em relação ao comportamento de malha aberta. O controlador
H∞ é mais rápido, mas provoca uma sobrecarga que pode
3. PROJETO DE CONTROLADORES
comprometer a vida útil do motor no longo prazo, enquanto o
O apêndice mostra os algoritmos para solução das LMIs controlador H2 tem um comportamento mais amortecido,
implementados no Matlab. Os resultados obtidos dos valores com uma resposta três vezes mais lenta. Caso o tempo de
limites das normas e dos ganhos dos controladores, assim resposta não seja um fator crítico, o controlador H 2 se
como os dados da resposta ao degrau do sistema controlado apresenta como a melhor escolha.
são dados a seguir:
As figuras 3 e 4 mostram a resposta ao degrau para 3
vértices do politopo que representa as incertezas, nos dois
casos, indicando a robustez dos controladores.

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

Você também pode gostar