Professional Documents
Culture Documents
Ziegler và Nichols đưa ra hai phương pháp thực nghiệm để xác định tham số bộ điều
khiển PID.Phương pháp thứ nhất dùng mô hình xấp xỉ quán tính bậc nhất có trễ của đối
tượng điều khiển:
T s
G(s) ke
delay
(1)
1 Ts
Phương pháp thứ hai không cần đến mô hình toán học của đối tượng nhưng chỉ áp dụng
cho một số lớp đối tượng nhất định.
Phương pháp này nhằm xác định các tham số K P , K I , K D cho bộ điều khiển PID trên cơ
sở xấp xỉ hàm truyền đạt thành khâu quán tính bậc nhất (1) để hệ kín nhanh chóng về chế
độ xác lập và độ quá điều chỉnh không quá 40%
Ở đây ta đã mô phỏng với giả thiết xấp xỉ hàm truyền của hệ thống là:
6.25 13.5s
G (s) e
12.5s 1
(Trên thực tế các thông số Tdelay , T , k được xác định từ đặc tính động học của hệ hở)
Nếu chọn các tham số cho bộ điều khiển PID theo phương pháp Z-N -1 thì ta có:
T Kp T .K
KP 0.1481 , K I 0.0055 , K D delay p 1
kTdelay 2Tdelay 2
Phương pháp này thay bộ điều khiển PID trong hệ kín bằng bộ khuyếch đại,sau đó tăng k
cho đến khi hệ nằm ở biên giới ổn định tức là hệ kín trở thành khâu dao động điều
hòa.Lúc đó ta có Kgh và chu kỳ của dao động đó là Tgh.Tham số cho bộ điều khiển PID
chọn theo bảng sau:
Bộ điều Kp Ti Td
khiển
P 0,5*Kgh ∞ 0
PI 0,45* Kgh 1 0
* Tgh
1.2
PID 0,6*Kgh 0,5*Tgh 0,125*Tgh
>> [num_delay,den_delay]=pade(13.5,3);
>> sys=tf(6.25,[12.5 1])*tf(num_delay,den_delay)
Transfer function:
-6.25 s^3 + 5.556 s^2 - 2.058 s + 0.3048
-----------------------------------------------------
12.5 s^4 + 12.11 s^3 + 5.004 s^2 + 0.9389 s + 0.04877
>> rlocus(sys);
>> [k,p]=rlocfind(sys)
Select a point in the graphics window
selected_point =
0.0000 + 0.1521i
k =
0.3438
p =
-0.3985 + 0.6092i
-0.3985 - 0.6092i
-0.0000 + 0.1523i
-0.0000 - 0.1523i
Root Locus
1.5
0.5
Imaginary Axis
0.5
1
1.5
0.5 0 0.5 1 1.5 2
Real Axis
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0.2
0 50 100 150
>>[Gm,Pm,Wg,Wp] = margin(k*sys)
Gm =
1.0006
Pm =
0.1256
Wg =
0.1523
Wp =
0.1521
>> Tgh=2*pi/Wg
Tgh =
41.2662
1.4
1.2
0.8
0.6
0.4
0.2
0
0 20 40 60 80 100 120 140 160 180 200
2
Chỉ tiêu tối ưu là e (t ) min
0
function F = pid_lsq(pid)
[Kp Ki Kd] = pid;
simopt = simset('solver','ode45','SrcWorkspace','Current');
[tout,xout,yout] = sim('pid_model',[0 200],simopt);
F = yout-1;
end
end
[kp,ki,kd]=run_pid
Directional
Iteration Func-count Residual Step-size derivative Lambda
0 4 5.81452
1 12 4.30085 1.25 -0.284 4.44604
2 19 4.25474 0.948 -0.000296 1.79785
3 27 4.24586 1.75 -1.05e-005 1.806
4 34 4.24396 1.01 -7.01e-008 0.65562
5 42 4.24378 1.26 2.98e-009 0.655853
6 49 4.24376 0.977 4.91e-010 0.327926
7 56 4.24376 1.13 2.33e-010 0.327929
8 63 4.24376 0.95 3.22e-011 0.163964
Optimization terminated: directional derivative along
search direction less than TolFun and infinity-norm of
gradient less than 10*(TolFun+TolX).
kp =
0.1132
ki =
0.0118
kd =
0.8467
1.4
1.2
0.8
0.6
0.4
0.2
0
0 20 40 60 80 100 120 140 160 180 200