版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第九章 Simulink仿真,本章主要講解: Simulink的概念及其應(yīng)用; Simulink搭建系統(tǒng)模型的方法及特點; Simulink環(huán)境中的仿真及調(diào)試。,目錄,9.1 Simulink概述 9.2 模型的創(chuàng)建 9.3 子系統(tǒng)及其封裝 9.4 過 零 檢 測 9.5 代 數(shù) 環(huán),9.6 回 調(diào) 函 數(shù) 9.7 運 行 仿 真 9.8 仿真結(jié)果分析 9.9 模型的調(diào)試 9.10 S 函 數(shù) 9.11 實 例 習(xí) 題,9.1 Simulink概述,9.1.1 Simulink的概念 9.1.2 Simulink的工作環(huán)境 9.1.3 Simulink的工作原理,9.1.4 Simulink模
2、型的特點 9.1.5 Simulink里的數(shù)據(jù)類型 9.1.6 Simulink里的模塊和模塊庫,9.1.1 Simulink的概念,Simulink是MATLAB提供的實現(xiàn)動態(tài)系統(tǒng)建模和仿真的軟件包,是MATLAB相對獨立的重要的組成部分。 Simulink的突出特點是支持圖形用戶界面(GUI),模型由模塊組成的框圖來表示。,啟動Simulink(6.0版)有如下3種方式: 在MATLAB的命令窗口直接鍵入命令Simulink; 用鼠標左鍵單擊MATLAB工具條上的按鈕; 在MATLAB菜單上選擇【File】|【New】|【Model】選項。,運行后會彈出如下圖所示的Simulink模塊庫瀏
3、覽器窗口 。,使用第3種方式打開時還會彈出如下圖所示的新建模型窗口。,1【File】菜單 2【Edit】菜單 3【View】菜單,9.1.2 Simulink的工作環(huán)境,4【Simulation】菜單 5【Format】菜單 6【Tools】菜單 7【Help】菜單,Simulink模塊庫瀏覽器各部分的用途,如下圖所示。,1【File】菜單,【File】菜單中各選項的名稱與功能如下表所示。,【File】菜單,2【Edit】菜單,【Edit】菜單中各選項的名稱與功能如下表所示。,【Edit】菜單,3【View】菜單,【View】菜單中部分主要選項的名稱與功能如下表所示。,【View】菜單,4【S
4、imulation】菜單,【Simulation】菜單如下圖所示。,【Simulation】菜單各選項的功能如下 : 【Start】:開始運行仿真; 【Stop】:停止仿真; 【Configuration Parameters】:設(shè)置仿真參數(shù)和選擇解法器; 【Normal】、【Accelerator】、【External】分別表示正常工作模式、加速仿真和外部工作模式。,5【Format】菜單,【Format】菜單用于設(shè)置字體、屏幕顏色、模塊名的顯示、模塊顯示顏色、信號和端口類型和寬度等。 該菜單部分主要選項的名稱與功能如下表所示。,【Format】菜單,6【Tools】菜單,【Tools】菜單
5、中部分主要選項的名稱與功能如下表所示。,【Tools】菜單,7【Help】菜單,【Help】菜單中部分主要選項的名稱與功能如下表所示。,【Help】菜單,9.1.3 Simulink的工作原理,1圖形化模型與數(shù)學(xué)模型間的關(guān)系 2圖形化模型的仿真過程,1圖形化模型與數(shù)學(xué)模型間的關(guān)系,現(xiàn)實中每個系統(tǒng)都有輸入、輸出和狀態(tài)3個基本要素,以及它們之間隨時間變化的數(shù)學(xué)函數(shù)關(guān)系,即數(shù)學(xué)模型。,圖形化模型也體現(xiàn)了輸入、輸出和狀態(tài)間隨時間變化的某種關(guān)系,如下圖所示。 只要這兩種關(guān)系在數(shù)學(xué)上是等價的,那么就可以圖形化模型代替數(shù)學(xué)模型。,2圖形化模型的仿真過程,Simulink的仿真過程包括如下幾個階段: 模型編譯
6、階段; 連接階段; 仿真環(huán)階段。,(1)模型編譯階段 Simulink引擎調(diào)用模型編譯器,將模型編譯成可執(zhí)行文件。 編譯器完成以下任務(wù): 計算模塊參數(shù)的表達式以確定它們的值; 確定信號屬性(如名字、數(shù)據(jù)類型等); 傳遞信號屬性以確定未定義信號的屬性。,優(yōu)化模塊; 展開模型的繼承關(guān)系(如子系統(tǒng)); 確定模塊運行的優(yōu)先級; 確定模塊的采樣時間。,(2)連接階段 Simulink引擎按執(zhí)行次序創(chuàng)建運行列表,初始化每個模塊的運行信息。,(3)仿真環(huán)階段 Simulink引擎從仿真的開始到結(jié)束,在每一個采樣點按運行列表計算各模塊的狀態(tài)和輸出。,仿真環(huán)階段又分成以下兩個子階段: 初始化階段:該階段只運行一
7、次,用于初始化系統(tǒng)的狀態(tài)和輸出; 迭代階段:該階段在定義的時間段內(nèi)按采樣點間的步長重復(fù)運行。,9.1.4 Simulink模型的特點,Simulink建立的模型具有以下3個特點: 仿真結(jié)果的可視化; 模型的層次性; 可封裝子系統(tǒng)。,9.1.5 Simulink里的數(shù)據(jù)類型,1Simulink支持的數(shù)據(jù)類型 2數(shù)據(jù)類型的傳播 3使用復(fù)數(shù)信號,Simulink在仿真開始之前和運行過程中會自動確認模型的類型安全性,以保證該模型產(chǎn)生的代碼不會出現(xiàn)上溢或下溢。,1Simulink支持的數(shù)據(jù)類型,Simulink支持所有的MATLAB內(nèi)置數(shù)據(jù)類型,除此之外Simulink還支持布爾類型。 打開Simuli
8、nk模型窗口中的菜單Help下的選項Block Support Table,打開如下圖所示的幫助窗口,總結(jié)了所有Simulink庫中的模塊所支持的數(shù)據(jù)類型。,打開Simulink模型窗口的【Format】|【Port/Signal Displays】|【Port Data Types】,查看信號的數(shù)據(jù)類型和模塊輸入/輸出端口的數(shù)據(jù)類型,如下圖所示。,2數(shù)據(jù)類型的傳播,相連模塊的輸出/輸入信號所支持的數(shù)據(jù)類型如果是不相同的,在仿真中就會彈出錯誤提示對話框,告知出現(xiàn)沖突的信號和端口。 此時可以嘗試在沖突的模塊間插入DataTypeConversion模塊來解決類型沖突。,3使用復(fù)數(shù)信號,Simul
9、ink默認的信號值都是實數(shù),但在實際問題中有時需要處理復(fù)數(shù)信號。 在Simulink中通常用下面兩種方法來建立處理復(fù)數(shù)信號的模型,如下圖所示。,在模型中加入Constant模塊,并將其參數(shù)設(shè)為復(fù)數(shù)。 分別生成復(fù)數(shù)的虛部和實部,再用Real-Image to Complex模塊把它們聯(lián)合成一個復(fù)數(shù)。 分別生成復(fù)數(shù)的幅值和幅角,再用Magnitue-Angle to Complex模塊把它們聯(lián)合成一個復(fù)數(shù)。,9.1.6 Simulink里的模塊和模塊庫,模塊庫提供各種基本模塊,它按應(yīng)用領(lǐng)域以及功能組成若干子庫,并按樹狀結(jié)構(gòu)進行顯示。 模塊是Simulink建模的基本元素。 下表詳細介紹了Simul
10、ink中常用子庫中常用模塊的功能 。,Commonly Used Blocks子庫,Continuous子庫,Discontinuities子庫,Discrete子庫,Logic and Bit Operations子庫,續(xù)表,Math Operations子庫,續(xù)表,Ports & Subsystems子庫,續(xù)表,Sinks子庫,Sources子庫,User-Defined Functions子庫,9.2 模型的創(chuàng)建,1模塊的基本操作 2創(chuàng)建模型的基本步驟 3模型文件格式,1模塊的基本操作,下表匯總了Simulink對模塊進行操作的部分方法。,對模塊進行操作,續(xù)表,下表匯總了Simulink
11、對直線進行操作的部分方法。,對直線進行操作,雙擊模塊將會彈出【參數(shù)設(shè)置】對話框,如下圖所示的增益模塊,進而設(shè)置參數(shù)值。,鼠標右鍵單擊模塊并在彈出的上下文菜單中選擇【Block Properties】,會彈出屬性設(shè)置對話框,如下圖所示,其中包括如下三項內(nèi)容。 【General】頁; 【Block Annotation】頁; 【Callbacks】頁。,(1)【General】頁 Description:用于對該模塊在模型中的用法進行注釋; Priority:定義該模塊在模型中執(zhí)行的優(yōu)先順序; Tag:為模塊添加文本格式的標記。,(2)【Block Annotation】頁 用于指定在圖標下顯示模
12、塊的參數(shù)、取值及格式。,(3)【Callbacks】頁 用于定義該模塊發(fā)生某種指定行為時所要執(zhí)行的回調(diào)函數(shù)。 對信號進行標注以及對模型進行注釋,方法如下表所示。,在連線上反映信息,對注釋進行處理,2創(chuàng)建模型的基本步驟,利用Simulink進行系統(tǒng)建模和仿真的一般步驟如下。 繪制系統(tǒng)流圖; 啟動Simulink模塊庫瀏覽器,新建一個空白模型窗口; 將所需模塊放入空白模型窗口中,按系統(tǒng)流圖的布局連接各模塊,并封裝子系統(tǒng);,設(shè)置各模塊的參數(shù)以及與仿真有關(guān)的各種參數(shù); 保存模型,模型文件的后綴名為.mdl; 運行并調(diào)試模型。,3模型文件格式,Simulink還提供了通過命令行建立模型和設(shè)置模型參數(shù)的方
13、法。 Simulink將每一個模型(包括庫)都保存在一個以.mdl為后綴的文件里,稱為模型文件。 一個模型文件就是一個結(jié)構(gòu)化的ASCII文件,它包括關(guān)鍵字和各種參數(shù)的值。,9.3 子系統(tǒng)及其封裝,9.3.1 創(chuàng)建子系統(tǒng) 9.3.2 封裝子系統(tǒng) 9.3.3 自定義模塊庫,9.3.1 創(chuàng)建子系統(tǒng),1子系統(tǒng)的作用 2子系統(tǒng)的創(chuàng)建方法 3子系統(tǒng)創(chuàng)建示例,1子系統(tǒng)的作用,通過子系統(tǒng)可以把復(fù)雜的模型分割成若干個簡單的模型,具有以下優(yōu)點: 減少模型窗口中模塊的個數(shù),使得模型窗口整潔。 把一些功能相關(guān)的模塊集成在一起,可以復(fù)用。 通過子系統(tǒng)可以實現(xiàn)模型圖表的層次化。,2子系統(tǒng)的創(chuàng)建方法,Simulink有如下
14、兩種創(chuàng)建子系統(tǒng)的方法。 通過子系統(tǒng)模塊來創(chuàng)建子系統(tǒng):先向模型中添加Subsystem模塊,然后打開該模塊并向其中添加模塊; 組合已存在的模塊集。,3子系統(tǒng)創(chuàng)建示例,例 通過Subsystem模塊創(chuàng)建子系統(tǒng)。具體步驟如下。 從Ports&Subsystems中復(fù)制Subsystem模塊到模型中,如下圖所示; 用鼠標左鍵雙擊Subsystem模塊圖標打開如下圖所示Subsystem模塊編輯窗口;,在新的空白窗口創(chuàng)建子系統(tǒng),然后保存; 運行仿真并保存。,例 通過組合已存在的模塊創(chuàng)建子系統(tǒng)。具體步驟如下。 創(chuàng)建如下圖所示的系統(tǒng); 選中要創(chuàng)建成子系統(tǒng)的模塊,如下圖所示;,選擇【Edit】|【Create
15、 Subsystem】菜單,結(jié)果如下圖所示; 運行仿真并保存。,9.3.2 封裝子系統(tǒng),1封裝的作用 2封裝的過程 3封裝示例,封裝后的子系統(tǒng)與Simulink提供的模塊一樣擁有圖標,并且用鼠標左鍵雙擊圖標時會出現(xiàn)一個用戶自定義的【參數(shù)設(shè)置】對話框,實現(xiàn)在對話框中設(shè)置子系統(tǒng)中的參數(shù)。,1封裝的作用,子系統(tǒng)中各個模塊的參數(shù)通過參數(shù)對話框就可以進行設(shè)置。 為子系統(tǒng)創(chuàng)建可以反映子系統(tǒng)功能的圖標。 可以避免用戶在無意中修改子系統(tǒng)中模塊的參數(shù)。,2封裝的過程,選擇需要封裝的子系統(tǒng),并選擇【Edit】|【Mask Subsystem】菜單進行封裝。 選擇【Edit】|【Edit mask】菜單,這時會彈出
16、如下圖所示的封裝編輯器,通過它進行各種設(shè)置。 單擊【Apply】或【OK】按鈕保存設(shè)置。,3封裝示例,例 簡介封裝的過程。具體步驟如下: (1)建立如下圖所示的含有子系統(tǒng)的模型,并設(shè)置子系統(tǒng)中Gain模塊的Gain參數(shù)為一變量m。,(2)選中模型中的Subsystem子系統(tǒng),選擇【Edit】|【Mask Subsystem】菜單進行封裝,進而選擇【Edit】|【Edit mask】菜單(或用鼠標右鍵單擊子系統(tǒng)彈出上下文菜單,選擇【Edit mask】菜單)打開封裝編輯器,如下圖所示。,(3)按照如下圖所示設(shè)置【Icon頁】。 Icon options面板:定義圖標的邊框是否可見等。 Drawi
17、ng commands文本框:定義繪制模型圖標的方式。 Examples of drawing commands面板:說明各種繪制圖標的命令,每種命令都對應(yīng)一個示例。,(4)按照如下圖所示設(shè)置【Parameters】頁。,定義封裝子系統(tǒng)參數(shù)設(shè)置對話框的可設(shè)置參數(shù),其中各項設(shè)置的含義如下圖所示。,(5)按照如下圖所示設(shè)置 【Initialization】頁。定義封裝子系統(tǒng)的初始化命令,包括MATLAB表達式、函數(shù)、運算符和在【Parameters】頁定義的變量。,(6)按照如下圖所示設(shè)置【Documentation】頁,定義封裝子系統(tǒng)的封裝類型、模塊描述和模塊幫助信息,其中各項設(shè)置的含義如下圖所
18、示。,(7)設(shè)置參數(shù)后運行仿真,用鼠標左鍵雙擊模型中的Scope模塊,看到如下圖所示的結(jié)果。,9.3.3 自定義模塊庫,大量封裝子系統(tǒng)模塊按照功能需要分門別類地來存儲,以方便查找,每一類即為一模塊庫。 通過自定義模塊庫,可以將為某個領(lǐng)域服務(wù)的所有模塊集中存放。,通過選擇Simulink界面的【File】|【New】|【Library】菜單來創(chuàng)建模塊庫。 選中該菜單后將彈出一個空白的庫窗口; 然后將需要存放在同一模塊庫中的模塊復(fù)制到模塊庫窗口中即可,如下圖所示。,9.4 過 零 檢 測,過零檢測通過Simulink為模塊注冊若干過零函數(shù),當變化趨勢劇烈時,過零函數(shù)發(fā)生符號變化。,每個采樣點仿真結(jié)
19、束時Simulink檢測是否有過零函數(shù)符號變化,如果檢測到過零點,Simulink將在前一個采樣點和目前采樣點間內(nèi)插值。,下表列出了Simulink中支持過零檢測的模塊。,支持過零點檢測的模塊,9.5 代 數(shù) 環(huán),如果Simulink模塊的輸入是依賴于該模塊的輸出,就會產(chǎn)生一個代數(shù)環(huán),如下圖所示。 這意味著無法進行仿真,因為沒有輸入就得不到輸出,沒有輸出也得不到輸入。,解決代數(shù)環(huán)的辦法包括以下幾種: 盡量不形成代數(shù)環(huán)的結(jié)構(gòu),采用替代結(jié)構(gòu); 為可以設(shè)置初始值的模塊設(shè)置初值; 對于離散系統(tǒng),在模塊的輸出一側(cè)增加unit delay模塊; 對于連續(xù)系統(tǒng),在模塊的輸出一側(cè)增加memory模塊。,為模型
20、或模塊設(shè)置回調(diào)函數(shù)的方法有下面兩種: 通過模型或模塊的屬性對話框來設(shè)置; 通過MATLAB相關(guān)的命令來設(shè)置。,9.6 回 調(diào) 函 數(shù),模型屬性設(shè)置見下圖。,模塊屬性設(shè)置見下圖。,模型屬性設(shè)置對話框中的Callbacks頁給出了回調(diào)函數(shù)列表,如下表所示。,模型的回調(diào)參數(shù),模塊的回調(diào)參數(shù),續(xù)表,9.7 運 行 仿 真,1使用窗口運行仿真 2仿真參數(shù)設(shè)置 3仿真診斷對話框 4使用命令運行仿真 5改善仿真性能及精度,1使用窗口運行仿真,建立好模型后,可以直接在模型窗口通過菜單項或工具欄進行仿真,如下圖所示。,2仿真參數(shù)設(shè)置,可以通過模型窗口的【Simulation】|【Configuration Pa
21、rameters】菜單項打開設(shè)置仿真參數(shù)的對話框,如下圖所示。,3仿真診斷對話框,如果模型在運行過程中遇到錯誤,將停止仿真,并彈出仿真診斷對話框。通過該對話框,可以了解模型出錯的位置和原因,如下圖所示。,4使用命令運行仿真,MATLAB允許通過命令窗口運行仿真。MATLAB提供函數(shù)sim()運行仿真,其具體使用方法如下: t,x,y = sim(filename, timespan, options, ut); t,x,y1, y2, ., yn = sim(filename,timespan,options,ut)。,只有參量filename是必需的,各參量的含義如下表所示。,函數(shù)sim()
22、參量,5改善仿真性能及精度,Simulink的仿真性能和精度受許多因素的影響,包括模型的設(shè)計、仿真參數(shù)的設(shè)置等。 但是對于某些問題,適當?shù)恼{(diào)整仿真參數(shù)可以得到更好的結(jié)果,如: 加速仿真 提高精度,9.8 仿真結(jié)果分析,1觀看輸出結(jié)果 2線性化分析 3平衡點分析,1觀看輸出結(jié)果,在Simulink中有如下3種方法繪制模型的仿真結(jié)果。 在模型中將信號輸入到Scope模塊; 將輸出寫入To Workspace 模塊,然后使用MATLAB繪圖功能。 將輸出寫入To File 模塊,然后使用MATLAB文件讀取和繪圖功能。,2線性化分析,Matlab中用函數(shù)linmod()和dlinmod()來分別實現(xiàn)
23、連續(xù)模型和離散系統(tǒng)、混雜系統(tǒng)的線性化,其具體使用方法如下: A,B,C,D = linmod(filename); A,B,C,D = dlinmod(filename, Ts)。,3平衡點分析,Simulink通過函數(shù)trim()來計算動態(tài)系統(tǒng)的平衡點。并不是所有時候都有解,如果無解,函數(shù)trim()將返回離期望狀態(tài)最近的解。,9.9 模型的調(diào)試,1Simulink調(diào)試器 2命令行調(diào)試 3設(shè)置斷點 4顯示仿真的信息 5顯示模型的信息,Simulink提供了調(diào)試器,以方便查找和診斷模型中的錯誤,它允許通過單步運行仿真顯示模塊的即時狀態(tài)、輸入和輸出。,1Simulink調(diào)試器,下表對該對話框工具
24、欄各按鈕的功能進行了詳細介紹 。,調(diào)試器工具欄,2命令行調(diào)試,許多Simulink命令和消息是通過Method ID和Block ID來引用方法和模塊的。 Method ID是按方法被調(diào)用的順序從0開始分配的一個整數(shù); Block ID是在編譯階段分配的,形式為sid:bid。,3設(shè)置斷點,斷點就是使仿真運行到該位置時停止,同時可以使用命令continue使仿真繼續(xù)運行。調(diào)試器允許定義無條件斷點和有條件斷點。,(1)設(shè)置無條件斷點 設(shè)置無條件斷點有如下3種方式: 通過調(diào)試器工具欄; 通過調(diào)試器Simulation Loop頁; 通過在MATLAB命令窗口運行相關(guān)命令。,(2)設(shè)置有條件斷點 設(shè)
25、置有條件斷點可以通過在調(diào)試器【Break on conditions】頁中設(shè)置相應(yīng)的斷點條件來實現(xiàn)。,4顯示仿真的信息,Simulink調(diào)試器工具條中的按鈕用于顯示模塊的輸入/輸出信息。 首先在模型窗口選中模塊; 然后用鼠標左鍵單擊該按鈕,被選中的模塊在當前采樣點的輸入、輸出和狀態(tài)信息將顯示在調(diào)試器窗口的【Outputs】頁中。,5顯示模型的信息,調(diào)試器除了可以顯示仿真的相關(guān)信息外,還可以顯示模型的相關(guān)信息。 在MATLAB命令窗口中,可以用命令slist顯示系統(tǒng)中各模塊的索引,模塊的索引就是它們的執(zhí)行順序,它與調(diào)試器窗口中【Sorted List】頁顯示的內(nèi)容是一樣。,9.10 S 函 數(shù),
26、9.10.1 概念 9.10.2 功能 9.10.3 工作流程 9.10.4 書寫規(guī)范 9.10.5 應(yīng)用示例,9.10.1 概念,S函數(shù)是一種描述動態(tài)系統(tǒng)的計算機語言,可以用MATLAB、C、C+、Ada或 Fortran語言書寫。 S函數(shù)采用一種特殊的調(diào)用語法使得S函數(shù)可以和Simulink解法器進行交互。S函數(shù)可以用來描述連續(xù)、離散和混雜系統(tǒng)。,9.10.2 功能,S函數(shù)可以實現(xiàn)以下操作。 可以通過它用多種語言來創(chuàng)建新的通用性的Simulink模塊。 編寫好的S函數(shù),可以在User-Defined Functions模塊庫的S-function模塊中通過名稱來調(diào)用,并可以進行封裝。,可以
27、通過S函數(shù)將一個系統(tǒng)描述成一個數(shù)學(xué)方程。 便于圖形化仿真。 可以創(chuàng)建代表硬件驅(qū)動的模塊。,9.10.3 工作流程,1模塊輸入、狀態(tài)和輸出間的數(shù)學(xué)關(guān)系 2Simulink仿真流程 3S函數(shù)的回調(diào)函數(shù),1模塊輸入、狀態(tài)和輸出間的數(shù)學(xué)關(guān)系,描述一個Simulink模塊需要3個基本元素: 輸入向量(u); 狀態(tài)向量(x); 輸出向量(y)。,輸出是輸入向量、狀態(tài)向量和采樣時間的函數(shù)。在計算中,往往需要利用如下所示的3種關(guān)系。,Simulink在仿真時把上面的關(guān)系對應(yīng)為不同的函數(shù),它們分別實現(xiàn)計算模塊的輸出、更新模塊的離散狀態(tài)和計算連續(xù)狀態(tài)的微分。,2Simulink仿真流程,Simulink仿真按照如
28、下圖所示的流程進行。 初始化階段,Simulink將庫中的模塊并入到自建模型中; 然后進入仿真循環(huán); 如此循環(huán)直至仿真結(jié)束。,3S函數(shù)的回調(diào)函數(shù),一個S函數(shù)是由一系列回調(diào)函數(shù)組成,在仿真循環(huán)中的每個仿真階段都由Simulink調(diào)用回調(diào)函數(shù)來執(zhí)行相應(yīng)的任務(wù)。,S函數(shù)的回調(diào)函數(shù)可以完成以下任務(wù)。 初始化; 計算下一個采樣點; 計算當前仿真步的輸出; 更新當前仿真步的離散狀態(tài); 積分。,9.10.4 書寫規(guī)范,每一個M文件S函數(shù)具有如下的形式: sys,x0,str,ts=f(t,x,u,flag,p1,p2,.) 下表列出了上面各參數(shù)的含義。,函數(shù)各參數(shù)的含義,續(xù)表,書寫M文件S函數(shù)時只需用MAT
29、LAB語言來編寫每個flag值對應(yīng)的子函數(shù)即可。 下表列出了在各個仿真階段對應(yīng)要執(zhí)行的回調(diào)函數(shù)以及相應(yīng)的flag參數(shù)值。,各個仿真階段對應(yīng)要執(zhí)行的S函數(shù)方法,9.10.5 應(yīng)用示例,利用“User-Defined Functions”庫中的S-Function模塊創(chuàng)建由MATLAB語言書寫的M文件S函數(shù)。,運行Simulink模型可得到如下圖所示的仿真結(jié)果。上下兩個模塊的輸出結(jié)果一樣,證明了S函數(shù)的功能是正確的。,9.11 實 例,例 針對平面直角坐標系,實現(xiàn)坐標在幾種常用坐標系間的變換,具體步驟如下。 首先列出常用的坐標系。 (1)直角坐標系 (oxy) 原點o位于任意位置,軸ox指向任意方
30、向,軸oy垂直于軸ox。,(2)極坐標系(ox) 極點o與直角坐標系的原點o重合,極軸ox與直角坐標系的軸ox重合,矢徑與極軸ox的夾角為極角。 (3)平移直角坐標系(o1x1y1) 原點o1在原直角坐標系的坐標為(g,h),軸o1x1和o1y1分別平行于原直角坐標系的軸ox和oy。,(4)旋轉(zhuǎn)直角坐標系(ox2y2) 原點o與原直角坐標系的原點o重合,軸ox2和oy2分別逆時針旋轉(zhuǎn)角度。 其次寫出坐標在不同坐標系間的轉(zhuǎn)換關(guān)系。,再次構(gòu)造Simulink框圖。 (1)由極坐標系轉(zhuǎn)換到直角坐標系的框圖如下圖所示。,按下“Ctrl+A”鍵選中所有模塊和連線,并創(chuàng)建子系統(tǒng)。 雙擊該子系統(tǒng),修改模塊I
31、n1的標注為“極坐標”,模塊Out1的標注為“直角坐標”。得到如下圖所示的結(jié)果。,然后封裝該子系統(tǒng)并設(shè)置參數(shù),同保存該子系統(tǒng)為.mdl文件。 (2)由平移直角坐標系轉(zhuǎn)換到直角坐標系的框圖。類似于上面的步驟,創(chuàng)建的子系統(tǒng)如下圖所示。,其中,利用到模塊Constant、Demux、Mux和Fcn。 封裝該子系統(tǒng)并設(shè)置參數(shù),雙擊如下圖所示的子系統(tǒng)。,可看到如下圖所示的結(jié)果。,(3)由旋轉(zhuǎn)直角坐標系轉(zhuǎn)換到直角坐標系的框圖。 建立如下圖所示的子系統(tǒng),,并進行如下圖所示的封裝設(shè)置。,最后構(gòu)成并保存自建模型庫,如下圖所示。,習(xí) 題,第十一章 外部接口,本章將著重介紹MATLAB的外部接口,包括: 與Word
32、/Excel的混合使用; 編譯器; 應(yīng)用程序接口。,目錄,11.1 與Word/Excel的混合使用 11.2 編 譯 器 11.3 應(yīng)用程序接口 習(xí) 題,11.1 與Word/Excel的混合使用,11.1.1 Notebook的使用 11.1.2 Excel link的使用,在Word環(huán)境中可以使用MATLAB的資源。同時MATLAB也可以與Excel混合使用。,11.1.1 Notebook的使用,1在Word中執(zhí)行代碼的基本過程 2Notebook使用中應(yīng)該注意的問題,安裝Notebook(又稱M-book)時,計算機中必須已經(jīng)安裝Word和MATLAB,其具體步驟如下。,1在Word
33、中執(zhí)行代碼的基本過程,Notebook采用輸入細胞(Input Cell)來定義MATLAB的代碼,具體操作步驟如下。 采用文本格式輸入代碼,末尾不要加回車 和空格。,通過Notebook菜單中的【Define Input Cell】選項定義輸入細胞,其中輸入細胞 都顯示為黑方括號包括綠色字符的形式。 通過Notebook菜單中的【Evaluate Cell】選項或者按Ctrl+Enter鍵,運行 輸入細胞內(nèi)的代碼,并得到黑方括號包 括藍色字符形式的輸出細胞。,2Notebook使用中應(yīng)該注意的問題。,M-book文檔中的MATLAB代碼必須在英 文狀態(tài)下輸入。 帶鼠標操作交互的代碼最好不在M
34、-book 文檔中運行。,在運行M-book文檔時,最好不運行其他 程序與任務(wù),以免影響M-book文檔中程 序的正確執(zhí)行。 采用以下方法解決代碼執(zhí)行中出現(xiàn)的異常 情況:代碼以命令clear開始;重新啟動 計算機后,再執(zhí)行M-book文檔中的程 序;將M-book文檔的代碼拷貝到M文 件,再到MATLAB的命令窗口執(zhí)行。,M-book文檔的代碼運行速度要比在 MATLAB命令窗口中執(zhí)行慢很多。 當編輯科技論文或其他文檔時,最后可將 細胞轉(zhuǎn)換為普通文本。,可使用Notebook菜單中的【Bring MATLAB to Font】選項或者按組合鍵Alt M把MATLAB的命令窗口調(diào)到前臺。 可使用
35、Notebook菜單中的【Toogle Graph Output for Cell】 選項控制是否 顯示輸入細胞或輸出細胞的輸出圖形。,11.1.2 Excel link的使用,1Excel link的安裝 2Excel link的啟動 3Excel link的終止 4Excel link使用時需 要注意的幾個問題,Excel link是在Microsoft Windows環(huán)境 下實現(xiàn)Microsoft Excel和MATLAB進行 交互的插件。 使用Excel link時,不必脫離Excel環(huán) 境。 Excel link提供11條功能函數(shù)來實現(xiàn)數(shù)據(jù) 的鏈接和操作。,1Excel link的安
36、裝,系統(tǒng)需要在Windows環(huán)境下先安裝 Excel,然后再安裝MATLAB和Excel link。 Excel link隨安裝MATLAB時安裝的,即 在MATLAB安裝組件中選中Excel link。,需要在Excel中設(shè)置,具體步驟如下。 啟動Microsoft Excel,單擊工具菜單 (Tools),執(zhí)行【加載宏】命令,得到 如下圖所示的結(jié)果。,在打開的【加載宏】對話框中單擊【瀏覽】按 鈕,選擇MATLAB安裝目錄下的 toolboxexlink子目錄里的excllink.xla文件, 然后單擊【確定】按鈕,如下圖所示。,返回【加載宏】窗口,此時已經(jīng)選中了 【Excel link】選
37、項,如下圖所示。單擊 【確定】按鈕后,Excel link插件即可加 載MATLAB,并可以看到其運行窗口。,2Excel link的啟動,按照上面的設(shè)置,每次啟動Excel時Excel link和MATLAB將自動運行。,如果不希望Excel link和MATLAB自動運行,可以通過在Excel數(shù)據(jù)表單元中輸入“=MLAutoStart(”no“)”即可改變設(shè)置,如下圖所示。,同時可以從Excel環(huán)境中手動啟動Excel link和MATLAB。首先,在Tools菜單中選擇【宏】選項,如下圖所示;,在如下圖所示的對話框中輸入“MATLABinit”,單擊【執(zhí)行】按鈕后即可啟動Excel li
38、nk,并同時啟動MATLAB。,3Excel link的終止,當終止Excel的時候,Excel link和MATLAB會被同時終止。,如果需要在Excel環(huán)境中終止MATLAB和 Excel link的運行,則在工作表單元中輸 入“=MLClose()”即可,如下圖所示。當 需要重新啟動Excel link和MATLAB時, 可以使用MATLABinit命令。,4Excel link使用時需要注意的幾個問題,Excel link函數(shù)名對字母的大小寫不作區(qū) 分,而MATLAB函數(shù)名是區(qū)分大小寫的。 Excel工作表等式通常以“”或“”作為起 始標記。 在大多數(shù)Excel link函數(shù)中有兩種定
39、義變 量的方式,即直接定義和間接定義。,Excel link函數(shù)執(zhí)行過程中其所在數(shù)據(jù)單 元將一直顯示其函數(shù)內(nèi)容,函數(shù)執(zhí)行完畢 后,數(shù)據(jù)單元將被賦值為0。 建議設(shè)置Excel【工具】工具菜單里【選 項】的【編輯】頁中【按Enter鍵后移 動】選項為【向下】,以保證輸入完畢且 經(jīng)確認后再改變當前工作單元。,11.2 編 譯 器,11.2.1 編譯器概述 11.2.2 編譯器的安裝和配置 11.2.3 編譯器的使用,MATLAB編譯器是指將M文件作為其輸入,同時生成獨立的可執(zhí)行文件或相關(guān)軟件組件的程序,它可以由命令mcc調(diào)出。,11.2.1 編譯器概述,MATLAB編譯器4.0版本采用了MATLAB
40、 Component Runtime(MCR)技術(shù)。 MCR提供了對MATLAB語言的完全支 持。 MATLAB編譯器采用了Component Technology File(CTF)存檔來組織配 置文件包。,所有的M文件均采用了高級加密標準 (AES)進行了密鑰為1024位的加密, 保存為CTF格式。 每一個由MATLAB編譯器生成的應(yīng)用程序 或者共享庫均有一個與之相對應(yīng)的CTF存 檔。,MATLAB編譯器自動生成獨立文件或軟件組件。為了生成獨立運行的MATLAB應(yīng)用程序,只需要用來構(gòu)成應(yīng)用程序的M文件,然后編譯器將會自動執(zhí)行以下操作。 依賴性分析; 代碼生成; 存檔生成; 編譯; 鏈接。,
41、11.2.2 編譯器的安裝和配置,1安裝ANSI C/C+編譯器 2安裝MATLAB編譯器 3配置編譯器 4安裝MCR,1安裝ANSI C/C+編譯器,2安裝MATLAB編譯器,MATLAB編譯器的安裝過程包含在安裝MATLAB之中,當選擇Typical的安裝模式時,MATLAB Compiler會被自動選為MATLAB的安裝組件。,當選擇Custom安裝模式時,在默認情況下,MATLAB Compiler選項是被選中的,如下圖所示。,3配置編譯器,下面將介紹如何配置C或C+編譯器,使其可以與MATLAB編譯器一起進行工作。,4安裝MCR,將MATLAB安裝路徑中的 toolboxcompil
42、erdeploywin32子目 錄下的文件MCRInstaller.exe拷貝到其 他路徑; 雙擊進行安裝,直到提示安裝結(jié)束。,11.2.3 編譯器的使用,1編譯指令mcc 2創(chuàng)建獨立執(zhí)行程序,1編譯指令mcc,不管是生成獨立執(zhí)行程序,還是C共享庫以及軟件組件,只要源碼是M文件都可以借助編譯命令mcc實現(xiàn)。,2創(chuàng)建獨立執(zhí)行程序,下面以3個例子說明不同類型的編譯過程。,打開DOS窗口,將路徑變更為exm2.exe所在目錄,并運行exm2.exe,運行結(jié)果如下圖所示。,11.3 應(yīng)用程序接口,11.3.1 創(chuàng)建C語言MEX文件 11.3.2 Java接口 11.3.3 DDE技術(shù) 11.3.4 A
43、ctiveX技術(shù),MATLAB提供應(yīng)用程序接口(Application Program Interface,API)來實現(xiàn)與其他外部程序的溝通。,11.3.1 創(chuàng)建C語言MEX文件,1MEX文件簡介 2編寫MEX文件源程序,1MEX文件簡介,MEX是MATLAB和Executable兩個單詞 的縮寫。 MEX文件一般使用C或者Fortran語言編 寫,通過編譯生成的目標文件能夠被 MATLAB調(diào)用執(zhí)行。,MEX文件主要應(yīng)用于已存在較大規(guī)模的C 或者Fortran程序。 矩陣是MATLAB唯一能處理的對象,在C 語言中矩陣用結(jié)構(gòu)體mxArray來定義。,2編寫MEX文件源程序,編寫MEX文件源程序時,要用到兩類API庫函數(shù): mx-庫函數(shù),用于在C語言中創(chuàng)建、訪 問、操作和刪除結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賈玲勵志課件
- 賈寧財務(wù)課件
- 2026年組合結(jié)構(gòu)的設(shè)計與分析
- 貨車轉(zhuǎn)彎培訓(xùn)課件
- 貨物及運輸工具安全培訓(xùn)課件
- 呼吸系統(tǒng)疾病防治
- 護士日常行為規(guī)范解讀
- 心血管重癥監(jiān)護護理探討
- 醫(yī)療影像存儲與云平臺
- 2026年哈爾濱職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試參考題庫有答案解析
- 2025-2026學(xué)年人教版八年級上冊道德與法治期末試卷(含答案和解析)
- 2026貴州鹽業(yè)集團秋招面筆試題及答案
- 四川省成都市天府新區(qū)2024-2025學(xué)年七上期末數(shù)學(xué)試卷(原卷版)
- 慢性病患者健康管理工作方案
- 安全防范設(shè)計評估師基礎(chǔ)理論復(fù)習(xí)試題
- 2024“五史”全文課件
- 人教版七年級數(shù)學(xué)上冊期末試題及參考答案(偏難)
- 關(guān)節(jié)攣縮的治療及預(yù)防
- 2024能源企業(yè)可持續(xù)發(fā)展(ESG)披露指標體系和評價導(dǎo)則
- 鉆孔灌注樁鋼筋籠吊裝方案(改動)
- 江蘇省無錫市2023-2024學(xué)年七年級(上)期末數(shù)學(xué)試卷
評論
0/150
提交評論