% Practica 3. Diseño de un controlador discreto.

%Planta continua.
[num,den]=zp2tf([],[0 -1  -0.5],0.5);
% Es conveniente que el tiempo de muestreo este bastante por debajo de la frequencia
% maxima del sitema.
% la respuesta en frecuencia la podemos obtener con freqs.
w=0:0.01:1;
h=freqs(num,den,w);
Ts=0.15;
%Obtenemos la función de transferencia discreta
[numd,dend]=c2dm(num,den,Ts,'zoh');
K=input('K?');
while(K~=0)
   numcl=[K*numd];
   dencl=[dend+K*numd];
   [z,p]=tf2zp(numcl,dencl);
   format long;
   abs(p)
   format short;
   Ku=K;
   K=input('K?');
end
[m,ind]=max(abs(p));
w=angle(p(ind));
Pu=2*pi/w;
K=0.6*Ku;
Ti=0.5*Pu;
Td=0.125*Pu;

%K=4.2;
%Ti=59.5;
%Td=14.875;
%PID discreto.
numcon=K*[ 1+Ts/Ti+Td/Ts -1-2*Td/Ts Td/Ts];
dencon=[1 -1 0];
%Nueva planta 
numdc=conv(numcon,numd);
dendc=conv(dencon,dend);
% En lazo cerrado
numcl=numdc;
dencl=dendc+numdc;
% Simulación
tiempo=input('Tiempo de simulación?');
t=0:Ts:tiempo;
r=ones(length(t),1);
y=dlsim(numcl,dencl,r);
plot(t,y);


