sys_cl=feedbackcontr*plant,1; t=0:0.01:2; stepsys_cl,t Chạy m- file ta được kết quả như sau: H3 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
Trang 1Nguyễ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
Phương trình động lực học của hệ thống trên là
(1) Biến đổi Laplace từ (1), ta có
Hàm truyền giữa dịch chuyển X(s) và đầu vào F(s) bây giờ là
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 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ó các lệnh như sau:
num=1;
den=[1 10 20];
plant=tf(num,den);
step(plant)
Trang 2Chạ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;
Trang 3sys_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;
Trang 4sys_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
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ược lại
Điều khiển tỉ lệ-tích phân
Trước khi xây dựng bộ điều khiển PID, chúng ta xem xét tới luật điều khiển PI Như 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 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 khử đượ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 được hàm truyền mới:
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)
Chạy chương trình trong MATLAB ta được đồ thị sau
Trang 5Giữ 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)
Chạy chương trình trong MATLAB ta được đồ thị sau H4
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 khử được steady-state error
Điều khiển tỉ lệ-tích phân-vi phân(PID)
Bây giờ 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 khiển PID vòng kín bây giờ là:
Trang 6Sau một số lần chạy thử với các tham số khác nhau, ta chọn được Kp=350, Ki=300, và Kd=50 hệ thống sẽ đạt được đặc tính như mong muốn Bạn đọc có thể thử lại bằng 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)
Ta tiếp tục thay đổi, giữ nguyên Kp= 350, Ki= 300, và thay đổi Kd= 10 tạo m- file như 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:
Trang 7Ta tiếp tục thay đổi, giữ nguyên Kp= 350, Ki= 300, và thay đổi Kd= 150 tạo m- file như bên dưới:
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)
Chạy m-file ta được đồ thị như sau: H6
sau khi hiệu chỉnh các thông số ta thu được đồ thị như mong muốn với các thông số:
Tqd = 0,649 (sec)
n = 0
Trang 8Bài 2: Điều khiển tốc độ động cơ
Ta có phươ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 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);
Trang 9Nhớ 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);
Bây giờ 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 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:
Trang 10Nế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
Trang 11Điều khiển PID
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ại m-file như 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
Trang 12Ta thay đổi các thông số
Kp=100,
Ki=150,
Kd=20,
Chạy lại m-file ta được đồ thị như sau:
Trang 13Như vậy sau khi hiệu chỉnh các thông số ta thu được đồ thị như mong muốn với các thông số:
Tqd = 0,649 (sec)
n = 0