You are on page 1of 8

Thiết kế bộ điều khiển PID

Thiết Kế Bộ Điều Khiển PID

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.

1. Phương pháp Zieger-Nichols thứ nhất:

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%

Đặc tính động học:

Ở đây ta đã mô phỏng với giả thiết xấp xỉ hàm truyền của hệ thống là:

Lưu Như Hòa – ĐKTĐ – KSTN – K50 1
Thiết kế bộ điều khiển PID

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

2. Phương pháp Zieger-Nichols thứ hai:

Phương pháp Zieger-Nichols thứ hai
1( t ) y( t )
_ k G  s

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:

Lưu Như Hòa – ĐKTĐ – KSTN – K50 2
Thiết kế bộ điều khiển PID

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

Lưu Như Hòa – ĐKTĐ – KSTN – K50 3
Thiết kế bộ điều khiển PID

Root Locus
1.5

1

0.5
Imaginary Axis

0

­0.5

­1

­1.5
­0.5 0 0.5 1 1.5 2
Real Axis

1.6

1.4

1.2

1

0.8

0.6

0.4

0.2

0

­0.2
0 50 100 150

Lưu Như Hòa – ĐKTĐ – KSTN – K50 4
Thiết kế bộ điều khiển PID

>>[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

Chọn tham số cho bộ điều khiển PID ta có:
K
K p  0.6* Kgh  0.2063 , K I  P  0.01 , K D  K pTD  1.0640
TI

Lưu Như Hòa – ĐKTĐ – KSTN – K50 5
Thiết kế bộ điều khiển PID

1.4

1.2

1

0.8

0.6

0.4

0.2

0
0 20 40 60 80 100 120 140 160 180 200

3. Phương pháp dựa vào điều kiện tối ưu chuẩn H 2 :


2
Chỉ tiêu tối ưu là  e (t )  min
0

Lưu Như Hòa – ĐKTĐ – KSTN – K50 6
Thiết kế bộ điều khiển PID

function [Kp,Ki,Kd] = run_pid() >>
pid_model;
pid0 = [0.2063 0.01 1.0640];
options = optimset('LargeScale','off','Display','iter',...
'TolX',0.0001,'TolFun',0.0001);
pid = lsqnonlin(@pid_lsq, pid0, [], [], options);
[Kp Ki Kd] = pid;

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

Lưu Như Hòa – ĐKTĐ – KSTN – K50 7
Thiết kế bộ điều khiển PID

1.4

1.2

1

0.8

0.6

0.4

0.2

0
0 20 40 60 80 100 120 140 160 180 200

Lưu Như Hòa – ĐKTĐ – KSTN – K50 8