Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CENTRO DE TECNOLOGIA
ENGENHARIA DE CONTROLE E AUTOMAO
1. PLANTA 1
No trabalho anterior, a planta era dada por
( )
Adicionando-se dinmica no modelada
( )
Supondo que
)(
( )
) encontramos
(
(
)
)
)(
[ ]
[
[
][ ]
[ ]
][ ]
2. SIMULAO MATLAB
A seguir segue o cdigo para implementao do MRAC no Matlab.
. Este
%Incializaes
Yp_old = [0; 0];
Yp = [0; 0];
Ym_old = [0; 0];
Ym = [0; 0];
omega = [1; -1; 0; 0];
u = 0;
r = 0;
%teta = [-0.4; -0.8; -0.3; -0.5];
%teta = [-2; -1; -3; -4];
%teta = [9; 0.5; 8; -0.5];
teta = [0; -3; -0.5; -0.0007];
teta_old = teta;
zeta = [0.8; -0.4; 1; 0];
Ym_old1 = [0; 0];
Ym_old2 = [0; 0];
Ym_old3 = [0; 0];
Ym_old4 = [0; 0];
Ym_old5 = [0; 0];
P = 500*eye(4);
P_old = P;
for k = 1:100000
tk(k) = k*Ts;
r = 2+sin(2*pi*0.1*tk(k)); % Sinal de referencia pra
teste
%r=heaviside(k); %entrada degrau unitario
%Control Law
u = (-teta(1)*omega(1) - teta(2)*omega(2) teta(3)*omega(3) -r) ./teta(4);
% Modelo de referencia
Ym = (eye(2) + Am*Ts)*Ym_old + Bm*Ts*r;
Ym_old = Ym;
% Vetor de
omega(1) =
omega(2) =
omega(3) =
omega(4) =
estados.
Yp(1);
Yp(2);
r;
u;
% Calculo de Zeta
zt = (eye(2) + Am*Ts)*Ym_old1 + Bm*Ts*omega(1);
zeta(1) = zt(1);
Ym_old1 = zt;
zt = (eye(2) + Am*Ts)*Ym_old2 + Bm*Ts*omega(2);
zeta(2) = zt(1);
Ym_old2 = zt;
zt = (eye(2) + Am*Ts)*Ym_old3 + Bm*Ts*omega(3);
zeta(3) = zt(1);
Ym_old3 = zt;
zt = (eye(2) + Am*Ts)*Ym_old4 + Bm*Ts*omega(4);
zeta(4) = zt(1);
Ym_old4 = zt;
zt = (eye(2) + Am*Ts)*Ym_old5 + Bm*Ts*(teta'*omega);
Ym_old5 = zt;
% teta'*omega filtrado pelo modelo de
Referncia.
% Erro de rastreamento:
e1 = Yp(1) - Ym(1);
% Erro aumentado:
E = e1 + teta'*zeta - Ym_old5(1);
% Normalizador
m = 1 + zeta'*P*zeta;
% Matriz de covariancia
P_old = P;
P = P_old - P_old*zeta*zeta'*P_old ./m;
teta = teta_old - P_old*zeta*E ./m;
teta_old = teta;
% Planta
Yp = Cp*((eye(2) + Ap*Ts)*Yp_old + Bp*Ts*u);
Yp_old = Yp;
PlantOut(k) = Yp([1]); % Salvo para depois plotar, Y =
Cx, C=1.
ModelOut(k) = Ym([1]);
RefOut(k) = r;
theta1(k)=teta(1);
theta2(k)=teta(2);
theta3(k)=teta(3);
theta4(k)=teta(4);
end
plot(tk, PlantOut, ':', tk, ModelOut, tk, RefOut, '-');
legend('Yp', 'Ym', 'ref(degrau)');
title('Exercicio MRAC');
xlabel('Tempo - seg.');
ylabel('Output');
figure;
plot(tk,theta1,tk,theta2,tk,theta3,tk,theta4, '-');
legend('theta1', 'theta2', 'theta3','theta4');
title('Thetas');
xlabel('Tempo - seg.');
ylabel('Output');
3. PLANTA 2
( )
)(
( )
Escrevendo no espao de estados temos que a planta
[ ]
][ ]
[
[ ]
][ ]
e tempo de amostragem
inicializado como
[ ]
][ ]
Enfim, podemos concluir que a planta com dinmica no modelada converge para a referncia
mais lentamente que o modelo de referncia. Na figura abaixo podemos ver as respostas de
cada com o tempo e para qual valor eles convergem.