Bài tập lớn môn điều khiển tự động
PHẦN 1/YấU CẦU THIẾT KẾ:
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 :
WPID(s) = KơP*(1+ +TD*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:
WDT(s) =
Với các tham số: L/T = 0.9; T = 95;
Hệ thống có sơ đồ như hình vẽ:
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
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;
13 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3450 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài tập lớn môn điều khiển tự động, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 :
WPID(s) = KP*(1++TD*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:
WDT(s) =
Víi c¸c tham sè: L/T = 0.9; T = 95;
HÖ thèng cã s¬ ®å nh h×nh vÏ:
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
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
§Æ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 = 39%
- Thêi gian t¨ng tèc (Rise time): 54.1s
- 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 = 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
>> 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è
§å 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: = 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: = 1.94%
- Thêi gian qu¸ ®é: 286 (s)
- 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
§Æ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 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: =-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: =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
- 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:
+ 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));
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: =1.65%
- Thêi gian qu¸ ®é: 241(s)
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.
Các file đính kèm theo tài liệu này:
- Bài tập dài môn ĐK tự động.doc