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 Invariant).
Xây dựng những câu lệnh trong tự động điều khiển ở cửa sổ soạn
thảo.
Xét tính ổn đònh của hệ thống .
Chương IV : Dùng MATLAB viết chương trình tạo ra hộp
Thành Phố ngày tháng năm 2000
Cán bộ hướng dẫn
Th.S Lê Cảnh Trung
BẢN NHẬN XÉT
LUẬN VĂN TỐT NGHIỆP CỦA CÁN BỘ PHẢN BIỆN
* * * * * *
♦ Họ và tên : Lê Trung Hiền
♦ Lớp : 95KĐĐ
♦ MSSV : 95101051
♦ GVHD :Th.S Lê Cảnh Trung
♦ 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.
♦ Lời nhận xét của cán bộ phản biện:
tận tình dạy bảo cho chúng em trong những năm vừa qua,và truyền đạt cho
chúng em những kiến thức q báo để làm hành trang cho em bước vào đời.
Xin ghi nhớ công ơn của cha mẹ đã không quản mọi gian lao khó nhọc ,
và cả sự hy sinh cao cả để cho con được như ngày hôm nay.
Xin chân thành cảm ơn các thầy cô trường Đại Học Sư Phạm Kỹ
Thuật đã tận tình chỉ bảo chúng em trong suốt khóa học vừa qua.
Xin cảm ơn thầy Lê Cảnh Trung đã tận tình hướng dẫn và cung cấp cho
em những tài liệu quý báo để hoàn thành luận văn này, cũng như truyền thụ
những kinh nghiệm quý báotrong suốt thời gian thực hiện nghiên cứu đề tài.
Một lần nữa xin gởi đến những người thân yêu, bạn, các anh chò Đã góp
ý giúp đở về tinh thần cũng như về kinh nghiệm, kiến thức một lời biết ơn
sâu sắc nhất
TP. HỒ CHÍ MINH ngày 20 tháng 2 năm 2000
Sinh viên thực hiện
Lê Trung Hiền
Xin tri ân và tưởng nhớ đến Thầy
Th.S Trần Sum
TÀI LIỆU THAM KHẢO
1. Đ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
2. Bài Tập Điều khiển tự động 1,2
Pts : Nguyễn Thò Phương Hà
Cùng với sự phát triển mạnh mẽ của ngành kỹ thuật máy tính và công
nghệ thông tin, thì việc ứng dụng máy tính vào để giải những bài toán phức
tạp trong hệ thống tự động điều khiển - như hệ thống nhiều ngõ vào và nhiều
ngõ ra (MIMO)- thì không khó khăn lắm , mà độ chính xác lại cao hơn hẳn từ
đó dẫn đến việc thiết kế và tính toán trở nên dễ dàng trong 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ê.
♦ Model Predictive Control Tollbox: đặc biệt hữu dụng cho các ứng dụng điều
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.
Phát minh đầu tiên đánh dấu bước mở đầu cho sự phát triển của lónh vực
điều khiển tự động là bộ điều tốc ly tâm để điều chỉnh tốc độ máy hơi nước
của James Watt (1874). Năm 1922, Nynorsky thực hiện hệ thống điều khiển
các con tàu và chứng minh tính ổn đònh của hệ thống có thể xác đònh bằng
phương trình vi phân mô tả hệ thống. Cũng ở thời điểm này Nyquist đã đưa ra
một nguyên tắc tương đối đơn giản để xác dònh tính ổn đònh của hệ thống
vòng kín dựa trên cơ sở đáp ứng vòng hở đối với tín hiệu vào hình sin ở trạng
thái xác lập. Năm 1934 Hazen đã giới thiệu thuật ngữ điều chỉnh cơ tự động
(Servo mechanism) cho những hệ thống điều khiển đònh vò và thảo luận đến
việc thiết kế hệ thống rơle điều chỉnh cơ tự động với tín hiệu ngõ vào thay đổi.
Trong suốt thập niên 40 của thế kỷ XX, phương pháp đáp ứng tần số đã
giúp cho các kó sư thiết kế các hệ thống vòng kín tuyến tính thỏa các yêu cầu
chất lượng điều khiển. Từ cuối thập niên 40 đến đầu thập niên 50 phương
pháp quỹ đạo nghiệm của Evans được phát triển khá hoàn thiện. Với phương
pháp quỹ đạo ngiệm và đáp ứng tần số được xem là cốt lỏi của lý thuyết điều
khiển cổ điển cho phép chúng ta thiết kế những hệ thống ổn đònh và thỏa các
chỉ tiêu chất lượng điều khiển. Những hệ thống này được chấp nhận nhưng
chưa phải là tối ưu, hoàn thiện nhất.
Khi các hệ thống máy móc hiện đại ngày càng phức tạp với nhiều tín hiệu
ngỏ vào và ngỏ ra thì việc mô tả hệ thống hiện đại này đòi hỏi một lượng rất
lớn các phương trình. Lý thuyết điều khiển cổ điển liên quan đến hệ thống
một ngỏ vào một ngỏ ra trở nên bất lực để phân tích hệ thống nhiều đầu vào
và nhiều đầu ra. Kể từ năm 1960, nhờ máy tính số cho phép ta phân tích các
hệ thống phức tạp trong miền thời 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ó
♦ Chương V : Kết quả thực thi chương trình.
III. Giới hạn đề tài.
Do đây là một phần mềm mới được phổ biến rộng do đó việc hiểu được nó
cần phải có thời gian nghiên cứu lâu hơn. Nhưng do chương trình đào tạo của
nhà trường phân công cho việc làm đề tài ngắn, nên người thực hiện chỉ đi
vào nghiên cứu ứng dụng của Matlab trong lónh vực điều khiển tự động ở hệ
tuyến tính liên tục bất biến theo thời gian (LTI) và chỉ dừng lại ở hàm liên
tục. Đồng thờido nhiều yếu tố khách quan hay chủ quan mà việc tiếp thu
những kiến thức mới còn hạn chế. Nên người viết rất mong sự đóng góp nhiệt
tình của các thầy cô, các bạn đọc; Dể việc tiếp thu kiến thức mới tốt hơn và
đút kết được nhiều kinh nghiệm trong tương lai.
Xin chân thành cảm ơn.
SVTH : Lê Trung
Hiề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
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
/ hay \ phép toán chia
+ phép toán cộng
- phép toán trừ
Trong trường hợp phép chia có hai loại : phép chia trái (\) và phép chia
phải (/), chúng hoàn toàn giống nhau nhưng số bò chia và số chia bò đảo ngược.
Ta có : a/b=a
-1
.b
» 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 =
NaN
việc nhập vào Matlab một số phức là hoàn toàn đơn giản .
ví dụ 10 : nhập t=2+3i hay 2+ 3j cũng được
» t=2+3*i
Kết quả:
t =
2.0000 + 3.0000i
ví dụ 11 : Tìm căn bậc hai của số phức : 2+3i
» z=sqrt(2+3*i)
Kết quả:
z =
1.6741 + 0.8960i
chú ý: Hàm sqrt tìm căn bậc hai
III. Tạo ra một tập tin nguyên bản (script file)
Để thực hiện một công việc gồm một chuổi các động tác tính toán và dễ
dàng lưu trữ ta nên tạo ra một tập tin gọi là Scrip File. Đây là một tập tin có
phần mở rộng là “.m” và được viết trong màn hình soạn thảo của Matlab. Cấu
trúc cơ bản của script file gồm hai phần, được miêu tả như trong ví dụ sau:
%****************************************************
% baitap1.m
% bai tap 1
3 4
Ta cũng có thể nhập theo cách sau:
» A=[1 2
3 4]
Để tìm kích thước của ma trận A ta dùng lệnh size như sau:
» size(A)
Kết quả:
ans =
2 2 (Tức là ma trận A có kích thước là 2x2 ).
Muốn thay đổi phần tử thứ hai của hàng thứ hai (tức là 4) thành số 5 ta
thực hiện:
» A(2,2)=5
Kết quả cho:
A =
1 2
3 5
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:
7 8 9 hàng được thêm vào
ma trận A có được
Từ ma trận A có được ở trên ta trích ra một ma trận B gồm hàng 2 và hàng
3 của ma trận A, thực hiện như sau:
» B=A(2:3,1:3) ( tức là lấy hàng 2 và 3; cột 1 đến cột 3 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
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
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ả những lệnh đã dùng .
Polyroly.m
% polyroly
% examble of multiplying and dividing polynomials.
f1 = [1 3 2]; % f1 = s^2 +3s +2
f2 = [1 3]; % f2 = s+3
f3 = [1 2]; % f3 = s+2
g = conv (f1,f2) ; % g = (s^2 +3s +2)(s+3)
h = deconv (g,f3) % h = (s^2 +3s +2)(s+3)/ (s+2)
chú ý:Matlab sử dụng % dể diễn giải, những thứ theo sau % xem như lờ đi
trong MATLAB .
Khi gỏ tên của script file không có đuôi .m ta được kết quả là:
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
ans =
5 0
0 12
Phép chia hai ma trận cũng tương đối đơn giản. Nhưng matlab cần phân
biệt hai biểu tượng của phép chia là / và \. Giả sử bạn muốn tìm x trong
phương trình Px = Q. Giải pháp diễn tả là : x = P
-1
Q trong Matlab dùng phép
chia trái như : x = P\Q. Bây giờ giả sử muốn tìm y trong phương trình yP = Q,
diễn tả là y = Q.P
-1
. Trong Matlab sử dụng phép chia phải như :
y = Q/P. Mặc dù Matlab không cần những lời chỉ dẫn trong nhân hoặc chia hai
ma trận nhưng nó qui đònh kích thước bên trong hai ma trận nhân hay chia
phải giống nhau. Ngoại trừ việc nhân
hoặc chia một matrận với một đối số vô
hướng, số nàylà giá trò tính toán. Matlab sẽ cảnh báo nếu bạn nhân hai ma
trận có kích thước không thích hợp.
Ví dụ như chạy chương trình mistake.m
mistake.m
» % mistake: show what happens when you try to multiply
tương ứng ta thực hiện R.*S như dưới đây:
» R = [ 4 5
0 1];
» S = [ 2 3
4 6];
» R.*S
ans =
8 15
0 6
Matlab có một vài chức năng tự động tính theo từng phần tử tương
ứng trong một dãy. Ví dụ như , exp(X) sẽ trở về một dãy với từng phần
tử được trở thành hàm e mũ của từng phần tử tương ứng của X.
Matlab tạo ra các toán tử liên hệ của từng phần tử. Toán tử liên hệ này
sẽ so sánh hai đại lượng và cho ra kết quả là 1 nếu đúng và bằng 0 nếu
sai. Ví dụ nếu nhập vào t = 17 > 55, matlab sẽ cho kết quả t = 0. khi ta
sử dụng với hai ma trận, toán tử ma trận sẽ so sánh tương ứng từng
phần tử trong ma trận. Ví dụ như , L = D <= X sẽ kiểm tra mỗi phần tử
của ma trận D tương ứng với từng phần tử của X. Nếu phần tử của D
nhỏ hơn hoặc bằng với phần tử của X tương ứng thì L có giá trò là 1,
ngược lại L có giá trò bằng 0.
Tất cả các toán tử logic như & đặc trưng cho ANDø , | đặc trưng cho
OR và ~ cho NOT tất cả trả về giá trò 1 nếu đúng và 0 nếu sai.
Ví dụ:
» R& S
ans =
1 1
0 1
Tương tự :
» ~ L
tìm nghiệm. như sau:
% bt_thu.m
% thu tim nghiem phuong trinh bac hai
% dung file ham da tao la timnghiem2
% GV huong dan : TS. LE CANH TRUNG
% Duoc viet boi : LE TRUNG HIEN MSSV:95101051