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.
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)
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
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.
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)
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à:
Sau 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:
Ta 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
Bà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);
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);
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:
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
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
Ta thay đổi các thông số
Kp=100,
Ki=150,
Kd=20,
Chạy lại m-file ta được đồ thị như sau:
Như 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