Tải bản đầy đủ (.docx) (57 trang)

đồ án mô hình hóa mô phỏng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (854.18 KB, 57 trang )

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ TỰ ĐỘNG

ĐỒ ÁN MÔN HỌC
MÔ HÌNH HÓA MÔ PHỎNG
Đề tài: Tìm hiểu về phần mềm mô phỏng Matlab &
Simulink

Giảng viên hướng dẫn

: Ths. LÊ QUỐC DŨNG

Sinh viên thực hiện

: CHU VĂN TUẤN

Ngành

: CÔNG NGHỆ TỰ ĐỘNG

Lớp

: D8CNTD2

Khoá

: 2013 – 2018

Hà Nội, tháng năm 2017




Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

LỜI MỞ ĐẦU
Thời đại của công nghệ thông tin phát triển mạnh mẽ, cùng với nó là hàng
loạt các phần mềm hỗ trợ kèm theo, thì MATLAB & SIMULINK là một phần
mềm mà ứng dụng của nó trong điều khiển tự động quả là không nhỏ. MATLAB
& SIMULINK là một ngôn ngữ mô phỏng đa năng. Nó tạo môi trường để
SIMULINK thực hiện và để liên kết SIMULINK với bên ngoài. Trong lòng
MATLAB đã tích hợp sẵn rất nhiều công cụ chuyên dùng để giải các bài toán
khác nhau như: nhận dạng các đối tượng động học, điều khiển tối ưu, điều khiển
bền vững, điều khiển mờ, xử lý số tín hiệu. Do đó, việc tìm hiểu vầ nắm vững
kiến thức về cơ sở lý thuyết điều khiển tự động và công cụ phần mềm mô phỏng
MATLAB & SIMULINK là hết sức cần thiết. Với đề tài " Ứng dụng phần mềm
MATLAB & SIMULINK để khảo sát các chỉ tiêu chất lượng của hệ thống điều
khiển tự động tuyến tính liên tục " , nhóm chúng em đã vận dụng được những ưu
điểm của phần mềm này trong việc giải quyết các yêu cầu của bài toán điều
khiển tự động, Đặc biệt, việc phân tích, đánh giá chất lượng của hệ thống và
thiết kế bộ điều khiển cho hệ thống với mục đích làm cho hệ thống có những đặc
tính như mong muốn là mục tiêu cuối cùng của các nhà kỹ thuật. Sau quá trình
học tập rèn luyện và nghiên cứu tại trường, chúng em đã tích luỹ được vốn kiến
thức để thực hiện đề tài của mình. Đến nay chúng em đã hoàn thành đề tài này
với nội dung như sau:
-

CHƯƠNG 1: LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN CỦA MATLAB.


-

CHƯƠNG 2: CƠ SỞ SIMULINK.
CHƯƠNG 3: GIỚI THIỆU CÁC CHỨC NĂNG CHÍNH.
CHƯƠNG 4: CÁC VÍ DỤ MINH HỌA TÍNH NĂNG CỦA PHẦN MỀM
Hà Nội, ngày

tháng

Sinh viên

năm 2016


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

LỜI CẢM ƠN
Trong quá trình thực hiện đề tài mặc dù gặp phải rất nhiều những vấn đề
khó khăn song với sự hướng dẫn của thầy Ths. LÊ QUỐC DŨNG cùng với sự
chỉ bảo của các thầy cô giáo Khoa Công Nghệ Tự Động và sự lỗ lực không
ngừng, đến nay em đã hoàn thành đề tài. Tuy nhiên, do kiến thức của em còn
hạn chế, nên không thể tránh khỏi những thiếu sót. Vì vậy em rất mong nhận
được những ý kiến đóng góp chân thành từ phía thầy Ths. LÊ QUỐC DŨNG
cùng với sự chỉ bảo của các thầy cô giáo Khoa Công Nghệ Tự Động và các bạn
đọc để đề tài này của em ngày càng hoàn thiện và phát triển lên mức cao hơn
trong thời gian gần nhất.
Em xin chân thành cảm ơn!



Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Đánh giá và nhận xét của GV hướng dẫn
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

……………………………………………………………………………………
Giáo viên hướng dẫn

Ths. Lê Quốc Dũng


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG
MỤC LỤC


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

CHƯƠNG 1: LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN CỦA MATLAB
1.1 Lịch sử hình thành và phát triển của Matlab & Simulink

MATLAB là 1 phần mềm ứng dụng chạy trong môi trường Windows do hãng
MathWorks sản xuất và cung cấp. Có thể coi Matlab là ngôn ngữ của kỹ thuật.
Nó tích hợp các công cụ rất mạnh phục vụ tính toán, lập trình, thiết kế, mô
phỏng,... trong một môi trường rất dễ sử dụng trong đó các bài toán và các lời
giải được biểu diễn theo các ký hiệu toán học quen thuộc.
Matlab là viết tắt từ "MATrix LABoratory", được Cleve Moler phát minh vào
cuối thập niên 1970, và sau đó là chủ nhiệm khoa máy tính tại Đại học New
Mexico. MATLAB, nguyên sơ được viết bởi ngôn ngữ Fortran, cho đến 1980 nó
vẫn chỉ là một bộ phận được dùng nội bộ của Đại học Stanford.
Năm 1983, Jack Little, một người đã học ở MIT và Stanford, đã viết lại
MATLAB bằng ngôn ngữ C và nó được xây dựng thêm các thư viện phục vụ

cho thiết kế hệ thống điều khiển, hệ thống hộp công cụ (tool box), mô phỏng...
Jack xây dựng MATLAB trở thành mô hình ngôn ngữ lập trình trên cơ sở ma
trận (matrix-based programming language). Steve Bangert là người đã viết trình
thông dịch cho MATLAB. Công việc này kéo dài gần 1½ năm. Sau này, Jack
Little kết hợp với Moler và Steve Bangert quyết định đưa MATLAB thành dự án
thương mại - công ty The MathWorks ra đời thời gian này - năm 1984.
Phiên bản đầu tiên MATLAB 1.0 ra dời năm 1984 viết bằng C cho MS-DOS
PC được phát hành đầu tiên tại IEEE Conference on Design and Control (Hội
nghị IEEE về thiết kế và điều khiển) tại Las Vegas, Nevada. Ban đầu Matlab
được phát triển để hỗ trợ sinh viên sử dụng hai thư viện

LINPACK và

EISPACK dùng cho đại số tuyến tính (viết bằng Fortran) mà không cần biết lập
trình Fortran.
Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX.
Năm 1987, MATLAB 3 phát hành.
Năm 1990 Simulink 1.0 được phát hành gói chung với MATLAB.
Năm 1992 MATLAB 4 thêm vào hỗ trợ 2-D và 3-D đồ họa màu và các ma
trận truy tìm. Năm này cũng cho phát hành phiên bản MATLAB Student Edition
(MATLAB ấn bản cho học sinh).
Năm 1993 MATLAB cho MS Windows ra đời. Đồng thời công ty này có
trang web là www.mathworks.com
SVTH: CHU VĂN TUẤN

Page 6


Đồ án môn học Mô hình hóa mô phỏng


GVHD: Ths. LÊ QUỐC DŨNG

Năm 1995 MATLAB cho Linux ra đời. Trình dịch MATLAB có khả năng
chuyển dịch từ ngôn ngữ MATLAB sang ngôn ngữ C cũng được phát hành trong
dịp này.
Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ liệu, hình ảnh hóa, bộ truy
sửa lỗi (debugger), và bộ tạo dựng GUI.
Năm 2000 MATLAB 6 cho đổi mới môi trường làm việc MATLAB, thay thế
LINPACK và EISPACK bằng LAPACK và BLAS.
Năm 2002 MATLAB 6.5 phát hành đã cải thiện tốc độ tính toán, sử dụng
phương pháp dịch JIT (Just in Time) và tái hỗ trợ MAC.
Năm 2004 MATLAB 7 phát hành, có khả năng chính xác đơn và kiểu
nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và có môi trường phân tích số
liệu tương tác.
Đến tháng 12, 2008, phiên bản 7.7 được phát hành với SP3 cải thiện
Simulink cùng với hơn 75 sản phẩm khác.
Năm 2009 cho ra đời 2 phiên bản 7.8 (R2009a) và 7.9 (R2009b).
Năm 2010 phiên bản 7.10 (R2010a) cũng đã được phát hành.
Matlab được dùng rộng rãi trong giáo dục, phổ biến nhất là giải các bài toán số
trị (cả đại số tuyến tính lẫn giải tích) trong nhiều lĩnh vực kĩ thuật.
1.2 Ngôn ngữ lập trình
Ngôn ngữ lập trình dùng trong hệ tính toán số cũng có tên gọi là Matlab. Nó
thuộc kiểu lập trình thủ tục (với một số đặc điểm của lập trình hướng đối tượng mới
được bổ sung trong các phiên bản gần đây).
1.3 Phạm vi ứng dụng của Matlab
Các ứng dụng điển hình là:- Toán học và tính toán.
- Phát triển thuật toán.
- Tạo mô hình, mô phỏng và tạo giao thức.
- Khảo sát, phân tích số liệu.
- Đồ hoạ khoa học kỹ thuật.

- Phát triển ứng dụng, gồm cả xây dựng giao diện
người dùng đồ hoạ GUI.
Matlab là một hệ thống tương tác mà phần tử dữ liệu cơ bản là một mảng
(array) không cần khai báo kích thước. Điều này cho phép bạn giải nhiều bài
toán tính toán kỹ thuật đặc biệt là các bài toán liên quan đến ma trận và véc tơ.
Matlab là viết tắt của hai từ tiếng Anh Matrix Laboratory (Phòng thí nghiệm
ma trận). Ban đầu Matlab được viết chỉ để phục vụ cho việc tính toán ma trận.
Trải qua thời gian dài, nó đã được phát triển thành một công cụ hữu ích, một
ngôn ngữ của kỹ thuật. Trong môi trường đại học, nó là một công cụ chuẩn cho
SVTH: CHU VĂN TUẤN

Page 7


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

các khoá học mở đầu và cao cấp về toán học, khoa học và kỹ thuật. Trong công
nghiệp, nó là công cụ được lựa chọn cho việc phân tích, phát triển và nghiên cứu
hiệu suất cao.
Matlab cung cấp một họ các giải pháp theo hướng chuyên dụng hoá được gọi
là các Toolbox (hộp công cụ). Các toolbox cho phép người sử dụng học và áp
dụng các kỹ thuật chuyên dụng cho một lĩnh vực nào đó. Toolbox là một tập hợp
toàn diện các hàm của Matlab (M-file) cho phép mở rộng môi trường Matlab để
giải các lớp bài toán cụ thể. Các lĩnh vực trong đó có sẵn các toolbox bao gồm:
Xử lý tín hiệu, hệ thống điều khiển, logic mờ, mô phỏng,...
Hệ thống Matlab gồm có 5 phần chính:
- Ngôn ngữ Matlab: là một ngôn ngữ ma trận/ mảng cấp cao với các câu lệnh,
hàm, cấu trúc dữ liệu, vào/ ra, các tính năng lập trình hướng đối tượng. Nó cho

phép lập trình các ứng dụng từ nhỏ đến các ứng dụng lớn và phức tạp.
- Môi trường làm việc Matlab: Đây là một bộ các công cụ và phương tiện mà
bạn sử dụng với tư cách là người dùng hoặc người lập trình Matlab. Nó bao gồm
các phương tiện cho việc quản lý các biến trong không gian làm việc Workspace
cũng như xuất nhập khẩu dữ liệu. Nó cũng bao gồm các công cụ phát triển, quản
lý, gỡ rối và định hình M-file, ứng dụng của Matlab.
- Xử lý đồ hoạ: Đây là hệ thống đồ hoạ của Matlab. Nó bao gồm các lệnh cao
cấp cho trực quan hoá dữ liệu hai chiều và ba chiều, xử lý ảnh, ảnh động,... Nó
cũng cung cấp các lệnh cấp thấp cho phép bạn tuỳ biến giao diện đồ hoạ cũng
như xây dựng một giao diện đồ hoạ hoàn chỉnh cho ứng dụng Matlab của mình.
- Thư viện toán học Matlab: Đây là tập hợp khổng lồ các thuật toán tính toán từ
các hàm cơ bản như cộng, sin, cos, số học phức,... tới các hàm phức tạp hơn như
nghịch đảo ma trận, tìm trị riêng của ma trận, phép biến đổi Fourier nhanh.
- Giao diện chương trình ứng dụng Matlab API (Application Program Interface):
Đây là một thư viện cho phép bạn viết các chương trình C và Fortran tương
thích với Matlab.
Simulink, một chương trình đi kèm với Matlab, là một hệ thống tương tác
với việc mô phỏng các hệ thống động học phi tuyến. Nó là một chương trình đồ
hoạ sử dụng chuột để thao tác cho phép mô hình hoá một hệ thống bằng cách vẽ
một sơ đồ khối trên màn hình. Nó có thể làm việc với các hệ thống tuyến tính,

SVTH: CHU VĂN TUẤN

Page 8


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG


phi tuyến, hệ thống liên tục theo thời gian, hệ gián đoạn theo thời gian, hệ đa
biến,...

SVTH: CHU VĂN TUẤN

Page 9


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

CHƯƠNG 2: GIỚI THIỆU CƠ BẢN VỀ MATLAB & SIMULINK
2.1 Các khái niệm cơ bản trong Matlab
2.1.1 Một số phím chuyên dụng và lệnh thông dụng
- ↑ Hoặc Ctrl + p : Gọi lại các lệnh đã thực hiện trước đó.
- ↓ Hoặc Ctrl + n : Gọi lại lệnh vừa thực hiện trước đó.
- → Hoặc Ctrl + f : chuyển con trỏ sang bên phải 1 ký tự.
- ← hoặc Ctrl + b: chuyển con trỏ sang trái một ký tự.
- Dấu “;” dùng trong […] để kết thúc một hàng của ma trận hoặc kết thúc
-

một biểu thức hoặc câu lệnh mà không hiển thị kết quả ra mà hình.
↵ nhảy xuống dòng dưới
Ctrl + A hoặc Home : chuyển con trỏ về đầu dòng.
Ctrl + E hoặc End: Chuyển con trỏ đến cuối dòng.
BackSpace: Xoá ký tự bên trái con trỏ.
Esc: xoá dòng lệnh.
Ctrl + K : Xoá từ vị trí con trỏ đến cuối dòng.
Ctrl + C : Dừng chương trình đang thực hiện.

Clc : lệnh xoá màn hình.
Clf: Lệnh xoá màn hình đồ hoạ.
Input: lệnh nhập dữ liệu vào từ bàn phím.
Demo: lệnh cho phép xem các chương trình mẫu.
Help: lệnh cho phép xem phần trợ giúp.
Ctrl – c: Dừng chương trình khi nó bị rơi vào trạng thái lặp không kết

-

thúc.
Dòng lệnh dài: Nếu dòng lệnh dài quá thì dùng … ↵ để chuyển xuống
dòng dưới.
Biến trong MATLAB

2.1.2

Đặc điểm của biến trong Matlab:
-

Không cần khai báo biến và kiểu của biến. Tuy nhiên trước khi gán một
biến thành một biến khác thì cần đảm bảo rằng biến ở bên phải của phép

-

gán có một giá trị xác định.
Bất kỳ một phép toán nào gán một giá trị vào một biến sẽ tạo ra biến đó
nếu cần (biến đó chưa xác định) hoặc ghi đè lên giá trị hiện tại nếu nó đã

-


tồn tại trong Workspace.
Tên biến bao gồm một chữ cái sau một số bất kỳ các chữ cái, chữ số và
dấu gạch dưới. Matlab phân biệt chữ in hoa và chữ in thường, vì vậy X và
x là hai biến phân biệt.
2.1.2.1 Tên biến:

SVTH: CHU VĂN TUẤN

Page 10


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Là một dãy ký tự bao gồm các chữ cái hay các chữ số hoặc một số ký tự đặc
biệt
dùng để chỉ tên của biến hoặc tên của hàm. Chúng phải được bắt đầu bằng chữ
cái sau đó có thể là các chữ số hoặc một vài ký tự đặc biệt. Chiều dài tối đa của
tên là 31 ký tự.
Bình thường Matlab có sự phân biệt các biến tạo bởi chữ cái thường và chữ
cái in hoa. Các lệnh của Matlab nói chung thường sử dụng chữ cái thường. Việc
phân biệt đó có thể được bỏ qua nếu chúng ta thực hiện lệnh : >> casensen off
2.1.2.2 Một số lệnh với biến:
- clear: lệnh xoá tất cả các biến đã đ-ợc định nghĩa trước trong chương
-

trình .
clear biến1, biến 2... : xoá các biến được liệt kê trong câu lệnh.
Who: hiển thị các biến đã được định nghĩa trong chương trình.

Whos: hiển thị các biến đã được định nghĩa trong chương trình cùng với

-

các thông số về biến.
Size (tên biến đã được định nghĩa): cho biết kích cỡ của biến dưới dạng
ma trận với phần tử thứ nhất là số hàng của ma trận, phần tử thứ 2 là số

-

cột của ma trận.
Save: Lưu giữ các biến vào một File có tên là Matlab. mat.
Load: Tải các biến đã được lưu giữ trong một File đưa vào vùng làm việc.
2.1.2.3 Một số biến đã được định nghĩa trước:
ans: Answer - tự động gán tên này cho kết quả của một phép tính mà ta
không đặt tên. VD >> [ 1 2] ↵
ans =

12
-

pi
= 3.1415926535897...
realmax: đưa ra giá trị của số lớn nhất mà máy tính có thể tính toán được.
realmin: đưa ra giá trị của số nhỏ nhất mà máy tính có thể tính toán được.
i, j: Đơn vị ảo của số phức.
inf: infinity- vô cùng lớn.
NaN: Not a number – biểu diễn dạng 0/0, /
eps: Độ chính xác tương đối của dấu phẩy động. Đây là dung sai Matlab
sử dụng trong các tính toán của nó.

2.1.2.4 Biến toàn cục (global variables)

Matlab cho phép sử dụng cùng một biến cho các hàm hoặc giữa các hàm và
chương trình chính của Matlab, điều này được thực hiện thông qua việc khai báo
biến toàn cục:
SVTH: CHU VĂN TUẤN

Page 11


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Global tên1 tên2 tên3 ….
(Tên các biến cách nhau bắng dấu khoảng trống, không sử dụng dấu phẩy).
Việc khai báo biến toàn cục phải đ-ợc thực hiện ở chương trình chính hoặc ở
file lệnh (script) hoặc ở file hàm (function) có sử dụng các biến. Biến toàn cục
có tác dụng cho đến khi kết thúc quá trình tính toán hoặc khi toàn bộ Workspace
được xoá. Không được đưa tên biến toàn cục vào danh sách các đối số của hàm.
Khi sử dụng biến toàn cục các lệnh sau tỏ ra rất cần thiết:



Clear global : Lệnh này cho phép loại bỏ các biến toàn cục.
Isglobal(Tên biến) : Lệnh này cho phép kiểm tra xem một biến nào đó có
phải là biến toàn cục hay không. Nếu là biến toàn cục thì giá trị trả về sẽ là 1.
2.1.3 Các phép toán trong MATLAB
2.1.3.1 Phép toán số học:
Matlab có hai kiểu phép toán số học, đó là phép toán ma trận (matrix


arithmetic operation) và phép toán mảng (array arithmetic operation). Phép toán
ma trận được định nghĩa bởi các luật của đại số tuyến tính. Phép toán mảng được
thực hiện tương ứng từng phần tử, chẳng hạn phép nhân mảng hai ma trận A có
các phần tử là a(i,j) và B có các phần tử là b(i,j) được thực hiện bằng cách nhân
tương ứng từng phần tử của A và B:
c(i,j) = a(i,j)b(i,j)
Để phân biệt giữa phép toán ma trận và phép toán mảng người ta đưa thêm
vào
trước các toán tử một dấu chấm “.”.
Thứ tự ưu tiên trong phép toán số học:
Ngoặc đơn
Lũy thừa
Nhân, chia
Cộng, trừ
2.1.3.2 Các phép toán quan hệ và phép toán logic
a. Các phép toán quan hệ:
1.
2.
3.
4.

Các phép toán quan hệ bao gồm:
-

Nhỏ hơn:
Nhỏ hơn hoặc bằng:
Lớn hơn:
Lớn hơn hoặc bằng:
Bằng:


SVTH: CHU VĂN TUẤN

<
<=
>
>=
==
Page 12


Đồ án môn học Mô hình hóa mô phỏng
-

Không bằng (khác):

GVHD: Ths. LÊ QUỐC DŨNG

~=

Biểu thức có các toán tử quan hệ nhận gia trị đúng là (true) hoặc sai (false).
Trong Matlab, biểu thức đúng sẽ có giá trị là 1, biểu thức sai có gia trị là 0.
b. Các phép toán logic

Các phép toán logic và, hoặc, đảo được thực hiện bởi các toán tử sau:
-

Phép và( and): Ký hiệu là &

VD: phép & 2 ma trận cùng cỡ A, B là một ma trận có các phần tử bằng 1 nếu

các phần tử tương ứng của cả 2 ma trận đầu đều khác 0 và bằng 0 nếu 1 trong 2
phần tử tương ứng của 2 ma trận bằng 0.
>>A=[1 2 7; 0 4 9;1 3 5]; B=[0 2 4; 2 4 6; 3 0 7]; C=A&B
C=
0

1

1

0

1

1

1

0

1

-

Phép hoặc (or) : Ký hiệulà |

VD : phép or 2 ma trận cùng cỡ A,B là một ma trận có các phần tử bằng 0 nếu
các phần tử tương ứng của cả 2 ma trận đầu đều bằng 0 và bằng 1 nếu 1 trong 2
phần tử tương ứng của 2 ma trận khác 0.
>> A=[0 2 7; 0 4 9;1 3 0];

>> B=[0 2 4; 2 4 6; 3 0 0];
>> C=A | B
C=
0

1

1

1

1

1

1

1

0

-

Phép đảo( not): Ký hiệu là ~

Ví Dụ : phép đảo của một ma trận là một ma trận có cùng cỡ với các phần tử có
giá trị bằng 1 nếu các phần tử của ma trận đầu có giá trị bằng 0 và bằng 0 nếu
các phần tử của ma trận đầu có giá trị khác 0.
>> A=[0 2 7; 0 4 9;1 3 0]
>> B=~A

SVTH: CHU VĂN TUẤN

Page 13


Đồ án môn học Mô hình hóa mô phỏng

B=

1

0

0

1

0

0

GVHD: Ths. LÊ QUỐC DŨNG

1 0 1
2.1.3.3 Các ví dụ


Ví dụ 1: Giải phương trình bậc hai ax2 + bx + c = 0
Ta biết các nghiệm của ph-ơng trình này có dạng:
x=

Vì Matlab là một chương trình tính toán số nên chúng ta phải xác định các

giá trị a, b, c.
Dấu = được sử dụng để gán giá trị của a, b, c như sau ( gõ phím Enter ở cuối
mỗi hàng)
>>a = 2
a=
2
>>b = 5;
>>c = -3; %Dấu “;” ở cuối dòng thì Matlab sẽ không hiển thị lại giá trị vừa
nhập.
>> x1= (-b + sqrt(b^2- 4*a*c))/(2*a)
x1 =
0.5000
>> x2= (-b - sqrt(b^2- 4*a*c))/(2*a)
x2 =
-3


Ví dụ 2: Tính giá trị của đa thức.

>> a = x^3 - 2*x^2 - 6;
>>b = x^2 + 5*x -7;
>>x=3;
>> w = a/b
w=
0.1765

SVTH: CHU VĂN TUẤN


Page 14


Đồ án môn học Mô hình hóa mô phỏng
2.1.4

GVHD: Ths. LÊ QUỐC DŨNG

Số phức và các phép toán về số phức

Matlab chấp nhận số phức biểu thị bởi hàm đặc biệt i và j, cả hai là toán tử
và các hàm.
2.1.4.1 Biểu diễn số phức:
Tên = Phần thực + phần ảo i hoặc Tên = Phần thực + phần ảo j
Ví dụ:
>> a = 3 +4i ↵
2.1.4.2 Các phép toán đối với số phức:


Cộng, trừ, nhân số phức:

C1= a1 + b1i ; C2=a2 + b2i
Cộng : c1 + c2
Trừ : c1 - c2
Nhân: c1*c2
Chia: c1/c2
• Các hàm đặc biệt:
real(x) : tìm phần thực của số phức x.
imag(x): tìm phần ảo của số phức x.
conj(x): tìm số phức liên hợp của số phức x.

abs(x): Tìm giá trị tuyệt đối của số phức x ( độ lớn )
angle(x): góc tạo bởi giữa trục thực và ảo.
Ví dụ:
>> a =3.0000 + 4.0000i
a=
3.0000 + 4.0000i
>> thuc = real(a);
>> ao = imag(a);
>> lienhop = conj(a);
>> dolon = abs(a);
>> goc = angle(a);
2.1.5 Sử dụng các lệnh file lệnh (lập trình m-file)
Những lệnh của Matlab có thể được đưa vào một file. Sau đó bạn sẽ hướng
dẫn Matlab làm việc với các lệnh đó. Bây giờ, với ví dụ 1, chúng ta sẽ đưa toàn bộ
các lệnh trên vào một file lấy tên là vidu.m. Tên của file phải được bắt đầu bằng
một ký tự và phần mở rộng là .m. Các bước như sau:
Bước 1: File / New/ M-file, Môi trường soạn thảo Editor / Debugger sẽ xuất hiện
Bước 2: Trên màn hình soạn thảo, ta gõ các lệnh của Matlab.
a = 2;
b = 5;
c = -3;
x1= (-b + sqrt(b^2- 4*a*c))/(2*a)
x2= (-b - sqrt(b^2- 4*a*c))/(2*a)
Bước 3: Ghi lại nội dung tập tin với tên vidu.m rồi thoát khỏi môi trường soạn thảo
để trở về cửa sổ lệnh (Matlab Command window).
SVTH: CHU VĂN TUẤN

Page 15



Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Bước 4: Tại cửa sổ lệnh ta gõ tên tập tin.
>>vidu.m ↵
2.1.6 Cách tạo một hàm
Mỗi một file hàm của Matlab (M - file) đều được khai báo như sau:
Function [Tên kết quả] = tên hàm (danh sách các biến).
Phần thân của chương trình trong hàm là các lệnh của Matlab thực hiện việc tính
toán giá trị của đại lượng được nêu trong phần tên kết quả theo các biến được
nêu trong phần danh sách biến. Các biến chỉ có tác dụng nội trong hàm vừa
được khai báo. Tên của các biến được cách nhau bằnh dấu phẩy (,).
Ví dụ ta thành lập hàm đổi từ độ sang radian:
function rad = change(do)
rad = do*pi/180; % doi do sang radian
Trong Matlab các dòng ghi chú sau dấu % không có tác dụng thực thi, chúng
đơn giản là những dòng nhắc để người đọc chương trình dễ hiểu mà thôi.
File.m thường lấy tên là tên của hàm, ta đặt tên file hàm vừa lập là change.m.
Nếu muốn đổi 450
sang radian, chỉ cần gõ:
>>rad = change(45)
rad =
0.7854
Ví du: tạo hàm giải phương trình bậc hai, tên tập tin được đặt là bachai.m.
function [x1,x2] = bachai(a,b,c)
delta = b^2-4*a*c;
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b - sqrt(delta))/(2*a);
>>[x1,x2]=bachai1(4,6,-7)

x1 =
0.77707
x2 =
-2.2707
Cấu trúc câu lệnh điều kiện:
Lệnh if đơn:
2.1.7


SVTH: CHU VĂN TUẤN

Page 16


Đồ án môn học Mô hình hóa mô phỏng

Cú pháp:

GVHD: Ths. LÊ QUỐC DŨNG

if <biểu thức logic>
Nhóm lệnh;
end

Nếu biểu thức logic đúng nhóm lệnh sẽ đ]ợc thực hiện. Nếu biểu thức logic
sai thì ch]ơng trình chuyển đến lệnh sau end.
VD:
function y=f(a,b,c)
if adisp(' hinh thang nguoc')

end
y=(a+b)*c/2;
Sau đó ghi (save) vào file có tên là ht.m
Quay lại cửa sổ MatLab command Window, gõ vào dòng lệnh sau:
>> ht(2,4,2)
hinh thang nguoc
ans =
6


Cấu trúc lệnh if lồng nhau:

Cú pháp:

if <biểu thức logic1>
Nhóm lệnh 1;
if <biểu thức logic 2>
Nhóm lệnh 2;
end
Nhóm lệnh 3;
end
Nhóm lệnh 4;

Nếu biểu thức logic 1 đúng thì
-

Thực hiện nhóm lệnh 1.
Kiểm tra biểu thức logic 2.
Nếu đúng thực hiện nhóm lệnh 2
Nếu sai bỏ qua nhóm lệnh 2

Thực hiện nhóm lệnh 3.

SVTH: CHU VĂN TUẤN

Page 17


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Nếu biểu thức logic 1 sai thì
-

Thực hiện nhóm lệnh 4.

SVTH: CHU VĂN TUẤN

Page 18


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

2.2 Cơ sở về Simulink
2.2.1 Khởi động Simulink

Để có thể làm việc với Simulink, trước hết ta phải khởi động Matlab. Nếu
chạy dưới hệ điều hành Linux, sau khi thực hiện lệnh simulink ta sẽ thu được

cửa sổ thư viện của Simulink. Nếu làm việc dưới Windows, sau khi gọi simulink
ta có cửa sổ tra cứu thư viện như sau:

Các thư viện con Source (các khối nguồn tín hiệu), Sinks (các khối xuất tín
hiệu), Math (các khối ghép nối toán học) và Signals & Systems (các khối tín
hiệu và hệ con) sẽ được giới thiệu trong phạm vi chương này.
Tính chất của các khối chức năng
Tất cả các khối chức năng đều được xây dựng theo một mẫu giống nhau như
sau:
SVTH: CHU VĂN TUẤN

Page 19


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Mỗi khối có một hay nhiều đầu vào/ra (trừ trường hợp ngoại lệ: các khối
thuộc hai thư viện con Source và Sinks), có tên và ở trung tâm của hình khối chữ
nhật có biểu tượng thể hiện đặc điểm riêng của khối. Người sử dụng có thể tuỳ ý
thay đổi tên của khối (nháy kép phím chuột trái vào vị trí tên), tuy nhiên, mỗi
tên chỉ có thể sử dụng một lần duy nhất trong phạm vi cửa sổ mô hình mô
phỏng. Khi nháy kép phím chuột trái trực tiếp vào khối ta sẽ mở cửa sổ tham số
Block Parameters (trừ các khối Scope, Slider Gain, Subsystem) và có thể nhập
thủ công các tham số đặc trưng của khối. Khi nhập xong, nháy chuột trái vào nút
OK hay nút Apply để Simulink chấp nhận các tham số vừa nhập. Nếu nháy kép
phím chuột trái vào nút Help ta sẽ mở cửa sổ của tiện ích trợ giúp trực tuyến.
Nháy một lần phím chuột phải trực tiếp vào khối có tác dụng mở menu chứa các
lệnh cho phép soạn thảo và lập định dạng khối.

Simulink phân biệt hai loại khối chức năng: Khối ảo (vitural) và khối thực
(not vitural). Các khối thực đóng vai trò quyết định khi chạy mô phỏng mô hình
Simulink. Việc thêm hay bớt một khối thực sẽ thay đổi đặc tính động học của hệ
thống đang được mô hình Simulink mô tả. Có thể nêu nhiều ví dụ về khối thực
như: khối Sum hay khối Product của thư viện con Math. Ngược lại các khối ảo
không có khả năng thay đổi đặc tính của hệ thống, chúng chỉ có nhiệm vụ thay
đổi diện mạo đồ hoạ của mô hình Simulink. Đó chính là các khối như Mux,
Demux, hay Enable thuộc thư viện con Signal & System. Một số khối chức năng
mang đặc tính ảo hay thực tuỳ thuộc theo vị trí hay cách thức sử dụng chúng
trong mô hình Simulink.
Mô hình Simulink
Từ cửa sổ thư viện khối (Library) hay từ cửa sổ truy cập thư viện (Library
Browser) ta có thể tạo ra các cửa sổ mô phỏng mới bằng cách đi theo menu
File / New / Model, hoặc mở các File có sẵn qua menu File / Open. Một File
Simulink khi được cất giữ sẽ có đuôi .mdl.

SVTH: CHU VĂN TUẤN

Page 20


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Các thao tác cơ bản với Simulink
• Sao chép: Bằng cách gắp và thả “Drag & Drop” nhờ phím chuột phải là có
2.2.2

thẻ sao chép một khối từ thư viện con (cũng có thể từ một cửa sổ khác

ngoài thư viện).
• Di chuyển: Ta có thể dễ dàng di chuyển một khối trong phạm vi cửa sổ của


khối đó nhờ phím chuột trái.
Đánh dấu: Bằng cách nháy phím chuột trái vào khối ta có thể đánh dấu, lựa

chọn từng khối, hoặc kéo chuột đánh dấu nhiều khối một lúc
• Xóa: có thể xóa các khối và các đường nối đã bị đánh dấu bằng cách gọi
lệnh menu Edit / Clear. Bằng menu Edit / Undo hoặc tổ hợp phím Ctrl+Z ta
có thể cứu vãn lại động tác xóa vừa thực hiện.
• Hệ thống con: Bằng cách đánh dấu nhiều khối có quan hệ chức năng, sau
đó gom chúng lại thông qua menu Edit / Create Subsystem, ta có thể tạo ra
một hệ thống con mới.
• Nối hai khối: Dùng phím chuột trái nháy vào đầu ra của một khối, sau đó di
mũi tên của chuột tới đầu vào cần nối. Sau khu thả ngón tay khỏi phím
chuột, đường nối tự động được tạo ra. Có thể rẽ nhánh tín hiệu bằng cách
nháy phím chuột phải vào một đường nối có sẵn và kéo đường nối mới xuất
hiện tới đầu vào cần nối.
• Di chuyển đường nối: Để lưu đồ tín hiệu thoáng và dễ theo dõi, nhiều khi ta
phải di chuyển, bố trí lại vị trí các đường nối. Khi nháy chọn bằng chuột trái
ta có thể di chuyển tuỳ ý các điểm góc hoặc di chuyển song song từng đoạn


thẳng của đường nối.
Tạo vector đường nối: Để dễ phân biệt giữa đường nối đơn và đường nối
các tín hiệu theo định dạng vector, hoặc ma trận, hoặc mảng, ta có thể chọn




menu Format / Wide nonscalar lines để tăng bề dầy của đường nối.
Chỉ thị kích cỡ và dạng dữ liệu của tín hiệu: Lệnh chọn qua menu Format /
Signal dimensions sẽ hiện thị kích cỡ của tín hiệu đi qua đường nối. Lệnh
menu Format / Port data types chỉ thị thêm loại dữ liệu của tín hiệu qua

đường nối.
• Định dạng cho một khối: Sau khi nháy phím chuột phải vào một khối, cửa
sổ định dạng khối sẽ mở ra. Tại mục Format ta có thể lựa chọn kiểu và kích
cỡ chữ, cũng như vị trí của tên khối, có thể lật hoặc xoay khối. Hai mục
Foreground Color và Background Color cho phép ta đặt chế độ mầu bao
SVTH: CHU VĂN TUẤN

Page 21


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

quang cũng như mầu nền của khối.
• Định dạng cho đường nối: Sau khi nháy phím chuột phải vào một đường
nối, cửa sổ định dạng đường sẽ mở ra. Tại đây có các lệnh cho phép cắt bỏ,
chép hoặc xoá đường nối.
• Hộp đối thoại về đặc tính của khối: Hoặc đi theo menu của cửa sổ mô
phỏng Edit / Block Properties, hoặc chọn mục Block Properties của cửa sổ
định dạng khối, ta sẽ thu được hộp đối thoại cho phép đặt một vài tham số
tổng quát về đặc tính của khối.
• Hộp đối thoại về đặc tính của tín hiệu: Có thể tới được hộp thoại Signal
Properties của một đường nối hoặc bằng cách nháy chuột đánh dấu đường
nối trên cửa sổ mô phỏng, sau đó đi theo menu Edit / Signal Properties từ

cửa sổ định dạng đường. Trong hộp đối thoại ta có thể đặt tên cho đường
nối một cách đơn giản hơn: Nháy kép phím chuột trái vào đường nối ta sẽ
tự động tới được chế độ nhập văn bản.
2.2.3 Tín hiệu và các loại dữ liệu
2.2.3.1 Làm việc với tín hiệu
Trong Simulink ta phân biệt ba loại kích cỡ tín hiệu:
• Tín hiệu đơn.
• Vector tín hiệu: Còn được gọi là tín hiệu 1-D, vì kích cỡ của tín hiệu
chỉ được xác định theo một chiều với độ dài n.
Ma trận tín hiệu: Còn được gọi là tín hiệu 2-D, vì kích cỡ của tín hiệu được
xác định theo hai chiều [m×n]. Cả vector hàng [1×n] và vector cột [m×1] cũng
thuộc về phạm trù ma trận tín hiệu.
Khi tạo Simulink, các khối ảo sẽ tạo nên các đường tín hiệu ảo, duy nhất
nhằm mục đích làm cho sơ đồ cấu trúc trở nên đỡ rối mắt, người sử dụng dễ
quản lý hơn. Tín hiệu ảo có thể được 51hem51à sự tập hợp hình ảnh của nhiều
tín hiệu ảo, không ảo, hay hỗn hợp cả hai loại. Trong quá trình mô phỏng,
Simulink sử dụng một thủ tục tên signal propagation để nhận biết: Những tín
hiệu thực nào được ghép vào 51hem tín hiệu ảo.

SVTH: CHU VĂN TUẤN

Page 22


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Đối với các tín hiệu ảo ta có thể mở hộp thoại Signal Properties và khai
chọn Show propagated signals. Sauk hi khai chọn tên của tín hiệu sẽ tự động

được bổ sung 51hem phần trong ngoặc < >, cho biết các tín hiệu chứa trong đó.
Bus tín hiệu là tập hợp các tín hiệu ảo riêng rẽ. Khi tách Bus bởi bộ phận phân
kênh Demux ta sẽ không thể truy cập vào từng phần tử của mỗi tín hiệu, mà chỉ
có thể truy cập vào từng tín hiệu.
2.2.3.2 Làm việc với các loại số liệu

Bên cạnh các đặc điểm đã được giới thiệu, mỗi tín hiệu thuộc sơ đồ cấu trúc
Simulink đều được gán một loại số liệu nhất định, và do đó quyết định đến
dung lượng bộ nhớ dành cho một tín hiệu. Simulink cũng hỗ trợ tất cả các loại
số liệu của Matlab.
• double: chính xác cao, dấu phẩy động.
• single: chính xác vừa, dấu phẩy động.
• int8, uint8, int16, uint16, int32, uint32: số nguyên 8-, 16- hay 32bit có / không có dấu.
• 52oolean: biến logic 0 hoặc 1.
Loại số liệu mặc định sẵn của Simulink là double. Trong quá trình mô
phỏng, Simulink sẽ kiểm tra xem việc đảo giữa các loại số liệu có đúng hay
không, nhằm loại trừ các kết quả sai lầm có thể xảy ra.
Khả năng khai báo, xác định loại số liệu của tín hiệu cũng như của tham số
thuộc các khối chức năng trong Simulink là đặc biệt có ý nghĩa, nếu ta dự định
tạo ra từ mô hình Simulink mã chạy cho các ứng dụng thời gian thực. Nhu cầu
về bộ nhớ và tốc độ tính toán phụ thuộc vào loại số liệu được ta chọn.
2.2.4 Thư viện của Simulink
Thư viện Sources

Trong thư viện này bao gồm các nguồn phát tín hiệu, các khối cho phép nhập
số liệu từ một file hay từ Matlab Workspace. Sau đây ta lần lượt điểm qua ý
nghĩa từng khối
SVTH: CHU VĂN TUẤN

Page 23



Đồ án môn học Mô hình hóa mô phỏng
-

GVHD: Ths. LÊ QUỐC DŨNG

Constant: Khối này tạo nên một hằng số (không phụ thuộc vào thời gian)
thực hoặc phức. Hằng số đó có thể là vector hay ma trận…ta có thể khai
báo tham số constant value là vector hàng hay cột với kích cỡ [n1] hay
[1n] dưới dạng ma trận.

-

Step và Ramp: Nhờ hai khối này ta có thể tạo ra tín hiệu dạng bậc thang
hay dạng dốc tuyến tính dùng để kích thích các mô hình Simulink. Trong
hộp thoại Block Parameters của khối Step ta có thể khai báo giá trị đầu –
giá trị cuối và cả thời điểm bắt đầu của tín hiệu bước nhảy. Đối với Ramp
ta có thể khai báo độ dốc, thời điểm mà giá trị xuất phát của tín hiệu đầu
ra. Chú ý 2 khối Step và Ramp không chỉ tạo ra một tín hiệu mà có thể
tạo ra một tập các tín hiệu được xử lý dưới dạng vector hoặc ma trận.

-

Signal Generator và Pulse Generator: Nhờ signal Generator ta tạo ra
các dạng tín iệu kích thích khác nhau.

Cung cấp cho 4 dạng sóng khác nhau (giống như máy phát sóng):
+ Sóng sin.
+ Sóng vuông (square).

+ Sóng răng cưa (sawtooth).
+ Sóng ngẫu nhiên (random).

SVTH: CHU VĂN TUẤN

Page 24


Đồ án môn học Mô hình hóa mô phỏng

GVHD: Ths. LÊ QUỐC DŨNG

Với Pluse Generator tạo chuỗi xung hình chữ nhật. Biên độ và tần số có thể khai
báo tùy ý. Đối với Pluse Generator ta còn có khả năng chọn tỉ lệ cho độ rộng
xung (tính bằng phần trăm cho cả chu kỳ).
-

Repeating Sequence: Khối này cho phép ta tạo nên một tín hiệu tuần
hoàn tùy ý. Tham số Time Value phải là một vector thời gian với các giá
trị đơn điệu tăng. Vector biến ra Output Value phải có kích cỡ chiều dài
phù hợp với chiều dài của tham số Time Value. Giá trị lớn nhất của vector
thời gian quyết định chu kỳ lặp lại của vector biến ra.

-

Sine Wave: Khối này được sử dụng để tạo tín hiệu hình sin cho cả 2 loại
mô hình liên tục (tham số Sample Time = 0) và gián đoạn (tham số
Sample Time = 1)

SVTH: CHU VĂN TUẤN


Page 25


×