Clique em Copiar tudo para copiar o script completo e colar no Editor do MATLAB.
Circuito com AmpOps – modelo de referência
Ver código
%% Encontrando Função Transferência
R1 = 25e3;
R2 = 50e3;
R3 = 25e3;
R4 = 25e3;
R5 = 50e3;
C1 = 3.3e-7;
C2 = 3.3e-7;
C3 = 3.3e-7;
s = tf("s");
H1 = zpk((1)/(s^2*(R1*R2*C1*C2)+s*C1*(R1+R2)+1));
H2 = zpk((s*C3*R4*R5)/(s*C3*R4*(R3+R5)+(R3+R4)));
Htot = H1*H2
%Note que o sistema possui 3 polos e 1 zero
%portanto possui grau relativo 2, o modelo de referência deve possuir grau
%relativo >=2, um modelo de 2ªa ordem já é suficiente
%% Modelo de Referência 2ªordem
zeta = 1; %Sem sobressinal
wn = 15; %quanto maior mais rápido
k = 2; %Ganho = 2
Gmr = (k*wn^2)/(s^2+2*zeta*wn*s+wn^2)
step(Gmr)
%%
Gc = Gmr/(Htot*(1-Gmr));
Gc = minreal(Gc)
% O controlador não é um PID
Trocador de calor – identificação e controle
Ver código
load("Ensaio_2.mat")
plot(Tempo,XV02);
figure
plot(Tempo,TT03);
%% Tratamento dos dados para ToolBox
EntradaTratada = XV02 - 0.5;
SaidaTratada = TT03 - 40.75;
TempoTratado = Tempo - 260;
Amostragem = Tempo(2) - Tempo(1)
%% Função Obtida no ToolBox
s = tf("s");
Gp = 9.375 / (s^2 + 5.05*s+0.25);
%% Comparação
step(0.2*Gp)
hold on
plot(TempoTratado,SaidaTratada,"--r")
hold off
%% Metodo Ziegler Nichols
Kcr = 1645;
Pcr = 0.78;
Kp = 0.6*Kcr;
Ti = Pcr/2;
Td = Pcr/8;
Ki = Kp/Ti;
Kd = Kp*Td;
%Utilizei PID porém para satisfazer os requisitos foi necessário bastante
%refinamento
%% Metodo de Alocação de Polos e Zeros
%Elementos do Processo
Gt = 10/175;
Ga = 0.1/(0.08*s+1);
Gtotal = zpk(Gt*Ga*Gp)
%%
% Note que o sistema possui apenas 1 polo dominante em -0.05
% Portanto o sistema pode ser aproximado a um sistema de 1ªordem
Gk = 0.66964/(12.5*5*0.05);
Gtau = 1/0.05;
Gtotal = Gk/(Gtau*s+1)
%% Modelo de Referência 1ªordem
tau = 80/3;
k = 1;
Gmr = k/(tau*s+1)
%% Controlador Encontrado
Gc = Gmr/(Gtotal*(1-Gmr));
Gc = minreal(Gc)
%%
step(Gmr)