Nguy n Văn Quang – C đi n t 5 ơ ệ ử ễ
Bài t p PTTĐ mô t trên Matlab ậ ả
Bài 1: Xe l a.ử Đi u ki n ta có 1 h kh i l ng, lò xo và ch ng rung nh sau. ề ệ ệ ố ượ ư ố
ng trình đ ng l c h c c a h th ng trên là ươ ự ọ ủ ệ ố ộ Ph (1)
Bi n đ i Laplace t (1), ta có ế ổ ừ
là Hàm truy n gi a d ch chuy n X(s) và đ u vào F(s) bây gi ể ữ ị ề ầ ờ
L y các giá tr ị ấ
• M = 1kg • • •
b = 10 N.s/m k = 20 N/m F(s) = 1 L p các giá tr trên vào hàm truy n ta có ề ắ ị
ị ủ ệ ố ở ạ ứ ậ ơ ộ Tr ả các l nh nh sau: c h t ta kh o sát đáp ng b c thang đ n v c a h th ng h . T o m t m-file có ướ ế ệ ư
num=1; den=[1 10 20]; plant=tf(num,den); step(plant)
Ch y m-file này ta s có đ th nh sau. ẽ ồ ị ư ạ
Thay đ i các giá tr c a M, b, k ta có ị ủ ổ
num=1; den=[1 5 100]; plant=tf(num,den); step(plant)
Ch y m-file này ta s có đ th nh sau. H1 ẽ ồ ị ư ạ
ậ ể Lu t đi u khi n P ề . Hàm truy n đi u khi n vòng kín v i lu t đi u khi n P bây gi là: ề ề ể ề ể ậ ớ ờ
Ch n Kp = 300 và thêm vào m-file đo n mã l nh sau: ệ ạ ọ
Kp=300;
contr=Kp; sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t)
Ch y m-file trong MATLAB ta đ c k t qu nh sau. ạ ượ ế ả ư
Thay đ i Kp= 1000 và thêm vào vào m-file đo n mã l nh nh sau: ư ệ ạ ổ
Kp=1000; contr=Kp; sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t)
Ch y m- file ta đ ạ ượ ế c k t qu nh sau: H2 ả ư
Thay đ i Kp= 50 và thêm vào vào m-file đo n mã l nh nh sau: ư ệ ạ ổ Kp=50;
contr=Kp; sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t) Ch y m- file ta đ ạ ượ ế c k t qu nh sau: H3 ả ư
ộ ờ ả ẽ ế ư ậ ả c l i ượ ạ
ộ ề ư ự ề ậ ể ư ế ộ ấ ằ ỉ ả ị ư ề ờ c khi xây d ng b đi u khi n PID, chúng ta xem xét t ớ ể ờ ậ ề ổ ủ ệ ố ộ ề ế ổ ể ớ ệ ố c hàm truy n m i: Nh v y n u tăng P thì s làm gi m th i gian quá đ , tăng overshoot, và gi m steady- state error. Và ng Đi u khi n t l -tích phân ề ể ỉ ệ i lu t đi u khi n PI . Nh Tr ướ b ng t ng k t, ta th y r ng lu đi u khi n I làm gi m th i gian quá đ , nh ng làm ể ả ử i kh tăng đ quá đi u ch nh và kéo dài th i gian đ n n đ nh c a h th ng, nh ng l ạ đ ậ c steady-state error. V i h th ng trên, chuy n thành hàm truy n vòng kín v i lu t ượ ớ đi u khi n PI ta đ ể ề ượ ề ớ
Bây gi ta ch n l i Kp = 30, Ki = 70. T o m-file v i các dòng l nh sau. ờ ọ ạ ệ ạ ớ
Kp=30; Ki=70; contr=tf([Kp Ki],[1 0]); sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t)
ng trình trong MATLAB ta đ c đ th sau. Ch y ch ạ ươ ượ ồ ị
Gi nguyên giá tr Kp=30 và thay đ i Ki= 300 . T o dòng l nh trong m- file ta đ c ữ ệ ạ ổ ị ượ
Kp=30; Ki=300; contr=tf([Kp Ki],[1 0]); sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t)
ng trình trong MATLAB ta đ c đ th sau. H4 Ch y ch ạ ươ ượ ồ ị
ả ậ ư ề ể ả ờ ủ ệ ố ế ổ ề ờ ỉ ị c steady-state error. ộ ử ượ
i kh đ ạ ể ỉ ệ ớ ộ ề ta xét đ n b đi u khi n PID. Hàm truy n c a h th ng trên v i b đi u ế ề ủ ệ ố ờ ể là: Nh vây là đúng nh quy lu t trong b ng đi u khi n I làm gi m th i gian quá đ , ộ ư nh ng làm tăng đ quá đi u ch nh và kéo dài th i gian đ n n đ nh c a h th ng, ư nh ng l ư Đi u khi n t l -tích phân-vi phân(PID) ề Bây gi ộ ề khi n PID vòng kín bây gi ể ờ
ố ộ ố ầ ệ ố c đ c tính nh mong mu n. B n đ c có th th l ố ư c Kp=350, Ki=300, và i b ng ể ử ạ ằ ư ử ứ ạ ớ
Sau m t s l n ch y th v i các tham s khác nhau, ta ch n đ ọ ượ ử ớ ạ Kd=50 h th ng s đ t đ ọ ạ ẽ ạ ượ ặ cách t o m-file v i các l nh sau và ch y th . Chúng ta s đ c đ th đáp ng nh ẽ ượ ồ ị ệ ạ mong mu n.ố
Kp=350; Ki=300; Kd=50; contr=tf([Kd Kp Ki],[1 0]); sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t)
nguyên Kp= 350, Ki= 300, và thay đ i Kd= 10 t o m- file nh ổ ữ ạ ổ ư Ta ti p t c thay đ i, gi bên d ế ụ i: ướ
Kp=350; Ki=300; Kd=10; contr=tf([Kd Kp Ki],[1 0]); sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t)
Ch y m-file ta đ c đ th nh sau: ạ ượ ồ ị ư
nguyên Kp= 350, Ki= 300, và thay đ i Kd= 150 t o m- file ổ ữ ạ ổ i: ư Ta ti p t c thay đ i, gi ế ụ nh bên d ướ
Kp=350; Ki=300; Kd=150; contr=tf([Kd Kp Ki],[1 0]); sys_cl=feedback(contr*plant,1); t=0:0.01:2; step(sys_cl,t)
c đ th nh sau: H6 ạ ượ ồ ị ư Ch y m-file ta đ
ỉ ệ ượ ồ ị ư c đ th nh mong mu n v i các thông s : ố ố ớ
sau khi hi u ch nh các thông s ta thu đ ố Tqd = 0,649 (sec) n = 0
Bài 2: Đi u khi n t c đ đ ng c ể ố ộ ộ ề ơ
ươ ề ng trình đ ng l c h c c a và hàm truy n h c a mô hình đ ng c 1 chi u ự ọ ủ ở ủ ề ộ ơ ộ Ta có ph nh sau: ư
và s đ kh i c a h th ng có d ng nh sau: ố ủ ệ ố ơ ồ ư ạ
V i hàm đ u vào b c thang 1 rad/sec, m c tiêu thi t k là: ụ ầ ậ ớ ế ế
ờ ộ ổ ề
• Th i gian n đ nh nh h n 2 giây ỏ ơ ị • Đ quá đi u ch nh nh h n 5% ỏ ơ ỉ • Sai s xác l p nh h n 1%
ỏ ơ ậ ố
Tr c h t t o m t m-file g m các câu l nh sau ướ ế ạ ộ ệ ồ
J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; motor=tf(num,den);
Nh l i hàm truy n c a b đi u khi n PID. ớ ạ ề ủ ộ ề ể
Đi u khi n P ể ề
Th đi u khi n P v i Kp = 100. Đ l p hàm truy n đi u khi n vòng kín, ta dùng l nh ử ề ể ậ ề ệ ể ể ề ớ
feedback. Thêm vào cu i m-file v a r i các l nh sau: ừ ồ ệ ố
Kp=100; contr=Kp; sys_cl=feedback(contr*motor,1);
ta s xem đáp ng b c thang c a hê th ng nh th nào. L i thêm ti p vàp ư ế ủ ế ạ ậ ố ờ Bây gi cu i m-file v a r i đo n l nh sau: ố ẽ ừ ồ ứ ạ ệ
t=0:0.01:5; step(sys_cl,t) title('Step response with Proportional Control')
Khi ch y m-file ta s có đ th nh sau: ẽ ồ ị ư ạ
N u ch n Kp= 1000 trong m-file ta đ c đ thi nh sau ế ọ ượ ồ ư
N u ch n Kp= 10 trong m-file ta đ c đ thi nh sau ế ọ ượ ồ ư
Đi u khi n PID ể ề
i m-file nh ử ộ ề ỏ ủ ử ạ ư Ta cùng th b đi u khi n PID v i các giá tr nh c a Ki và Kd. S a l ớ d ẽ ướ ị ể i đây. Sau đó ch y m-file ta s có đ th . ồ ị ạ
J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; motor=tf(num,den);
Kp=100; Ki=1; Kd=1; contr=tf([Kd Kp Ki],[1 0]); sys_cl=feedback(contr*motor,1); step(sys_cl) title('PID Control with small Ki and Kd')
Ch y m-file xong ta đ c đ th nh sau ạ ượ ồ ị ư
ổ
i m-file ta đ c đ th nh sau: Ta thay đ i các thông s ố Kp=100, Ki=150, Kd=20, Ch y l ạ ạ ượ ồ ị ư
c đ th nh mong mu n v i các ệ ố ượ ồ ị ư ớ ố Nh v y sau khi hi u ch nh các thông s ta thu đ ỉ ư ậ thông s :ố
Tqd = 0,649 (sec) n = 0