Você está na página 1de 12

Universidade Federal de Campina Grande

Centro de Engenharia Elétrica e Informática


Departamento de Engenharia Elétrica
Laboratório de Controle Digital

Experimento 4 – Identificação de sistemas

Nome:Lucas Carmo Paschoal


Matrícula:121111310
Turma:05

• Identifique os modelos do sistema e preencha a tabela com os parâmetros obtidos Lembre-


se que cada modelo é representado por uma função de transferência com a seguinte
estrutura:

G0 T1 L
G11 3.153 2.186 0.106
G12 5.038 1.893 0.015
G13 -0188 3.230 0.618
G14 -0.025 3.145 1.270

• Insira os gráficos da saída real e simulada dos experimentos para cada combinação de
entradas e saídas.

Entrada 1 - Saída 1 Entrada 2 - Saída 1


Entrada 3 - Saída 1 Entrada 4 - Saída 1

Graficos abaixo no publish

• Calcule o erro médio ao quadrado (EMQ) para cada caso.

G11 G12 G13 G14


EMQ 39.5n 1.67n 10.46µ 0.87µ

µ=micro ,n=nano

Utilize os vetores de dados de saída do experimento e os obtidos ao simular o sistema


no item 2, e calcule a EMQ utilizando a expressão:

onde y são as saídas reais e y* as saídas simuladas.

Insira abaixo todo o código utilizado no algoritmo de identificação e na solução das


questões. Utilize a ferramente de Publish do MATLAB.
Table of Contents
Preparaçao ......................................................................................................................... 1
Dados do lab 2 ................................................................................................................... 2
Simulaçao para obtençao De L G T para G11 .......................................................................... 2
Simulaçao para obtençao De L G T para G12 .......................................................................... 4
Simulaçao para obtençao De L G T para G13 .......................................................................... 6
Simulaçao para obtençao De L G T para G14 .......................................................................... 8

Preparaçao
Greal = tf(2, [1 2 1], 'iodelay', 1);

h = 5;
DeltaT = 0.2;
t = 0:DeltaT:10;
u = h * ones(size(t));
randn('seed', 314);
y = lsim(Greal, u, t) + 0.2 * randn(length(t), 1);
[G0, T1, L] = parametrosFOPTD(y, h, DeltaT);
Gid = tf(G0, [T1, 1], 'iodelay', L);
yy = lsim(Gid, u, t);
plot(t, y, t, yy);

1
Dados do lab 2
V= 1;
deltaE= 11843;
pcp= 500;
R= 1.987;
UA= 150;
k0= 9703*3600;
deltaH=-5960;
F= 1;
CAf= 10;
Tf= 298;
Tj= 298;
T= 311.2;
CA= 8.564;
dF1 = 0.01;
dCaf1 = 0;
dTf1 = 0;
dTj1 = 0;
D=(F*(CAf-CA)/V)-k0*CA*exp(deltaE/(R*T))
E=(F*(Tf-T)/V) +(-deltaH/pcp)*k0*CA*exp(-deltaE/(R*T))-UA*(T-Tj)/
(V*pcp);

D =

-6.2185e+16

Simulaçao para obtençao De L G T para G11


%parametros da simulaçao
DF1=0.01;
dCaf1=0;
dTf1=0;
dTj1=0;

%parametros da simulaçao
%chamada da simulaçao, deltaT,h( com valores novos na simulaçao)
sim('modelsimulink1.slx')
DeltaT = 0.01;
h=0.01;
%colhendo dados da simulaçao
y = ans.dadosSimulink.signals.values;
t = ans.dadosSimulink.time;

%retirado do valores iniciais de Y pois o modelo começa em 0


J = ans.dadosSimulink.signals.values-
ans.dadosSimulink.signals.values(1);
%gerando degrau de tempo
u = h*ones(size(t));
%chamada da funçao da preparaçao que modela uma funçao tranferencia

2
[G11, T11, L11] = parametrosFOPTD(J,h, DeltaT);
%gerando funçao transferencia Com os valores De G T L
Gid = tf(G11, [T11 1], 'iodelay', L11);
%simulando com entrada ao degrau
yy = lsim(Gid, u, t);
%adicionando o degrau inicial que foi retirado devido ao modelo
começar em0
yy=yy+ans.dadosSimulink.signals.values(1);
plot(t,y,t,yy);
%for do erro
EMQ11=0;
for variavel =1:1:1501
% Código a ser executado em cada iteração
EMQ11=EMQ11+((y(variavel)-yy(variavel))^2);
end
EMQ11=EMQ11/1501

ans =

Simulink.SimulationOutput:
dadosSimulink: [1x1 struct]
tout: [1501x1 double]

SimulationMetadata: [1x1 Simulink.SimulationMetadata]


ErrorMessage: [0x0 char]

EMQ11 =

3.9586e-08

3
Simulaçao para obtençao De L G T para G12
DF1=0;
dCaf1=0.007;
dTf1=0;
dTj1=0;
%parametros da simulaçao

%chamada da simulaçao, deltaT,h( com valores novos na simulaçao)


sim('modelsimulink1.slx')
DeltaT = 0.01;
h=0.007;
%colhendo dados da simulaçao
y = ans.dadosSimulink.signals.values;
t = ans.dadosSimulink.time;

%retirado do valores iniciais de Y pois o modelo começa em 0


J = ans.dadosSimulink.signals.values-
ans.dadosSimulink.signals.values(1);
%gerando degrau de tempo
u = h*ones(size(t));
%chamada da funçao da preparaçao que modela uma funçao tranferencia
[G12, T12, L12] = parametrosFOPTD(J,h, DeltaT);
%gerando funçao transferencia Com os valores De G T L
Gid = tf(G12, [T12 1], 'iodelay', L12);

4
%simulando com entrada ao degrau
yy = lsim(Gid, u, t);
%adicionando o degrau inicial que foi retirado devido ao modelo
começar em0
yy=yy+ans.dadosSimulink.signals.values(1);
plot(t,y,t,yy);
EMQ12=0;
for variavel =1:1:1501;
% Código a ser executado em cada iteração
EMQ12=EMQ12+((y(variavel)-yy(variavel))^2);
end
EMQ12=EMQ12/1501

ans =

Simulink.SimulationOutput:
dadosSimulink: [1x1 struct]
tout: [1501x1 double]

SimulationMetadata: [1x1 Simulink.SimulationMetadata]


ErrorMessage: [0x0 char]

EMQ12 =

1.6701e-09

5
Simulaçao para obtençao De L G T para G13
%parametros da simulaçao
DF1=0;
dCaf1=0;
dTf1=1;
dTj1=0;

%parametros da simulaçao

%parametros da simulaçao
%chamada da simulaçao, deltaT,h( com valores novos na simulaçao)
sim('modelsimulink1.slx')
DeltaT = 0.01;
h=1;
%colhendo dados da simulaçao
y = ans.dadosSimulink.signals.values;
t = ans.dadosSimulink.time;

%retirado do valores iniciais de Y pois o modelo começa em 0


J = ans.dadosSimulink.signals.values-
ans.dadosSimulink.signals.values(1);
%gerando degrau de tempo
u = h*ones(size(t));
%chamada da funçao da preparaçao que modela uma funçao tranferencia

6
[G13, T13, L13] = parametrosFOPTD(J,h, DeltaT);
%gerando funçao transferencia Com os valores De G T L
Gid = tf(G13, [T13 1], 'iodelay', L13);
%simulando com entrada ao degrau
yy = lsim(Gid, u, t);
%adicionando o degrau inicial que foi retirado devido ao modelo
começar em0
yy=yy+ans.dadosSimulink.signals.values(1);
plot(t,y,t,yy);
EMQ13=0;
for variavel =1:1:1501
% Código a ser executado em cada iteração
EMQ13=EMQ13+((y(variavel)-yy(variavel))^2);
end
EMQ13=EMQ13/1501

ans =

Simulink.SimulationOutput:
dadosSimulink: [1x1 struct]
tout: [1501x1 double]

SimulationMetadata: [1x1 Simulink.SimulationMetadata]


ErrorMessage: [0x0 char]

EMQ13 =

1.0461e-05

7
Simulaçao para obtençao De L G T para G14
DF1=0;
dCaf1=0;
dTf1=0;
dTj1=1;
%parametros da simulaçao
%chamada da simulaçao, deltaT,h( com valores novos na simulaçao)
sim('modelsimulink1.slx')
DeltaT = 0.01;
h=1;
%colhendo dados da simulaçao
y = ans.dadosSimulink.signals.values;
t = ans.dadosSimulink.time;

%retirado do valores iniciais de Y pois o modelo começa em 0


J = ans.dadosSimulink.signals.values-
ans.dadosSimulink.signals.values(1);
%gerando degrau de tempo
u = h*ones(size(t));
%chamada da funçao da preparaçao que modela uma funçao tranferencia
[G14, T14, L14] = parametrosFOPTD(J,h, DeltaT);
%gerando funçao transferencia Com os valores De G T L
Gid = tf(G14, [T14 1], 'iodelay', L14);
%simulando com entrada ao degrau

8
yy = lsim(Gid, u, t);
%adicionando o degrau inicial que foi retirado devido ao modelo
começar em0
yy=yy+ans.dadosSimulink.signals.values(1);
plot(t,y,t,yy);
EMQ14=0;
for variavel =1:1:1501
% Código a ser executado em cada iteração
EMQ14=EMQ14+((y(variavel)-yy(variavel))^2);
end
EMQ14=EMQ14/1501

ans =

Simulink.SimulationOutput:
dadosSimulink: [1x1 struct]
tout: [1501x1 double]

SimulationMetadata: [1x1 Simulink.SimulationMetadata]


ErrorMessage: [0x0 char]

EMQ14 =

8.7002e-07

9
Published with MATLAB® R2020a

10

Você também pode gostar