análise de sistemas ii - modelamento e identificação de sistemas
TRANSCRIPT
Análise de Sistemas II – Modelamento Trabalho Final
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS
PUC-MG
ENGENHARIA ELETRÔNICA E DE TELECOMUNICAÇÕES
TRABALHO FINALIDENTIFICAÇÃO DE SISTEMAS
Disciplina: Análise de Sistemas II - Modelamento
Professor: Prof. Júlio Queiroz
Alunos: Ciro Campos
Dezembro / 2005
1/12
Análise de Sistemas II – Modelamento Trabalho Final
Índice
Geração da massa de dados.........................................................................................................3Estimação pelo Método Sundaresan Subamortecido..................................................................4Estimação pelo Método Malha Fechada.....................................................................................8Estimação pelo Método dos Mínimos Quadrados....................................................................10Questionário..............................................................................................................................12
2/12
Análise de Sistemas II – Modelamento Trabalho Final
Geração da massa de dados
close all;clear all;clc;
% Programa para gerar a massa de dados
t=0:0.001:0.6; % Tempo.k=100; % Ganho do sistema.g=tf(k*100, [1 50 100]); % Funçao de transferencia escolhida.ft=feedback(g,1); % Funçao de transferencia do sistema.dados=step(ft, t); % Variavel 'dados' ira conter a resposta ao degrau unitario.
figure(1)plot(t, dados) % Plota a massa de dados em funçao do tempo.grid on;
save massa.mat dados t % Salva no arquivo massa.mat a variavel dados em funcao do tempo.
3/12
Análise de Sistemas II – Modelamento Trabalho Final
Estimação pelo Método Sundaresan Subamortecido
close all;clear all;clc;
% Programa para estimaçao pelo Metodo Sundaresan Subamortecido
load massa.mat % Carrega a massa de dados gerada no programa geramassa.m.
k=dados(end); % Calcula o ganho.
% Calculo de m1:m1=0;deltat=0.001;for i=1:length(dados) m1=m1+(deltat*(k-dados(i)));end;
% Calculo de Mi:for i=2:length(dados) if dados(i)>dados(i-1) deltdados(i-1)=dados(i)-dados(i-1); else break; end;end;for i=2:length(deltdados) if deltdados(i)<deltdados(i-1) y0=dados(i-1); y1=dados(i); t0=t(i-1); t1=t(i); mi=(y1-y0)/(t1-t0); break; end;end;
tm=((k-y0)/mi)+t0; % Calcula tm.
lambdacalc=(tm-m1)*mi; % Calcula lambda
% Calculo de zeta.zeta=0:0.0001:1.5;for i=1:length(zeta) if zeta(i)~=1
4/12
Análise de Sistemas II – Modelamento Trabalho Final
lambda(i)=(acos(zeta(i))/sqrt(1-(zeta(i)*zeta(i))))*exp(-zeta(i)*acos(zeta(i))/sqrt(1-(zeta(i)*zeta(i)))); elseif zeta(i)==1 lambda(i)=0; end;end;
figure(1)plot(lambda, zeta) % Plota zeta x lambda.grid on;
% Calculo de zeta estimado:for i=2:length(zeta) if lambda(i)<lambdacalc zetaest=zeta(i-1); break; end;end;
wn=(acos(zetaest))/(sqrt(1-(zetaest*zetaest))*(tm-m1)); % Calcula wn.td=m1-((2*zetaest)/wn); % Calcula td.
% Calculo da resposta ao degrau estimada:prod1=2*zetaest*wn;num=k*exp([-td 0])*wn*wn;
5/12
Análise de Sistemas II – Modelamento Trabalho Final
den=[1 prod1 num];ftest=tf(num, den);
figure(2);plot(t, dados, 'red'); % Plota a funçao real. hold on;step(ftest, t, 'blue') % Plota a funçao estimada. grid on;
% Ajuste dos parametros da resposta estimada:k2=k+0.1*k;zetaest2=zetaest-0.1*zetaest;wn2=wn-0.005*wn;prod2=2*zetaest2*wn2;num2=k2*exp([-td 0])*wn2*wn2;den2=[1 prod2 num2];ftest2=tf(num2,den2);
6/12
Análise de Sistemas II – Modelamento Trabalho Final
figure(3);plot(t, dados, 'red'); % Plota a funçao real. hold on;step(ftest2,t,'blue') % Plota a funçao estimada ajustada. grid on;
7/12
Análise de Sistemas II – Modelamento Trabalho Final
Estimação pelo Método Malha Fechada
%Inicioclose allclcload massa2.mat; %carrega a massa de dados figure(1),plot(t,y) %plota a resposta do sistema a uma entrada em degrau title('Resposta do Sistema a uma Entrada em Degrau - REAL')grid onhold on
%Aplicação dos Métodos Determinísticos para o Sistema Subamortecido %1º Método : IDENTIFICAÇAO EM MALHA FECHADA
%A partir do Gráfico de Resposta ao Degrau do Sistema Real devemos%determinar os parâmetros abaixo:%cálculo do ponto de inflexão da resposta[valormax, pos] = max(y);yp1=1.2602; %Ponto de Maximo 1yn=0.9324; %Ponto de Mínimo Obtido pelo Gráficoyp2=1.0176; %Ponto de Maximo 2deltat=41.5-10; %Variação de Tempo 1 kc=1;A=1;
%Calculo dos parâmetros da F.T.yinf=(yp2*yp1-yn^2)/(yp2+yp1-2*yn);
zeta= -log((yp2-yinf)/(yp1-yinf))/sqrt(4*pi^2+(log((yp2-yinf)/(yp1-yinf)))^2);
k=yinf/(kc*(A-yinf));kf=kc*k;
td=(deltat*sqrt((1-zeta^2)*(kf+1)))/(pi*(zeta*sqrt(kf+1)+sqrt(zeta^2*(kf+1)+kf)));tau=(deltat/pi)*(zeta*sqrt(kf+1)+sqrt(zeta^2*(kf+1)+kf))*sqrt((1-zeta^2)*(kf+1));taubarra=((td*tau)/(2*(kf+1)))^0.5;kbarra=kf/(kf+1);ni=[-0.05*kbarra*td kbarra];di= [taubarra^2 2*zeta*taubarra 1];yi=step(ni,di,t);figure(2), plot(t,yi,'r',t,y,'b'),legend('Modelo','Real',1);title('Resposta do Sistema a uma Entrada em Degrau - MODELO')grid;printsys(ni,di);
8/12
Análise de Sistemas II – Modelamento Trabalho Final
SOLUÇÃO
FUNÇÃO DE TRANSFERENCIA
num/den = -0.31336 s + 0.9999 --------------------------- 42.4349 s^2 + 5.1429 s + 1
9/12
Análise de Sistemas II – Modelamento Trabalho Final
Estimação pelo Método dos Mínimos Quadrados
close all;clear all;clc;
% Programa para estimaçao pelo Metodo dos Minimos Quadrados
load massa.mat % Carrega a massa de dados gerada no programa geramassa.m.
y(1:200)=dados(1:200);y=y';
% QSInumit=100; % Numero de amostras.numl=200; % Numero de linhas da matriz QSI. Termos passados que serao considerados.numc=6; % Numero de colunas da matriz QSI. Numero de parametros que serao considerados.inicio=106; % Inicio da amostragem.
for k=inicio:inicio+numit % Loop para verificar todas as amostras. for j=1:numc % Loop para olhar todas as colunas da QSI. p=-inicio+j+1; % Parametro de controle de inicio. for i=1:numl % Loop para olhar todas as colunas da QSI. qsi(i,j)=dados(k+p); % Formaçao da matriz QSI. p=p+1; % Incremento no parametro de controle de inicio. end; end;
tetaest=(inv((qsi')*qsi))*(qsi')*y; % Calculo de teta. vtetaest(1:length(tetaest), k-inicio+1)=tetaest; % Tetas estimados. yest=qsi*tetaest; % y estimado. vyest(1:length(yest), k-inicio+1)=yest; % y estimados (Vetor). for i=1:length(yest) err(i)=dados(k-inicio+i)-vyest(k-inicio+i); % Erro de estimaçao. end; jmq(k-inicio+1)=0; % Funçao custo. for m=1:length(err) jmq(k-inicio+1)=jmq(k-inicio+1)+(err(m)')*err(m); end;end;
10/12
Análise de Sistemas II – Modelamento Trabalho Final
[lin col]=min((jmq')) % Menor valor da funçao custo.tetadef(1:length(tetaest))=vtetaest(1:length(tetaest), col); % O menor valor da funçao custo e atribuido ao Teta estimado.ydef(1:length(yest))=vyest((1:length(yest)), col); % Saida tera o valor da funçao custo.
figure(2)plot(t, dados, 'blue') % Plota a saida real.hold on;t2=0:0.001:0.199;plot(t2, ydef, 'red') % Plota a saida estimada.grid on;
11/12
Análise de Sistemas II – Modelamento Trabalho Final
Questionário
1) Considerando que nenhum ajuste foi realizado para melhorar o resultado da identificação original, qual dos métodos resultou na melhor identificação? Comente a sua resposta.
Como obsersarvado pelos gráficos obtidos, o método de Sundaresan Subamortecido apresentou melhor identificação, onde os parâmetros utilizados no método se apresentam mais consistentes do que aos parâmetros do método de Mínimos Quadrados.
2) Após os ajustes para melhoria dos resultados, qual dos métodos resultou na melhor identificação? Quais parâmetros foram ajustados em cada um dos métodos? Justifique os ajustes.
Após os ajustes dos parâmetros, o método de Sundaresan Subamortecido que já se apresentava melhor, ficou mais próximo ainda do sistema real, como pode ser observado no gráfico após o ajuste manual. O parâmetro ajustado nesse método foi o Zeta.
No método de Mínimos Quadrados os parâmetros foram ajustados na tentativa e erro, conforme o sistema se aproximava do real.
12/12