Controle de Sistema de Suspensão Magnética Aluno: Giovanni Antonio Gastaldi Profa Vilma A. Oliveira SEL 328 – Controle Robusto O sistema analisado é o sistema abaixo A equações que regem o sistema são: L0 2a f ( z, i) i2 z (1 ) 2 a (1) 2z f ( z, i) g 2 m t v Ri (2) ( L( z )i t EESC - USP (3) 03/12/02 SEL - 328 No equilíbrio mg f ( z e , ie ) fornecendo para L constante e z e 0.0045 ie z mg 2a (1 e ) . L0 a Modelo do sistema não linear Pelas equações acima que regem o sistema, por meio de manipulação algébrica obtemos a representação do sistema de suspensão magnética na forma espaço de estado definindo-se x1 z, x 2 z e x3 i : x F ( x, v) onde x2 L0 x32 . F g 2 2 am x 1 1 a v R . x 3 L O ponto de equilíbrio fica xe [ z e ,0, ie ]T . Esta função não linear no Matlab é implementada da seguinte maneira. xdot=[x(2); g-(L0/(2*a*m))*x(3)^2/(1+x(1)/a)^2; 1/L*(u+ve-R*x(3))]; Utilizar os valores dos parâmetros do sistema dados na tabela abaixo. Tabela 1 – Parâmetros do sistema de suspensão magnética. massa da esfera metálica m [kg] 22,6 x 10-3 resistência da bobina R [Ω] 19,9 indutância da bobina aproximada L [H] 0,520 indutância da bobina no ponto de L0 [mH] 24,9 operação posição da bola no ponto de operação ze [m] 4,5 x 10 -3 constante a a [m] 6,72 x 10 –3 Linearização do sistema em torno de ie e ze F x x x e F ( xe , ve ) ( x xe ) xe , ve F v (v v e ) (4) xe , ve Definindo xl x xe u v ve podemos escrever x Ax Bu onde (5) A : F x xe , ve 0 k 2 m 0 1 0 0 0 k1 F ; B : m x R L xe , ve 0 0 1 L com f i L0 i e z z e , ie [a(1 e ) 2 ] a 2 L0 i e f k2 z z ze ,ie [a 2 (1 e ) 3 ] a z e 0.0045 , ie 0.447 , ve 8.8952 ve RR * ie . k1 Com este sistema linearizado, obter uma forma de controle da forma u=-Kx, escolhendose adequadamente as matrizes Q e R tal que o seguinte índice J de performance seja minimizado: J x * Qx u * Ru t 0 Segue o procedimento de projeto. Seja o sistema linear invariante no tempo (A,B,C) x Ax Bu , x(0) x0 com x R n , u R m e (A,B) estabilizável e a lei de realimentação de estado: u=-Kx onde K R mxn é a chamada matriz de realimentação de estado. Substituindo a lei de realimentação de estado no sistema (A,B,C) tem-se x ( A BK ) x Problema LQR de estado estacionário 0 AT P PA PBR1BT P Q u * Kx com K R 1 B T P A solução do problema LQR de estado estacionário é geralmente dada em duas partes. Primeiro estabelece-se condições de existência de uma solução única positiva definida da equação de Riccati tal que A BR 1 BT seja estável e então o problema LQR é solucionado pela lei de realimentação ótima u R 1 B T Px . Tendo (A,B) estabilizável. Então, existe P única definida positiva satisfazendo AT P PA PBR1BT P Q 0 e a lei de controle dada por u R 1 B T Px é ótima e estabiliza o sistema realimentado com custo para condição inicial x0 dado por J ( x0 , u* ) x0T Px0 Observação: A solução do LQR padrão reduz-se ao problema de obter a solução positiva definida da equação de Riccati. Por meio do comando do Matlab abaixo obtém-se a solução para K e para P: [K, P] lqr( A, B, Q, R) Caso 1 (curva azul) Q1=[1000;0;0];R1=0.0001. Custo final J1= x0’*P1*x0 =4.2616e-004 Caso 2 (curva vermelha) Aumenta-se a Q2=[15000;0;0];R1=0.0001. J2= x0’*P1*x0 =0.0048 primeira componente de Q: Caso 3 (curva lilás) Diminui-se R: Q3=[1000;0;0];R3=0.000001. J3= x0’*P3*x0 = 2.5098e004 Rotina no Matlab %Programa principal %Controle de sistema de suspensão magnética clear all close all clc global A B K % L0=0.0249; a=0.00672; ze=0.0045; m=0.0226; RR=19.9; L=0.52; g=9.81; % pontos de equilibrio i0 e v0 para z0=0.005 %mg=-f(ze,ie) ie=sqrt((m*g*2*a/L0)*(1+ze/a)); %ie=0.447 %k1 e k2 k1=(L0*ie)/(a*(1+(ze/a))^2); k2=(L0*(ie^2))/(a^2*(1+(ze/a))^3); %Matriz de estados A e matriz de controle B A=[0 1 0;k2/m 0 -k1/m;0 0 -RR/L]; B=[0;0;1/L]; % diagonal da matriz Q d1=1000; d2=0; d3=0; %Matrizes Q e R do índice de desempenho quadrático %caso 1 R1=0.0001; Q1=[d1 0 0;0 d2 0;0 0 d3]; %K => Matriz de Ganho de Retroação %P => Solução P da equação de Riccati [K1,P1]=lqr(A,B,Q1,R1); % %Modelo Não - Linear K=K1; Tfinal=0.2 %condicao inicial [0.0042 0 0.55] [t1,z]=ode23('fsuspnao',Tfinal,[0.003 0 0.4]); x11=z(:,1); x21=z(:,2); x31=z(:,3); xe=[0.0045; 0; 0.447]; ve=RR*ie; %estes valores tem que corresponder aos usados % na obtencao de A e B % %Sinal de controle do modelo não-linear caso 1 for i=1:length(t1) u1(i)=-K1*[x11(i)-0.0045 x21(i) x31(i)-0.447]'; v1(i)=u1(i)+ve; end %outros valores de Q caso 2 d1=15000; Q2=[d1 0 0;0 d2 0;0 0 d3]; [K2,P2]=lqr(A,B,Q2,R1); K=K2; [t2,z]=ode23('fsuspnao',Tfinal,[0.003 0 0.4]); x12=z(:,1); x22=z(:,2); x32=z(:,3); %Sinal de controle do modelo não-linear caso 2 for i=1:length(t2) u2(i)=-K2*[x12(i)-0.0045 x22(i) x32(i)-0.447]'; v2(i)=u2(i)+ve; end %caso 3: mesmo Q caso 1 e outro R R2=0.000001; Q3=Q1; %K => Matriz de Ganho de Retroação %P => Solução P da equação de Riccati [K3,P3]=lqr(A,B,Q1,R2); % %Modelo Não - Linear K=K3; %condicao inicial [0.0042 0 0.55] [t3,z]=ode23('fsuspnao',Tfinal,[0.003 0 0.4]); x13=z(:,1); x23=z(:,2); x33=z(:,3); %Sinal de controle do modelo não-linear caso 3 for i=1:length(t3) u3(i)=-K3*[x13(i)-0.0045 x23(i) x33(i)-0.447]'; v3(i)=u3(i)+ve; end % obtencao custo J=x0'*P*x0 x0=[0.0042 0 0.55]'; J1=x0'*P1*x0; J2=x0'*P2*x0; J3=x0'*P3*x0; figure(1); %x1 versus t: Deslocameno(z) x tempo subplot(2,2,1); plot(t1,x11,'b',t2,x12,'r',t3,x13,'m');grid %%%plot(t,x1);grid title('Deslocamento x t'); xlabel('t s'); ylabel('x1 = Deslocamento'); %x2 versus t: Velocidade x tempo subplot(2,2,2); plot(t1,x21,'b',t2,x22,'r',t3,x23,'m');grid title('Velocidade x t'); xlabel('t s'); ylabel('x2 = Velocidade'); %x3 versus t: Corrente x tempo subplot(2,2,3); plot(t1,x31,'b',t2,x32,'r',t3,x33,'m');grid title('Corrente x t'); xlabel('t s'); ylabel('x3 = Corrente'); %u versus t: Sinal de Controle (u) subplot(2,2,4); plot(t1,v1,'b',t2,v2,'r',t3,v3,'m');grid title('u x t'); xlabel('t s'); ylabel('u = Sinal de Controle'); O programa principal chama a subrotina abaixo: Fsuspnao.m function [xdot]=fsuspnao(t1,z) global A B K u=-K*[z(1); z(2); z(3)]; L=0.52; g=9.81; L0=0.0249; a=0.00672; m=0.0226; RR=19.9; L=0.52; ie=0.447;ve=RR*ie; xdot=[z(2); g-(L0/(2*a*m))*z(3)^2/(1+z(1)/a)^2; 1/L*(u+ve-RR*z(3))];