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)
