B i t p d i môn đi u khi n t đ ngà ậ à ề ể ự ộ
ph n I/ Yêu c u thi t kầ ầ ế ế
1) Yêu c u thi t k h th ng ®iÒukhiÓn t ng có:ầ ế ế ệ ố ựđộ
- Bé i u khi n PID có h m truy n :đề ể à ề
W
PID
(s) = K
P
*(1+
sT
I
*
1
+T
D
*s)
- i t ng i u khi n l khâu tr v quán tính b c nh t có h m truy n:Đố ượ đề ể à ễ à ậ ấ à ề
W
DT
(s) =
1*
+
−
sT
e
Ls
V i các tham s : L/T = 0.9; T = 95;ớ ố
H th ng có s nhệ ố ơđồ hình v :ẽ
W
pid
(
s
) W
dt
(
s
)
2) Tính toán các tham s Kp, Ti, Td m b o tính n nh v ch t l ng c aố đả ả ổ đị à ấ ượ ủ
h th ng (theo Ziegler – Nichols).ệ ố
3) Xét n nh c a h th ng. Tìm các i m c c v i m không.ổ đị ủ ệ ố để ự àđể
4) Kh o sát ch t l ng, ch n các tham s v i các lu t i u khi n P, PI, PIDả ấ ượ ọ ố ớ ậ đề ể
m b o cho h th ng có ch t l ng t t nh t (ch nh nh b ng tay).đả ả ệ ố ấ ượ ố ấ ỉ đị ằ
5) Tính tham s t i u c a bé i u khi n PID dùng h m least – squares (saiố ố ư ủ đề ể à
s bình ph ng nh nh t) v i các tham s L v T ã cho trên.ố ươ ỏ ấ ớ ố à đ ở
ph n II/ Tính toán v i MatLabầ ớ
I/ Tính toán các tham s Kp, Ti, Td theo tiêu chu n Ziegler Nicholsố ẩ –
áp d ng b ng công th c th c nghi m c a Ziegler – Nichols:ụ ả ứ ự ệ ủ
Lu t i u khi nậ đề ể Kp Ti Td
P T/L
∞
0
PI 0.9T/L 10L/3 0
PID 1.2T/L 2L 0.5L
V i các tham s ã cho: L/T = 0.9; T = 95 ớ ốđ
⇒
L=85.5
Thay v o b ng trên ta có:à ả
Lu t i u khi nậ đề ể Kp Ti Td
P 1.111
∞
0
PI 1 285 0
PID 1.333 171 42.75
II/ Phân tích h th ng v i các tham s ch n theo ph ng pháp Ziegler ệ ố ớ ố ọ ươ –
Nichols v hi u ch nh b ng tayà ệ ỉ ằ
có th phân tích h th ng, ta c n khai tri n Taylor khâu tr eĐể ể ệ ố ầ ể ễ
-Ls
, l y 3 sấ ố
h ng u l chính xác. Vi c khai tri n n y ®ù¬c th c hi n nh MatLab quaạ đầ à đủ ệ ể à ự ệ ờ
h m x p x Pade:à ấ ỉ
Ch ng trình MatLab nh sau:ươ ư
>> [ts,ms]=pade(85.5,3)
ts =
-1.0000 0.1404 -0.0082 0.0002
1
ms =
1.0000 0.1404 0.0082 0.0002
>> wtre=tf(ts,ms)
Transfer function:
-s^3 + 0.1404 s^2 - 0.008208 s + 0.000192
s^3 + 0.1404 s^2 + 0.008208 s + 0.000192
1/ Kh o sát h th ng v i lu t i u khi n t l P:ả ệ ố ớ ậ đề ể ỉ ệ
>> T=95;L=85.5;
>> [ts,ms]=pade(L,3)
ts =
-1.0000 0.1404 -0.0082 0.0002
ms =
1.0000 0.1404 0.0082 0.0002
>> wdt=tf(ts,ms)*tf(1,[T 1])
Transfer function:
-s^3 + 0.1404 s^2 - 0.008208 s + 0.000192
95 s^4 + 14.33 s^3 + 0.9201 s^2 + 0.02645 s + 0.000192
>> Kp=T/L
Kp =
1.1111
>> wkinp=feedback(Kp*wdt,1)
Transfer function:
-1.111 s^3 + 0.1559 s^2 - 0.00912 s + 0.0002133
95 s^4 + 13.22 s^3 + 1.076 s^2 + 0.01733 s + 0.0004053
>> step(wkinp)
>> nyquist(wkinp)
>> pzmap(wkinp)
>> [p,z]=pzmap(wkinp)
p =
-0.0628 + 0.0722i
-0.0628 - 0.0722i
-0.0068 + 0.0205i
-0.0068 - 0.0205i
z =
0.0430 + 0.0410i
0.0430 - 0.0410i
0.0543
2
c tính quá Đặ độ
c tính t n sĐặ ầ ố
th i m không, i m c cĐồ ị để để ự
*Nh n xét: ậ
- Các i m c c u n m bên trái tr c o nên h th ng n nh.để ự đề ằ ụ ả ệ ố ổ đị
- quá i n khi n Độ để ể
max
δ
= 39%
- Th i gian t ng t c (Rise time): 54.1sờ ă ố
3
- Th i gian quá (Settling time): 573s.ờ độ
*Hi u ch nh có c tính quá t t h n: cho Kp = 0.3ệ ỉ để đặ độ ố ơ
>> Kp = 0.3;
>> wkinp = feedback(Kp*wdt,1)
Transfer function:
-0.3 s^3 + 0.04211 s^2 - 0.002462 s + 5.76e-005
95 s^4 + 14.03 s^3 + 0.9622 s^2 + 0.02398 s + 0.0002496
>> step(wkinp)
- Sau khi hi u ch nh có: ệ ỉ
+ quá i u ch nh Độ đề ỉ
max
δ
= 1.24%
+ Th i gian quá : 239 (s)ờ độ
+ Th i gian t ng t c: 112 (s)ờ ă ố
2/ Kh o sát h th ng v i lu t i u ch nh t l – tích phân PIả ệ ố ớ ậ đề ỉ ỉ ệ
Ch ng trình Matlab:ươ
>> T=95; L=85.5
>> Kp=0.9*T/L;Ti=10*L/3;
>> [ts,ms]=pade(L,3)
ts =
-1.0000 0.1404 -0.0082 0.0002
ms =
1.0000 0.1404 0.0082 0.0002
>> wdt=tf(ts,ms)*tf(1,[T 1])
Transfer function:
-s^3 + 0.1404 s^2 - 0.008208 s + 0.000192
95 s^4 + 14.33 s^3 + 0.9201 s^2 + 0.02645 s + 0.000192
>> wpi=tf([Kp*Ti Kp],[Ti 0])
Transfer function:
285 s + 1
285 s
>> wkinpi=feedback(wdt*wpi,1)
Transfer function:
-285 s^4 + 39 s^3 - 2.199 s^2 + 0.04651 s + 0.000192
27075 s^5 + 3800 s^4 + 301.2 s^3 + 5.339 s^2 + 0.1012 s + 0.000192
4
>> step(wkinpi)
>> nyquist(wdt*wpi)
>> pzmap(wkinpi)
>> [p,z]=pzmap(wkinpi)
p =
-0.0618 + 0.0694i
-0.0618 - 0.0694i
-0.0073 + 0.0184i
-0.0073 - 0.0184i
-0.0021
z =
0.0430 + 0.0410i
0.0430 - 0.0410i
0.0543
-0.0035
c tính quá Đặ độ
c tính t n sĐặ ầ ố
5
th i m không - i m c cĐồ ị để để ự
* Nh n xét: ậ
- Các i m c c n m bên trái tr c o nên h th ng n nh.để ự ằ ụ ả ệ ố ổ đị
- quá i u ch nh: Độ đ ề ỉ
max
δ
= 0%
- Th i gian t ng t c (Rise time): 675sờ ă ố
- Th i gian quá (Settling time): 1500sờ độ
* Hi u ch nh t ch t l ng t t h n: cho Kp = 0.65; Ti = 110;ệ ỉ đểđạ ấ ượ ố ơ
>> Kp=0.65; Ti=110;
>> wpi=tf([Kp*Ti Kp],[Ti 0])
Transfer function:
71.5 s + 0.65
110 s
>> wkinpi=feedback(wdt*wpi,1)
Transfer function:
-71.5 s^4 + 9.385 s^3 - 0.4956 s^2 + 0.008392 s + 0.0001248
10450 s^5 + 1505 s^4 + 110.6 s^3 + 2.414 s^2 + 0.02951 s + 0.0001248
>> step(wkinpi)
Sau khi hi u ch nh ta có:ệ ỉ
- quá i u ch nh: Độ đ ề ỉ
max
δ
= 1.94%
- Th i gian quá : 286 (s)ờ độ
6
- Th i gian t ng t c: 148 (s)ờ ă ố
3/ Kh o sát h th ng v i lu t i u ch nh PID:ả ệ ố ớ ậ đề ỉ
Ch ng trình Matlab nh sau:ươ ư
>> L=85.5;T=95;Kp=1.2*T/L;Ti=2*L;Td=0.5*L;
>> [ts,ms]=pade(85.5,3)
ts =
-1.0000 0.1404 -0.0082 0.0002
ms =
1.0000 0.1404 0.0082 0.0002
>> wdt=tf(ts,ms)*tf(1,[T 1])
Transfer function:
-s^3 + 0.1404 s^2 - 0.008208 s + 0.000192
95 s^4 + 14.33 s^3 + 0.9201 s^2 + 0.02645 s + 0.000192
>> wpid=tf([Kp*Ti*Td Kp*Ti Kp],[Ti 0])
Transfer function:
9747 s^2 + 228 s + 1.333
171 s
>> wkin=feedback(wpid*wdt,1)
Transfer function:
-9747 s^5 + 1140 s^4 - 49.33 s^3 + 0.1871 s^2 + 0.03283 s + 0.000256
6498 s^5 + 3591 s^4 + 108 s^3 + 4.71 s^2 + 0.06566 s + 0.000256
>> step(wkin)
>> nyquist(wkin)
>> pzmap(wkin)
>> [p,z]=pzmap(wkin)
p =
-0.5235
-0.0060 + 0.0322i
-0.0060 - 0.0322i
-0.0102
-0.0069
z =
0.0430 + 0.0410i
0.0430 - 0.0410i
0.0543
-0.0117
-0.0117
7
c tính quá Đặ độ
c tính t n sĐặ ầ ố
th i m không - i m c cĐồ ị để để ự
* Nh n xét: ậ
8
- Các i m c c n m bên trái tr c o nên h th ng n nh, tuy nhiên do có 2 để ự ằ ụ ả ệ ố ổ đị
i m c c ph c liên h p n m sát tr c o nên d tr n nh nh .để ự ứ ợ ằ ụ ả độ ự ữổ đị ỏ
- quá i u ch nh: Độ đ ề ỉ
max
δ
=-250%
- Th i gian t ng t c: 108 (s)ờ ă ố
- Th i gian quá : 477 (s)ờ độ
*Hi u ch nh có c tính t t h n: Kp=0.7; Ti=110; Td=10ệ ỉ để đặ ố ơ
Ch ng trình MatLab:ươ
>> Kp=0.7; Ti=110;Td=10;
>> wpid=tf([Kp*Ti*Td Kp*Ti Kp],[Ti 0])
Transfer function:
770 s^2 + 77 s + 0.7
110 s
>> wkin=feedback(wpid*wdt,1)
Transfer function:
-770 s^5 + 31.07 s^4 + 3.787 s^3 - 0.3859 s^2 + 0.009038 s + 0.0001344
9680 s^5 + 1608 s^4 + 105 s^3 + 2.523 s^2 + 0.03016 s + 0.0001344
>> step(wkin)
c tính quá sau khi hi u ch nhĐặ độ ệ ỉ
- quá i u ch nh: Độ đ ề ỉ
max
δ
=1.57%
- Th i gian t ng t c: 224 (s)ờ ă ố
- Th i gian quá : 284 (s)ờ độ
III/ Mô hình hoá h th ng b ng Simulink:ệ ố ằ
B c 1/ V o Simulink mô hình hoá h th ng d i d ng s kh i nh sau:ướ à ệ ố ướ ạ ơđồ ố ư
B c 2/ N p tham s cho các khâu:ướ ạ ố
- Bé i u khi n PID: Các tham s Kp, Ki, Kdđề ể ố
9
- Khâu bão ho Saturation:à
+ Upper limit: 1.5
+ Lower limit: -1.5
- Khâu h n ch gia t c Rate Limiter:ạ ế ố
+ Rising slew rate: 1
+ Faling slew rate: -1
- Khâu tr Transport Delay:ễ
10
+ Time Delay: 85.5 ( ng v i L=85.5).ứ ớ
- Khâu h m truy n Transfer Fcn:à ề
+ Numerator: [1]
+ Denominator: [95 1]
- Ghi ch ng trình mô ph ng l i th nh file “BaiTapDai” trong th m c work ươ ỏ ạ à ư ụ
c a MatLab.ủ
B c 2/ Trong c a s Command Windows c a MatLab v o File ướ ử ổ ủ à
→
New
→
M-file
→
s hi n ra c a s so n th o. Trong c a s n y ta vi t các h m tính toán ẽ ệ ử ổ ạ ả ử ổ à ế à
tham s t i u cho bé i u khi n:ố ố ư đề ể
* H m th nh t:à ứ ấ
function e=yout_1(pid,model,tspan)
opt=simset('solver','ode5');
assignpid(pid);
[t,x,y]=sim(model,tspan,opt);
e=y-1;
Ghi l i h m n y th nh file: yout_1.mạ à à à
* H m th hai:à ứ
function assignpid(pid)
assignin('base','Kp',pid(1));
assignin('base','Ki',pid(2));
assignin('base','Kd',pid(3));
11
Ghi l i h m n y th nh file: assignpid.mạ à à à
* H m th ba:à ứ
function pid = lsqpid(pid0,model,tspan)
options=foptions;
options=[1 0.01 0.01];
pid=leastsq('yout_1',pid0,options,[],model,tspan);
Ghi l i h m n y th nh file: lsqpid.mạ à à à
B c 3/ Tr v c a s Command Windows vi t ch ng trình:ướ ở ề ử ổ ế ươ
>> Kp=0.7; Ti=110;Td=10;Ki=Kp/Ti;Kd=Kp*Td;
>> pid0=[Kp Ki Kd];
>> pid=lsqpid(pid0,'BaiTapDai',[0 5000])
Warning: The function LEASTSQ is obsolete and has been replaced by
LSQNONLIN. LEASTSQ will be removed in a future release of the
Optimization Toolbox. Update your code to call LSQNONLIN to
suppress this warning message. See "Converting your code to
Version 2 Syntax" in the Optimization Toolbox User's Guide
for more information.
> In C:\ChuongTrinhUngDung\Matlab\toolbox\optim\leastsq.m at line 53
In C:\ChuongTrinhUngDung\Matlab\work\lsqpid.m at line 4
f-COUNT RESID STEP-SIZE GRAD/SD LAMBDA
4 2.02681 1 -0.0534
10 2.00227 1 0.00408 1.03732
17 2.00085 1.32 2.44e-007 0.518662
24 2.0005 1.37 -9.51e-009 0.219114
30 2.00048 1.12 -1.22e-010 0.103279
Optimization Terminated Successfully
pid =
0.7757 0.0071 12.8041
* K t qu ch ng trình cho ta tham s tính toán t i u thu c:ế ả ươ ố ố ư đượ
Kp = 0.7757; Ki = 0.0071; Kd = 12.8041
B c 4/ Quay l i Simulink nháy v o Scope ta thu c c tính quá c a ướ ạ à đượ đặ độ ủ
h th ng v i tham s tính toán t i u tìm c:ệ ố ớ ố ố ư đượ
- quá i u khi n: Độ đề ể
max
δ
=1.65%
- Th i gian quá : 241(s)ờ độ
12
K t Lu nế ậ
Các tham s t i u c a bé i u khi n PID ng v i i t ng ã cho l :ố ố ư ủ đề ể ứ ớ đố ượ đ à
Kp = 0.7757
Ki = 0.0071
Kd = 12.8041
ứng v i các tham s n y, c tính quá thu c c a h th ng l t t nh t.ớ ố à đặ độ đượ ủ ệ ố à ố ấ
13