You are on page 1of 2

Regulation automatique par la methode de ziegler nichols

% pid sys manuel -------------------

s = tf('s');
x = [0:0.01:1000];
G = 1 / ((s^3)+(4*(s^2))+(3*s));
Kp = 7.2;
Ki = 8.314;
Kd = 1.5589;
PID = Kp + (Kd * s) + (Ki / s);
sys = PID*G;
system = sys / (1 + sys);
step(x,system);

% reglage pid methode de ziegler nichols 2eme order -------------------

clear
clc
close all
num =[2 5];
den =[2 1 2];
h=tf(num,den)
ku = 3; % kcr gain critique
tu = 4; % period
kp = 0.6*ku
ti = tu/2;
td = tu/8;
ki = kp/ti
kd = td*kp
[kp,ki,kd] = ZieglerNichols(ku, tu, 'classic pid')

% reglage pid par methode de ziegler nichols 1er order---------------------

clear
clc
close all
num =[2];
den =[2 1];
z=tf(num,den)
t = 3; % tangant
l = 4; % retard
kp = 1.2*(t/l)
ki = 2*l
kd = 0.5*l
[kp,ki,kd] = ZieglerNichols(ku, tu, 'classic pid')
step(h)

PROGRAME FOR TANGANT CURVE STEP ----------------------------------------------

Gs1 = tf([1],[1 5 10 10 5 1],'InputDelay',3);


[y,t] = step(Gs1);
h = mean(diff(t));
dy = gradient(y, h); % Numerical
Derivative
[~,idx] = max(dy); % Index Of Maximum
b = [t([idx-1,idx+1]) ones(2,1)] \ y([idx-1,idx+1]); % Regression Line
Around Maximum Derivative
tv = [-b(2)/b(1); (1-b(2))/b(1)]; % Independent
Variable Range For Tangent Line Plot
f = [tv ones(2,1)] * b; % Calculate Tangent
Line
figure
plot(t, y)
hold on
plot(tv, f, '-r') % Tangent Line
plot(t(idx), y(idx), '.r') % Maximum Vertical
hold off
grid

You might also like