BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VỆT NAM
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT ---o Oo ---
TP. HỒ CHÍ MINH
KHOA ĐIỆN
BỘ MÔN ĐIỆN – ĐIỆN TỬ
NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Họ và tên : Lê Trung Hiền
MSSV : 95101051
Lớp : 95KĐĐ
Ngành : Kỹ thuật Điện – Điện Tử
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1. Tên đề tài: Sử dụng MATLAB tạo ra hộp công cụ
dùng để giải các bài toán trong tự động điều
khiển.
2. Nội dung các phần thuyết minh.
Chương I : Giới thiệu những ưu điểm hiện có của
MATLAB khi ứng dụng trong tự động điều khiển.
Chương II :
Tìm hiểu cách nhập xuất và tính toán các
biến trong MATLAB.
Tạo một hàm trong tự động điều khiển.
Vẽ đồ thò.
Chương III :
Miêu tả các biến trạng thái, ma trận chuyển
đổi,cực,zero trong hệ thống LTI (Linear Time
dùng để giải các bài toán trong tự động điều
khiển.
Lời nhận xét của cán bộ hướng dẫn:
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
Thành Phố ngày tháng năm 2000
Cán bộ hướng dẫn
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
----------------------------------------------------
Thành Phố ngày tháng năm 2000
Cán bộ phản biện
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
V
Nhà Xuất Bản Khoa Học Và Kỹ Thuật Năm 1996
2. Bài Tập Điều khiển tự động 1,2
Pts : Nguyễn Thò Phương Hà
Nhà Xuất Bản Khoa Học Và Kỹ Thuật Năm 1996
3. Điều khiển tự động
Lương Văn Lăng
Nhà Xuất Bản Giáo Dục Năm 1996
4. Giáo Trình Lý Thuyết Điều khiển tự động Phần I,II
Th.s : Trần Sum
Trường Đại Học Sư Phạm Kỹ Thuật
5. Xử Lý tín hiệu Và Lọc Số
Nguyễn Quốc Trung
Nhà Xuất Bản Khoa Học Và Kỹ Thuật Năm 1998
6. Tiểu Luận Môn Điều Khiển Học Kỹ Thuật
Th.s : Lê Cảnh Trung
7. Using Matlab Simulink And Control System Toolbox
Alberto Cavallo
Roberto Setola
Francesco Vasca
NXB Prentice Hall
8. Using Matlab To Analyze And Design Control System
Naomi Ehrich Leonard – Princeton University
William S. Levine - University of
Maryland
9. The Matlab 5 Handbook
Darren Redfern
Colin Campbell
NXB Springer
thời gian ngắn.
Để đóng góp một phần nào đó và tuân theo mục tiêu đào
tạo của trường ĐH SƯ PHẠM KỸ THUẬT, người viết đi vào tìm
hiểu một phần mềm được ứng dụng khá phổ biến trong nhiều
lónh vực, trong đó có lónh vực tự động điều khiển, đó là
MATLAB.
Matlab là một phần mềm rất được ưa chuộng cho các lập trình
tính toán trong kỹ thuật hiện nay. Nó hầu như được phổ biến
rộng khắp trong các trường đại học ở nhiều nước.Với Matlab
công việc tính toán trở nên đơn giản và nhẹ nhàng hơn so
với nhiều ngôn ngữ lập trình khác nhờ đã thiết kế sẵn các
toolbox giúp cho người sử dụng:
Control System Tollbox: là nền tảng của họ toolbox
thiết kế điều khiển bằng Matlab. Nó chứa các hàn cho
việc mô phỏng, phân tích và thiết kế các hệ thống trong
tự động điều khiển.
Frequency Domain System Identification Tollbox: Bao
gồm các M-file giúp cho việc mô phỏng các hệ thống tuyến
tính trên cơ sở phép đo đáp ứng tần số của hệ thống.
Fuzzy Logic Tollbox: Cung cấp một tập hợp đầy đủ các
công cụ cho việc thiết kế, mô phỏng và phân tích các hệ
thống logic mờ (Fuzzy Inferencs).
Higher Order Spectral Analysis Toolbox: cung cấp các
công cụ cho việc xử lý tín hiệu dùng phổ bậc cao. Các
phương này đặc biệt hữu dụng cho phân tích các tín hiệu
có nguồn gốc từ một quá trình phi tuyến hay bò nhiễu phi
Gaussian ( non-Gaussian noise) xâm nhập.
Image Processing Toolbox: chứ các công cụ cho việc sử lý
ảnh. Nó bao gồm các công cụ cho việc thiết kế các bộ lọc
và lưu trữ ảnh, nâng cấp ảnh, phân tích và thống kê.
(hàm) khá đơn giản.
Màn hình giới thiệu Matlab 5.3
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Màn hình DEMO của Matlab
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
I . Chương mở đầu
---oOo---
I . Giới thiệu chung
Ngày nay tự động điều khiển đóng vai trò quan trọng
trong đời sống và công nghiệp. Lónh vực này hiện hữu khắp
nơi từ hệ thống phi thyền không gian, hệ thống điều khiển
tên lửa, máy bay không người lái,robot...Hoặc trong các
quy trình công nghệ sản xuất hiện đại và ngay cả trong đời
sống hằng ngày như : Điều khiển nhiệt độ, độ ẩm.
gian, lý thuyết điều khiển hiện đại được phát triển để đối
phó với sự phức tạp của các hệ thống hiện đại. Lý thuyết
điều khiển hiện đại dựa trên phân tích trong trong miền
thời gian và tổng hợp dùng các biến trạng thái, cho phép
giải quyết các bài toán điều khiển có yêu cầu chặt chẻ về
độ chính xác, trọng lượng và giá thành của hệ thống trong
lónh vực kỹ nghệ, không gian và quân sự.
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
II . Mục đích nghiên cứu
Trên đà phát triển đó, đồng thời chuẩn bò cho kì thi tốt
nghiệp kết thúc giai đoạn học cũng như hoàn tất chương
trình học của trường. Người thực hiện đi vào nghiên cứu sự
ứng dụng của Matlab trong lónh vực điều khiển tự động,
nhằm tạo ra một hộp công cụ mà từ đó ta có thể tính toán hay
tìm hiểu các chỉ tiêu về chất lượng, cũng như độ ổn đònh
của hệ thống điều khiển. Phần nào cũng giải quyết được
những vấn đề gặp khó khăn trên thực tế khi làm bằng tay đối
với những hệ thống phức tạp.
Cũng qua việc nghiên cứu đề tài này người thực hiện cũng
muốn cũng cố lại những kiến thức đã học và tìm hiểu thêm
những nét mới từ những kiến thức đó, để sau khi tốt nghiệp
có khả năng vận dụng vào cuộc sống thực tiễn.
Với đề tài “ SỬ DỤNG MATLAB TẠO HỘP CÔNG CỤ DÙNG ĐỂ GIẢI
CÁC BÀI TOÁN TRONG TỰ ĐỘNG ĐIỀU KHIỂN“, người viết chia
thành năm chương như sau:
Chương I : Giới thiệu chung về Matlab nhằm giúp cho
chúng ta hiểu rõ hơn những nét mạnh của phần mềm này.
Hầu như nó được ứng dụng trong mọi lónh vực.
Chương II : Các vấn đề cơ bản trong Matlab. Trong
Xin chân thành cảm ơn.
SVTH : Lê Trung Hiền
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
II : CƠ BẢN VỀ MATLAB
>>>oOo<<<II>>>oOo<<<
I. Bắt đầu với matlab
Matlab được khởi động khi ta chọn matlab trong hệ
thống (tức là nhấp start _ programs _ matlab _
matlab5.3), hay nhấp(click) vào biểu tượng của Matlab.
Khi đó Matlab sẽ xuất hiện trên màn hình, với một vài lời
giới thiệu ban đầu và sau đó là dấu nhắc hệ thống “>>”
trong Matlab. Từ đó ta có thể thực hiện việc tính toán hay
thực hiện các câu lệnh một cách dễ dàng.
Muốn thoát khỏi Matlab, ta có thể thực hiện một trong
những cách sau:
Cách 1: vào file menu và click vào Exit MATLAB.
cách 2: nhấp vào biểu tượng close ( )trên cửa sổ làm
việc của Matlab.
Cách 3: dùng tổ hợp phím ctrl+Q
II. Các biểu thức toán cơ bản trong matlab.
Làm việc trong môi trường Matlab thì không phức tạp
lắm bởi vì hầu hết các lệnh đã được nhập vào vì vậy bạn chỉ
cần viết biểu thức toán học và enter sau đó Matlab sẽ hiển
thò kết quả trên màn hình.
Ví dụ 1: Tính A= 4:3 ta thực hiện như sau:
» A=4/3
Ta có kết quả:
B =
11
Trong Matlab khi một câu lệnh hay biểu thức quá dài ta sử
dụng dấu (...) để nối câu của hàng trên và hàng dưới.
ví dụ 3: tính p=1+2+3+4+5+6 dùng hai hàng ta thực hiện :
» p=1+2+...
3+4+...
5+6
kết quả cho:
p =
21
Khi tính mũ x cơ số y nào đó ta dùng toán tử sau:
ví dụ 4: tính p
2
ta thự hiện lệnh:
» p^2
Kết quả nhận được:
ans =
441 ( tức là 21
2
=441)
Một số toán hạng cơ bản sử dụng trong Matlab:
^ phép toán lũy thừa
* phép toán nhân
2
ví dụ 7: tính x=(1+2)
3
/(4*2)
» z=(1+2)^3/(4*2)
Kết quả cho
z =
3.3750
chú ý: Những biến mặc đònh trong Matlab
pi hằng số pi=3.1416
Inf là giá trò ở
NaN là giá trò của (0/0) hay (Inf/Inf)
ví dụ 8:
» d=4/0
Kết quả cho:
Warning: Divide by zero. ( cảnh báo chia cho 0)
d =
Inf
ví dụ 9:
» c=Inf/Inf
kết quả cho:
c =
%****************************************************
% baitap1.m
% bai tap 1
% tao ra mot da thuc nhu sau
% 18(s+20)
% G(s) = -------------------
% (s+15)(s+25)(s+0.4) A
% bien NUM tao ra bieu thuc cua tu
% bien DEN tao ra bieu thuc cua mau
% lenh CONV dung de nhan hai da thuc
% ham printsys dung de viet ra bieu thuc num/den
%****************************************************
num = 18*[1 20];
den = conv(conv([1 15], [1 25]), [1 0.4]); B
printsys(num,den,'s')
%***************************************************
Đây là Script File có tên là baitap1.m gồm:
phần A: gọi là phần giải thích, nó được lờ đi trong
Matlab khi tính toán. Và chỉ xuất hiện khi trong Matlab ta
gỏ lệnh:
>> help baitap1
Phần B: là toàn bộ chương trình chính và sẽ được Matlab
thực thi khi ta gọi đúng tên baitap1.
IV. Ma trận, vectơ và đa thức
IV.1. Những lệnh về ma trận và vectơ
Ma trận được nhập vào Matlab bằng cách liệt kê các
phần tử của ma trận và cho chúng vào trong một dấu ngoặc
vuông. Các phần tử của một hàng được phân cách bởi dấu phẩy
Khi ta thêm một phần tử vào một ma trận mà vượt quá kích
thước tồn tại của ma trận, thì Matlab sẽ tự động thêm vào
các số 0 cần thiết để duy trì một ma trận vuông. Như ví dụ
sau:
» A(3,3)=6 (thêm phần tử ở cột thứ ba và hàng thứ ba là
6)
Kết quả cho:
A =
1 2 0
3 5 0
0 0 6
Như ta biết vectơ là một ma trận (1 x n) hay là một ma
trận (n x 1), trong đó n là một số nguyên dương. Ta cũng có
thể tạo ra các vectơ theo cùng cách với ma trận, ví dụ như:
» V=[sin(pi/3) -7^3 56]
Kết quả cho:
V =
0.8660 -343.0000 56.0000
Trong trường hợp đặc biệt vectơ cũng có thể tạo ra dùng
toán tử hai chấm “:”, ví dụ như:
» K=1:5
Kết quả cho ra một vectơ từ 1 đến 5 với bước nhảy là 1
K =
1 2 3 4 5
Khi muốn bước nhảy là một số delta bất kì ta thực hiện
lệnh tổng quát như sau: >> K = 1:delta:5
Ví dụ tạo một vectơ từ 1 đến 2 với bước nhảy là 0.3 ta gỏ:
của
ma trận A)
Kết quả cho:
B =
3 5 0
0 0 6
Hay thực hiện lệnh sau:
» B=A(2:3,:) ( tức là ma trận B lấy hàng 2, 3 và tất cả
các
cột cua ma trận A)
Kết quả cho giống như trên:
B =
3 5 0
0 0 6
Matlab có các lệnh để tạo ra các ma trận đặc biệt. Ví dụ
ta có thể tạo ra một ma trận chéo với lệnh diag bằng cách
dùng các vectơ chứa các phần tử chéo như đối số đầu vào,
như là:
» D=diag([1 2 3])
Kết quả thu được:
D =
1 0 0
0 2 0
0 0 3
Một ma trận đặc biệt hữu dụng khác là ma trận đồng nhất
eye(a) với a là số nguyên sẽ tạo ra một ma trận đồng nhất
có kích thước là a x a. Tương tự khi thực hiện lệnh
eye(size(B)) sẽ tạo ra một ma trận đồng nhất có cùng kích
MATLAB là: p = [1 5 6].Hệ số zero cũng được thêm vào để
tránh sự mơ hồ; Như là nhập đa thức q = s
3
+5s+6 ta nhập
vào như sau q= [1 0 5 6]. Một đa thức có thể tính được
giá trò ứng với giá trò từng biến bằng cách dùng lệnh
polyval.
Ví dụ :
» polyval(p,1)
Kết quả thu được:
ans =
12 (tức là cho giá trò của đa thức p với s = 1)
Lệnh roots thì thuận lợi cho việc tìm nghiệm của đa thức
.
Ví dụ :
» r = roots (p)
Kết quả cho:
r =
-3
-2
Tương tự ta có thể xây dựng đa thức từ nghiệm của nó
ví dụ :
» t = poly ([-4 -5])
t =
1 9 20
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
Lệnh conv dùng để nhân hai đa thức và deconv để chia hai
đa thức
Script file polyroly.m được thể hiện dưới dây mô tả
r =
0 0 2
Ta có bảng tóm tắt các lệnh trong đa thức poly : cho đa thức từ nghiệm
roots : tìm nghiệm của đa thức
polyval : giá trò của đa thức cho bởi một điểm
polyvalm : ước lượng ma trận của đa thức
conv : nhân hai ma trận
deconv : chia hai ma trận
residue :phân tích phân số thành từng phần
polyder : đa thức đạo hàm
polyfit : đa thức nội suy V. Toán tử và hàm trong ma trận
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
Matlab thi hành những phép toán trong ma trận một cách
dễ dàng như thực hiện trong phép toán vô hướng, đơn giản
chỉ cần gỏ:
» B+ D
ans =
6 0
0 8
Tương tự cho nhân hai ma trận:
» B * D
??? Error using ==> *
Inner matrix dimensions must agree.
error in = =>mistake.m
on line 5 = => Z = x * y;
Để gở lỗi ta nhập lệnh size(x) và size(y) để kiểm
tra kích thước của ma trận x và y. Tuy nhiên bạn sẽ
tìm thấy x là matrận 2 x 2 và y là matrận 3 x 2 .
Matlab bao gồm nhiều chức năng khác biểu diễn sự
hoạt động của matrận, như là lệnh det(X) và inv(X)
kết quả tạo ra đònh thức (determiant) và nghòch đảo
(inverse) của X theo từng cái tương ứng. Hàm rank(X)
xác đònh loại của matrận X . Hàm eig(X) trả về giá trò
của X trong một cột vetơ. Hàm expm(X) để tính e
x
.
Chú ý rằng có những chức năng qui đònh việc nhập
các đối số vào matrận vuông. Để khảo xác thêm vài
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
chức năng khác và học nhiều hơn về cách dùng của
những chức năng trên ta dùng lệnh help để diễn tả .
Matlab cho ta cách dùng các hàm khác nhau để tính
toán trên các chuổi thay vì trên các ma trận. Ví dụ
giả sử ta có một bảng số liệu như một chuổi gọi là
Data. Bây giờ ta muốn tính căn bậc hai và tìm bình
phương của mổi phần tử trong Data. Dùng một dấu chấm
“.” ta có thể biến đổi các toán tử ma trận toán học
thành toán tử phần tử liên tục. Đặc biệt theo sau các
toán tử là dấu “.” là biểu thò toán tử chuổi. Như vậy
ans =
1 1
0 1
Tương tự :
» ~ L
ans =
0 0
0 1
Ta có thể nghiên cứu thêm về toán tử so sánh bằng
cách dùng lệnh help relop hoặc help <=
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
VI. Tạo hàm chức năng
Khi bạn đã nắm vững một chuổi các lệnh thực hiện
những chức năng hữu dụng, có thể ta muốn biến nó
thành một lệnh hàm mới và tạo ra một nhánh làm việc
độc lập với Matlab. Muốn thực hiện được điều này ta
phải tạo ra một file hàm. Các file hàm này là các m-
file, các file này giống như script file. Sự khác
biệt lớn là hàng đầu tiên của file hàm bắt đầu với từ
function, theo sau là một câu xác đònh tên của hàm và
các đối số đầu vào, đầu ra; có dạng :
Function[đối số ngõ vào]=tên hàm(đối số ngõ ra).
Ví dụ: tao ra hàm timnghiem2 để tìm nghiệm phương
trình bậc hai với hệ số a#0. Ta thực hiện như sau:
% timnghiem2.m
% Tao ra ham timnghiem2 de tim nghiem phuong tring bac hai:
nhap vao he so a (voi a#0): 1
a =
1
nhap vao he so b: -3
b =
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
-3
nhap vao he so c: 2
c =
2
ta co cac nghiem sau:
x1 =
2 x2 =
1
Khi ta thực hiện lệnh sau ngoài dấu nhắc Matlab ta được:
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN
0 0.4800 0.8400 1.0000 0.9100 0.6000
0.1400
» plot(Y)
Ta có được kết quả như hình 1 ở dưới:
Từ hình 1 ta có một số nhận xét sau:
Trục chia độ là tự động
Tiêu đề của cửa sổ là “Figure No. 1” để chỉ cửa sổ đang
làm việc là cửa sổ nguồn.
Điểm nối trong đồ thò là những đường liên tục.
Chú ý: lệnh plot còn chấp nhận một tham số chuổi để dònh
màu và kiểu nối của đồ thò.Matlab có bốn kiểu cho đường
vẽ,năm kiểu cho điểm vẽ và tám màu cơ bản,được tóm tắt như
sau:
kiểu đường kiểu điểm kiểu màu
-
--
:
-.
.
+
*
o
x
vàng y
tím m
xanh nhợt c
đỏ r
xanh lơ g
nào đó trên đồ thò.
hình 2
THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN