Chương 6- ứng dụng matlab-simulink mô phỏng các hệ thống điều khiển tự động 6.1- Khái niệm chung Như đã trình bày ở các chương trước đây, phương pháp mô phỏng được ứng dụng vào nhiều lĩ
Trang 1Chương 6- ứng dụng matlab-simulink mô phỏng các
hệ thống điều khiển tự động 6.1- Khái niệm chung
Như đã trình bày ở các chương trước đây, phương pháp mô phỏng được ứng dụng vào
nhiều lĩnh vực khác nhau Ngày nay người ta đã phát triển nhiều phần mềm chuyên dụng dùng
cho mô hình hoá và mô phỏng Một trong những phần mềm được ứng dụng rộng rãi hiện nay
là MATLAB - SIMULINK được dùng để mô phỏng các hệ thống động học Phần mềm này
cung cấp cho các kỹ sư, các cán bộ kỹ thuật một công cụ tính toán mạnh, một phương tiện mô
phỏng, phân tích và tổng hợp các hệ thống động học
MATLAB (Matrix Laboratory) là một môi trường tính toán trên ma trận rất mạnh
Matlab được tích hợp một số Toolbox, đó là thư viện của các hàm hỗ trợ cho Matlab giải các
ứng dụng riêng biệt như: hệ thống điều khiển, xử lý tín hiệu, tối ưu hoá, nhận dạng, điều khiển
bền vững v.v…
SIMULINK (trước đây gọi là SIMULAB) là một môi trường mô phỏng dựa trên nền
Matlab và các Toolbox hệ thống điều khiển (Control System) và xử lý tín hiệu (Signal
Processing) Vì vậy Simulink được coi là phần mở rộng của Matlab được dùng để mô phỏng
hệ thống động học Simulink cho phép lập trình ở dạng sơ đồ cấu trúc cho nên rất thuận tiện
trong việc mô phỏng và khảo sát các hệ thống điều khiển tự động
6.2- Giới thiệu về Matlab- Simulink
6.2.1- Matlab
Matlab được phát triển bởi công ty MathWork Inc - là một chương trình phân tích và
làm toán trên ma trận, thiết kế hệ thống điều khiển, nhận dạng hệ thống, đồ hoạ 2D, 3D
Matlab là một môi trường mở, cung cấp các thuật toán và khả năng lập trình cho phép người
sử dụng tạo ra các ứng dụng, các chương trình riêng của mình
Matlab có một thư viện lớn gồm hơn 500 hàm toán học từ đại số tuyến tính, các hàm ma
trận đến phân tích biến đổi Fourier và các phương pháp số phi tuyến Matlab có một số
Toolbox đó là những thư viện hàm chuyên dụng nhằm giải các bài toán trong các lĩnh vực
chuyên môn khác nhau
Làm việc với Matlab rất đơn giản và thuận tiện Có hai cách làm việc: làm việc với cửa
sổ lệnh và làm việc với các M-file Khi làm việc với cửa sổ lệnh, sau dấu nhắc (prompt) của
Matlab “>>” người sử dụng đưa vào các công thức, các hàm, các lệnh để tính toán và Matlab
trả lời ngay sau mỗi lệnh Cách làm việc này giống như tính toán trên trang giấy, cho phép
người sử dụng thử các phép tính các thuật toán rất thuận tiện
Làm việc với M-file: Matlab cho phép lập trình, chương trình là một dãy lệnh thực hiện
một số nhiệm vụ tính toán nhất định Chương trình được ghi thành file có phần mở rộng là m
với tên file (filename) tự đặt được gọi là M.file Để chạy chương trình, sau dấu nhắc “>>” ta
Trang 2gõ vào tên file không có phần mở rộng Lúc này Matlab coi M-file như command file hay
script file và chương trình được thực hiện theo tuần tự các lệnh đã xác định Bình thường khi
chạy chương trình các lệnh không hiển thị trên màn hình
Matlab có các loại lệnh cơ bản sau:
+ Các lệnh chung và gỡ rối
+ Các lệnh làm việc với ma trận và vectơ
+ Các lệnh làm việc với các hàm và đa thức
+ Các lệnh đồ hoạ 2D và 3D
+ Các lệnh xử lý tín hiệu và phân tích hệ thống
Ngữ pháp lập trình của Matlab rất đơn giản và gần giống các ngôn ngữ bậc cao khác như
C, Basic và Fortran Sau đây là một số lệnh, hàm và cấu trúc thường dùng trong lập trình
+ Các phép toán quan hệ:
< nhỏ hơn <= nhỏ hơn hoặc bằng = = bằng
> lớn hơn >= lớn hơn hoặc bằng ∼= không bằng
+ Các phép toán logic: AND, OR và NOT
+ Các lệnh điều kiện và vòng lặp: for, while và if-else
Lệnh vòng lặp for có cú pháp như sau:
For biến = biểu thức, lệnh, lệnh, , end
Các vòng for end có thể lồng vào nhau
Lệnh vòng lặp while có cú pháp như sau:
While biểu thức, lệnh, lệnh, , end
Lệnh rẽ nhánh có điều kiện if else end Có ba dạng cấu trúc rẽ nhánh và có cú pháp
như sau:
If biểu thức, lệnh, lệnh, end
If biểu thức, lệnh, lệnh, else lệnh, lệnh, end
If biểu thức 1, lệnh, lệnh, elseif biểu thức 2, lệnh, lệnh, end
+ M file: Script file và Function file
Hai dạng của M.file là Script file và Function file
Script file chứa chương trình gồm một số lệnh để thực hiện nhiệm vụ tính toán đã định
Khi chạy chương trình chỉ cần gõ tên file (filename) không có đuôi mở rộng m
Function file là lệnh mở rộng của Matlab, tất cả các lệnh trong các Toolbox đều có dạng
function Function có cú pháp như sau:
Function [biến ra 1, biến ra 2, …] = filename (biến vào 1, biến vào 2 …]
Trang 3Khác nhau cơ bản giữa Script và Function là Function chỉ dùng biến riêng của mình và
không tác động tới toàn bộ chương trình Dòng đầu tiên của Function file phải có chữ
“Function”
6.2.2- Simulink
Simulink được coi là phần mở rộng của Matlab Simulink được dùng để mô phỏng các
hệ động học các hệ tuyến tính, phi tuyến, các mô hình trong thời gian liên tục hoặc gián đoạn
Đặc điểm nổi bật của Simulink lập trình ở dạng sơ đồ cấu trúc, sử dụng các đối tượng đồ họa
(Graphic Programming) Loại lập trình hướng đối tượng này có ưu điểm là tính trực quan, dễ
viết và hình dung nhất là đối với những người lập trình không chuyên nghiệp Simulink cung
cấp giao diện đồ họa để xây dựng mô hình ở dạng sơ đồ khối Bằng thao tác “nhấn và kéo
chuột” người sử dụng có thể kéo các khối chuẩn trong thư viện của Simulink ra vùng làm việc
của mình để xây dựng mô hình mô phỏng
Người sử dụng có thể thay đổi hoặc tạo ra khối riêng của mình và bổ sung vào thư viện
như là một khối ứng dụng mới Simulink có các thư viện sau: thư viện các khối nguồn tín hiệu
(Sources), thư viện các khối xuất và hiển thị dữ liệu (Sink), thư viện các phần tử tuyến tính
(Linear), thư viện các phần tử phi tuyến (Nonlinearr), thư viện các khối gián đoạn (Discrete),
thư viện các khối nối (Connections), thư viện các khối phụ (Extras)
Mô hình trong Simulink được xây dựng theo kiểu phân cấp điều đó cho phép người sử
dụng có thể xây dựng mô hình theo hướng từ dưới lên trên hoặc từ trên xuống dưới Dùng
chức năng tạo “mặt nạ” (Mask) của Simulink người ta có thể xây dựng các hệ con (phân hệ)
bằng cách tạo hộp thoại và biểu tượng mới cho khối ứng dụng quan trọng của mặt nạ là tạo ra
hộp thoại để tiếp nhận thông số của các khối trong hệ con, ngoài ra mặt nạ còn làm cho mô
hình đơn giản, rõ ràng và bảo vệ nội dung của khối khỏi sự xâm nhập của người lạ Khi thực
hiện mô phỏng bằng Simulink người sử dụng vừa có thể quan sát hệ thống ở mức tổng quan,
vừa có thể xem xét chi tiết hoạt động của từng khối bằng cách nháy đúp chuột vào khối đó
Các khối Scope và khối hiển thị khác (lấy trong thư viện Sinks) cho phép người sử dụng quan
sát kết quả trong khi đang chạy mô phỏng Hơn nữa người sử dụng còn có thể trực tiếp thay
đổi thông số trong khi đang chạy mô phỏng để biết được ảnh hưởng của các thông số đó đối
với kết quả của mô phỏng
Simulink có một đặc tính quan trọng là khi ta xây dựng mô hình dạng sơ đồ khối thì
Simulink tự động tạo ra một M.file (function) cho mô hình đó Hàm này được gọi là
S-function Cũng giống như các hàm khác của Matlab, hàm S-function là một file mở, người sử
dụng có thể truy nhập vào và soạn thảo Lệnh để mở một S-function là sfun Điều đó có nghĩa
là có thể soạn thảo chương trình mô phỏng mà không cần thông qua giao diện đồ thị Mặt
khác, Simulink cho phép chuyển đổi từ S-function sang sơ đồ khối và ngược lại Như vậy rất
thuận tiện cho người sử dụng
Trang 46.3- ứng dụng Matlab - Simulink để phân tích và khảo sát hệ thống điều
khiển tự động trong miền thời gian và tần số
Trong phần này sẽ trình bày một số lệnh của Matlab dùng để phân tích các hệ điều khiển
kinh điển, các lệnh này cũng có trong Control System Toolbox của Matlab
Cho hàm truyền của một hệ điều khiển tự động G(s) = B(s)/A(s), trong đó B(s) - biểu
thức tử số (numerator) và A(s) - biểu thức mẫu số (denominator) Chúng ta quan tâm đáp ứng
của hệ thống trong miền thời gian cũng như trong miền tần số đối với các tín hiệu vào khác
nhau như hàm xung, hàm bước nhảy, hàm điều hòa v.v…
a) Miền thời gian
Chất lượng của các hệ thống tự động điều khiển thường được đánh giá dựa trên đáp ứng
thời gian ứng với các tín hiệu vào khác nhau Vì vậy đáp ứng thời gian có vai trò quan trọng
trong việc phân tích và tổng hợp hệ thống
Để tìm đáp ứng của hệ G(s) khi tín hiệu vào là hàm bậc thang đơn vị 1(t) Matlab dùng
lệnh step Cú pháp như sau:
>> y = step(num, den, t)
Trước tiên phải xác định trục thời gian t là một vectơ Giá trị đáp ứng ra cũng là một
vectơ có cùng kích thước với vectơ t Ví dụ vẽ đường cong đáp ứng của hàm 1(t) trong quãng
thời gian từ t = 0 đến t = 10 sec, mỗi bước tính là 0,1 sec của hệ thống có hàm truyền đạt sau
đây:
2
10 G(s)
=
Các dòng lệnh sau đây sẽ vẽ đường cong đáp ứng nói trên:
>>num = 10; den = [1 2 10];
>>t = [0:0.1:10]; y = step (num, den, t); plot(t,y) ;
Lệnh impulse sẽ cho ta đáp ứng ra khi tín hiệu đầu vào là xung Cú pháp như sau :
>>y = impulse (num, den, t);
Trong trường hợp đầu vào là hàm bất kỳ thì dùng lệnh lsim Cú pháp như sau :
>>y = lsim (num, den, u, t);
Trong đó u là vectơ tín hiệu đầu vào Ví dụ đầu vào là hàm dốc ramp, cú pháp như sau :
>> ramp = t ; y = lsim (num, den, ramp, t) ;
Nếu hàm vào là hàm rand(m,n) sẽ sinh ra ma trận mìn số ngẫu nhiên phân bố đều trong
khoảng (0,1), cú pháp như sau :
>>noise = rand(m,n) ; y = lsim (num, den, rand, t) ;
Trang 5Đáp ứng đầu ra khi đầu vào là hàm 1(t), khi điều kiện đầu bằng không, được gọi là đặc
tính quá độ h(t) của hệ thống Từ đặc tính quá độ có thể xác định được các chỉ tiêu chất lượng
của hệ thống sau :
- Độ quá điều chỉnh (Percent Overshoot)
max
h
∞
∞
ư
δ =
- Thời gian cực đại tmax (Peak time) là quãng thời gian để đường quá độ đạt giá trị
cực đại hmax
- Thời gian tăng tr (Rise time) là quãng thời gian từ khi đường quá độ đạt 10%h∞
đến 90%h∞
- Thời gian quá độ (Settling time) là quãng thời gian từ t = 0 đến khi đường h(t) đi
vào vùng ±5%h∞
Có thể lập chương trình để tính các chỉ tiêu chất lượng của hệ thống dưới dạng một
M-files
Ví dụ 1 dưới đây sẽ minh họa đáp ứng của hệ thống với hàm truyền =
+ + 2
5 G(s)
s 3s 20 trong thời gian từ 0 đến 10 giây, thời gian lấy mẫu là 0,1s ứng với 3 trường hợp: (1) tín hiệu
đầu vào là bước nhảy, (2) tín hiệu đầu vào là xung hoặc (3) tín hiệu đầu vào là ngẫu nhiên
Chương trình viết dưới dạng Scripts
% Dap ung cua he thong voi cac tin hieu dau vao khac nhau
% Ten chuong trinh: gtmh1.m
num=5; den=[1, 3, 20];
t=[1: 0.1: 10];
disp(‘Bam phim 1 neu tin hieu vao la xung’);
disp(‘Bam phim 2 neu tin hieu vao la buoc nhay’);
disp(‘Bam phim 3 neu tin hieu vao la tin hieu ngau nhien’);
a=input(‘Ban chon dang tin hieu nao:’);
switch a
case 1
y= impulse(num,den,t);
plot(t,y,‘m’) ;
title(‘Dap ung he thong voi tin hieu xung’) ;
case 2
y=step(num,den,t) ;
Trang 6plot(t,y) ;
title(‘Dap ung he thong voi tin hieu buoc nhay’) ;
case 3
noise=rand(101,1);
y=lsim(num,den,noise,t) ;
plot(t,y,’g’) ;
title(‘Dap ung he thong voi tin hieu ngau nhien’);
end
xlabel(‘Time[sec]’);
ylabel(‘y’);
Chạy chương trình
Từ cửa sổ lệnh, chúng ta gõ tên Script file là gtmh1, sau đó đưa vào giá trị chọn của
dạng tín hiệu trong chỉ dẫn trên màn hình, ví dụ chọn dạng tín hiệu là bước nhảy, chúng ta
bấm phím 2
>> gtmh1
Bam phim 1 neu tin hieu vao la xung
Bam phim 2 neu tin hieu vao la buoc nhay
Bam phim 3 neu tin hieu vao la tin hieu ngau nhien
Ban chon dang tin hieu nao:2
>>
Đáp ứng của hệ thống được
hiển thị trên Figure hình 6.1
b) Miền tần số
Các đáp ứng tần số cho ta
một cách nhìn trực quan về chất
lượng hệ thống do nó cho ta thấy
rõ bản chất vật lý và ảnh hưởng
của các phần tử lên chất lượng hệ
thống Vì vậy các đáp ứng tần số,
hay còn gọi là đặc tính tần số, cho
ta công cụ tốt để hiệu chỉnh hệ
thống
Có thể dùng các lệnh sau
đây để tìm đáp ứng tần số của hệ thống: bode, nyquist và nichols Cú pháp của lệnh bode như
sau:
Hình 6.1- Đáp ứng thời gian của hệ ĐKTĐ
Trang 7>> bode (num, den)
Lệnh trên sẽ vẽ đồ thị biên độ (đơn vị là dB) và pha (đơn vị là độ) Từ đường đặc tính tần
số ta có thể xác định được các chỉ tiêu chất lượng trong miền tần số như:
- Cộng hưởng đỉnh Mp, dB, là giá trị cực đại của đồ thì biên độ;
- Tần số cộng hưởng ωr, rad/s, là tần số tại đó xuất hiện cộng hưởng đỉnh;
- Tần số cắt ωc, rad/s, là tần số tại đó đường đặc tính tần số biên độ loga cắt trục
thực
- Băng thông ωB, rad/s, là giải thông của hệ thống từ tần số bằng không đến tần số
mà ở đó biên độ giảm đi 3 dB
Các chỉ tiêu chất lượng trong miền thời gian và trong miền tần số có quan hệ chặt chẽ
với nhau Thông thường độ quá điều chỉnh δ% lớn thì MP cũng lớn tương ứng Giá trị cộng
hưởng đỉnh tối ưu là nằm trong khoảng 1,1 ≤ MP ≤ 1,5 Thời gian quá độ ts lớn thì MP nhỏ vì
vậy hệ thống tác động chậm Băng thông ωB rộng thì các tín hiệu tần số cao được đưa tới hệ
thống nhiều hơn nên đáp ứng của hệ sẽ nhanh hơn và ngược lại
Ví dụ 2 sau đây sẽ minh họa đáp
ứng tần số của hệ thống điều khiển tự
động có hàm truyền G(s) được mô tả
trong ví dụ 1
Chương trình viết trên Scrips như
sau:
% Dap ung tan so
% Ten chuong trinh: gtmh2
num=5; den=[1,3,20];
bode(num, den)
Chúng ta nhận được đặc tính biên
độ (thứ nguyên là dB) và pha (độ) trên màn hình đồ họa như hình 6.2
6.4- ứng dụng Matlab - Simulink để phân tích và khảo sát hệ thống điều
khiển tự động trong không gian trạng thái
So với phương pháp biểu diễn hệ thống điều khiển tự động bằng hàm truyền đạt Laplace,
phương pháp biểu diễn bằng phương trình không gian trạng thái có một số ưu điểm sau: hệ
phương trình mô tả hệ thống là hệ phương trình bậc nhất nên tương ứng đơn giản trong tính
toán đồng thời các hệ số là các ma trận nên dùng MATLAB để giải rất thuận tiện Phương
trình không gian trạng thái được viết trực tiếp trong miền thời gian vì vậy rất tiện cho việc giải
bằng máy tính Các hệ nhiều đầu vào nhiều đầu ra (MIMO) và các hệ phi tuyến không dừng
thường được biểu diễn bằng không gian trạng thái
Hình 6.2- Đáp ứng tần số của hệ ĐKTĐ
Trang 8Hệ thống tuyến tính dừng (LTI-linear time invariant) đ−ợc mô tả bởi ba mô hình cơ bản
là mô hình hàm truyền (TF-Transfer Function), mô hình điểm không - điểm cực - khuyếch đại
(ZPK-Zero-Pole-Gain) và mô hình không gian trạng thái (SS - State Space)
Sau đây là các ví dụ về các dạng mô hình nói trên
- Mô hình hàm truyền (TF)
−
+
−
+
=
p s p s p G(s)
q s q s q
Ví dụ 3:
=
+ + 2
2s G(s)
s 3s 20
Mô hình hàm truyền đ−ợc biểu diễn trên Matlab nh− sau:
>> num = [2 0]; % Tu so: s
>> den = [1 3 20]; % Mau so: s^2+3s+20
>> H = tf(num, den) % Ham truyen
Transfer function:
2 s
-
s^2 + 3 s + 20
>>
- Mô hình điểm không - điểm cực - khuyếch đại (ZPK)
=
(s z )(s z ) (s z ) G(s) K
(s p )(s p ) (s p )
với K là hệ số khuyếch đại
z1… zn là các điểm không (zeros) của G(s)
p1… pm là các điểm cực (poles) của G(s)
Ví dụ 4: Xác định trên Matlab hàm truyền dạng ZPK của hàm truyền G(s) nh− sau:
= −
s G(s) 2
(s 2)(s ^ 2 2s 2) Giải:
>> k = -2;
>> z = 0;
>> p = [2 1+i 1-i];
Trang 9>> G = zpk(z,p,k)
Zero/pole/gain:
ư
2s (s 2)(s ^ 2 2s 2)
>>
- Mô hình không gian trạng thái: = +
&x(t) A(t) Bu(t) y(t) Cx(t) Du(t) Trong đó x(t) là vectơ trạng thái kích thước nì1 và các thành phần của nó được gọi là
các biến trạng thái Trong trường hợp chung, nếu hệ thống có bậc n, có p tín hiệu vào và m tín
hiệu ra thì các ma trận có kích thước như sau:
A = n ì n, B = n ì p, C = m ì n, D = m ì p
A là ma trận hệ thống, B là ma trận hằng số Ma trận C liên hệ đầu ra hệ thống với các
biến trạng thái, ma trận D liên hệ trực tiếp đầu vào u(t) với đầu ra y(t) của hệ thống Vectơ vào
u(t) có kích thước p ì p và vectơ ra y(t) có kích thước m ì p
Để xây dựng phương trình trạng thái người ta phải chuyển phương trình vi phân bậc n
biểu diễn ĐKTĐ thành n phương trình vi phân bậc nhất đối với vectơ trạng thái Do chọn biến
trạng thái là không đơn trị nên có nhiều dạng phương trình trạng thái Thông thường phương
trình trạng thái được viết dưới dạng chuẩn điều khiển được - CCF (Canonical controllable
form) và dạng chuẩn quan sát được - COF (Canonical observable form)
Ví dụ 5: Phương trình trạng thái đơn giản của một động cơ điện có dạng như sau:
&x(t) A(t) Bu(t)
y(t) Cx(t) Du(t) Với =⎡⎢ ⎤⎥ =⎡ ⎤⎢ ⎥ =[ ] [ ] =⎡ ⎤⎢ ⎥
Xác lập hệ phương trình trạng thái của hệ trên Matlab
Giải: Lập M-file như sau:
% Mo hinh khong gian trang thai
% Ten file: gtmh3
A = [2 3;-3 -1];
B = [0; 5]; C = [1 7]; D = 0; G = ss(A,B,C,D)
Kết quả hiển thị như sau
>> gtmh3
a =
x1 x2
x1 2 3
x2 -3 -1
Trang 10b =
u1
x1 0
x2 5
c =
x1 x2
y1 1 7
d =
u1
y1 0
Để viết phương trình trạng thái cần xác định bốn ma trận [A,B,C,D], chúng ta có thể
dùng các lệnh sau đây của MATLAB để chuyển từ hàm truyền và hàm điểm không - điểm cực
- khuyếch đại sang dạng phương trình trạng thái và ngược lại
>> [a, b, c, d] = tf2ss(num, den);
>> [a, b, c, d] = zp2ss(z, p, k);
>> [num, den] = ss2tf(a, b, c, d, ui);
>> [z, p, k] = ss2zp (a, b, c, d, ui);
Biến đầu vào của tf2ss là tử số và mẫu số của hàm truyền đạt cho dưới dạng vectơ hàng
(num, den) Biến đầu vào của zp2ss là số điểm không - điểm cực và hệ số khuyếch đại cho
dưới dạng vectơ cột (z, p, k) Các phương trình trạng thái nhận được khi dùng các lệnh tf2ss,
zp2ss được viết dưới dạng chuẩn điều khiển được - CCF
Khi biết phương trình trạng thái có thể dùng lệnh ss2tf để chuyển sang dạng hàm truyền
đạt và lệnh ss2zp để chuyển sang dạng hàm số điểm không - điểm cực và hệ số khuyếch đại
Trong các lệnh trên tham số ui là số đầu vào cho hệ MIMO
Ví dụ 6: Hãy tìm phương trình trạng thái của hệ thống có hàm truyền sau:
+ +
=
2
s 5s 2 G(s)
s 7s 20s 15
>> num = [1 5 2]; den = [1 7 20 15];
>> [a, b, c, d] = tf2ss(num, den)
Kết quả nhận được các ma trận của phương trình trạng thái:
a =
-7 -20 -15
1 0 0