MATLAB 第九章仿真_第1頁
MATLAB 第九章仿真_第2頁
MATLAB 第九章仿真_第3頁
MATLAB 第九章仿真_第4頁
MATLAB 第九章仿真_第5頁
已閱讀5頁,還剩182頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 本章主要講解: Simulink的概念及其應(yīng)用; Simulink搭建系統(tǒng)模型的方法及特點; Simulink環(huán)境中的仿真及調(diào)試。 9.6 回 調(diào) 函 數(shù) 9.7 運 行 仿 真 9.8 仿真結(jié)果分析 9.9 模型的調(diào)試 9.10 S 函 數(shù) 9.11 實 例 9.1.1 Simulink的概念 9.1.2 Simulink的工作環(huán)境 9.1.3 Simulink的工作原理 9.1.4 Simulink模型的特點 9.1.5 Simulink里的數(shù)據(jù)類型 9.1.6 Simulink里的模塊和模塊庫 Simulink是MATLAB提供的實現(xiàn)動態(tài)系統(tǒng)建模和仿真的軟件包,是MATLAB相對獨立的

2、重要的組成部分。 Simulink的突出特點是支持圖形用戶界面(GUI),模型由模塊組成的框圖來表示。 啟動Simulink(6.0版)有如下3種方式: 在 M AT L A B 的 命 令 窗 口 直 接 鍵 入 命 令Simulink; 用鼠標左鍵單擊MATLAB工具條上的按鈕; 在MATLAB菜單上選擇【File】|【New】|【Model】選項。 運行后會彈出如下圖所示的Simulink模塊庫瀏覽器窗口 。 使用第3種方式打開時還會彈出如下圖所示的新建模型窗口。 1【File】菜單 2【Edit】菜單 3【View】菜單 4【Simulation】菜單 5【Format】菜單 6【To

3、ols】菜單 7【Help】菜單 Simulink模塊庫瀏覽器各部分的用途,如下圖所示。 【File】菜單中各選項的名稱與功能如下表所示?!綟ile】菜單 【Edit】菜單中各選項的名稱與功能如下表所示?!綞dit】菜單 【View】菜單中部分主要選項的名稱與功能如下表所示?!綱iew】菜單 【Simulation】菜單如下圖所示。【Simulation】菜單各選項的功能如下 : 【Start】:開始運行仿真; 【Stop】:停止仿真; 【Configuration Parameters】:設(shè)置仿真參數(shù)和選擇解法器; 【Normal】、【Accelerator】、【External】分別表示正

4、常工作模式、加速仿真和外部工作模式。 【Format】菜單用于設(shè)置字體、屏幕顏色、模塊名的顯示、模塊顯示顏色、信號和端口類型和寬度等。 該菜單部分主要選項的名稱與功能如下表所示?!綟ormat】菜單 【Tools】菜單中部分主要選項的名稱與功能如下表所示。【Tools】菜單 【Help】菜單中部分主要選項的名稱與功能如下表所示?!綡elp】菜單 1圖形化模型與數(shù)學模型間的關(guān)系 2圖形化模型的仿真過程 現(xiàn)實中每個系統(tǒng)都有輸入、輸出和狀態(tài)3個基本要素,以及它們之間隨時間變化的數(shù)學函數(shù)關(guān)系,即數(shù)學模型。 圖形化模型也體現(xiàn)了輸入、輸出和狀態(tài)間隨時間變化的某種關(guān)系,如下圖所示。 只要這兩種關(guān)系在數(shù)學上是

5、等價的,那么就可以圖形化模型代替數(shù)學模型。 Simulink的仿真過程包括如下幾個階段: 模型編譯階段; 連接階段; 仿真環(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é)束,在每一個采樣點按運

6、行列表計算各模塊的狀態(tài)和輸出。 仿真環(huán)階段又分成以下兩個子階段: 初始化階段:該階段只運行一次,用于初始化系統(tǒng)的狀態(tài)和輸出; 迭代階段:該階段在定義的時間段內(nèi)按采樣點間的步長重復運行。 Simulink建立的模型具有以下3個特點: 仿真結(jié)果的可視化; 模型的層次性; 可封裝子系統(tǒng)。 1Simulink支持的數(shù)據(jù)類型 2數(shù)據(jù)類型的傳播 3使用復數(shù)信號 Simulink在仿真開始之前和運行過程中會自動確認模型的類型安全性,以保證該模型產(chǎn)生的代碼不會出現(xiàn)上溢或下溢。 Simulink支持所有的MATLAB內(nèi)置數(shù)據(jù)類型,除此之外Simulink還支持布爾類型。 打開Simulink模型窗口中的菜單He

7、lp下的選項Block Support Table,打開如下 圖 所 示 的 幫 助 窗 口 , 總 結(jié) 了 所 有Simulink庫中的模塊所支持的數(shù)據(jù)類型。 打開Simulink模型窗口的【Format】|【Port/Signal Displays】|【Port Data Types】,查看信號的數(shù)據(jù)類型和模塊輸入/輸出端口的數(shù)據(jù)類型,如下圖所示。 相連模塊的輸出/輸入信號所支持的數(shù)據(jù)類型如果是不相同的,在仿真中就會彈出錯誤提示對話框,告知出現(xiàn)沖突的信號和端口。 此時可以嘗試在沖突的模塊間插入DataTypeConversion模塊來解決類型沖突。 Simulink默認的信號值都是實數(shù),但

8、在實際問題中有時需要處理復數(shù)信號。 在Simulink中通常用下面兩種方法來建立處理復數(shù)信號的模型,如下圖所示。 在模型中加入Constant模塊,并將其參數(shù)設(shè)為復數(shù)。 分別生成復數(shù)的虛部和實部,再用Real-Image to Complex模塊把它們聯(lián)合成一個復數(shù)。 分 別 生 成 復 數(shù) 的 幅 值 和 幅 角 , 再 用Magnitue-Angle to Complex模塊把它們聯(lián)合成一個復數(shù)。 模塊庫提供各種基本模塊,它按應(yīng)用領(lǐng)域以及功能組成若干子庫,并按樹狀結(jié)構(gòu)進行顯示。 模塊是Simulink建模的基本元素。 下表詳細介紹了Simulink中常用子庫中常用模塊的功能 。Common

9、ly Used Blocks子庫 Continuous子庫 Discontinuities子庫 Discrete子庫 Logic and Bit Operations子庫 續(xù)表Math Operations子庫 續(xù)表Ports & Subsystems子庫續(xù)表Sinks子庫 Sources子庫User-Defined Functions子庫 1模塊的基本操作 2創(chuàng)建模型的基本步驟 3模型文件格式 下表匯總了Simulink對模塊進行操作的部分方法。對模塊進行操作續(xù)表 下表匯總了Simulink對直線進行操作的部分方法。對直線進行操作 雙擊模塊將會彈出【參數(shù)設(shè)置】對話框,如下圖所示的增益

10、模塊,進而設(shè)置參數(shù)值。 鼠標右鍵單擊模塊并在彈出的上下文菜單中選擇【Block Properties】,會彈出屬性設(shè)置對話框,如下圖所示,其中包括如下三項內(nèi)容。 【General】頁; 【Block Annotation】頁; 【Callbacks】頁。(1)【General】頁 Description:用于對該模塊在模型中的用法進行注釋; Priority:定義該模塊在模型中執(zhí)行的優(yōu)先順序; Tag:為模塊添加文本格式的標記。(2)【Block Annotation】頁 用于指定在圖標下顯示模塊的參數(shù)、取值及格式。(3)【Callbacks】頁 用于定義該模塊發(fā)生某種指定行為時所要執(zhí)行的回調(diào)

11、函數(shù)。 對信號進行標注以及對模型進行注釋,方法如下表所示。在連線上反映信息 對注釋進行處理 利用Simulink進行系統(tǒng)建模和仿真的一般步驟如下。 繪制系統(tǒng)流圖; 啟動Simulink模塊庫瀏覽器,新建一個空白模型窗口; 將所需模塊放入空白模型窗口中,按系統(tǒng)流圖的布局連接各模塊,并封裝子系統(tǒng); 設(shè)置各模塊的參數(shù)以及與仿真有關(guān)的各種參數(shù); 保存模型,模型文件的后綴名為.mdl; 運行并調(diào)試模型。 Simulink還提供了通過命令行建立模型和設(shè)置模型參數(shù)的方法。 Simulink將每一個模型(包括庫)都保存在一個以.mdl為后綴的文件里,稱為模型文件。 一個模型文件就是一個結(jié)構(gòu)化的ASCII文件,

12、它包括關(guān)鍵字和各種參數(shù)的值。 9.3.1 創(chuàng)建子系統(tǒng) 9.3.2 封裝子系統(tǒng) 9.3.3 自定義模塊庫 1子系統(tǒng)的作用 2子系統(tǒng)的創(chuàng)建方法 3子系統(tǒng)創(chuàng)建示例 通過子系統(tǒng)可以把復雜的模型分割成若干個簡單的模型,具有以下優(yōu)點: 減少模型窗口中模塊的個數(shù),使得模型窗口整潔。 把一些功能相關(guān)的模塊集成在一起,可以復用。 通過子系統(tǒng)可以實現(xiàn)模型圖表的層次化。 Simulink有如下兩種創(chuàng)建子系統(tǒng)的方法。 通過子系統(tǒng)模塊來創(chuàng)建子系統(tǒng):先向模型中添加Subsystem模塊,然后打開該模塊并向其中添加模塊; 組合已存在的模塊集。例 通過Subsystem模塊創(chuàng)建子系統(tǒng)。具體步驟如下。 從Ports&S

13、ubsystems中復制Subsystem模塊到模型中,如下圖所示; 用鼠標左鍵雙擊Subsystem模塊圖標打開如下圖所示Subsystem模塊編輯窗口; 在新的空白窗口創(chuàng)建子系統(tǒng),然后保存; 運行仿真并保存。例 通過組合已存在的模塊創(chuàng)建子系統(tǒng)。具體步驟如下。 創(chuàng)建如下圖所示的系統(tǒng); 選中要創(chuàng)建成子系統(tǒng)的模塊,如下圖所示; 選擇【Edit】|【Create Subsystem】菜單,結(jié)果如下圖所示; 運行仿真并保存。 1封裝的作用 2封裝的過程 3封裝示例 封裝后的子系統(tǒng)與Simulink提供的模塊一樣擁有圖標,并且用鼠標左鍵雙擊圖標時會出現(xiàn)一個用戶自定義的【參數(shù)設(shè)置】對話框,實現(xiàn)在對話框中

14、設(shè)置子系統(tǒng)中的參數(shù)。 子系統(tǒng)中各個模塊的參數(shù)通過參數(shù)對話框就可以進行設(shè)置。 為子系統(tǒng)創(chuàng)建可以反映子系統(tǒng)功能的圖標。 可以避免用戶在無意中修改子系統(tǒng)中模塊的參數(shù)。 選擇需要封裝的子系統(tǒng),并選擇【Edit】|【Mask Subsystem】菜單進行封裝。 選擇【Edit】|【Edit mask】菜單,這時會彈出如下圖所示的封裝編輯器,通過它進行各種設(shè)置。 單擊【Apply】或【OK】按鈕保存設(shè)置。例 簡介封裝的過程。具體步驟如下: (1)建立如下圖所示的含有子系統(tǒng)的模型,并設(shè)置子系統(tǒng)中Gain模塊的Gain參數(shù)為一變量m。 (2)選中模型中的Subsystem子系統(tǒng),選擇【Edit】|【Mask

15、Subsystem】菜單進行封裝,進而選擇【Edit】|【Edit mask】菜單(或用鼠標右鍵單擊子系統(tǒng)彈出上下文菜單,選擇【Edit mask】菜單)打開封裝編輯器,如下圖所示。 (3)按照如下圖所示設(shè)置【Icon頁】。 Icon options面板:定義圖標的邊框是否可見等。 Drawing commands文本框:定義繪制模型圖標的方式。 Examples of drawing commands面板:說明各種繪制圖標的命令,每種命令都對應(yīng)一個示例。 (4)按照如下圖所示設(shè)置【Parameters】頁。 定義封裝子系統(tǒng)參數(shù)設(shè)置對話框的可設(shè)置參數(shù),其中各項設(shè)置的含義如下圖所示。 ( 5 )

16、 按 照 如 下 圖 所 示 設(shè) 置 【Initialization】頁。定義封裝子系統(tǒng)的初始化命令,包括MATLAB表達式、函數(shù)、運算符和在【Parameters】頁定義的變量。 (6)按照如下圖所示設(shè)置【Documentation】頁 定義封裝子系統(tǒng)的封裝類型、模塊描述和模塊幫助信息,其中各項設(shè)置的含義如下圖所示。 (7)設(shè)置參數(shù)后運行仿真,用鼠標左鍵雙擊模型中的Scope模塊,看到如下圖所示的結(jié)果。 大量封裝子系統(tǒng)模塊按照功能需要分門別類地來存儲,以方便查找,每一類即為一模塊庫。 通過自定義模塊庫,可以將為某個領(lǐng)域服務(wù)的所有模塊集中存放。 通過選擇Simulink界面的【File】|【N

17、ew】|【Library】菜單來創(chuàng)建模塊庫。 選中該菜單后將彈出一個空白的庫窗口; 然后將需要存放在同一模塊庫中的模塊復制到模塊庫窗口中即可,如下圖所示。 過零檢測通過Simulink為模塊注冊若干過零函數(shù),當變化趨勢劇烈時,過零函數(shù)發(fā)生符號變化。 每個采樣點仿真結(jié)束時Simulink檢測是否有過零函數(shù)符號變化,如果檢測到過零點,Simulink將在前一個采樣點和目前采樣點間內(nèi)插值。 下表列出了Simulink中支持過零檢測的模塊。支持過零點檢測的模塊 如果Simulink模塊的輸入是依賴于該模塊的輸出,就會產(chǎn)生一個代數(shù)環(huán),如下圖所示。 這意味著無法進行仿真,因為沒有輸入就得不到輸出,沒有輸出

18、也得不到輸入。 解決代數(shù)環(huán)的辦法包括以下幾種: 盡量不形成代數(shù)環(huán)的結(jié)構(gòu),采用替代結(jié)構(gòu); 為可以設(shè)置初始值的模塊設(shè)置初值; 對于離散系統(tǒng),在模塊的輸出一側(cè)增加unit delay模塊; 對于連續(xù)系統(tǒng),在模塊的輸出一側(cè)增加memory模塊。 為模型或模塊設(shè)置回調(diào)函數(shù)的方法有下面兩種: 通過模型或模塊的屬性對話框來設(shè)置; 通過MATLAB相關(guān)的命令來設(shè)置。模型屬性設(shè)置見下圖。模塊屬性設(shè)置見下圖。 模型屬性設(shè)置對話框中的Callbacks頁給出了回調(diào)函數(shù)列表,如下表所示。模型的回調(diào)參數(shù) 模塊的回調(diào)參數(shù) 續(xù)表 1使用窗口運行仿真 2仿真參數(shù)設(shè)置 3仿真診斷對話框 4使用命令運行仿真 5改善仿真性能及精度

19、 建立好模型后,可以直接在模型窗口通過菜單項或工具欄進行仿真,如下圖所示。 可以通過模型窗口的【Simulation】|【Configuration Parameters】菜單項打開設(shè)置仿真參數(shù)的對話框,如下圖所示。 如果模型在運行過程中遇到錯誤,將停止仿真,并彈出仿真診斷對話框。通過該對話框,可以了解模型出錯的位置和原因,如下圖所示。 MATLAB允許通過命令窗口運行仿真。MATLAB提供函數(shù)sim()運行仿真,其具體使用方法如下: t,x,y = sim(filename, timespan, options, ut); t , x , y 1 , y 2 , . . . , y n =

20、sim(filename,timespan,options,ut)。 只有參量filename是必需的,各參量的含義如下表所示。 函數(shù)sim()參量 Simulink的仿真性能和精度受許多因素的影響,包括模型的設(shè)計、仿真參數(shù)的設(shè)置等。 但是對于某些問題,適當?shù)恼{(diào)整仿真參數(shù)可以得到更好的結(jié)果,如: 加速仿真 提高精度 1觀看輸出結(jié)果 2線性化分析 3平衡點分析 在Simulink中有如下3種方法繪制模型的仿真結(jié)果。 在模型中將信號輸入到Scope模塊; 將輸出寫入To Workspace 模塊,然后使用MATLAB繪圖功能。 將輸出寫入To File 模塊,然后使用MATLAB文件讀取和繪圖功能

21、。 M a t l a b 中 用 函 數(shù) l i n m o d ( ) 和dlinmod()來分別實現(xiàn)連續(xù)模型和離散系統(tǒng)、混雜系統(tǒng)的線性化,其具體使用方法如下: A,B,C,D = linmod(filename); A,B,C,D = dlinmod(filename, Ts)。 Simulink通過函數(shù)trim()來計算動態(tài)系統(tǒng)的平衡點。并不是所有時候都有解,如果無解,函數(shù)trim()將返回離期望狀態(tài)最近的解。 1Simulink調(diào)試器 2命令行調(diào)試 3設(shè)置斷點 4顯示仿真的信息 5顯示模型的信息 Simulink提供了調(diào)試器,以方便查找和診斷模型中的錯誤,它允許通過單步運行仿真顯示模

22、塊的即時狀態(tài)、輸入和輸出。 下表對該對話框工具欄各按鈕的功能進行了詳細介紹 。調(diào)試器工具欄 許多Simulink命令和消息是通過Method ID和Block ID來引用方法和模塊的。 Method ID是按方法被調(diào)用的順序從0開始分配的一個整數(shù); Block ID是在編譯階段分配的,形式為sid:bid。 斷點就是使仿真運行到該位置時停止,同時可以使用命令continue使仿真繼續(xù)運行。調(diào)試器允許定義無條件斷點和有條件斷點。(1)設(shè)置無條件斷點 設(shè)置無條件斷點有如下3種方式: 通過調(diào)試器工具欄; 通過調(diào)試器Simulation Loop頁; 通過在MATLAB命令窗口運行相關(guān)命令。(2)設(shè)置

23、有條件斷點 設(shè)置有條件斷點可以通過在調(diào)試器【Break on conditions】頁中設(shè)置相應(yīng)的斷點條件來實現(xiàn)。 Simulink調(diào)試器工具條中的按鈕用于顯示模塊的輸入/輸出信息。 首先在模型窗口選中模塊; 然后用鼠標左鍵單擊該按鈕,被選中的模塊在當前采樣點的輸入、輸出和狀態(tài)信息將顯示在調(diào)試器窗口的【Outputs】頁中。 調(diào)試器除了可以顯示仿真的相關(guān)信息外,還可以顯示模型的相關(guān)信息。 在MATLAB命令窗口中,可以用命令slist顯示系統(tǒng)中各模塊的索引,模塊的索引就是它們的執(zhí)行順序,它與調(diào)試器窗口中【Sorted List】頁顯示的內(nèi)容是一樣。 9.10.1 概念 9.10.2 功能 9.

24、10.3 工作流程 9.10.4 書寫規(guī)范 9.10.5 應(yīng)用示例 S函數(shù)是一種描述動態(tài)系統(tǒng)的計算機語言,可以用MATLAB、C、C+、Ada或 Fortran語言書寫。 S函數(shù)采用一種特殊的調(diào)用語法使得S函數(shù)可以和Simulink解法器進行交互。S函數(shù)可以用來描述連續(xù)、離散和混雜系統(tǒng)。 S函數(shù)可以實現(xiàn)以下操作。 可以通過它用多種語言來創(chuàng)建新的通用性的Simulink模塊。 編寫好的S函數(shù),可以在User-Defined Functions模塊庫的S-function模塊中通過名稱來調(diào)用,并可以進行封裝。 可以通過S函數(shù)將一個系統(tǒng)描述成一個數(shù)學方程。 便于圖形化仿真。 可以創(chuàng)建代表硬件驅(qū)動的模

25、塊。 1模塊輸入、狀態(tài)和輸出間的數(shù)學關(guān)系 2Simulink仿真流程 3S函數(shù)的回調(diào)函數(shù) 描述一個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)的微分。 Simulink仿真按照如下圖所示的流程進行。 初始化階段,Simulink將庫中的模塊并入到自建模型中; 然后進入仿真循環(huán); 如此循環(huán)直至仿真結(jié)束。 一個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); 積分。 每一個M文件S函數(shù)具有如下的形式: sys,x0,str,ts=f(t,x,u,flag,p1,p2,.)下表列出了上面各參數(shù)的含義。 函數(shù)各參數(shù)的含義續(xù)表 書寫M文件S

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論