CHƯƠNG6:MATLABVÀĐIỀUKHIỂNTỰĐỘNG §1.CÁCVẤNĐỀCHUNG 1.Cácdạngmôhìnhhệthống:Đểxâydựngmôhìnhcủahệthống,MATLAB cung cấp một số lệnh.Môhìnhhệthốngmô tảbằnghàmtruyềnđượcxây dựngnhờ lệnhtf(ts,ms)vớitslàđathứctửsốvàmslàđathứcmẫusố.Hàm zpk(z, p, k) với zlà vec tơ điểm không, p là vec tơ điểm cực và k là hệsố khuyếchđại tạonênmôhìnhđiểmkhông‐điểmcực.Hàmss(a,b,cʹ,d)vớia,b, c,dlàcácmatrậntạonênmôhìnhkhônggian‐trạngthái. Ví dụ: Ta tạo ra một số mô hình nhờ các lệnh MATLAB sau(lưu trong ct6_1.m): clc ts=[12]; ms=[154]; sys1=tf(ts,ms) sys2=zpk([‐611],[‐51],3) sys3=ss([12;34],[11;01],[01;12;31],0) Kếtquảlà: Transfer function: s+2 ‐‐‐‐‐‐‐‐‐‐‐‐‐ s^2+5s+4 Zero/pole/gain: 3(s+6)(s‐1)^2 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ (s+5)(s‐1) a= x1x2 x112 x234 b= u1u2 x111 x201 122 c= x1x2 y101 y212 y331 d= u1u2 y100 y200 y300 Continuous‐timemodel. 2.Điểmcựcvàđiểmzerocủahàmtruyền:Đểbiến đổihệthốngchobởihàm truyềnthànhhệchobởiđiểmcực,điểmzerovàhệsốkhuếchđạidùnghàm tf2zp.Tacũngcóthểdùnghàmpole(sys)đểtìmđiểmcựccủahệthốngsys và dunghàmzero(sys)đểtìmđiểmkhôngcủahệthốngsys Vídụ:Chohàmtruyền: 50s87s45s9s s30s11s )s(H 234 23 + +++ ++ = Tacầntìmcácđiểmcựcp,điểmzerozvàhệsốkhuếchđạikcủanó.Ta dùng cáclệnhMATLABsau(lưutrong ct6_2.m): ts=[111300]; ms=[19458750]; [z,p,k]=tf2zp(ts,ms) z= 0 ‐6 ‐5 p= ‐3.0+4.0i ‐3.0‐4.0i ‐2.0 ‐1.0 k= 1 Nhưvậy: 123 )25s6s)(2s)(1s( )6s)(5s(s )j43s)(j43s)(2s)(1s( )6s)(5s(s )s(H 2 ++++ + + = −+++++ + + = Khicócácđiểmcực,điểmzerovàhệsốkhuếchđạitacóthểtìmlạihàm truyềnbằnglệnh zp2tf.TadùngcáclệnhMATLABsau(lưutrongct6_3.m): z=[‐6;‐5;0]; k=1; p=[‐3+4*i;‐3‐4*i;‐2;‐1]; [ts,ms]=zp2tf(z,p,k) ts= 0111300 ms= 19458750 Đểthấyđượcsựphânbốđiểmkhôngvàđiểmcựccủahệthốngtrênmặt phẳng phứctadùnghàm pzmap.Trụccủađồthiđược chialướibằnglệnh sgrid.Cácđiểmkhôngbiểuthịbằngvòngtrònvàđiểmcựcbiểuthịbằngdấu ×.TaxétcáclệnhMATLABsau(lưutrongct6_4.m): clc sys=zpk([‐611],[‐51],3) axisequal pzmap(sys) sgrid 3. Khai triển hàm truyền thành tổng các phân thứcđơn giản: Cho hàm truyền,tacóthểkhaitriểnnóthànhtổngcácphânthứcđơngiảnbằnglệnh residue.Hàmresiduechovectơcộtcácphầndưr,vectơcộtcácđiểmcựcpvà phầnnguyênk. Vídụ:Chohàmtruyền: 4s4ss 1s9s2 )s(H 23 3 +++ ++ = TakhaitriểnhệbằngcáclệnhMATLABsau(lưutrong ct6_5.m): ts=[2091]; ms=[1144]; [r,p,k]=residue(ts,ms) r= 0.0‐0.25i 0.0+0.25i 124 ‐2.0 p= ‐0.0+2.0i ‐0.0‐2.0i ‐1.0 k= 2 Nhưvậy: 4s 1 1s 2 2 j2s j25.0 j2s j25.0 1s 2 2)s(H 2 + + + −= − − + + + + − += Ngượclại,cór,p,ktacóthểtìmhàmtruyềnbằngcáclệnhMATLABsau(lưu trong ct6_6.m): r=[0.0‐0.25*i;0+0.25*i;‐2]; p=[0+2*i;0‐2*i;‐1]; k=2; [ts,ms]=residue(r,p,k) ts= 2091 ms= 1144 4. Biếnđổi hàm truyền thành không gian‐trạng thái : Cho phương trình vi phân: )t(uya dx yd a dx yd a dx yd a 01 1n 1n 1n n n n =++++ − − − L Đặtx 1=y;x2=y′;x3=y′′v.vtacóhệphươngtrìnhtrạngthái: x′=Ax+Bu y=Cx+Du gọilàphươngtrìnhkhônggian‐trạngthái Nếumộthệđiềukhiểntựđộngchobởihàmtruyềntacóthểbiếnđổivề khônggian‐trạngtháibằnglệnh tf2ss. Vídụ:Chohàmtruyền: 24s26s9s 2s7s )s(H 23 2 +++ ++ = Ta biến hệ về dạng không gian‐trạng thái b ằng các lệnh MATLAB sau(lưu trong ct6_7m): 125 ts=[172]; ms=[192624]; [a,b,c,d]=tf2ss(ts,ms) a= ‐9‐26‐24 100 010 b= 1 0 0 c= 172 d= 0 5.Biếnđổikhônggian‐trạngtháithànhhàmtruyền:Đểbiếnđổihệchodưới dạngkhônggian‐trạngtháithànhhàmtruyềntadùnglệnh ss2tf.Taxétcác lệnhsau(lưutrong ct6_8.m) a=[010;001;‐1‐2‐3]; b=[10;0;0]; c=[100]; d=[0]; [ts,ms]=ss2tf(a,b,c,d,1) ts= 010.0030.0020.00 ms= 1.003.002.001.00 Nhưvậyhàmtruyềnlà: 1s2s3s )2s3s(10 )s(G 23 2 +++ ++ = 6. Nghiệm của phương trình trạng thái:Đểtìm nghiệm của phương trình trạngtháitadùnglệnh lsim. Vídụ:Chophươngtrìnhtrạngtháicủamộthệtuyếntính 126 )t(u 1 1 1 x x x 6116 100 010 x x x 3 2 1 3 2 1 ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ + ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ −−− = ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ & & & y=[110] x Chođiềukiệnđầu x(0)=[10.5‐0.5].Tìmx(t),y(t)vớiu(t)làhàmđơnvị.Ta dùngcáclệnhMATLABsau(lưutrong ct6_9.m): a=[010;001;‐6‐11‐6]; b=[1;1;1]; c=[110]; d=0; x0=[10.5‐0.5]; t=0:0.05:4; u=ones(1,length(t)); [y,x]=lsim(a,b,c,d,u,t,x0); plot(t,x,t,y) Dođiềukiệnđầunênnghiệmyxuấtpháttừ1.5 Khiu(t)làsin2πttatínhđápứngnhưsau(lưutrong ct6_10.m): a=[010;001;‐6‐11‐6]; b=[1;1;1]; c=[110]; d=0; x0=[10.5‐0.5]; t=0:0.05:4; u=sin(2*pi*t); [y,x]=lsim(a,b,c,d,u,t,x0); plot(t,x,t,y) 7.Biếnđổisơđồkhối :Mộtsơđồkhốiđiềukhiểnthườngrấtphứctạp.Vìv ậy tathườngphảibiếnđổinóvềdạngđơngiảnbằnglệnh connect. Vídụ:Xétsơđồkhốisau: 127 2 4 s 4 + 1 1 0.5 2s 1 + 3s 1 + 5 8 2 - + + - - 2 7 6 5 4 3 Xácđịnhphươngtrìnhtrạngtháivàhàmtruyềncủatoánbộsơđồ: Gọi ni và di là tử số và mẫu số của hàm truyền của khối thứ i. Ta có các lệnh(lưutrong ct6_11.m): n1=1;d1=1; n2=.5;d2=1; n3=4;d3=[14]; n4=1;d4=[12]; n5=1;d5=[13]; n6=2;d6=1; n7=5;d7=1; n8=1;d8=1; nblocks=8; blkbuild; q=[10000 21‐6‐7‐8 32000 43000 54000 63000 74000 85000]; iu=[1]; iy=[5]; [A,B,C,D]=connect(a,b,c,d,q,iu,iy) A= ‐8.0‐2.5‐0.5 4.0‐2.00 01.0‐3.0 B= 0.5 0 0 C= 128 001 D= 0 [ts,ms]=ss2tf(A,B,C,D,1) ts= 0002.0 ms= 1.013.056.080.0 Hàmtruyềncủahệlà: 80s56s13s 1 )s(R )s(C 23 +++ = 8.Ghépnốicácsơđồkhối:Đểghépnốitạonênmộthệthốngtừnhiềuhệ thốngcontacóthểsửdụngmộtsốkhảnăngnhưsau: sys1 b sys2 y1 y2 u sys1 a sys2 u2 u 1 y sys1 d sys2 y u 1 u2 z2 z1 v2 v 1 u u2 u1 sys1 c sys2 y1 y2 u e sys2 v2 sys1 y 1 z1 f u y sys1 sys2 y a.Ghéptheohàng:Ghéptheohàng(hìnha)cónghĩalàghépđầuracủa các hệ thống con cóđầu vào khác nhau. Hàm sys(sys1,sys2) thực hiện việc ghépnày.TacócáclệnhMATLABsau(lưutrong ct6_12.m): clc sys1=tf(1,[10]) 129 sys2=ss(1,2,3,4) sys=[sys1,sys2] b.Ghéptheocột:Ghéptheocột(hìnhb)cónghĩalàghépđầuracủa hệ thốngconcóchungđầuvào.TacócáclệnhMATLABsau(lưutrongct6_13.m): clc sys1=tf(1,[10]) sys2=ss(1,2,3,4) sys=[sys1;sys2] c. Ghép theo đường chéo: Khi ghép theođường chéo(hình c), ta có hệ thốngmớibảođảmcáchlycáchệthốngconbanđầu.Đểghéptadùnglệnh append.CáclệnhMATLAB(lưutrong ct6_14.m)nhưsau: clc sys1=tf(1,[10]) sys2=ss(1,2,3,4) sys=append(sys1,sys2) d. Ghépsong song:Tadùngcáchghépnhưtrênhìnhd.Hàmparallel dùngđểghép song song các hệ thống con. Các lệnh MATLAB (lưu trong ct6_15.m)nhưsau: clc sys1=tf(1,[10]) sys2=ss(1,2,3,4) sys=parallel(sys1,sys2) e.Ghéptuầntự:Tadùngcáchghépnhưtrênhìnhe.Hàmseriesdùngđể ghéptuầntựcáchệthốngcon.CáclệnhMATLAB(lưutrong ct6_16.m)như sau: clc sys1=tf(1,[10]) sys2=ss(1,2,3,4) sys=series(sys1,sys2) f.Ghépcóphảnhồi:Ta dùngcáchghépnhưhìnhf.Hàmfeedbackdùng đểghépcóphảnhồicáchệthốngcon.CáclệnhMATLAB(lưutrongct6_17.m) nhưsau: clc sys1=tf(1,[10]) sys2=ss(1,2,3,4) sys=feedback(sys1,sys2) 130 g.Sửdụnghàmconnect:Hàmconnecttạoramôhìnhkhônggian‐trạng tháitừcáchệthốngcon.Cúphápcủahàm: sysc=connect(sys,Q,inputs,outputs) Mộthệthốngth ườngđượcchodướidạngcáckhối.Ngaycảkhisơđồkhông phứct ạp,việctìmđượcmôhìnhkhônggian‐trạngtháicủahệthốngkhákhó. Đểtìmđượcmôhìnhkhônggian‐trạngthái,trướchếttadùnghàm append: sys=append(sys1,sys2, ,sysN) đểmôtả mỗihệthống consysjhệthốngdạngđường chéo.Tiếpđếndùng lệnh: sysc=connect(sys,Q,inputs,outputs) đểnốicáchệthốngconvàrútramôhìnhkhônggian‐trạngtháisysccủatoàn bộhệthống.MatrậnQchỉracáchnốicáchệthốngcontrênsơđồ.Mỗiđầu vàocủasyscó mộthàng,trongđóphầntửđầutiêncủamỗihànglàsốđầu vào.cácphầntửtiếptheocủa mỗihàngmôtảđầu vàocủahệthốngđượclấy từđâu.Vídụđầuvào7l ấytừđầura 2,15và6trongđóđầuvàocủa15âmthì hàngtươngứngcủaQlà[72‐156].Hàngnàokhôngđủphầntửthìthêmsố 0.Tatìmmôhìnhkhônggiantrạng‐tháicủ asơđồsau: u1 DuCxy BuAxx += + = & 5s 10 + 2s )1s(2 + + sys1 3 3 2 1 u2 4 4 2 1 uc - + sys2 y1 y2 sys3 Tacầnnốiđầura1và4vàođầuvào3(u 2)vàđầura3(y2)vàođầuvào4nên matrậnQlà: Q=[31‐4 430]; Sơđồcó2đầuvàotừcáchệthốngkháclàucvàu1(đầuvào1 và2củasys)và 2đầurađưađếncáchệthốngkháclày 1vày2(đầura2và3củasys).Nh ưvậy matrâninputsvàoutputslà: inputs=[12]; outputs=[23]; CáclệnhMATLABthựchiệnviệcbiếnđốisơđồ(lưutrongct6_18.m)nhưsau: clc 131