Está en la página 1de 2

PID NICHOLS

clear all; close all; clc


% FUNCION DE TRANSFERENCIA IDENTIFICADA
% 8.5
% -------------------------
% s^2+3.5s+8.5
% numerador y denominador para la F.T.
n = 8.5;
d = [1 3.5 8.5];
% grafica de la respuesta del sistema
% para una entrada escaln unitario
sys = tf(n,d);
Gp = tf(n,d);
t = 0:0.001:10;
y = step(sys,t);
plot(t,y,'b','linewidth',2)
% axis([0 8 0 1.4])
e = title('\bf respuesta de la planta subamortiguada');
set(e,'fontname','courier','fontsize',14);
xlabel('\bf t(seg)');
ylabel('\bf amplitud');
grid
% OBTENCION DE LA PENDIENTE MAXIMA
% grficamente podemos ver que el
% tiempo de establecimiento es:
t1 = 0:0.001:10;
y = step(sys,t1);
% calculo de una pendiente
t = t1 - t1(1);
y = y - y(1);
% BUSQUEDA DE LA MAXIMA PENDIENTE
% hallamos la pendiente desde un t = 0 hasta
% un t = 0.12 pero escogemos la de mayor pendiente,
% realizando una comparacin entre estas.
N = length(t1);
Pmax = 0; %pendiente (max) = 0
imax = 0; %posicin(max) = 0
% comparacin de pendientes
for i = 1:N-1
P = (y(i+1)-y(i))/(t1(i+1)-t1(i));
if P>Pmax;
Pmax = P;
imax = i;
end
end
% ubicacin de dos puntos para hallar la recta
% tangente con pendiente mxima
ymax = [y(imax) y(imax+1)];
tmax = [t1(imax) t1(imax+1)];
% OBTENCION DE LOS PARAMETROS K, L y T
% obtencin de la respuesta
K = median (y(N-3:N));
% trazando recta de mayor pendiente
P = polyfit(tmax,ymax,1);
R = polyval(P,t1);
%calculo del parmetro L
L = roots(P);
%calculo del parmetro T
Tx = roots(P - [0 K]);
T = Tx - L;
figure
plot (t1,y,'b','linewidth',2);
hold
plot (t1,R,'r--','linewidth',2);
% axis([0 10 -0.3 1.4]);
h=title('\bf curva teora de reaccion');
set(h,'fontname','courier','fontsize',14)
xlabel('\bf t(seg)');
ylabel('\bf amplitud');
grid
% CONTROLADOR Ziegler-Nichols
Tc = 4*L;
m = K*L/T;
a = K*L/T;
Kc = 2/(m*L);
Kp = 0.6/a
Ti = T;
Td = 0.5*L;
Ki = Kp/Ti
Kd = Kp*Td

También podría gustarte