Engenharia de Controle

Códigos MATLAB

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)