Trong chương trình học của sinh viên ĐH Bách khoa thì phần mềm không thể thiếu là Matlab.Nó giúp chúng ta tối ưu hoá trong việc tính toán, vẽ hình và mô phỏng các quá trình công nghệ.Vì
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 2
CHƯƠNG I: TỔNG QUAN 3
1.1 Giới thiệu chung về Matlab 3
1.2 Giới thiệu về Simulink 4
1.3 Giới thiệu về giao diện GUI 6
CHƯƠNG 2: MÔ HÌNH HÓA ĐỐI TƯỢNG 11
2.1 Phân tích hệ thống bình nhiệt và nhận biết các biến quá trình 11
2.2 Xây dựng các phương trình mô hình cho bình nhiệt 12
2.3 Phân tích cơ cấu chấp hành 14
2.4 Phương trình vi phân hệ thống 15
CHƯƠNG 3: XÂY DỰNG TOOLBOX 16
3.1 Giới thiệu về hàm S-function và cách xây dựng hàm bằng C-mex-file 16
3.2 Xây dựng khối mô hình thí nghiệm 21
3.2.1 Sử dụng khối SubSystem 21
3.1.2 Sử dụng khối S-function 24
3.1.3 Sử dụng khối S-function với khối Subsystem 29
3.1.4 Tạo file nguồn 30
3.2 Mô phỏng kiểm chứng 34
3 3 Xây dựng khối giao diện GUI 36
3.3.1 Xây dựng khối Tank-GUI 36
3.3.2 Xây dựng giao diện GUI 37
CHƯƠNG 4: ĐÁNH GIÁ VÀ KẾT LUẬN 41
4.1 Đánh giá 41
4.2 Kết luận 42
TÀI LIỆU THAM KHẢO 43
Trang 2LỜI NÓI ĐẦU
Trong những năm gần đây khoa học công nghệ phát triển hết sức nhanh chóng, đặc biệt là trong lĩnh vực và truyền thông, tin học ứng dụng… Máy tính càng trở nên phổ biến và thiết yếu đối với mọi người nhất là sinh viên Trong chương trình học của sinh viên ĐH Bách khoa thì phần mềm không thể thiếu là Matlab.Nó giúp chúng ta tối ưu hoá trong việc tính toán, vẽ hình và mô phỏng các quá trình công nghệ.Vì thế hiểu và ứng dụng Matlab trong học tập giúp chúng ta rất nhiều
Đồ án II bọn em được giao là “Ứng dụng Matlab và Simulink vào xây dựng bài toán điều khiển nhiệt độ” Đề tài này rất mới và thú vị Nó giúp chúng em ôn lại và ứng dụng những kiến thức vừa học như điều khiển quá trình, lý thuyết điều khiển vào thực tiễn mà còn giúp chúng em hiểu biết rất nhiều thêm về Matlab và Simulink
Chúng em xin trân trọng cảm ơn Thầy giáo Đặng Văn Mỹ, Thầy đã tận tính hướng dẫn chúng em từng điều nhỏ nhất để chúng em tạo ra sản phẩm cuối cùng Sản phẩm làm ra chắc chắn sẽ có những điểm yếu, cũng như báo cáo này chắc chắn không thể tránh khỏi sai sót, mong các thầy cô cũng như các bạn có những góp ý để sản phẩm của nhóm hoàn thiện hơn
Các thành viên của nhóm:
Trần Đình Thiêm
Phạm Quang Việt
Trang 3CHƯƠNG I: TỔNG QUAN
1.1 Giới thiệu chung về Matlab
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, 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, v.v 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
Có thể nói Matlab là ngôn ngữ của kỹ thuật, đang được rất nhiều các nhà khoa học, các cán bộ kỹ thuật, giảng viên và sinh viên các trường đại học kỹ thuật ứng dùng 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
- Thiết kế các hệ thống điều khiển trong thời gian thực
Matlab cung cấp một họ các phương pháp theo hướng chuyên dụng hóa đượ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 hặc C-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ạng nơron, 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, từ các ứng dụng đơn giản đến các ứng dụng phức tạp
- Môi trường làm việc của 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
Trang 4gồ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ý đồ họa: Đây là một hệ thống đồ họa của Matlab Nó bao gồm các lệnh cao cấp cho trực quan hóa 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 tùy biến giao diện đồ họa cũng như
đi xây dựng một giao diện đồ họa hoàn chỉnh cho ứng dụng Matlab của mình
- Thư viện toán học Matlab: Đây là một 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, trừ, nhân, chia, sin, cos, tang, 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
1.2 Giới thiệu về Simulink
Simulink là 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 đồ họa sử dụng chuột để thao tác cho phép mô hình hóa 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, phi tuyến, hệ thống liên tục theo thời gian, hệ thống gián đoạn theo thời gian, hệ thống đa biến Ngoài ra chúng ta có thể tự lập trình để tạo ra những khối riêng theo mong muốn thông qua S-fuction
Đối với các hệ thống phức tạp, phi tuyến, ngẫu nhiên, các tham số biến đổitheo thời gian, phương pháp giải tích truyền thống không thể cho ta lời giải chính xác được Lúc này, phương pháp mô hình hóa và mô phỏng phát huy thế mạnh của mình và trong nhiều trường hợp nó là giải pháp duy nhất để nghiên cứu các hệ thống phức tạp
Sau khi đã xây dựng mô hình của hệ thống cần nghiên cứu , bằng cách ghép các khối cần thiết thành sơ đồ cấu trúc của hệ, ta có thể khởi động quá trình mô phỏng Trong quá trình mô phỏng ta có thể trích tín hiệu tại bất kỳ vị trí nào của sơ đồ quá trình cấu trúc và hiển thị đặc tính của nó trên màn hình Hơn thế nữa nếu có nhu cầu ta
Trang 5của các khối cũng có thể thực hiệnđơn giản bằng cách nhập trực tiếp hoặc thông qua
Matlab Để khảo sát hệ thống ta có thể sử dụng thêm các toolbox như Signal Processing (xử lý tín hiệu), Optimization( tối ưu) hay Control System ( hệ thống điều
khiển)
Mỗi khối có 1 hay nhiều đầu vào/ra (trừ TH các khối Sources và Sinks), có tên và
ở trung tâm của hình khối chữ nhật có biểu tượng (hàm truyền đạt, đồ thị đặc tính hay tên file) 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 tuy nhiên mỗi tên chỉ có thể sử dụng 1 lần duy nhất trong phạmvi cửa sổ mô
phỏng Khi nháy kép phím chuột trái trực tiếp các khối ta sẽ mở cửa sổ tham số Block Parameter và có thể nhập thủ công các tham số đặc trưng của khối Nháy kép phím chuột trái vào nút Help ta sẽ mử cửa sổ tiện ích giúp trực tuyến
SIMULINK phân biệt 2 loại khối chức năng: Khối ảo và khối thực Các khối
thực đóng vai trò quyết định khi chạy mô phỏng SIMULINK Việc thêm hay bớt 1 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 rất nhiều VD như: khối tích phân Intergrator hay khối hàm truyền
đạt Transfer Fcn… 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 giao diện đồ hoạ của mô hình Đó là các khối
như Mux, Demux hay Enable
Ngoài ra SIMULINK cũng chia làm các thư viện con:
• Sources ( các khối nguồn TH)
• Sinks ( các khối xuất TH)
• Math ( các khối toán học)
• Signal & System ( các khối TH và hệ con)
• Continuos ( các khối liên tục)
• Nonlinear ( các khối phi tuyến )
• Function & Table
• Dicrete ( các khối gián đoạn)
Trong SIMULINK phần được ứng dụng nhiều nhất trong xây dựng bài toán là function Khối S-function được tạo điều kiện để người ta ghép hàm S (s-function) hoặc
S-viết dưới dạng MATLAB Script (m-file) hoặc dưới dạng MATLAB Excuteable File (
C-mex-file, ngôn ngữ C) vào một sơ đồ khối SIMULINK Ngoài ra ta có thể chuyển thêm cho S-function 1 số tham số tại ô S-funcion parameters.Ưu điểm của S-function
Trang 6viết bằng c-file là khả năng truy cập vào phần cứng điều không thể thực hiện với file Thêm vào đó S-fuction viết bằng C-mex-file sẽ tăng tốc độ tính toán lên rất nhiều
m-cho phép ta rút ngắn thời gian mô phỏng những hệ thống lớn- phức tạp Vì thế trong
bài toán này chúng em sẽ sử dụng c-mex-file cho khối S-function để xây dựng bài toán
1.3 Giới thiệu về giao diện GUI
Một giao diện đồ hoạ người dùng (GUI- Graphic users interface) là một màn hình hiển thị đồ họa trong một hoặc nhiều cửa sổ bao gồm phần điều khiển và các
bộ phận cấu thành, nó cho phép người dùng thực hiện nhiệm vụ tương tác Người sử dụng của giao diện không cần phải tạo ra một mã hay gõ lệnh để thực hiện các nhiệm vụ Không giống như mã hóa chương trình để thực hiện nhiệm vụ, người sử dụng một giao diện không cần phải hiểu được chi tiết như thế nào nhiệm vụ được thực hiện
Các bước xây dựng giao diện Guide đơn giản
• Bước 1: gõ lệnh sau vào Command Window hoặc nhấn vào nút trên thanh công cụ, hộp thoại xuất hiện
Hinh 1.1: Cửa sổ GUIDE Quick Start
Trang 7mẫu sau:
Create New GUI: Tạo một hộp thoại GUI mới theo một trong các loại sau
+ Blank GUI (Default): Hộp thoại GUI trống không có một điều khiển
+Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No
Open Existing GUI: mở một project có sẵn
• Bước 2: Cửa sổ GUI hiện ra
Hình 1.2: Cửa sổ giao diện GUI
Giao diện rất giống với các chương trình lập trình giao diện như Visual Basic, Visual C++, ta di chuột qua các biểu tượng ở bên trái sẽ thấy tên của các điều khiển Xin nói qua một vài điều khiển hay dùng:
+ Push Button: giống như nút Command Button trong VB Là các nút bấm
như nút OK, Cancel mà ta vẫn bấm
+ Slider : Thanh trượt có một con trượt chạy trên đó
Trang 8+ Radio Button : Nút nhỏ hình tròn để chọn lựa
Còn menu thì quan trọng nhất là menu Tools có:
Run (Ctr + T) : nhấn vào để chạy chương trình mà ta đã viết Có lỗi là hiện
ra ngay
Align Object: dùng để làm cho các điều khiển sắp xếp gọn đẹp theo ý mình
như cùng căn lề bên trái,
Grid and Rulers : dùng để cấu hình về lưới trong giao diện vì nó sẽ coi giao
diện như một ma trận các ô vuông nhỏ, ta sẽ thay đổi giá trị này để cho các điều khiển có thể thả ở đâu tùy ý cho đẹp
Menu Editor : trình này để tạo menu cho điều khiển
Tab Order Editor : sắp xếp Tab order là thứ tự khi ta nhấn phím Tab
Gui Options : lựa chọn cho giao diện GUI
• Bước 3: Kéo thả các điều khiển
Hãy kéo vào trong giao diện 2 edit box, 2 static box và 1 Push Button
Trang 9Hình 1.3: Giao diện GUI thực hiện chức năng
Chương trình có chức năng khi nhấn vào nút bấm thì kết quả của phép tính cộng giữa 2 số được gõ vào 2 ô sẽ hiện lên trong Static Text
• Bước 4: Thay đổi các thuộc tính của điều khiển
+ Click đúp vào Edit Text bên trái để xuất hiện cửa sổ các thuộc tính của điều khiển Có thể sắp xếp theo
chức năng hoặc theo thứ tự A-Z của tên thuộc tính bằng nút hiện ở gõ bên trái
Hình 1.4: Cửa sổ Properties của đối tượng
Thuộc tính quan trọng của Edit Box bao gồm:
Trang 10Tag: đây là thuộc tính giống như Caption trong Visual Basic để đặt tên điều khiển Dùng tên này có thể thao tác đến các thuộc tính của đối tượng Mình đặt tên là: editStr1
String : là xâu kí tự hiện lên Edit Box Các bạn xóa cái này đi
Tương tự, thay đổi thuộc tính tag của Edit Box thứ 2 thành editStr2 Static Box cũng tương tự thành staticStr3
Push Button: thuộc tính tag = buttonCalculate, string = calculate
• Bước 5: Viết lệnh cho chương trình
Chương trình có tác dụng khi nhấn vào nút Push Button sẽ hiện lên kết quả ở Static Box Vì thế nên sẽ phải viết vào hàm nào mà khi nhấn vào Push Button sẽ gọi Chính là hàm Callback Điều khiển nào cũng có hàm callback, như hàm ngắt trong
vi điều khiển vậy.
Click chuột phải vào nút Calculate chọn View Callbacks\Callback ta được:
Dưới đây là đoạn code chương trình:
function pushbutton1_Callback(hObject, eventdata, handles)
so1 = get(handles.edit1, 'string' );
so2 = get(handles.edit2, 'string' );
so1 = str2num(so1);
so2 = str2num(so2);
so3 = so1 + so2;
set(handles.text3, 'string' ,num2str(so3));
Nhấn nút run để kiểm tra: Ta được GUI tính tổng 2 chữ số
Hình 1.5: Kết quả mô phỏng ví dụ cộng 2 số
Trang 11CHƯƠNG 2: MÔ HÌNH HÓA ĐỐI TƯỢNG
Mô hình là một hình thức mô tả khoa học và cô đọng các khía cạnh thiết yếu của một hệ thống thực Phân tích và thiết kế trên cơ sở mô hình là phương pháp làm việc không thể thiếu được của người kỹ sư Một mô hình phản ánh hệ thống thực từ một góc nhìn nào đó phục vụ hữu ích cho mục đích sử dụng Mô hình không những giúp ta hiểu rõ hơn về thế giới thực, mà còn cho phép thực hiện được một số nhiệm
vụ phát triển mà không cần sự có mặt của quá trình và hệ thống thiết bị thực
Trong bài toán phát triển một toolbox thí nghiệm thì công việc mô hình hóa đối tượng càng có vai trò đặc biệt quan trọng, bởi vì các sinh viên thí nghiệm không tiếp xúc với đối tượng thực mà là với đối tượng “ảo” trên máy tính Đối tượng ảo đấy chính là mô hình của đối tượng thực Và để tạo được đối tượng ảo, ở đây chúng
ta sẽ sử dụng mô hình toán học của đối tượng Trên cơ sở mô hình toán học đấy, chúng ta sẽ cài đặt vào Matlab dựa trên S-function
Việc thiết lập mô hình toán học (mô hình hóa lý thuyết) sẽ bắt đầu từ bài toán phân tích hệ thống và nhận biết các biến quá trình khi chưa xét đến cơ cấu chấp hành; tiếp đến là bài toán xây dựng các phương trình mô hình dựa trên các định luật bảo toàn vật chất và năng lượng để tìm ra phương trình vi phân mô tả bình nhiệt; và sau
đó kết hợp với mô hình cơ cấu chấp hành để tạo nên mô hình hệ thống
2.1 Phân tích hệ thống bình nhiệt và nhận biết các biến quá trình
Xét hệ thống thiết bị gia nhiệt tiếp xúc trực tiếp gắn động cơ khuấy (hay nói ngắn gọn là hệ thống bình nhiệt) trên hình 2.1
Hình 2.1 Thiết bị gia nhiệt tiếp xúc trực tiếp
Trang 12Các ký hiệu sử dụng trên hình:
F 1 , F 2 , F – lưu lượng thể tích của các dòng vào và dòng ra (m 3 /s hoặc 1/s)
T 1 , T 2 , T – nhiệt độ của các dòng vào và dòng ra ( 0 C)
V – thể tích chất lỏng trong bình (m 3 hoặc 1)
Ở đây ta đặt tương đương vai trò của van 1 và van 2 (ứng với dòng có lưu lượng F1
và F2), tức là giáo viên hướng dẫn thí nghiệm hoặc sinh viên có quyền chọn một trong 2 van là điều khiển được hoàn toàn (lưu lượng qua van được quyết định bởi tín hiệu điều khiển), van kia không điều khiển được (không chịu tác động của tín hiệu điều khiển) hoặc dòng chảy qua van ấy phụ thuộc vào quá trình trước Bình gia nhiệt ở đây là tự tràn
Giả sử ở đây, ta chọn van 2 là điều khiển được hoàn toàn, và dòng chảy qua van 1 là không tác động được (coi là nhiễu)
Mục đích bài toán điều khiển quá trình ở đây là duy trì nhiệt độ của dòng quá trình sau khi ra khỏi thiết bị gia nhiệt tại một giá trị đặt mong muốn Do đó, biến cần điều khiển ở đây là T
Khi chưa xét đến cơ cấu chấp hành là van điều khiển, theo quan hệ nhân quả, ta có
thể nhận ra trong quá trình gia nhiệt có các biến vào là F1, F2, T1, T2 Biến F không được xét ở đây khi tính đến quan hệ tự tràn F = F1 + F2
Trong các biến vào trên thì biến điều khiển là F2 là biến điều khiển, còn lại là nhiễu
Ta có sơ đồ về các biến quá trình như sau:
Hình 2.2 Các biến quá trình
2.2 Xây dựng các phương trình mô hình cho bình nhiệt
QUÁ TRÌNH TRỘN NHIỆT
F 1 T 1 T 2
Trang 13Ta bắt đầu từ định luật bảo toàn năng lượng cho quá trình nhiệt độ:
U 1 – Nội năng hệ thống (J)
w vào – lưu lượng khối lượng dòng vào hệ thống (kg/s)
w ra – lưu lượng dòng ta khỏi hệ thống (kg/s)
h vào – enthalpy của dòng vào (J/kg)
h ra – enthalpy của dòng ra (J/kg)
q – tổng lưu lượng nhiệt (công suất cấp nhiệt) bổ sung cho hệ thống
Đối với chất lỏng, phương trình trên có dạng:
là nhiệt dung riêng tại áp suất không đổi
, , là khối lượng riêng của dòng ra, dòng 1 và dòng 2
Trang 14= 1 + 1 −1 (+ ) (2.1)
2.3 Phân tích cơ cấu chấp hành
Khi xét đến cơ cấu chấp hành, tức là xét đến mối quan hệ giữa tín hiệu điều khiển u
và F, ta có mô hình:
Hình 2.3 Cơ cấu chấp hành van điều khiển
Xét van điều khiển như hình 2.3, nếu van được định cỡ tốt thì quan hệ giữa lưu lượng ra và độ mở van có thể được coi là tuyến tính, ít ra cũng trong một phạm vi quan tâm Mô hình động học van điều khiển có thể đưa về một khâu quán tính bậc nhất:
( ) = ( )!( ) =# "
Việc xác định hệ số khuếch đại " và hằng số thời gian # của van có thể tiến hành
từ thực nghiệm Hằng số thời gian # của van phụ thuộc chủ yếu vào cơ cấu chấp hành Thông thường # có giá trị khoảng một vài giây, đối với van cỡ lớn có thể tới 10-15 giây Hệ số khuếch đại " cũng có thể được tính toán như sau:
" =! =$ ∙$!
Cơ cấu chấp hành có thể coi là tuyến tính trong toàn bộ dải làm việc, nên đạo hàm
$/! bằng 1 cho van FC và -1 cho van FO Vì thế ta có:
" ='(
) $ , cho van FC
−$ , cho van FO
4
Cơ cấu chấp
Van điều khiển
Trang 15Nếu van được định nghĩa cỡ tốt thì ta có thể coi " là hằng số trong toàn dải làm việc Tuy nhiên, trong trường hợp bản thân quá trình có tính phi tuyến mạnh ta có thể tính toán sao cho tính phi tuyến của van bù lại tính phi tuyến của quá trình, có nghĩa là tích hệ số khuếch đại của van và hệ số khuếch đại của quá trình gần như không đổi
Từ phương trình dưới dạng hàm truyền (2.3), ta có thể chuyển về dạng phương trình
vi phân như sau:
# + = "! Xét với van 2, ta có:
# + = "! (2.3) Tương tự van 2, nếu điều khiển van 1 ta cũng có phương trình:
# + = "! (2.4)
2.4 Phương trình vi phân hệ thống
Kết hợp các phương trình (2.1) với (2.3) và (2.4) ta được hệ phương trình vi phân
mô tả hệ thống như sau:
'5(
Trang 16CHƯƠNG 3: XÂY DỰNG TOOLBOX
3.1 Giới thiệu về hàm S-function và cách xây dựng hàm bằng C-mex-file
Hàm S là hàm có thể kích hoạt trong sơ đồ SIMULINK nhờ sử dụng khối function (thư viện con Function & Tables) S-function( hệ thống chức năng ) cung cấp một cơ chế mạnh mẽ để mở rộng khả năng của Simulink S–function cho phép bạn thêm các thuật toán của riêng bạn với các mô hình Simulink Bạn có thểviết thuật toán của bạn trong MATLAB hoặc C Bằng cách làm theo một bộ quy tắc đơn giản, bạn có thể thực hiện các thuật toán của bạn trong một S - function Sau khi bạn đã viết S-function và được đặt tên của nó trong một khối S- Function, ta có thể tùy chỉnh giao diện người dùng bằng cách sử dụng Mask ở chuột phải
S-function là một ngôn ngữ mô tả máy tính của một hệ thống năng động Như với
MEX- file khác , chúng được liên kết động vào MATLAB khi cần thiết S-function sử
dụng cú pháp gọi đặc biệt cho phép bạn tương tác với các giải pháp của Simulink Sự tương tác này rất giống với sự tương tác diễn ra giữa những người giải quyết và các khối Simulink gắn liền nhau Dưới hình thức một S- function là rất tổng quát và có thể chứa các hệ thống liên tục, rời rạc, và lai Kết quả là, gần như tất cả mô hình Simulink
có thể mô tả dưới dạng S- function S-function được tích hợp vào mô hình Simulink
bằng cách sử dụng khối S-function trong Nonlinear Block sublibrary
S-function có thể có dạng:
• MATLAB Script,tức là m-File
• File chạy ( MATLAB Executeble Files) viết bằng ngôn ngữ C, còn được gọi là
C mex-Files
• Hoặc File chạy theo ngôn ngữ bậc cao C++, Fortranhay Ada, cũngđược gọi là C mex-Files
Trang 17Việc lập trình trên MATLAB v
Điều quan trọng nhất trong khi l
kiện khung” ( gọi là chươ
đối thoại 1 cách chuẩn xác v
lập trình có thể hoàn toàn t
hàm S, ta có thể mở rộ
kì
Giống như 1 khối chu
TH thành vector biến vào u, vector bi
function, các trạng thái li
sẽ gọi những chương tr
Hình 3.1: Mô hình trVector trạng thái có th
p trình trên MATLAB về nguyên tắc dễ học hơn,vì s
n gọi là ít Tuy nhiên thuật toán càng phức t
c cao ( như C) để lập trình Các hàm S dạng mex
ch ( Compile) sẵn từ trước thành dạng File chạy và có th
ạng m-File sẽ buộc SIMULINK quét và phân tích t
t trong khi lậptrinh S-function là: Tuân thủ
i là chương trình con, dựng cờ Flags…) giúp cho SIMULINK có th
n xác với S-function trong quá trình mô phhoàn toàn tự do với sức sáng tạo của mình Nhộng các thư viện chuẩn có sẵn của SIMULINK thêm các hàm b
i chuẩn của SIMULINK, việc lập trình S-function c
n vào u, vector biến trạng thái x và vector bi
ng thái liên tục và gián đoạn được xử lý tách biệ
ng trình con khác nhau để để tínhxvàx k+1như b
Hình 3.1: Mô hình trạng thái tổng quát của đối tư
ng thái có thể bao gồm các trạngthái liên tục, các trạ
hai Các mối quan hệ toán học giữa các y
ái được thể hiện bằng các phương trình sau
(đầu ra) (đạo hàm)
, !
ì số lượng các thủ tục,
c tạp thì ta lại càng nên
ng mex-File do người sử
y và có thể gọi khi cần Ngược
c SIMULINK quét và phân tích từng dòng nên
ủ nghiêm ngặt các“ điều Flags…) giúp cho SIMULINK có thể function trong quá trình mô phỏng Ngoài ra người
a mình Nhờ khả năng lập trình
a SIMULINK thêm các hàm bất
function cũng phân chia
ng thái x và vector biến ra y Trong
S-ệt, nghĩa là SIMULINK như bởi minh họa này:
i tượng ạng thái giánđoạn, hoặc
a các yếu tố đầu vào, kết quả ình sau đây:
Trang 18Một C mex -File định nghĩa một khối S -Function phải cung cấp thông tin vềcác mô hình để Simulink trong mô phỏng Như đốitượng mô phỏng,Simulink, phương trình vi phân cần giải quyết, và giao tiếp MEX -file để thực hiện nhiệm vụ cụ thể Những nhiệm vụ này bao gồm các điều kiện ban đầu cụ thể và đặc trưng củakhối , và các trạng thái giánđoạn, và kết quả đầu ra C mex -File S-function có cấu trúc tương tự và thực hiện chức năng tương tự như m-File S-function Ngoài ra, C-mex-File S-function còn cung cấp cho bạn với nhiều chức năng hơn so với m-File S-function
Một cấu trúc của 1 C mex-File thường có dạng:
#define S_FUNCTION_NAME your_sfunction_name_here
<additional S-function routines/code>
static void mdlTerminate(SimStruct *S)
mex-File chứa nó Ngoài hàmthư viện simstruc.h ta còn có thể thêm vào các thư viện
khác cho việc tính toán như math.h …
Một cơ cấu đơn giản C mex-File thường có dạng:
Trang 19Hình 3.2: Một cơ cấu C mex-File đơn giản
mdlInitializeSizes
SIMULINK gọi chương trình này khi chỉnh sửa các mô hình để xác định số đầu vào, đầu ra SIMULINK cũng gọi nó để xác định kích thướccác cổng và bất kì đối tượng khác
Trang 20mdlOutputs Tính toán đầu ra Là phần quan trọng nhất của s-function
mdlTerminate
Thực hiện nhiệm vụ cuối của quá trình mô phỏng
Thương rỗng
Trong ví dụ này, mdlInitializeSizes xác định cụ thể:
• 4 tham số đó là T1, T2, T3, V Đây là những tham số ta có thể thay đổi khi kích đúp vào s-function Khi thay đổi nhưng tham số này thì đầu ra của bài toán sẽ thay đổi
• Có 2 cổng vào và 3 cổng ra ta dễ nhận thấy đây là hệ MIMO Chiều rộng của cổng vào và cổng ra được tự động kích thước
• Ngoài ra ta cũng xác định được số trạng thái liên tục là 3 Có 1 thời gian trích mẫu và ta xác định thời gian trích mẫu trong
mdlInitializeSampleTimes
Trong mdlInitializeSampleTimes :Thời gian mẫu được thừa hưởng từ
driving block Điều này có nghĩa rằng S - function sẽ chạy bất cứ khi nào nó nhận được đầu vào từ khối, đó là kết nối với cổng đầu vào của khối S - function
Trong mdlOutputs: thực hiện việc tính toán dựa trên những tham số nhập
đầu vào
• Để truy cập vào tín hiệu đầu vào , sử dụng :
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs ( S , 0);
với uPtrs là một vector của các con trỏ và phải được truy cập bằng cách sử dụng :
* uPtrs [i]
• Để truy cập vào tín hiệu đầu ra, sử dụng:
real_T * y = ssGetOutputPortRealSignal ( S , 0);
nó trả về một mảng liền kề nhau cho kết quả đầu ra của khối
Trong mdlDerivatives chứa biến trạng thái x Nó là 1 phép đạo hàm
mdlTerminate là 1 chức năng bắt buộc thong thường Do chương trình này
Trang 21Vào cuối của S- function , chỉ định mã gắn ví dụ này cho một trong hai Simulink hoặc Real-Time Workshop:
#else
#endif
3.2 Xây dựng khối mô hình thí nghiệm
Để xây dựng lên một khối Block Simulink, ta có thể xây dựng chúng bằng cách sử dụng:
- Sử dụng khối SubSystem và các khối hàm Laplace có sẵn để xây dựng lên một mô hình, sau đó sử dụng công cụ Mask để hoàn thành khối, đây là cách
đơn giản và hay được làm nếu không yêu cầu bảo mật của mô hình
- Sử dụng khối S-function, để làm việc này ta cần lập trình:
+ Sử dụng phương pháp lập trình M-file
+ Sử dụng phương pháp lập trình C
- Kết hợp sử dụng khối S-function và Subsystem
Ở đây ta sẽ xây dựng hộp toolbox của ta theo 2 cách đầu là sử dụng khối Subsystem
và sử dụng S-function theo phương pháp lập trình C-file Mục đích của 2 cách làm
đó là để so sánh các kết quả thu được của mô hình tạo thành Còn phương pháp thứ
3 cũng gần tương tự như phương pháp thứ 2
* Giả thiết: Từ hệ phương trình vi phần từ chương 2 ta sẽ xây dựng lên phương trình vi phân hoặc phương trình hàm truyền đạt với giả thiết hệ số khuếch đại có thể kết hợp với hệ số khuếch đại của bình nên có thể cho " = " = 1 Hai van có hằng số thời gian là bằng nhau # = # = 3