Bài giảng Mô phỏng và mô hình hóa
MỤC LỤC
MỤC LỤC . 2
CHƯƠNG I . 4
GIỚI THIỆU KIẾN THỨC MÔ PHỎNG . 4
1.1. Một số định nghĩa cơbản . 4
1.2. Mô hình hóa hệthống. 5
1.2.1. Vai trò của phương pháp mô hình hóa hệthống. 5
1.2.2. Phân loại mô hình hóa hệthống . 7
1.3. Phương pháp mô phỏng. 9
1.3.1. Sơ đồkhối. 9
1.3.2. Bản chất của phương pháp mô phỏng . 10
1.3.3. Các bước nghiên cứu mô phỏng . 13
1.3.4 Một sốmôi trường mô phỏng thường gặp. 15
CHƯƠNG II. 16
MÔI TRƯỜNG MATLAB VÀ CÁCH LẬP TRÌNH. 16
2.1 Giới thiệu môi trường làm việc Matlab . 16
2.2 Các hàm toán . 16
2.3 Tính toán với vector và ma trận. 17
2.3.1. Khai báo vector và ma trận. 17
2.3.2. Tính toán với vector và ma trận. 20
2.4 Các phép so sánh và phép toán Logic . 23
2.5 Biến, cấu trúc và trường . 24
2.5.1. Biến . 24
2.5.2. Cấu trúc . 25
2.5.3. Trường. 28
2.6 Quản lý biến . 29
2.7 Rẽnhánh và vòng lặp . 31
2.7.1 Lệnh rẽnhánh if và switch . 31
2.7.2 Vòng lặp for và while . 31
2.7.3 Gián đoạn bằng continue và break . 32
2.8 Các scripts và các hàm của Matlab. 34
2.8.1. Các scripts của Matlab. 34
3
2.8.2. Các hàm của Matlab . 35
2.9 Nhập xuất dữliệu . 36
CHƯƠNG III . 37
ĐỒHỌA TRONG MATLAB. 37
3.1 Cơsở đồhoạMatlab . 37
3.2 Đồhoạ2 chiều. 39
3.3 Đồhoạ3 chiều. 42
3.3.1 Các lệnh Plots . 42
3.3.2 Phối cảnh trong đồhoạ3-D. 44
3.3.3 Nhập, xuất và in đồhoạ . 44
CHƯƠNG IV . 46
CƠSỞSIMULINK . 46
4.1 Khởi động Simulink . 46
4.2 Các thao tác cơbản với Simulink. 48
4.3 Tín hiệu và các loại dữliệu . 50
4.3.1 Làm việc với tín hiệu. 50
4.3.2 Làm việc với các loại sốliệu . 51
4.4 Thưviện Sources và Sinks . 52
4.4.1 Thưviện Sources. 52
4.4.2 Thưviện Sinks. 58
4.5 Thưviện Math . 60
4.6 Khai báo tham sốvà phương pháp tích phân chuẩn bịcho mô phỏng. . 63
4.6.1 Khởi động và ngừng mô phỏng . 66
4.6.2 Xửlý lỗi. 68
4.6.3 Tập hợp các tham sốtrong Script cửa Matlab. 68
4.6.4 In mô hình Simulink. 69
4.7 Hệthống con (Sub system). 70
4.7.1 Tạo hệthống con . 70
4.7.2 Thưviện signals và Subsystem . 71
4.7.3 Kích hoạt có điều kiện các hệthồng con . 74
ram(0, ‘CallbackTracing’, ‘on’) Lệnh đó sẽ buộc Simulink phải liệt kê toàn bộ các thủ tục Callback tại cửa sổ Command khi chúng được gọi. Để biệt 69hem về lệnh set_param và Callback Routines ta gọi lệnh help set_param. 4.6.4 In mô hình Simulink Cũng giống như đồ hoạ Matlab, ta có thể xuất mô hình Simulink dưới các dạng khác nhau. Bằng lệnh print –smodel ta sẽ xuất mô hình có tên model ra máy 70 in. Tuy nhiên, nếu in qua menu File/Print ta sẽ có nhiều khả năng khai báo tham số in hơn. Ví dụ: Chỉ in một tầng mô hình nhất định. Trước khi in ta nên chuyển tham số Paper type về khổ A4, vì một vài máy in có vấn đề khi in theo khổ usletter. Có thể làm điều đó từ cửa sổ Command của Matlab Set(gcf, ‘PaperType’, ‘A4’) Việc in mô hình Simulink thành File được thực hiện tương tự như đồ hoạ Matlab: Print –smodel; Print –smodel –dmeta model; Print –smodel –deps model; 4.7 Hệ thống con (Sub system) 4.7.1 Tạo hệ thống con Có hai cách để tạo hệ thống con: • Cách 1: Dùng chuột đánh dấu tất cả các khối mà ta muốn gom lại với nhau. Cần chú ý đánh dấu cả các đường tín hiệu kèm theo. Sau đó chọn Create Subsystem thuộc menu Edit. Các khối bị đánh dấu sẽ được Simulink thay thế bởi một khối Subsystem. Khi nháy chuột kép vào khối mới, cửa sổ có tên của khối mới sẽ mở ra. Các tín hiệu vào / ra của hệ con sẽ được tự động ghép với hệ thống mẹ bởi các khối Inport và Outport. • Cách 2: Dùng khối Subsystem có sẵn của thư viện Signals & Systems. Sau khi gắp khối đó sang mô hình hệ thống đang mở, ta nháy chuột kép vào khối để mở cửa sổ của khối và lần lượt gắp các khối cần thiết để tạo thành hệ thống con. Việc ghép nối với hệ thống mẹ phải được chủ động thực hiện bằng tay nhờ các khối Inport và Outport. Đây là cách đi ngược với cách 1: Ta lần lượt tạo các hệ thống con (bắt đầu từ tầng thấp nhất), sau đó nối các hệ thống con để tạo thành hệ thống mẹ (tầng cấp trên trực tiếp). 71 4.7.2 Thư viện signals và Subsystem Subsystem Khối Subsystem được sử dụng để tạo hệ thống con trong khuôn khổ của một mô hình Simulink. Việc ghép với mô hình thuộc các tầng ghép trên được thực hiện nhờ khối Inport và Outport. Số lượng đầu vào / ra của khối Subsystem phụ thuộc số lượng khối Inport và Outport. Đầu vào / ra của khối Subsystem sẽ được đặt theo tên mặc định của các khối Inport và Outport. Nếu chọn Format / Hide Port Labels trên menu cửa sổ khối Subsystem, ta có thể ngăn chặn được cách đặt tên kể trên và chủ động đặt cho Inport và Outport các tên phù hợp với ý nghĩa của chúng. Inport và Outport Inport và Outport là các khối đầu vào, đầu ra của một mô hình mô phỏng. Tại hộp thoại Block Parameters ta có thể điền vào ô Port number số thứ tự của khối. Simulink tự động đánh số các khối Inport và Outport một cách độc lập với nhau, bắt đầu từ 1. Khi ta bổ sung thêm khối Inport hay Outport, khối mới sẽ nhận số thứ tự kế tiếp. Khi xoá một khối nào đó, các khối còn lại sẽ tự động đánh số mới. Trong hộp thoại Block Parameters của Inport, ta còn có ô Port with dùng để khai báo bề rộng của tín hiệu vào. Khi ghép một tín hiệu có bề rộng lớn hoặc bé hơn bề rộng đã khai báo với Inport, ngay lập tức Simulink báo lỗi. Cần lưu tâm tới một vài tham số quan trọng khác của khối Outport. Ví dụ, Outport when disabled cho hệ thống cần xử lý tín hiệu ra như thế nào khi hệ thống mô phỏng đang ngừng không chạy (xoá về không hay giữ nguyên giá trị cuối cùng). Initial Output cho biết giá trị cần lập cho đầu ra. 72 Thông qua các khối Inport và Outport thuộc tầng trên cùng (chứ không phải thuộc các hệ thống con), ta có thể cất vào hay lấy số liệu ra khỏi môi trường Workspace. Để làm điều đó ta phải kích hoạt các ô Input và Output ở trang Workspace I/O của hộp thoại Simulation Parameters và khai báo tên của các biến cần lấy số liệu vào, hay tên của các biến mà ta sẽ gửi số liệu tới Enable và Trigger Hai phần tử Enable và Trigger nhằm mục đích tạo cho các hệ con Subsystem khả năng khởi động có điều kiện. Trong một hệ thống con chỉ có thể sử dụng một khối Enable và Trigger. Khi được gán một trong hai khối đó, tại khối Subsystem sẽ xuất hiện thêm một đầu vào điều khiển đặc biệt, nơi mà tín hiệu Enable hay Trigger được đưa tới. Các hệ con có khối Enable được gọi là hệ cho phép. Hệ con đó sẽ được kích hoạt tại những bước tích phân có phát ra tín hiệu Enable với giá trị dương. Tham số States when enabling cho biết cần đặt giá trị ban đầu cho biến trạng thái như thế nào trước khi được kích hoạt. Tham số Show output port gán cho khối Enable thêm một đầu ra, tạo điều kiện xử lý hay sử dụng tiếp tín hiệu Enable. Các hệ con có khối Trigger gọi là hệ được kích hoạt bằng xung. Việc kích hoạt xảy ra tại sườn dương (Trigger type: rising), hay sườn âm (Trigger type: falling), hay cả hai sườn (either) của xung kích hoạt. Nếu Trigger type được chọn là function-call, ta có cơ hội chủ động tạo xung kích hoạt nhờ một S-function do ta tự viết. Các khối Enable và Trigger là khối ảo có điều kiện. Mux và Demux 73 Khối Mux có tác dụng giống như một bộ chập kênh, có tác dụng chập các tín hiệu 1-D riêng rẽ thành một vector tín hiệu mới. Nếu như một trong số các tín hiệu riêng rẽ là 2-D, khi ấy ta chỉ có thể tập hợp các tín hiệu riêng rẽ thành Bus tín hiệu. Tại ô tham số Number of inputs ta có thể khai báo tên, kích cỡ và số lượng tín hiệu vào. Ví dụ, viết [4 3 -1] nghĩa là có tất cả 3 đầu vào, đầu vào thứ nhất có bề rộng là 4, đầu vào thứ hai có bề rộng là 3, còn đầu vào thứ ba chưa xác định vì giá trị khai là -1. Khối Demux có tác dụng ngược lại với Mux: Tách các tín hiệu được chập từ nhiều tín hiệu riêng rẽ trở lại thành các tín hiệu riêng rẽ mới. Khối Demux làm việc hoặc theo chế độ vector (Bus selection mode = off) hoặc theo chế độ chọn Bus (Bus selection mode = on). Ở chế độ vector, Demux chỉ chấp nhận tín hiệu 1-D ở đầu vào và sẽ tách tín hiệu 1-D đó thành các tín hiệu riêng rẽ như đã khai báo tại Number of outputs. Tham số Number of outputs có thể được khai báo dưới dạng một số nguyên >1 hay dưới dạng một vecter hàng, việc tách các phần tử của tín hiệu vào và phân chia các phần tử đó thành các tín hiệu ra hoàn toàn phụ thuộc vào bề rộng tín hiệu vào, số lượng và bề rộng của tín hiệu ra mà ta khai báo. Khi chọn chế độ Bus selection, Demux chỉ chấp nhận Bus tín hiệu ở đầu vào của khối. Mux và Demux luôn luôn là ảo. Bus Selector và Selector 74 Các tín hiệu do khối Mux chập lại, có thể được tách ra không chỉ bằng khối Demux. Ta có thể sử dụng khối Bus Selector để tái tạo lại các tín hiệu từ một Bus tín hiệu, đồng thời gom chúng lại thành các tín hiệu riêng rẽ ban đầu. Tại hộp thoại Block Parameters của khối Bus Selector trong ô Signals in the bus ta có thể thấy danh sách liệt kê tất cả các tín hiệu nằm trong Bus. Nhấn nút Select >> ta có thể chọn những tín hiệu mà ta cần tách ra khỏi Bus và gom lại như ban đầu. Khối Selector cho ta khả năng lựa chọn linh hoạt hơn Bus Selector: Khả năng tách ra khỏi Bus tín hiệu 1-D hay 2-D các phần tử riêng lẻ rồi sau đó gom chúng lại thành một tín hiệu 1-D hay 2-D mới. Hit Crossing Khối Hit Crossing có tác dụng phát hiện thời điểm tín hiệu đầu vào đi qua giá trị khai tại Hit Crossing offset theo hướng khai tại Hit Crossing direction. Nếu ta chọn Show output port, tại thời điểm Crossing đầu ra sẽ nhận giá trị 1, còn lại là 0. Nếu tại trang Advanced của hộp thoại Simulation Parameters ta đặt Boolean logic signals = off, tín hiệu ra sẽ là double, ngoài ra là boolean. IC Khối IC có tác dụng gán cho tín hiệu ra của khối một điều kiện ban đầu nhất định. 4.7.3 Kích hoạt có điều kiện các hệ thồng con 75 Các hệ thống con có chứa khối Enable hay Trigger gọi là các hệ cho phép kích hoạt hay hệ kích hoạt bằng xung. Việc kích hoạt hệ con hoàn toàn do tín hiệu điều khiển tương ứng xác định. Như ví dụ dưới đây cho thấy, khi gán khối Enable hay Trigger cho một hệ con, hệ đó sẽ tự động có thêm một đầu vào giành cho tín hiệu điều khiển. Ví dụ tiếp theo giải thích rõ hơn nữa cách sử dụng khối Enable. Hai tín hiệu hình sin có cùng biên độ và tần số được đưa tới một Subsystem. Tín hiệu sin thứ nhất được đưa tới đầu vào Enable, tín hiệu sin thứ hai được đưa tới đầu vào In1 của hệ con. Bên trong hệ con, tín hiệu của In1 được nhân với tín hiệu ra của khối Enable. Tín hiệu đầu ra của khối Product và của khối Enable được chập kênh, đưa tới khối Scope và cất vào Workspace dưới định dạng Array để sau đó plot thành đồ thị. 76 Sau khi chạy enable1.mdl, để thu được đồ thị trên ta cần thực hiện các dòng lệnh sau: >> plot(tout,simout(:,1),'r-.',tout,simout(:,2),'g-'); >> legen('Signal Enable','Signal Enable x Sinus'); Ví dụ tiếp theo sẽ minh hoạ tác dụng của khối Trigger. Trong sơ đồ mô phỏng: Hai tín hiệu hình sin có tần số khác nhau được đưa tới một hệ con. Khối Sine Wave thứ hai chỉ được đưa tượng trưng qua hệ con. Ba tín hiệu Trigger, tín hiệu ra của Subsystem và Sine Wave thứ hai được đưa tới Scope. Tượng tự ví dụ trên, cả ba tín hiệu được plot để ta so sánh. Tuy nhiên tham số của khối Trigger đã được đặt vào either, nghĩa là: Hệ con được kích hoạt bằng cả hai sườn lên và xuống của xung kích hoạt. 77 Sau khi chạy trigger1.mdl, tức là khi: Kết quả mô phỏng đã được cất vào Workspace, ta thực hiện chum lệnh dưới đây để thu được đồ thị như hình trên. >> plot(tout,simout(:,1),'r-.',tout,simout(:,2),'g-'); >> legend('Trigger Signal','Out1 Signal','Sinus Signal'); 78 TÀI LIỆU THAM KHẢO [1] Angermann, A.; Beuschel, M.; Rau, M.; Wohlfarth, U.: Simulation mit SIMULINK/MATLAB: Skriptum mit Ubungsaufgaben. Stand: 29. November 2001, TU munchen: [2] Bishop, R. H.: Modern control systems analysis and disign using MATLAB. Addison - Wesley, 1993. [3] Nguyễn Phùng Quang MATLAB & SIMULINK dành cho kỹ sư điều khiển tự động - Nhà xuất bản khoa học và kỹ thuật.
File đính kèm:
- Bài giảng Mô phòng và mô hình hóa.pdf