You are on page 1of 7

LABORATRIO DE CONTROLE DIGITAL:

Prtica 03: Mtodo de identificao dos Mnimos Quadrados


Componentes: Juremir da Silva Ramos, Raniere Lira de Sousa Martins, Robson Moreira de
Freitas, Allan Silva, Lucas Sousa.
Resumo.
.

Palavras-chave:
1.

INTRODUO

Os algoritmos recursivos (MQR)


utilizam pouca memria e pequeno esforo
computacional.
A cada
perodo
de
amostragem, novas medidas dos sinais de
entrada e sada tornam-se disponveis e so
processadas de forma on-line, em tempo real,
fornecendo-se
assim
estimativas
dos
parmetros de cada perodo de amostragem.
Isso til quando os parmetros do processo
variam lentamente em funo de no
linearidades, desgastes, aquecimentos, falhas,
dentre outros. Tais algoritmos so tambm
teis na resoluo de problemas numricos
cujo processamento de todos os dados de uma
s vez seria difcil.
A denominao on-line refere-se ao fato
de o processamento ocorrer suficientemente
rpido de maneira que o resultado esteja
disponvel para influenciar o processo sendo
monitorado ou controlado.
Em cada perodo de amostragem novas
medidas tornam-se disponveis e so utilizadas
com o modelo atual para gerar um novo erro de
modelagem (new fitting error), ( t) (mede a
qualidade do modelo estimado). Por exemplo, no
instante de tempo (t + 1), novas medidas u(t+1),
y(t+1) ocorrem. Em vez de recalcular o estimador

dos mnimos quadrados interessante atualizar as


estimativas anteriormente calculadas no instante t,
(t) , para obter as novas estimativas
est( t+1) .
Para o desenvolvimento das equaes do
estimador dos MQR deve-se comparar a
estimativa baseada nas medidas em instantes que
variam de 1 (um)at t com a estimativa baseada
nas medidas nos instantes de 1 (um)at (t+1).
Conforme mostrado na seo anterior, o
estimador dos mnimos quadrados calculado por
(16)
onde

(17)
Supor que no instante (t+1) obtm-se nova medida
do sistema, ento os vetores de medida e sada so
reescritos como

(15)

(18)

(16)

(19)
As estimativas no instante de tempo t so
(20)

(17)

enquanto que no instante (t+1) so dadas por


(21)
onde

(22)
Uma vez conhecido (t+1) pode-se atualizar
a matriz anterior das correlaes T (t)(t) para
obter as matriz atual T(t+1)(t+1). Entretanto,
necessrio encontrar uma maneira de atualizar a
inversa de T(t)(t) sem calcular a matriz inversa
em cada instante de tempo.

Quadro : programao em MATLAB para os


mnimos quadrados recursivo
clear all; clc;

1.1 METODOLOGIA
Nesta seo sero apresentados sistemas
simulados que foram programados com as tcnicas
de controle vistas neste relatrio, seguida de uma
discusso sobre a resposta desses sistemas para
cada tipo de controle.
1.2 INSTRUES PARA A SIMULAO
O trabalho foi escrito no editor de
programas do software MATLAB e simulado os
sistemas no Simulink com auxlio da placa de
desenvolvimento MCLAB2.
2.

EXEMPLO DE SIMULAO
sysd =
0.335 z + 0.2531
-------------------------z^3 - 1.314 z^2 + 0.4317 z
1

G ( z )=

armazenamento de um grande numero de


amostras, e a estimao feita recursivamente. O (18)
quadro 4 apresenta o programa que estima a FT
recursivamente de acordo com o exposto na seo
2.
Aqui colocou-se um rudo e(k) na sada y(k)
do processo para tornar a simulao mais prxima
de um sistema real.
Se estima o sistema usando um modelo
discreto de segunda ordem. A ordem do modelo
deve ser definido primeiramente para os mtodos
dos mnimos quadrados recursivo e no recursivo.
Se a ordem do sistema no for adequada para o
modelo aproximado, deve-se tentar utilizar um
modelo de maior ordem.

nit=80;
% NUMERO DE INTERAES
% GERA SINAIS DE ENTRADA E RUIDO
for k=1:nit
u(k) = 10*rand(); %entrada randomica
e(k) = u(k)*0.01;
end
% -- Condies iniciais: matriz de
covarincia
p = 1000*eye(4,4);
% -- Condies iniciais: parmetros e
sada
teta = [0;0;0;0];
for k = 1:4
y(k) = 0; erro(k) = 0;
a1(k) = teta(1); a2(k) = teta(2);
b0(k) = teta(3); b1(k) = teta(4);
end
% INTERAES DA ESTIMAO
for k = 4:nit
% ----- Calcular a sada atual
y(k)= 1.314*y(k-1) - 0.4317*y(k-2) +
0.335*u(k-1) + 0.2531*u(k-2) + e(k);
% Atualizar Fi(t) com novas medidas no
tempo 't'
fi = [-y(k-1);-y(k-2);u(k-1);u(k-2)];

0.335 z + 0.2531 z
(49)
11.3 14 z 1 +0.4 317 z2

Nesta seo foi feita a estimao dos


parmetros da - funo de transferncia discreta
(FT), para a entrada degrau e para uma entrada
aleatria, usando o estimador dos mnimos
quadrados recursivo (MQR). Este mtodo
semelhante ao anterior, a diferena que no h

% Calcular o erro de estimao


erro(k) = y(k)-teta'*fi;
% Calcular o vetor de ganho
K = p*fi/(1+fi'*p*fi);
% Calcular o novo vetor de estimao de
parmetros

teta = teta+K*erro(k);
% Atualizar a matriz de covarincia
p = (p-K*fi'*p);
% Armazenar parmetros
a1(k)
a2(k)
b0(k)
b1(k)

=
=
=
=

teta(1);
teta(2);
teta(3);
teta(4);

end
%RESULTADOS
parametros = teta'
t = 1:nit;
subplot(221),plot(t,a1(t)),title('a1'),xla
bel('amostragem');
subplot(222),plot(t,a2(t)),title('a2'),xla
bel('amostragem');
subplot(223),plot(t,b0(t)),title('b0'),xla
bel('amostragem');
subplot(224),plot(t,b1(t)),title('b1'),xla
bel('amostragem');
figure(2)
plot(t,u(t)),title('u'),xlabel('entrada');

Figura 5: Estimao do modelo recursivamente.


Como pode ser observado na figura acima,
os parmetros estimados variam com o tempo.
Inicialmente eles foram configurados nulos e
mudam bastante no inicio da estimao. Nese
caso, em que o rudo de apenas 1% da entrada,
os parmetros estabilizaram em menos de 10
segundos, no entanto pode ser verificado que para
um rudo maior a estimao ser mais lenta e o
valor
dos
parmetros
ficar
mudando
continuamente com maior intensidade. Em um
sistema real no h apenas rudos, mas tambm
pode haver mudanas na dinmica do processo
com o tempo, e a estimao recursiva pode
acompanhar essas mudanas. A figura abaixo
mostra a estimao dos parmetros para um rudo
de 10% da entrada.

Figura 4: Entrada u sinal aleatrio

Figura 6: Estimao do modelo recursivamente.

2.2

IMPLEMENTAO PRTICA
PROCESSO DE VELOCIDADE DO
MOTOR CC

Nesta seo foi implementado o cdigo para


o processo de velocidade do ventilador da placa
Mclab2 disponvel em laboratrio.
Depois de se implementar o estimador dos
mnimos quadrados no recursivo para o
ventilador ser verificado a validade do modelo
estimado comparando a resposta real do sistema
com a resposta do modelo aproximado na forma
grfica.
Deve-se primeiro escolher um perodo de
amostragem adequado para o sistema. Ser
escolhido um tempo de amostragem 4 vezes
inferior ao tempo de subida da resposta do sistema
ao degrau. A figura abaixo mostra a resposta do
sistema em malha aberta do sistema para a entrada
degrau unitrio. Observe que o tempo de subida
est em torno de 2 segundos e, portanto, ser
escolhido um tempo de amostragem de

2
T = =0.5 s . Esse o maior tempo de
4

amostragem recomendado (COELHO, 2004), que


de 4 vezes menor que o tempo de subida.
Quadro 7: Resposta ao degrau em
malha aberta em MATLAB
clc; clear all
npts = 15;%numer de interaes
for k=1:npts
y(k)= velocidade_ventilador();
%obtem velocidade do ventilador
set_pwm_duty(1,1);%aplica
degrau unitrio
pause(1)%espera 1 segundo
end
%==================PLOTA
SAIDA=============================
======
plot(y)

Figura 7: Resposta ao degrau em malha aberta


Escolhido o tempo de amostragem do sistema ser
rodado os mnimos quadrados para se obter o
modelo desejado. O quadro 8 apresenta o
programa para que realiza esta funo. A sada do
programa mostrada logo em seguida ao cdigo.
Quadro 8:
Estimador dos Mnimos
Quadrados no Recursivo aplicado no
Ventilador
%Sequncia Binria Psuedo-Aleatria
clear
close all
tf=49;
delta=1;
nit=100;
t=[0:delta:nit];
npts=length(t);
u=rand(size(t));
%entrada aleatria
alfa=0.5;
for i=1:length(t),
if u(i)<=alfa
sbpa(i)=-1;
else sbpa(i)=1;
end
end
for kx=1:npts,
set_pwm_duty(1,u(kx));
outrand(kx) =
velocidade_ventilador;
%saida real
pause(0.5) %perodo de amostragem
end
set_pwm_duty(1,0)
% % Estimador dos Mnimos Quadrado
Y=[];
fi=[];
for j=1:npts
if j<=2
y1=0; y2=0; u1=0; u2=0;
else y1=outrand(j-1);
y2=outrand(j-2); u1=u(j-1);
2);
end;
Y=[Y; outrand(j)];
fi=[fi; -y1 -y2 u1 u2];
end;
teta=inv(fi'*fi)*fi'*Y
for k=1:2,
yest(k)=0;

u2=u(j-

end;
a1=teta(1) ; a2=teta(2) ;
b1=teta(3) ; b2=teta(4);
for k=3:npts,
yest(k)=-a1*yest(k-1)-a2*yest(k2)+b1*u(k-1)+b2*u(k-2);
end;
figure
plot(outrand, 'g');
hold on
%figure
plot(yest,'r');
hold off

Pois como mostra a sada do programa do quadro


8, tem-se que

a 1=0.4178, a 2=0.0031, b 0=72.0714,b 1=16.146 5


Em seguida, logo aps estimado o
processo pelo mtodo dos mnimos quadrados
no-recursivo, que utiliza a identificao offline, foi implementado no .m do Matlab, o
estimador Recursivo, que um processo de
identificao on-line, e bem mais preciso que
o estimador no-recursivo. O cdigo
implementado pode ser visto abaixo.
Quadro 9:
Estimador dos Mnimos
Quadrados Recursivo aplicado no Ventilador
clear;
close all;
td=2;
covar = 100;
nit = 100;
%
p(1,1)
0.0 ;
p(2,1)
0.0 ;
p(3,1)
covar;
p(4,1)
0.0 ;

= covar ; p(1,2)
p(1,4) = 0.0 ;
= 0.0
; p(2,2)
p(2,4) = 0.0 ;
= 0.0
; p(3,2)
p(3,4) = 0.0 ;
= 0.0
; p(4,2)
p(4,4) = covar;

= 0.0

; p(1,3) =

= covar ; p(2,3) =
= 0.0

; p(3,3) =

= 0.0

; p(4,3) =

teta(1,1)=-0.3893; teta(2,1)=0.473;
teta(3,1)=0.020; teta(4,1)=0.064;
for i=1:nit,
for i=1:nit,

Figura 8: Estimao dos mnimos quadrados no

recursivo no ventilador
Como pode ser observado na figura acima, o
modelo obtido com 100 amostras aproxima
razoavelmente bem o processo. A curva verde
corresponde a sada do sistema real e a curva
vermelha a sada do modelo obtido. De posse dos
parmetros da funo de transferncia discreta
obtida, agora podemos calcular um controlador
PID pelo posicionamento dos polos como feito em
sees anteriores. A funo de transferncia
estimada do processo dado por:

72.0714 z1 +16.1465 z2
(
)
G z=
(52)
10.4178 z 1 +0.0031 z 2

erro(i)=0; end;
er(i)=0; end;

for i=1:nit, u(i)=1; end;


for kx=1:10,
u(kx)=0;du(kx)=0;duf(kx)=0.0;y(kx)=0;dy(kx)=
0;ypv(kx)=0;
end;
y(1)=0; v(1)=0;
% \\\\\\\\\\\\\\
simulacao
\\\\\\\\\\\\\\\\

for kx=4:nit
delta=1
t=[0:delta:nit];
u=rand(size(t));
aleatria
alfa=0.5;
for i=1:length(t),

%entrada

if u(i)<=alfa,sbpa(i)=-1;
else sbpa(i)=1;
end

p(1,3) = p(1,3) ganho(1,1)*ganho(3,1)*den;


p(1,4) = p(1,4) ganho(1,1)*ganho(4,1)*den;

end
set_pwm_duty(1,u(kx));
y(kx) = velocidade_ventilador;

real

%saida

pause(0.5) %perodo de amostragem

%\\\\\\\\\\\\\\\\\\\\\
estimador
\\\\\\\\\\\\\\\\
fi(1,1)= -y(kx-1);
fi(2,1)= -y(kx-2);
fi(3,1)= u(kx-1);
fi(4,1)= u(kx-2);

chamar

ye(kx)=fi(1,1)*teta(1,1)+fi(2,1)*teta(2,1)+f
i(3,1)*teta(3,1)...
+fi(4,1)*teta(4,1);

erro(kx) = y(kx) - ye(kx);

Ganho do estimador }

pf(1,1)=p(1,1)*fi(1,1)+p(1,2)*fi(2,1)+p(1,3)
*fi(3,1)+p(1,4)*fi(4,1);
pf(2,1)=p(2,1)*fi(1,1)+p(2,2)*fi(2,1)+p(2,3)
*fi(3,1)+p(2,4)*fi(4,1);
pf(3,1)=p(3,1)*fi(1,1)+p(3,2)*fi(2,1)+p(3,3)
*fi(3,1)+p(3,4)*fi(4,1);
pf(4,1)=p(4,1)*fi(1,1)+p(4,2)*fi(2,1)+p(4,3)
*fi(3,1)+p(4,4)*fi(4,1);

den=1+fi(1,1)*pf(1,1)+fi(2,1)*pf(2,1)+fi(3,1
)*pf(3,1)+fi(4,1)*pf(4,1);
ganho(1,1) = pf(1,1)/den;
ganho(2,1) = pf(2,1)/den;
ganho(3,1) = pf(3,1)/den;
ganho(4,1) = pf(4,1)/den;

%
Vetor de parametros estimados }
for i = 1 : 4 ,
teta(i,1) = teta(i,1) +
ganho(i,1)*erro(kx);
end;
%
Matriz de covariancia do estimador }
p(1,1) = p(1,1) ganho(1,1)*ganho(1,1)*den;
p(1,2) = p(1,2) ganho(1,1)*ganho(2,1)*den;

p(2,1) = p(2,1) ganho(2,1)*ganho(1,1)*den;


p(2,2) = p(2,2) ganho(2,1)*ganho(2,1)*den;
p(2,3) = p(2,3) ganho(2,1)*ganho(3,1)*den;
p(2,4) = p(2,4) ganho(2,1)*ganho(4,1)*den;
p(3,1) = p(3,1) ganho(3,1)*ganho(1,1)*den;
p(3,2) = p(3,2) ganho(3,1)*ganho(2,1)*den;
p(3,3) = p(3,3) ganho(3,1)*ganho(3,1)*den;
p(3,4) = p(3,4) ganho(3,1)*ganho(4,1)*den;
p(4,1) = p(4,1) ganho(4,1)*ganho(1,1)*den;
p(4,2) = p(4,2) ganho(4,1)*ganho(2,1)*den;
p(4,3) = p(4,3) ganho(4,1)*ganho(3,1)*den;
p(4,4) = p(4,4) ganho(4,1)*ganho(4,1)*den;
trp(kx) = p(1,1) + p(2,2) + p(3,3) +
p(4,4);

ae(1)=teta(1,1);ae(2)=teta(2,1);be(1)=teta(3
,1);be(2)=teta(4,1);
ae1(kx)=teta(1,1);ae2(kx)=teta(2,1);
be1(kx)=teta(3,1);be2(kx)=teta(4,1);
%\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\

traco de P

trp(kx) = p(1,1) + p(2,2) + p(3,3) +


p(4,4);
if (trp(kx) < 0.01)
p(1,1) = 0.01;
p(2,2) = 0.01;
p(3,3) = 0.01;
p(4,4) = 0.01;
end;
%figure(1)
end;
set_pwm_duty(1,0);
plot(ye,'b-');
hold on;
plot(y,'r-');
%

%
figure(2)
plot(ae1,'m-');
hold on;
plot(ae2,'r-');
plot(be1,'g-');
plot(be2,'b-');

Figura 9: Estimao dos mnimos quadrados


recursivo no ventilador para entrada aleatria

RESULTADOS E DISCUSSES
Analisou-se as respostas de cada um dos mtodos
mostrados nas figuras acima (8 e 9) e inferiu-se
que os dois mtodos aplicados no ventilador foram
capazes de estimar com uma boa preciso at certo
ponto, porm no podemos deixar de citar que o
mtodo dos mnimos quadrados recursivo um
mtodo on-line, portanto seu processo de
identificao e estimao dos parmetros
atualizado a cada perodo de amostragem, assim
para uma melhor eficcia, quando se for projetar
um controlador para uma planta o mais

recomendado o Mtodo dos Minimos Quadrados


Recursivo.
4. CONCLUSES
Neste trabalho foi apresentado um processo
de identificao de sistemas: Mnimos Quadrados
Recursivo e No-Recursivo, que estima os
parmetros de um determinado processo de forma
off-line(MQNR) e de forma on-line(MQR).
Pode-se observar durante as praticas que os
mtodos adotados nas simulaes e experimentos
prticos realizados demonstraram que o emprego
de uma tcnica de identificao adequada, ou seja
o melhor mtodo de identificao influenciar no
projeto de um bom controlador.
Ento pode-se dizer que o melhor mtodo de
identificao de sistemas aquele que satisfaz o
processo em que se quer controlar, com
informaes e dados necessrios para o
controlador.
5.REFERNCIAS
[1] HEY, Hlio Lees, Projeto Reenge -Eng.
Eltrica Apostila de Sistemas de Controle I,
USP, 1997, cap. 6, pag 1-15.
[2] K. Ogata, Engenharia de Controle
Moderno;trad Helosa Coimbra de Sousa;revisor
Eduardo Aoun Tannuri So Paulo: Pearson
Prentice Hall, 2010.
[3] Dorf, Richard C., Sistemas de Controle
Modernos;traduo e reviso Jackson Paul
Matsuura. 12 ed. Rio de Janeiro: LTC, 2013.
[4] ASTROM, Karl J., WITTENMARK, Bjorn;
Computer-Controled Systems: Theory and Design,
3 ed., Prentice Hall, 1997.