第12章 MATLAB Simulink系統(tǒng)仿真_第1頁(yè)
第12章 MATLAB Simulink系統(tǒng)仿真_第2頁(yè)
第12章 MATLAB Simulink系統(tǒng)仿真_第3頁(yè)
第12章 MATLAB Simulink系統(tǒng)仿真_第4頁(yè)
第12章 MATLAB Simulink系統(tǒng)仿真_第5頁(yè)
已閱讀5頁(yè),還剩128頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第12章MATLAB

Simulink系統(tǒng)仿真

12.1Simulink操作基礎(chǔ)12.2系統(tǒng)仿真模型的建立12.3系統(tǒng)的仿真與分析12.4子系統(tǒng)及其封裝12.5S函數(shù)的設(shè)計(jì)與應(yīng)用第12章MATLABSimulink系統(tǒng)仿真12.1Simulink操作基礎(chǔ)12.1.1Simulink的啟動(dòng)與退出1.Simulink的啟動(dòng)在安裝MATLAB的過(guò)程中,若選中了Simulink組件,則在MATLAB安裝完成后,Simulink也就安裝好了。如果需要,可以直接啟動(dòng)Simulink,步驟如下:①在MATLAB的命令行窗口輸入simulink命令,或選擇MATLAB主窗口“主頁(yè)”選項(xiàng)卡,單擊“SIMULINK”命令組中的“Simulink”命令按鈕,或選擇MATLAB主窗口“主頁(yè)”選項(xiàng)卡,單擊“文件”命令組中的“新建”命令按鈕,再?gòu)南吕藛沃羞x擇“SimulinkModel”命令,這時(shí)進(jìn)入Simulink起始頁(yè)。②在Simulink起始頁(yè)單擊“BlankModel”按鈕,打開一個(gè)名為untitled的模型編輯窗口,如圖12-1所示。利用模型編輯窗口,可以通過(guò)鼠標(biāo)的拖放操作創(chuàng)建一個(gè)仿真模型。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真在Simulink模型編輯窗口選擇File→New→BlankModel命令,或按Ctrl+N組合鍵,或單擊工具欄中的命令按鈕,又可以打開新的模型編輯窗口。③在Simulink模型編輯窗口單擊“LibraryBrowser”按鈕,打開如圖12-2所示的SimulinkLibraryBrowser(Simulink模塊庫(kù)瀏覽器)窗口。該窗口包含兩個(gè)窗格,左側(cè)的窗格以樹狀列表的形式列出了所有模塊庫(kù)。若單擊某個(gè)模塊庫(kù),右側(cè)的窗格列出該模塊庫(kù)的子模塊庫(kù);若單擊某個(gè)子模塊庫(kù),右側(cè)的窗格列出該子模塊庫(kù)中的所有模塊。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真在SimulinkLibraryBrowser窗口中,單擊其工具欄中的按鈕或按Ctrl+N組合鍵,可以打開模型編輯窗口。④模型創(chuàng)建完成后,在Simulink模型編輯窗口選擇File→Save命令或Saveas命令,或單擊模型編輯窗口工具欄中的save命令按鈕,將模型以模型文件的格式存盤。MATLAB2012b以前的版本,模型存儲(chǔ)為MDL格式(文件名擴(kuò)展名為.mdl),后來(lái)的版本增加了SLX格式(文件名擴(kuò)展名為.slx),信息存儲(chǔ)使用UnicodeUTF-8的XML標(biāo)準(zhǔn)。保存文件的格式與當(dāng)前系統(tǒng)支持的字符編碼有關(guān),如果模型中使用了中文字符,建議使用SLX格式存儲(chǔ)。注意:Simulink不能獨(dú)立運(yùn)行,只能在MATLAB環(huán)境中運(yùn)行。第12章MATLABSimulink系統(tǒng)仿真2.模型文件的打開如果要對(duì)一個(gè)已經(jīng)存在的模型文件進(jìn)行編輯修改,需要打開該模型文件,其方法有:①在MATLAB命令行窗口直接輸入模型文件名(不要加擴(kuò)展名),這要求該模型文件在當(dāng)前文件夾下或在已定義的搜索路徑中。②在Simulink起始頁(yè)單擊“Openfile”按鈕,然后選擇或輸入欲編輯模型的名字?;蛑苯舆x擇最近打開過(guò)的模型文件打開模型。③在Simulink模型編輯窗口選擇File→Open命令,或按Ctrl+O組合鍵,或單擊工具欄中的Open命令按鈕,然后選擇或輸入欲編輯模型的名字。也可以選擇File→OpenRecent命令打開最近打開過(guò)的模型文件。④在SimulinkLibraryBrowser窗口中,單擊其工具欄中的Open命令按鈕,也能打開已經(jīng)存在的模型文件。第12章MATLABSimulink系統(tǒng)仿真3.Simulink的退出要退出Simulink,只要關(guān)閉所有模型編輯窗口和SimulinkLibraryBrowser窗口即可。第12章MATLABSimulink系統(tǒng)仿真12.1.2Simulink仿真初步1.模型元素典型的Simulink模型包括以下3種元素。①信號(hào)源(source)。信號(hào)源可以是Constant(常量)、Clock(時(shí)鐘)、SineWave(正弦波)、Step(單位階躍函數(shù))等。②系統(tǒng)模塊。例如,MathOperations模塊(數(shù)學(xué)運(yùn)算)、Continuous模塊(連續(xù)系統(tǒng))、Discrete模塊(離散系統(tǒng))等。③信宿(sink)。信號(hào)可以在Scope(示波器)、XYGraph(圖形記錄儀)上顯示,也可以存儲(chǔ)到文件(ToFile)、導(dǎo)出到工作空間(ToWorkspace)。第12章MATLABSimulink系統(tǒng)仿真2.仿真步驟利用Simulink進(jìn)行系統(tǒng)仿真通常包括以下步驟。①建立系統(tǒng)仿真模型,包括添加模塊、設(shè)置模塊參數(shù)、進(jìn)行模塊連接等操作。②設(shè)置仿真參數(shù)。③啟動(dòng)仿真并分析仿真結(jié)果。第12章MATLABSimulink系統(tǒng)仿真3.簡(jiǎn)單實(shí)例下面通過(guò)一個(gè)簡(jiǎn)單實(shí)例,說(shuō)明利用Simulink建立仿真模型并進(jìn)行系統(tǒng)仿真的方法。例12-1利用Simulink仿真曲線y(t)=sintsin(4πt)(0≤t≤

)。正弦信號(hào)由Sources模塊庫(kù)(信號(hào)源)中的SineWave模塊提供,求積用MathOperations模塊庫(kù)(數(shù)學(xué)運(yùn)算)中的Product模塊實(shí)現(xiàn),再用Sinks模塊庫(kù)(信號(hào)輸出)中的Scope模塊(示波器)輸出波形,操作過(guò)程如下。第12章MATLABSimulink系統(tǒng)仿真①打開一個(gè)名為untitled的模型編輯窗口,創(chuàng)建仿真模型。②打開SimulinkLibraryBrowser窗口,將所需模塊添加到模型中。在SimulinkLibraryBrowser窗口中展開Simulink模塊庫(kù),然后單擊Sources模塊庫(kù),在右側(cè)的窗口中找到SineWave模塊,用鼠標(biāo)將其拖曳到模型編輯窗口;單擊MathOperations模塊庫(kù),在右側(cè)的窗口中找到Product模塊,用鼠標(biāo)將其拖曳到模型窗口;單擊Sinks模塊庫(kù),在右側(cè)的窗口中找到Scope模塊,用鼠標(biāo)將其拖曳到模型窗口。③用連線將各個(gè)模塊連接起來(lái)組成系統(tǒng)仿真模型,如圖12-3所示。大多數(shù)模塊兩邊有符號(hào)“>”,與尖端相連的端表示信號(hào)輸入端,與開口相連的端表示信號(hào)輸出端。連線時(shí)從一個(gè)模塊的輸出端按下鼠標(biāo)左鍵,拖拽至另一模塊的信號(hào)輸入端,松開鼠標(biāo)左鍵完成連線操作,連線箭頭表示信號(hào)流的方向。也可以單擊信號(hào)流的源模塊后,按住Ctrl鍵,然后單擊信號(hào)流的目標(biāo)模塊,實(shí)現(xiàn)模塊連線。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真④設(shè)置模塊參數(shù)。先雙擊SineWave模塊,打開其BlockParameters對(duì)話框,如圖12-4所示,分別設(shè)置Frequency(頻率)為1、4*pi,設(shè)置Amplitude(幅值)都為1,其余參數(shù)不改變。對(duì)于求積模塊,其參數(shù)不改變。第12章MATLABSimulink系統(tǒng)仿真模型建好后,在模型編輯窗口選擇File→Save命令或Saveas命令,或單擊模型編輯窗口工具欄中的save命令按鈕,將模型以模型文件的格式存盤。⑤設(shè)置系統(tǒng)仿真參數(shù)。在模型編輯窗口選擇Simulation→ModelConfigurationParameters命令,打開仿真參數(shù)設(shè)置對(duì)話框,在Startime文本框中分別設(shè)置起始為0,在Stoptime設(shè)置終止時(shí)間為pi。把Solveroptions(算法選項(xiàng))中的Type參數(shù)設(shè)為Fixed-step(固定步長(zhǎng)),并在其右側(cè)的Solver算法編輯框中選擇ode5(Dormand-Prince)選項(xiàng),即5階Runge-Kutta算法,再把Fixed-stepsize的值設(shè)置為0.001,如圖所示。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真⑥仿真操作。在模型編輯窗口選擇Simulation→Run命令,或單擊工具欄中的Run命令按鈕,再雙擊示波器模塊,就可在示波器窗口中看到仿真結(jié)果,曲線如圖12-6所示。第12章MATLABSimulink系統(tǒng)仿真12.2系統(tǒng)仿真模型的建立12.2.1Simulink的基本模塊模塊是構(gòu)成系統(tǒng)仿真模型的基本單元,用適當(dāng)?shù)姆绞桨迅鞣N模塊連接在一起就能夠建立動(dòng)態(tài)系統(tǒng)的仿真模型,所以構(gòu)建系統(tǒng)仿真模型主要涉及Simulink模塊的操作。Simulink的模塊庫(kù)提供了大量模塊,大體分為兩類:基本模塊庫(kù)和專業(yè)模塊庫(kù)。單擊SimulinkLibraryBrowser窗口中Simulink前面的符號(hào),將看到Simulink模塊庫(kù)中包含的基本子模塊庫(kù),單擊所需要的子模塊庫(kù),在右邊的窗口中將看到相應(yīng)的模塊,選擇所需模塊,可用鼠標(biāo)將其拖曳到模型編輯窗口。同樣,在SimulinkLibraryBrowser窗口左側(cè)的Simulink選項(xiàng)上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“OpenSimulinkLibray”命令,將打開Simulink基本模塊庫(kù)窗口,如圖12-7所示。雙擊其中的子模塊庫(kù)圖標(biāo),打開子模塊庫(kù),找到仿真所需要的模塊。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真以Continuous模塊庫(kù)(連續(xù)系統(tǒng))為例,在Simulink基本模塊庫(kù)窗口中雙擊Continuous模塊庫(kù)的圖標(biāo)即可打開該模塊庫(kù)窗口,也可以在SimulinkLibraryBrowser窗口中Simulink下選中Continuous選項(xiàng),然后在SimulinkLibraryBrowser窗口右側(cè)打開連續(xù)系統(tǒng)模塊庫(kù)。在連續(xù)系統(tǒng)模塊庫(kù)中,包含Integrator(積分環(huán)節(jié))、Derivative(微分環(huán)節(jié))、State-Space(狀態(tài)方程)、TransferFcn(傳遞函數(shù))等許多模塊,可供連續(xù)系統(tǒng)建模使用。第12章MATLABSimulink系統(tǒng)仿真12.2.2模塊操作1.添加與刪除模塊要把一個(gè)模塊添加到模型中,首先要在Simulink模塊庫(kù)中找到該模塊,然后將這個(gè)模塊拖曳到模型編輯窗口中即可。要?jiǎng)h除模塊,需要先選定模塊,再按Delete鍵,或選擇Edit→Cut命令或Delete命令。也可以右擊需要?jiǎng)h除的模塊,在彈出的快捷菜單中選擇Cut命令或Delete命令。Cut命令將刪除的模塊送到剪貼板,Delete命令將徹底刪除模塊。第12章MATLABSimulink系統(tǒng)仿真2.選取模塊要在模型編輯窗口中選擇單個(gè)模塊,只要用鼠標(biāo)在模塊上單擊即可,這時(shí)模塊四周出現(xiàn)深色邊框。要選取多個(gè)模塊,可以在所有模塊所占區(qū)域的一角按下鼠標(biāo)左鍵不放,拖向該區(qū)域的對(duì)角,在此過(guò)程中會(huì)出現(xiàn)深色框,當(dāng)深色框包住了要選的所有模塊后,放開鼠標(biāo)左鍵,這時(shí)所有被選中模塊的周圍會(huì)出現(xiàn)深色邊框,表示模塊都被選中了。第12章MATLABSimulink系統(tǒng)仿真3.復(fù)制模塊在建立系統(tǒng)仿真模型時(shí),可能需要多個(gè)相同的模塊,這時(shí)可采用模塊復(fù)制的方法。在同一模型編輯窗口中復(fù)制模塊的方法是:?jiǎn)螕粢獜?fù)制的模塊,按住鼠標(biāo)左鍵并同時(shí)按下Ctrl鍵,移動(dòng)鼠標(biāo)到適當(dāng)位置放開鼠標(biāo)左鍵,模塊復(fù)制以后,會(huì)發(fā)現(xiàn)復(fù)制出的模塊名稱在原名稱的基礎(chǔ)上加上了編號(hào),這是Simulink的約定,每個(gè)模型中的模塊和名稱是一一對(duì)應(yīng)的,每一個(gè)模塊都有不同的名字。在不同的模型編輯窗口之間復(fù)制模塊的方法是:首先打開源模塊和目標(biāo)模塊所在的窗口,然后單擊要復(fù)制的模塊,按住鼠標(biāo)左鍵移動(dòng)鼠標(biāo)到相應(yīng)窗口(不用按住Ctrl鍵),然后釋放鼠標(biāo)左鍵,該模塊就會(huì)被復(fù)制過(guò)來(lái),而源模塊不會(huì)被刪除。復(fù)制操作還可以在模型編輯窗口選擇Edit→Copy命令和Edit→Paste命令來(lái)完成。第12章MATLABSimulink系統(tǒng)仿真4.模塊外形的調(diào)整要改變單個(gè)模塊的大小,首先將鼠標(biāo)指針指向該模塊,此時(shí)模塊的四角出現(xiàn)白色的小方塊,用鼠標(biāo)左鍵點(diǎn)住其周圍的4個(gè)白方塊中的任何一個(gè)并拖動(dòng)到需要的位置后釋放鼠標(biāo)即可。若要改變整個(gè)模型中所有模塊的大小,可以選擇模型編輯窗口的View→Zoom菜單項(xiàng),其中的Zoomin和Zoomout命令分別用來(lái)放大和縮小整個(gè)模型,NormalView(100%)命令用來(lái)將整個(gè)模型恢復(fù)到原始的正常大小,F(xiàn)ittoView命令用來(lái)將當(dāng)前選中的模塊或當(dāng)前模型放大到整個(gè)窗口大小來(lái)觀察。第12章MATLABSimulink系統(tǒng)仿真要調(diào)整模塊的方向,首先選定模塊,然后在模型編輯窗口選擇Diagram→Rotate&Flip菜單項(xiàng),其中的Clockwise命令使模塊順時(shí)針方向旋轉(zhuǎn)90°,Counterclockwise命令使模塊逆時(shí)針方向旋轉(zhuǎn)90°,F(xiàn)lipBlock命令使模塊旋轉(zhuǎn)180°。要改變模塊的顏色,首先選定模塊,然后在模型編輯窗口選擇Diagram→Format菜單項(xiàng),其中的ForegroundColor命令,設(shè)置模塊的前景色,即模塊的圖標(biāo)、邊框和模塊名的顏色。選擇BackgroundColor命令,設(shè)置模塊的背景色,即模塊的背景填充色。選擇CanvasColor命令,用來(lái)改變模型編輯窗口的背景色。選擇Shadow命令使模塊產(chǎn)生陰影效果。第12章MATLABSimulink系統(tǒng)仿真5.模塊名的處理要隱藏或顯示模塊名,首先選定模塊,然后在模型編輯窗口選擇Diagram→Format→ShowBlockName命令,使模塊隱藏的名字顯示出來(lái)或隱藏模塊名。要修改模塊名,單擊模塊名的區(qū)域,這時(shí)會(huì)在此處出現(xiàn)編輯狀態(tài)的光標(biāo),在這種狀態(tài)下能夠?qū)δK名隨意修改。模塊名和模塊圖標(biāo)中的字體也可以更改,方法是選定模塊,在模型編輯窗口選擇Diagram→Format→FontStyle命令,這時(shí)會(huì)彈出“SelectFont”對(duì)話框,在對(duì)話框中選擇需要的字體。第12章MATLABSimulink系統(tǒng)仿真模塊名的位置有一定的規(guī)律,當(dāng)模塊的接口在左右兩側(cè)時(shí),模塊名只能位于模塊的上下兩側(cè),默認(rèn)在下側(cè);當(dāng)模塊的接口在上下兩側(cè)時(shí),模塊名只能位于模塊的左右兩側(cè),默認(rèn)在左側(cè),因此,模塊名只能從原位置移動(dòng)到相對(duì)的位置??梢杂檬髽?biāo)拖動(dòng)模塊名到其相對(duì)的位置;也可以選定模塊,在模型編輯窗口選擇Diagram→Rotate&Flip→FlipBlockName命令實(shí)現(xiàn)模塊名相對(duì)的移動(dòng)。第12章MATLABSimulink系統(tǒng)仿真12.2.3模塊的連接1.連接兩個(gè)模塊從一個(gè)模塊的輸出端連到另一個(gè)模塊的輸入端,這是Simulink仿真模型最基本的連接情況。方法是先移動(dòng)鼠標(biāo)指針到輸出端,當(dāng)鼠標(biāo)指針變成十字形光標(biāo)時(shí)按住鼠標(biāo)左鍵,移動(dòng)鼠標(biāo)指針到另一個(gè)模塊的輸入端,當(dāng)連接線由虛線變成實(shí)線時(shí),釋放鼠標(biāo)左鍵就完成了兩個(gè)模塊的連接。如果兩個(gè)模塊不在同一水平線上,連線是一條折線。若要用斜線表示,需要在連線后,選中連線,再按住Shift鍵進(jìn)行拖動(dòng)。第12章MATLABSimulink系統(tǒng)仿真2.模塊間連線的調(diào)整調(diào)整模塊間連線位置可采用鼠標(biāo)拖放操作來(lái)實(shí)現(xiàn)。先將鼠標(biāo)指針移動(dòng)到需要移動(dòng)的線段的位置,按住鼠標(biāo)左鍵,移動(dòng)鼠標(biāo)到目標(biāo)位置,釋放鼠標(biāo)左鍵。刪除連線的方法和刪除模塊方法相同,即先選中連線,再刪除。第12章MATLABSimulink系統(tǒng)仿真3.連線的分支在仿真過(guò)程中,經(jīng)常需要把一個(gè)信號(hào)輸送到不同的模塊,這時(shí)就需要從一根連線分出一根連線。操作方法是,在先連好一條線之后,把鼠標(biāo)指針移到分支點(diǎn)的位置,先按下Ctrl鍵,然后按住鼠標(biāo)拖曳到目標(biāo)模塊的輸入端,釋放鼠標(biāo)和Ctrl鍵。第12章MATLABSimulink系統(tǒng)仿真4.標(biāo)注連線為了使模型更加直觀,可讀性更強(qiáng),可以為傳輸?shù)男盘?hào)做標(biāo)記。操作方法是雙擊要做標(biāo)記的連線,將出現(xiàn)一個(gè)小文本編輯框,在其中輸入標(biāo)注文本,這樣就建立了一個(gè)信號(hào)標(biāo)記。第12章MATLABSimulink系統(tǒng)仿真12.2.4模塊的參數(shù)和屬性設(shè)置1.模塊的參數(shù)設(shè)置在模型編輯窗口打開模塊參數(shù)設(shè)置對(duì)話框有以下方法。①雙擊要設(shè)置的模塊。②選擇要設(shè)置的模塊,再選擇Diagram→BlockParameters命令。③右擊要設(shè)置的模塊,從快捷菜單中選擇BlockParameters命令。模塊參數(shù)設(shè)置對(duì)話框分為兩部分,上面一部分是模塊功能說(shuō)明,下面一部分用來(lái)進(jìn)行模塊參數(shù)設(shè)置。圖12-4所示為正弦波模塊參數(shù)對(duì)話框,用戶可以設(shè)置它的采樣時(shí)間、幅值、頻率、相位等參數(shù)。第12章MATLABSimulink系統(tǒng)仿真2.模塊的屬性設(shè)置在模型編輯窗口打開模塊屬性設(shè)置對(duì)話框有以下方法。①選定要設(shè)置屬性的模塊,選擇Diagram→Properties命令。②右擊要設(shè)置屬性的模塊,從快捷菜單中選擇Properties命令。第12章MATLABSimulink系統(tǒng)仿真模塊屬性對(duì)話框包括General、BlockAnnotation和Callbacks三個(gè)選項(xiàng)卡。General選項(xiàng)卡中可以設(shè)置3個(gè)基本屬性,分別是:Description屬性對(duì)該模塊在模型中的用法進(jìn)行說(shuō)明;Priority屬性規(guī)定該模塊在模型中相對(duì)于其他模塊執(zhí)行的優(yōu)先順序。優(yōu)先級(jí)的數(shù)值必須是整數(shù)(可以是負(fù)整數(shù)),該數(shù)值越小,優(yōu)先級(jí)越高。也可以不輸入優(yōu)先級(jí)數(shù)值,這時(shí)系統(tǒng)自動(dòng)選取合適的優(yōu)先級(jí);Tag屬性是用戶為模塊添加的文本格式的標(biāo)記。BlockAnnotation選項(xiàng)卡中指定在該模塊的圖標(biāo)下顯示模塊的哪個(gè)參數(shù)。Callbacks選項(xiàng)卡中指定當(dāng)對(duì)該模塊實(shí)施某種操作時(shí)需要執(zhí)行的MATLAB命令或程序。第12章MATLABSimulink系統(tǒng)仿真12.3系統(tǒng)的仿真與分析12.3.1設(shè)置仿真參數(shù)在系統(tǒng)仿真過(guò)程中,事先必須對(duì)仿真算法、輸出模式等各種仿真參數(shù)進(jìn)行設(shè)置。在模型編輯窗口打開仿真參數(shù)設(shè)置對(duì)話框有以下方法。①單擊工具欄中的ModelConfigurationParameters按鈕。②選擇Simulation→ModelConfigurationParameters命令。打開的仿真參數(shù)設(shè)置對(duì)話框如圖12-8所示。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真在仿真參數(shù)設(shè)置對(duì)話框中,仿真參數(shù)分為7類。①Solver參數(shù):用于設(shè)置仿真起始和終止時(shí)間,選擇微分方程求解算法并為其規(guī)定參數(shù),以及選擇某些輸出選項(xiàng)。②DataImport/Export參數(shù):用于管理工作空間數(shù)據(jù)的導(dǎo)入和導(dǎo)出。③Optimization參數(shù):用于設(shè)置仿真優(yōu)化模式。④Diagnostics參數(shù):用于設(shè)置在仿真過(guò)程中出現(xiàn)各類錯(cuò)誤時(shí)發(fā)出警告的等級(jí)。⑤HardwareImplementation參數(shù):用于設(shè)置實(shí)現(xiàn)仿真的硬件。⑥ModelReferencing參數(shù):用于設(shè)置參考模型。⑦SimulationTarget參數(shù):用于設(shè)置仿真模型目標(biāo)。第12章MATLABSimulink系統(tǒng)仿真1.Solver參數(shù)設(shè)置Solver(求解算法)是利用模型中所含的信息來(lái)計(jì)算系統(tǒng)動(dòng)態(tài)行為的數(shù)值積分算法。Simulink提供的求解算法可支持多種系統(tǒng)的仿真,其中包括任何規(guī)模的連續(xù)時(shí)間(模擬)、離散時(shí)間(數(shù)字)、混雜(混合信號(hào))和多采樣率系統(tǒng)。第12章MATLABSimulink系統(tǒng)仿真這些求解算法可以對(duì)剛性系統(tǒng)以及具有不連續(xù)過(guò)程的系統(tǒng)進(jìn)行仿真??梢灾付ǚ抡孢^(guò)程的參數(shù),包括求解算法的類型和屬性、仿真的起始時(shí)間和結(jié)束時(shí)間以及是否加載或保存仿真數(shù)據(jù)。此外,還可以設(shè)置優(yōu)化和診斷信息。在仿真參數(shù)對(duì)話框左側(cè)窗格中單擊Solver選項(xiàng),在右側(cè)窗格中會(huì)列出所有Solver參數(shù),如圖12-8所示。第12章MATLABSimulink系統(tǒng)仿真(1)設(shè)置仿真起始和終止時(shí)間(Simulinktime)在Starttime和Stoptime兩個(gè)編輯框中,通過(guò)直接輸入數(shù)值來(lái)設(shè)置仿真起始時(shí)間和終止時(shí)間,時(shí)間單位是秒(s)。第12章MATLABSimulink系統(tǒng)仿真(2)仿真算法的選擇(Solveroptions)在Type列表框中設(shè)定算法類別:Fixed-step(固定步長(zhǎng))和Variable-step(變步長(zhǎng))算法,在Solver列表框中選擇具體算法。仿真算法根據(jù)步長(zhǎng)的變化分為固定步長(zhǎng)類算法和變步長(zhǎng)類算法。固定步長(zhǎng)是指在仿真過(guò)程中計(jì)算步長(zhǎng)不變,而變步長(zhǎng)是指在仿真過(guò)程中要根據(jù)計(jì)算的要求改變步長(zhǎng)。第12章MATLABSimulink系統(tǒng)仿真在采用變步長(zhǎng)類算法時(shí),首先應(yīng)該指定允許的誤差限,包括相對(duì)誤差限(Relativetolerance)和絕對(duì)誤差限(Absolutetolerance),當(dāng)計(jì)算過(guò)程中的誤差超過(guò)該誤差限時(shí),系統(tǒng)將自動(dòng)調(diào)整步長(zhǎng),步長(zhǎng)的大小將決定仿真的精度。在采用變步長(zhǎng)類算法時(shí)還要設(shè)置所允許的最大步長(zhǎng)(Maxstepsize),在默認(rèn)值(Auto)的情況下,系統(tǒng)所給定的最大步長(zhǎng)為:(終止時(shí)間-起始時(shí)間)/50。第12章MATLABSimulink系統(tǒng)仿真在采用固定步長(zhǎng)算法時(shí),要先設(shè)置固定步長(zhǎng)。由于固定步長(zhǎng)算法的步長(zhǎng)不變,所以此時(shí)不設(shè)定誤差限,而多了一個(gè)模型類型(Taskingmodeforperiodicsampletimes)的選項(xiàng),該選項(xiàng)包括:Auto(默認(rèn)值)、SingleTasking(單任務(wù))和MultiTasking(多任務(wù))。單任務(wù)是指各模塊的采樣速率相同,不檢測(cè)采樣速率的傳遞;多任務(wù)是指在模型中模塊具有不同的采樣速率,同時(shí)檢測(cè)模塊之間采樣速率的傳遞;默認(rèn)值則根據(jù)模塊的采樣速率是否相同來(lái)決定采用單任務(wù)還是多任務(wù)。第12章MATLABSimulink系統(tǒng)仿真變步長(zhǎng)和固定步長(zhǎng)包含多種不同的具體算法,如圖12-9所示。一般情況下,連續(xù)系統(tǒng)仿真應(yīng)該選擇ode45變步長(zhǎng)算法,對(duì)剛性問(wèn)題可以選擇變步長(zhǎng)的ode15s算法,離散系統(tǒng)一般默認(rèn)選擇定步長(zhǎng)的Discrete(nocontinuousstates)算法,而在仿真模型中含有連續(xù)環(huán)節(jié)時(shí)注意不能采用該仿真算法,而可以采用諸如4階Rung-Kutta法這樣的算法來(lái)求解問(wèn)題。第12章MATLABSimulink系統(tǒng)仿真(a)固定步長(zhǎng)(b)變步長(zhǎng)第12章MATLABSimulink系統(tǒng)仿真2.DataImport/Export參數(shù)設(shè)置導(dǎo)入的數(shù)據(jù)包括輸入信號(hào)和初始狀態(tài),輸入信號(hào)可以用標(biāo)準(zhǔn)信號(hào)或自定義函數(shù)生成。導(dǎo)出的數(shù)據(jù)包括輸出信號(hào)和仿真過(guò)程的狀態(tài)數(shù)據(jù),可以用于生成圖形或進(jìn)行其他處理。DataImport/Export(數(shù)據(jù)導(dǎo)入/導(dǎo)出)參數(shù)選項(xiàng)如圖12-10所示,包含Loadfromworkspace、Savetoworkspace和Saveoptions三個(gè)部分。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真(1)Loadfromworkspace(從工作空間中載入數(shù)據(jù))在仿真過(guò)程中,如果模型中有輸入端口(In模塊),可從工作空間直接把數(shù)據(jù)載入到輸入端口,即先選中DataImport/Export參數(shù)選項(xiàng)中的Input復(fù)選框,然后在后面的編輯框內(nèi)輸入數(shù)據(jù)的變量名。變量名可以采用不同的輸入形式。第12章MATLABSimulink系統(tǒng)仿真①矩陣形式。如果以矩陣形式輸入變量名,則矩陣的列數(shù)必須比模型的輸入端口數(shù)多一個(gè),MATLAB把矩陣的第一列默認(rèn)為時(shí)間向量,后面的每一列對(duì)應(yīng)每一個(gè)輸入端口,矩陣的第一行表示某一時(shí)刻各輸入端口的輸入狀態(tài)。另外,也可以把矩陣分開來(lái)表示,即MATLAB默認(rèn)的表示方法[t,u],其中t是一維時(shí)間列向量,表示仿真時(shí)間,u是和t長(zhǎng)度相等的n維列向量(n表示輸入端口的數(shù)量),表示狀態(tài)值。例如,在命令行窗口中定義t和u。>>t=(0:0.1:10)';>>u=[sin(t),cos(t).*sin(t),exp(-2*t).*sin(t)];則3個(gè)輸入端口輸入的數(shù)據(jù)與時(shí)間的關(guān)系分別為:sin

t、cos

t

sin

t和,用圖12-11所示模型可觀察各輸入端口的輸入數(shù)據(jù)曲線。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真②包含時(shí)間數(shù)據(jù)的結(jié)構(gòu)形式。對(duì)于包含時(shí)間數(shù)據(jù)的結(jié)構(gòu),在MATLAB中有非常嚴(yán)格的規(guī)定,即在結(jié)構(gòu)中必須有兩個(gè)名字不能改變的頂級(jí)成員:time和signals。在time成員中包含一個(gè)列向量,表示仿真時(shí)間;signals成員是一個(gè)向量,向量中的每個(gè)元素對(duì)應(yīng)一個(gè)輸入端口,并且每個(gè)元素必須包含一個(gè)名字同樣不能改變的values成員,values成員也包含一個(gè)列向量,對(duì)應(yīng)于輸入端口的輸入數(shù)據(jù)。例如,對(duì)于上例,若改為包含時(shí)間數(shù)據(jù)的結(jié)構(gòu)輸入,則命令格式如下:>>t=(0:0.1:10)';>>A.time=t;>>A.signals(1).values=sin(t);>>A.signals(2).values=cos(t).*sin(t);>>A.signals(3).values=exp(-2*t).*sin(t);第12章MATLABSimulink系統(tǒng)仿真在Input復(fù)選框右側(cè)的文本框內(nèi)輸入A,則產(chǎn)生的仿真曲線與上面矩陣形式數(shù)據(jù)輸入后的輸出曲線完全相同。在Input復(fù)選框的下面,還有一個(gè)Initialstate復(fù)選框,它表示的是模塊的初始化狀態(tài)。對(duì)模塊進(jìn)行初始化的方法是:先選中Initialstate復(fù)選框,然后在右側(cè)的文本框中輸入初始化數(shù)據(jù)的變量名。對(duì)于變量要求的幾種形式,與前面的輸入端口數(shù)據(jù)的變量形式基本相同,但變量中的數(shù)據(jù)個(gè)數(shù)必須和狀態(tài)模塊數(shù)相同。第12章MATLABSimulink系統(tǒng)仿真(2)Savetoworkspaceorfile(保存到工作空間或文件)在Savetoworkspaceorfile區(qū)域中,可以選擇的選項(xiàng)有:Time(時(shí)鐘)、States(狀態(tài))、Output(輸出端口)、Finalstates(最終狀態(tài))、Signallogging(信號(hào))等。同載入數(shù)據(jù)的形式一樣,保存數(shù)據(jù)也有矩陣、結(jié)構(gòu)和包含時(shí)間數(shù)據(jù)的結(jié)構(gòu)3種形式,在Format下拉列表中可以根據(jù)需要進(jìn)行選擇。對(duì)于不同的保存形式來(lái)說(shuō),Time的格式是不變的,總是對(duì)應(yīng)仿真的采樣時(shí)間。第12章MATLABSimulink系統(tǒng)仿真12.3.2運(yùn)行仿真與仿真結(jié)果分析1.運(yùn)行仿真在MATLAB中,可以在Simulink模型編輯窗口以交互方式運(yùn)行仿真。Simulink仿真有3種模式,可以通過(guò)在模型編輯窗口選擇Simulation→Mode命令進(jìn)行設(shè)置。①Normal:即標(biāo)準(zhǔn)模式(默認(rèn)設(shè)置),以解釋方式運(yùn)行,仿真過(guò)程中能夠靈活地更改模型參數(shù)和顯示結(jié)果,但仿真運(yùn)行慢。②Accelerator:即加速器模式,通過(guò)創(chuàng)建和執(zhí)行已編譯的目標(biāo)代碼來(lái)提高仿真性能,而且在仿真過(guò)程中能夠較靈活地更改模型參數(shù)。加速模式下運(yùn)行的是模型編譯生成的S函數(shù),不能提供模型覆蓋率信息。③RapidAccelerator:即快速加速器模式,能夠比Accelerator模式更快地進(jìn)行模型仿真,該模式不支持調(diào)試器和性能評(píng)估器。第12章MATLABSimulink系統(tǒng)仿真設(shè)置完仿真參數(shù)之后,單擊模型編輯窗口工具欄中的Run按鈕,或選擇Simulation→Run命令,便可啟動(dòng)對(duì)當(dāng)前模型的仿真。Simulink支持使用仿真步進(jìn)器(SimulationStepper)進(jìn)行調(diào)試,便于逐步查看示波器上的仿真數(shù)據(jù),或檢查系統(tǒng)改變狀態(tài)的方式及時(shí)間。單擊模型編輯窗口工具欄中的StepForward按鈕,開始單步仿真。單擊模型編輯窗口工具欄中的Stop按鈕,終止單步仿真。運(yùn)行仿真前,單擊模型編輯窗口工具欄中的SteppingOptions按鈕,在打開的對(duì)話框中選中Enablesteppingback復(fù)選框,在仿真時(shí)單擊模型編輯窗口工具欄中的StepBack按鈕,回溯仿真過(guò)程。第12章MATLABSimulink系統(tǒng)仿真2.仿真結(jié)果分析Simulink提供了多種有助于了解仿真行為的調(diào)試工具。使用Simulink中提供的查看器和示波器查看信號(hào),實(shí)現(xiàn)仿真行為可視化。還可以將仿真結(jié)果導(dǎo)出到MATLAB工作區(qū),以便使用MATLAB算法以及可視化工具來(lái)查看和分析數(shù)據(jù)。在仿真過(guò)程中,用戶可以設(shè)置不同的輸出方式來(lái)觀察仿真結(jié)果。為了觀察仿真結(jié)果的變化軌跡可以采用2種方法。第12章MATLABSimulink系統(tǒng)仿真①把仿真結(jié)果送給Scope模塊或者XYGraph模塊。Scope模塊顯示系統(tǒng)輸出量對(duì)于仿真時(shí)間的變化曲線,XYGraph模塊顯示送到該模塊上的兩個(gè)信號(hào)中的一個(gè)對(duì)另一個(gè)的變化關(guān)系。②把仿真結(jié)果送到輸出端口或ToWorkspace模塊,將結(jié)果導(dǎo)出到工作空間,然后用MATLAB命令畫出該變量的變化曲線。在運(yùn)行這個(gè)模型的仿真之前,先在ConfigurationParameters對(duì)話框的DataImpot/Export選項(xiàng)卡中,規(guī)定時(shí)間變量和輸出變量的名稱(假定分別設(shè)定為t和y),那么,當(dāng)仿真結(jié)束后,時(shí)間值保存在時(shí)間變量t中,對(duì)應(yīng)的輸出端口的信號(hào)值保留在輸出變量y中,這時(shí)可以在命令行窗口使用whos命令查看內(nèi)存變量,也可以使用繪圖命令繪制系統(tǒng)輸出量的變化曲線。第12章MATLABSimulink系統(tǒng)仿真例12-2利用Simulink構(gòu)建函數(shù)曲線y=5t2+16。Simulink的Sources模塊庫(kù)中提供了時(shí)鐘、脈沖、正弦波等常用信號(hào)源,可利用這些常用信號(hào)源和Simulink模塊庫(kù)中提供的求和、乘積、增益以及MATLAB函數(shù)等其他模塊進(jìn)行適當(dāng)?shù)倪B接組合,即可構(gòu)建所需的各種信號(hào)源。下面采用兩種方法來(lái)構(gòu)建函數(shù)曲線,一種方法是采用MATLABFunction模塊,另一種方法是采用基本模塊的組合連接。第12章MATLABSimulink系統(tǒng)仿真方法1:采用MATLABFunction模塊構(gòu)建仿真模型。①啟動(dòng)Simulink并打開模型編輯窗口,將所需模塊添加到模型中。在SimulinkLibraryBrowser窗口單擊Sources模塊庫(kù),在右側(cè)的窗口中找到Clock(時(shí)鐘)模塊,然后用鼠標(biāo)將其拖到模型編輯窗口。同樣,在User-DefinedFunctions(用戶自定義函數(shù))模塊庫(kù)中拖出MATLABFunction(MATLAB函數(shù))模塊,在Sinks模塊庫(kù)中拖出ToWorkspace(輸出到工作空間)模塊、Scope(示波器)模塊進(jìn)行連接組合,其模型如圖12-12所示。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真②設(shè)置模塊參數(shù)。雙擊MATLABFunction模塊,建立其信號(hào)源的M文件名。functiony=f(t)y=5*t*t+16;雙擊兩個(gè)輸出到工作空間模塊分別填入變量名為t和y,仿真參數(shù)取默認(rèn)值。③啟動(dòng)仿真,函數(shù)曲線如圖12-13所示。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真模型中兩個(gè)ToWorkspace模塊的功能是將時(shí)間變量t和輸出變量y存入MATLAB工作空間,并選擇存儲(chǔ)格式為矩陣(array),仿真結(jié)束后便可使用plot(t,y)命令繪圖來(lái)觀看輸出結(jié)果,而通過(guò)示波器模塊可隨時(shí)觀看仿真結(jié)果,就像在實(shí)驗(yàn)室一樣,非常形象和方便。也可以采用Fcn模塊來(lái)構(gòu)建函數(shù)表達(dá)式,只需在添加Fcn模塊后,雙擊Fcn模塊,打開BlockParameters對(duì)話框,在Expression欄中輸入函數(shù)表達(dá)式即可(見例12-3)。第12章MATLABSimulink系統(tǒng)仿真方法2:采用基本模塊組合構(gòu)建仿真模型。構(gòu)建該信號(hào)源的另一種方法是將一些常用的數(shù)學(xué)模塊進(jìn)行組合建模,其模型如圖12-14所示。第12章MATLABSimulink系統(tǒng)仿真模型中用到了Clock(時(shí)鐘)、Constant(常數(shù))、Gain(增益)、Product(乘積)和Sum(求和)等模塊。雙擊增益模塊填入5,常數(shù)模塊填入16,最后設(shè)置仿真參數(shù)即可。其輸出結(jié)果與方法一相同。與方法一相比,該方法采用的模塊數(shù)較多一些。另外,模型中還采用XYGraph模塊將輸出信號(hào)的軌跡顯示出來(lái)。第12章MATLABSimulink系統(tǒng)仿真例12-3利用Simulink仿真求首先打開模型編輯窗口,將所需模塊添加到模型中。在SimulinkLibraryBrowser窗口中單擊Sources模塊庫(kù),將Clock模塊拖到模型編輯窗口。同樣,在用戶定義模塊庫(kù)User-DefinedFunctions中把函數(shù)模塊Fcn拖到模型編輯窗口,在連續(xù)系統(tǒng)模塊庫(kù)Continuous中把Integrator模塊拖到模型編輯窗口,在Sinks模塊庫(kù)中把Display模塊拖到模型編輯窗口。第12章MATLABSimulink系統(tǒng)仿真設(shè)置模塊參數(shù)并連接各個(gè)模塊組成仿真模型。雙擊Fcn模塊,打開BlockParameters對(duì)話框,在Expression欄中輸入u*log(1+u),其余模塊參數(shù)不用設(shè)置。設(shè)置模塊參數(shù)后,用連線將各個(gè)模塊連接起來(lái)組成仿真模型,如圖12-15所示。設(shè)置系統(tǒng)仿真終止時(shí)間為1s,運(yùn)行仿真模型,Display模塊顯示仿真結(jié)果為0.25。第12章MATLABSimulink系統(tǒng)仿真12.3.3系統(tǒng)仿真實(shí)例例12-4有初始狀態(tài)為0的二階微分方程x"+0.2x'+0.4x=0.2u(t),其中u(t)是單位階躍函數(shù),試建立系統(tǒng)模型并仿真。方法1:利用Integrator(積分器)模塊直接構(gòu)造求解微分方程的模型。把原微分方程改寫為:x"=0.2u(t)-0.2x'-0.4xx"經(jīng)積分作用得x',x'再經(jīng)積分模塊作用就得x,而x'和x經(jīng)代數(shù)運(yùn)算又產(chǎn)生x",據(jù)此可以建立系統(tǒng)模型并仿真。第12章MATLABSimulink系統(tǒng)仿真①利用Simulink模塊庫(kù)中的基本模塊不難建立系統(tǒng)模型如圖12-16所示。第12章MATLABSimulink系統(tǒng)仿真模型中各個(gè)模塊說(shuō)明如下。(a)u(t)輸入模塊:它的Steptime被設(shè)置為0,模塊名稱由原來(lái)的Step改為u(t)。(b)Gs增益模塊:增益參數(shù)Gain設(shè)置為0.2。(c)Add求和模塊:其圖標(biāo)形狀I(lǐng)conshape選擇rectangular,符號(hào)列表Listofsigns設(shè)置為+--。(d)Integrator積分模塊:參數(shù)不需改變。(e)G1和G2反饋增益模塊:增益參數(shù)分別設(shè)置為0.4和0.2,它們的方向翻轉(zhuǎn)可借助快捷菜單中的Rotate&Flip→FlipBlock或模型編輯窗口的Diagram→Rotate&Flip→FlipBlock命令實(shí)現(xiàn)。第12章MATLABSimulink系統(tǒng)仿真②設(shè)置系統(tǒng)仿真參數(shù)。打開ConfigurationParameters窗口,把仿真的終止時(shí)間設(shè)置為20s。③仿真操作。雙擊示波器圖標(biāo),打開示波器窗口。單擊模型編輯窗口工具欄中的Run按鈕,就可在示波器窗口中看到仿真結(jié)果的變化曲線,如圖12-17所示。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真方法2:利用傳遞函數(shù)模塊(TransferFcn)建模。對(duì)方程x"+0.2x'+0.4x=0.2u(t)兩邊取Laplace變換,得:s2X(s)+0.2sX(s)+0.4X(s)=0.2U(s)經(jīng)整理得傳遞函數(shù):在Continuous模塊庫(kù)中有標(biāo)準(zhǔn)的傳遞函數(shù)(TransferFcn)模塊可供調(diào)用,于是,就可以構(gòu)建求解微分方程的模型并仿真。根據(jù)系統(tǒng)傳遞函數(shù)構(gòu)建如圖12-18所示的仿真模型。第12章MATLABSimulink系統(tǒng)仿真模型中各個(gè)模塊說(shuō)明如下:(a)u(t)模塊:設(shè)置Steptime為0。(b)G(S)模塊:雙擊TransferFcn模塊,打開參數(shù)設(shè)置對(duì)話框,在Numeratorcoefficients欄中填寫傳遞函數(shù)的分子多項(xiàng)式系數(shù)[0.2],在Denominatorcoefficients欄中填寫傳遞函數(shù)的分母多項(xiàng)式的系數(shù)[1,0.2,0.4],如圖12-19所示。第12章MATLABSimulink系統(tǒng)仿真以后的操作與方法1相同。第12章MATLABSimulink系統(tǒng)仿真方法3:利用狀態(tài)方程模塊(State-Space)建模。若令x1=x,x2=x‘,那么微分方程x“+0.2x’+0.4x=0.2u(t)可寫成:寫成狀態(tài)方程為:式中,C=[10],D=0。第12章MATLABSimulink系統(tǒng)仿真在Continuous模塊庫(kù)中有標(biāo)準(zhǔn)的狀態(tài)方程(State-Space)模塊可供調(diào)用,于是,就可以構(gòu)建求解微分方程的模型并仿真。根據(jù)系統(tǒng)狀態(tài)方程構(gòu)建如圖12-20所示的仿真模型。第12章MATLABSimulink系統(tǒng)仿真模型中各個(gè)模塊說(shuō)明如下:(a)u(t)輸入模塊:它的steptime被設(shè)置為0。(b)State-Space模塊:A、B、C、D各欄依次填入[0,1;-0.4,-0.2]、[0;0.2]、[1,0]和0,如圖12-21所示。后面的操作與方法1相同。第12章MATLABSimulink系統(tǒng)仿真12.4子系統(tǒng)及其封裝當(dāng)模型的規(guī)模較大或較復(fù)雜時(shí),用戶可以把幾個(gè)模塊組合成一個(gè)新的模塊,這樣的模塊稱為子系統(tǒng)。子系統(tǒng)把功能上有關(guān)的一些模塊集中到一起保存,能夠完成幾個(gè)模塊的功能。建立子系統(tǒng)的優(yōu)點(diǎn)是:減少系統(tǒng)中的模塊數(shù)目,使系統(tǒng)易于調(diào)試,而且可以將一些常用的子系統(tǒng)封裝成一些模塊,這些模塊可以在其他模型中直接作為標(biāo)準(zhǔn)的Simulink模塊使用。第12章MATLABSimulink系統(tǒng)仿真12.4.1子系統(tǒng)的創(chuàng)建建立子系統(tǒng)有兩種方法:通過(guò)Subsystem模塊建立子系統(tǒng)和將已有的模塊轉(zhuǎn)換為子系統(tǒng)。兩者的區(qū)別是:前者先建立子系統(tǒng),再為其添加功能模塊;后者先選擇模塊,再建立子系統(tǒng)。第12章MATLABSimulink系統(tǒng)仿真1.通過(guò)Subsystem模塊建立子系統(tǒng)新建一個(gè)仿真模型,打開Simulink模塊庫(kù)中的Ports&Subsystems模塊庫(kù),將Subsystem模塊添加到模型編輯窗口中。雙擊Subsystem模塊打開子系統(tǒng)編輯窗口,窗口中已經(jīng)自動(dòng)添加了相互連接的一個(gè)輸入模塊和輸出模塊(表示子系統(tǒng)的輸入端口和輸出端口)。將要組合的模塊插入到輸入模塊和輸出模塊中間并重新連接,一個(gè)子系統(tǒng)就建好了。若雙擊已建立的子系統(tǒng),則打開子系統(tǒng)內(nèi)部結(jié)構(gòu)窗口。第12章MATLABSimulink系統(tǒng)仿真2.通過(guò)已有的模塊建立子系統(tǒng)先選擇要建立子系統(tǒng)的模塊,然后執(zhí)行創(chuàng)建子系統(tǒng)的命令,原來(lái)的模塊變?yōu)樽酉到y(tǒng)第12章MATLABSimulink系統(tǒng)仿真例12-5PID控制器是在自動(dòng)控制中經(jīng)常使用的模塊,PID控制器由比例單元(P)、積分單元(I)和微分單元(D)組成。PID控制器的傳遞函數(shù)為建立PID控制器的模型并建立子系統(tǒng)。先建立PID控制器的模型,如圖12-22(a)所示。注意,模型中含有3個(gè)變量Kp、Ki和Kd,仿真時(shí)這些變量應(yīng)該在MATLAB工作空間中賦值。選中模型中所有模塊,在模型編輯窗口選擇Diagram→Subsystem&ModelReference→CreateSubsystemfromSelection命令,或按Ctrl+G組合鍵建立子系統(tǒng),所選模塊將被一個(gè)Subsystem模塊取代,如圖12-22(b)所示。第12章MATLABSimulink系統(tǒng)仿真(a)PID控制器模型(b)子系統(tǒng)第12章MATLABSimulink系統(tǒng)仿真12.4.2子系統(tǒng)的條件執(zhí)行子系統(tǒng)的執(zhí)行可以由輸入信號(hào)來(lái)控制,用于控制子系統(tǒng)執(zhí)行的信號(hào)稱為控制信號(hào),而由控制信號(hào)控制的子系統(tǒng)稱為條件執(zhí)行子系統(tǒng)。在一個(gè)復(fù)雜模型中,有的模塊的執(zhí)行依賴于其他模塊,這種情況下,條件執(zhí)行子系統(tǒng)是很有用的。條件執(zhí)行子系統(tǒng)分為:使能子系統(tǒng)、觸發(fā)子系統(tǒng)和使能加觸發(fā)子系統(tǒng)。第12章MATLABSimulink系統(tǒng)仿真1.使能子系統(tǒng)使能子系統(tǒng)表示子系統(tǒng)在由控制信號(hào)控制時(shí),控制信號(hào)由負(fù)變正時(shí)子系統(tǒng)開始執(zhí)行,直到控制信號(hào)再次變?yōu)樨?fù)時(shí)結(jié)束??刂菩盘?hào)可以是標(biāo)量也可以是向量。如果控制信號(hào)是標(biāo)量,則當(dāng)標(biāo)量的值大于0時(shí)子系統(tǒng)開始執(zhí)行。如果控制信號(hào)是向量,則向量中任何一個(gè)元素大于0,子系統(tǒng)將執(zhí)行。第12章MATLABSimulink系統(tǒng)仿真使能子系統(tǒng)外觀上有一個(gè)“使能”控制信號(hào)輸入口?!笆鼓堋笔侵府?dāng)且僅當(dāng)“使能”輸入信號(hào)為正時(shí),該模塊才接收輸入端的信號(hào)??芍苯舆x擇EnabledSubsystem模塊來(lái)建立使能子系統(tǒng),雙擊EnabledSubsystem模塊,打開其內(nèi)部結(jié)構(gòu)窗口,如圖12-23。也可以展開已有子系統(tǒng),添加Ports&Subsystems模塊庫(kù)中的Enable模塊,將該子系統(tǒng)轉(zhuǎn)換為使能子系統(tǒng)。第12章MATLABSimulink系統(tǒng)仿真例12-6利用使能子系統(tǒng)構(gòu)成一個(gè)正弦半波整流器。新建一個(gè)仿真模型,將SineWave、EnabledSubsystem和Scope三個(gè)模塊拖至新打開的模型編輯窗口,連接各模塊、設(shè)置參數(shù)并存盤,創(chuàng)建如圖12-24所示的使能子系統(tǒng)。其中使能信號(hào)端接SineWave模塊。

為了便于比較,除顯示半波整流波形外,還顯示正弦波,故在示波器窗口選擇View→ConfigurationProperties命令,在出現(xiàn)的對(duì)話框中將Numberofinputports設(shè)置為2并設(shè)置輸出布局(Layout)。第12章MATLABSimulink系統(tǒng)仿真使能子系統(tǒng)建立好后,可對(duì)Enable模塊進(jìn)行參數(shù)設(shè)置。先雙擊EnabledSubsystem模塊,打開其內(nèi)部結(jié)構(gòu)窗口,再雙擊其中的Enable模塊打開其參數(shù)對(duì)話框,如圖12-25所示。在Main選項(xiàng)卡中選中Showoutputport復(fù)選框,可以為Enable模塊添加一個(gè)輸出端,用以輸出控制信號(hào)。在Stateswhenenabling下拉列表中有兩個(gè)選項(xiàng):held表示當(dāng)使能子系統(tǒng)停止輸出后,輸出端口的值保持最近的輸出值;reset表示當(dāng)使能子系統(tǒng)停止輸出后,輸出端口重新設(shè)為初始值。在此選擇reset。設(shè)置完成后,單擊“OK”按鈕。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真在模型編輯窗口單擊工具欄的Run命令按鈕,就可看到如圖12-26所示的半波整流波形和正弦波形。第12章MATLABSimulink系統(tǒng)仿真2.觸發(fā)子系統(tǒng)觸發(fā)子系統(tǒng)是指當(dāng)觸發(fā)事件發(fā)生時(shí)開始執(zhí)行子系統(tǒng)。與使能子系統(tǒng)相類似,觸發(fā)子系統(tǒng)的建立可直接選擇TriggeredSubsystem模塊,或者展開已有子系統(tǒng),添加Ports&Subsystems模塊庫(kù)中的Trigger模塊,將該子系統(tǒng)轉(zhuǎn)換為觸發(fā)子系統(tǒng)。觸發(fā)子系統(tǒng)在每次觸發(fā)結(jié)束到下次觸發(fā)之前總是保持上一次的輸出值,而不會(huì)重新設(shè)置初始輸出值。觸發(fā)形式在Trigger模塊參數(shù)對(duì)話框中從Main選項(xiàng)卡的“Triggertype”下拉列表中選擇,如圖12-27所示。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真①rising(上跳沿觸發(fā)):控制信號(hào)從負(fù)值或0上升到正值時(shí)子系統(tǒng)開始執(zhí)行。②falling(下跳沿觸發(fā)):控制信號(hào)從正值或0下降到負(fù)值時(shí)子系統(tǒng)開始執(zhí)行。③either(上跳沿或下跳沿觸發(fā)):當(dāng)控制信號(hào)滿足上跳沿或下跳沿觸發(fā)條件時(shí),子系統(tǒng)開始執(zhí)行。④function-call(函數(shù)調(diào)用觸發(fā)):表示子系統(tǒng)的觸發(fā)由S函數(shù)的內(nèi)部邏輯決定,這種觸發(fā)方式必須與S函數(shù)配用。Trigger模塊參數(shù)對(duì)話框中,還有一個(gè)Showoutputport復(fù)選框,表示是否為Trigger模塊添加一個(gè)輸出端,選中后還可以選擇輸出信號(hào)的類型。第12章MATLABSimulink系統(tǒng)仿真例12-7利用觸發(fā)子系統(tǒng)將一鋸齒波轉(zhuǎn)換成方波。用SignalGenerator、TriggeredSubsystem和Scope模塊構(gòu)成如圖12-28所示的子系統(tǒng)。雙擊SignalGenerator模塊圖標(biāo),在Waveform的下拉列表框中選擇sawtooth選項(xiàng),即鋸齒波,幅值(Amplitude)設(shè)為4,頻率(Frequency)設(shè)為1Hz。打開TriggeredSubsystem模塊結(jié)構(gòu)窗口,再雙擊Trigger模塊,在其參數(shù)對(duì)話框中選擇Triggertype觸發(fā)事件形式為either,即上跳沿或下跳沿觸發(fā)。觸發(fā)信號(hào)端接鋸齒波模塊。為了便于比較,除顯示方波外,還顯示鋸齒波,故在示波器屬性窗口將Numberofinputports設(shè)置為2并設(shè)置輸出布局(Layout)。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真把仿真的終止時(shí)間設(shè)置為10,單擊模型編輯窗口工具欄中的Run按鈕,就可在示波器窗口看到圖12-29所示的波形。第12章MATLABSimulink系統(tǒng)仿真3.使能加觸發(fā)子系統(tǒng)所謂使能加觸發(fā)子系統(tǒng)就是當(dāng)使能控制信號(hào)和觸發(fā)控制信號(hào)共同作用時(shí)執(zhí)行子系統(tǒng)。該系統(tǒng)的行為方式與觸發(fā)子系統(tǒng)相似,但只有當(dāng)使能信號(hào)為正時(shí),觸發(fā)事件才起作用。第12章MATLABSimulink系統(tǒng)仿真12.4.3子系統(tǒng)的封裝所謂子系統(tǒng)的封裝,就是為子系統(tǒng)定制對(duì)話框和圖標(biāo),使子系統(tǒng)本身有一個(gè)獨(dú)立的操作界面,把子系統(tǒng)中的各模塊的參數(shù)設(shè)置合成在一個(gè)參數(shù)設(shè)置對(duì)話框內(nèi),在使用時(shí)不必打開每個(gè)模塊進(jìn)行參數(shù)設(shè)置,這樣使子系統(tǒng)的使用更加方便。子系統(tǒng)的封裝過(guò)程很簡(jiǎn)單,先選中所要封裝的子系統(tǒng),再在模型編輯窗口選擇Diagram→Mask→CreateMask命令,或按Ctrl+M組合鍵,這時(shí)將出現(xiàn)封裝編輯器(MaskEditor)對(duì)話框,如圖12-30所示。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真MaskEditor對(duì)話框中共包括4個(gè)選項(xiàng)卡:Icon&Ports、Parameters&Dialog、Initialization和Documentation。子系統(tǒng)的封裝主要就是對(duì)這4個(gè)選項(xiàng)卡參數(shù)進(jìn)行設(shè)置。1.Icon&Ports選項(xiàng)卡的參數(shù)設(shè)置Icon&Ports選項(xiàng)卡主要用于設(shè)置封裝模塊的圖標(biāo),圖標(biāo)包括描述文字、狀態(tài)方程、圖像和圖形,如圖12-30所示。第12章MATLABSimulink系統(tǒng)仿真(1)Icondrawingcommands編輯框該編輯框用于輸入命令以建立封裝圖標(biāo),常用繪圖命令如下。①顯示文本。在封裝圖標(biāo)中顯示文本的函數(shù)有4個(gè):disp、text、fprintf和port_lable。下面介紹port_lable函數(shù)的用法。port_label函數(shù)根據(jù)端口類型和端口號(hào)為端口添加標(biāo)記,其調(diào)用格式為:port_label('port_type',port_num,'label')下面以圖12-23所示的使能子系統(tǒng)為例,在Icondrawingcommands編輯框中輸入如下命令:disp('Enable')port_label('input',1,'IN')port_label('output',1,'OUT')則新生成的子系統(tǒng)圖標(biāo)如圖12-31所示。命令輸入不正確時(shí),Simulink將在子系統(tǒng)圖標(biāo)方框內(nèi)顯示3個(gè)問(wèn)號(hào)。第12章MATLABSimulink系統(tǒng)仿真②顯示圖形圖像。在圖標(biāo)中顯示圖形可以用plot函數(shù)、patch函數(shù)和image函數(shù)。例如,想在圖標(biāo)上畫出一個(gè)圓,則可在編輯框使用下列命令:plot(cos(0:0.1:2*pi),sin(0:0.1:2*pi))又如,將當(dāng)前文件夾的圖形文件flower.jpg顯示在子系統(tǒng)圖標(biāo)上,可使用下列命令:image(imread('flower.jpg'))第12章MATLABSimulink系統(tǒng)仿真③顯示傳遞函數(shù)。在圖標(biāo)中顯示傳遞函數(shù)使用dpoly函數(shù),顯示零極點(diǎn)模型的傳遞函數(shù)使用droots函數(shù),其調(diào)用格式為:dpoly(num,den)dpoly(num,den,'character')droots(z,p,k)droots(z,p,k,'character')其中,num和den是傳遞函數(shù)的分子和分母的系數(shù)行向量,z和p是傳遞函數(shù)的零點(diǎn)向量和極點(diǎn)向量,k是傳遞函數(shù)的增益。傳遞函數(shù)的默認(rèn)變量是s,也可以用character參數(shù)指定。character的取值為x時(shí),按x的降冪排列。取x-時(shí),按1/x升冪排列。第12章MATLABSimulink系統(tǒng)仿真(2)設(shè)置封裝圖標(biāo)特性選擇Icon&Ports選項(xiàng)卡,左側(cè)的Options區(qū)用于指定封裝圖標(biāo)的屬性,包括是否顯示塊框架、圖標(biāo)的透明度等。①Blockframe設(shè)置圖標(biāo)的邊框,在其下拉列表中有兩個(gè)選項(xiàng),Invisible和Visible分別表示隱藏和顯示邊框。②Icontransparency設(shè)置圖標(biāo)的透明度,在其下拉列表中有兩個(gè)選項(xiàng),Transparent表示透明,顯示圖標(biāo)中的內(nèi)容;Opaquewithports表示不透明,不顯示圖標(biāo)中的內(nèi)容。第12章MATLABSimulink系統(tǒng)仿真③Iconunits設(shè)置在Icondrawingcommands編輯框中使用命令plot和text時(shí)的坐標(biāo)系。在下拉列表中有3個(gè)選項(xiàng)。Autoscale表示規(guī)定圖標(biāo)的左下角的坐標(biāo)為(0,0),右上角的坐標(biāo)為(1,1),要顯示的文本等必須把坐標(biāo)設(shè)在[0,1]之間才能顯示,當(dāng)模塊大小改變時(shí),圖標(biāo)也隨之改變;Pixels表示圖標(biāo)以像素為單位,當(dāng)模塊大小改變時(shí),圖標(biāo)不隨之改變;Normalized表示根據(jù)設(shè)定的坐標(biāo)點(diǎn)自動(dòng)選取坐標(biāo)系,使設(shè)置中的最小坐標(biāo)位于圖標(biāo)左下角,最大坐標(biāo)位于圖標(biāo)右上角。當(dāng)模塊大小改變時(shí),圖標(biāo)也隨之改變。④Iconrotation設(shè)置圖標(biāo)是否跟模塊一起旋轉(zhuǎn),在其下拉列表中有兩個(gè)選項(xiàng),F(xiàn)ixed表示不旋轉(zhuǎn),Rotates表示旋轉(zhuǎn)。⑤Portrotation設(shè)置端口旋轉(zhuǎn)方式,在其下拉列表中有兩個(gè)選項(xiàng),Default表示圖形旋轉(zhuǎn)時(shí),端口信號(hào)流向從由上至下變?yōu)橛勺笾劣遥籔hysical表示信號(hào)流向相對(duì)位置不作變化。第12章MATLABSimulink系統(tǒng)仿真2.Parameters&Dialog選項(xiàng)卡的參數(shù)設(shè)置Parameters&Dialog選項(xiàng)卡主要用來(lái)設(shè)置參數(shù)和對(duì)話框,此選項(xiàng)卡由3部分組成:左側(cè)為控件工具箱(Controls),中間的Dialogbox區(qū)域顯示對(duì)話框中的控件,右側(cè)的Propertyeditor用于顯示和修改控件的屬性。第12章MATLABSimulink系統(tǒng)仿真下面以例12-5中的PID控制器子系統(tǒng)為例,說(shuō)明子系統(tǒng)參數(shù)和對(duì)話框的設(shè)置方法。在Parameters&Dialog選項(xiàng)卡的左側(cè)控件工具箱中,連續(xù)3次單擊Edit按鈕,為PID控制器的3個(gè)變量準(zhǔn)備輸入位置。雙擊Dialogbox區(qū)域的列表中的#1,在Prompt欄中輸入該控件的提示信息,如ProportionalKp,在Name欄中輸入控件名Kp,同樣的方法設(shè)置Ki和Kd,如圖12-32所示,最后單擊OK按鈕確認(rèn)設(shè)置。第12章MATLABSimulink系統(tǒng)仿真第12章MATLABSimulink系統(tǒng)仿真子系統(tǒng)參數(shù)和對(duì)話框設(shè)置完成后,雙擊子系統(tǒng)圖標(biāo)將出現(xiàn)其參數(shù)對(duì)話框。例如,雙擊PID控制器封裝子系統(tǒng),則彈出如圖12-33所示的參數(shù)對(duì)話框,允許用戶輸入PID控制器的參數(shù)。第12章MATLABSimulink系統(tǒng)仿真3.Initialization選項(xiàng)卡的參數(shù)設(shè)置Initialization選項(xiàng)卡用于設(shè)置初始化命令。初始化命令的設(shè)置在對(duì)話框的Initializationcommands編輯框內(nèi)進(jìn)行,在此輸入初始化命令,而這些初始化命令將在仿真開始、載入模型、更換模塊圖標(biāo)和重設(shè)封裝子系統(tǒng)的圖標(biāo)時(shí)被調(diào)用。初始化命令主要用來(lái)定義封裝子系統(tǒng)的變量,這些變量可以被所有封裝定義的初始化命令、封裝子系統(tǒng)中的模塊和繪制圖標(biāo)的命令所使用。第12章MATLABSimulink系統(tǒng)仿真初始化的命令由MATLAB中的表達(dá)式組成,其中包括MATLAB函數(shù)、操作符和封裝子系統(tǒng)工作區(qū)中定義的變量,但這些變量不包括基本工作區(qū)中的變量。對(duì)于封裝子系統(tǒng)工作區(qū)中定義的變量,通過(guò)初始化命令和模塊的參數(shù)相聯(lián)系,也就是說(shuō)模塊的參數(shù)在獲取數(shù)據(jù)時(shí),先讀取封裝子系統(tǒng)工作區(qū)的變量值,再通過(guò)初始化命令來(lái)取值。第12章MATLABSimulink系統(tǒng)仿真4.Documentation選項(xiàng)卡的參數(shù)設(shè)置Documentation選項(xiàng)卡用于定義封裝模塊的類型、描述和幫助文本。Type編輯框中輸入的字符串(如PIDController)作為封裝模塊的名稱將顯示在封裝模塊參數(shù)對(duì)話框的頂部;Description編輯框中輸入的字符串作為封裝模塊的注釋將顯示在封裝模塊參數(shù)對(duì)話框的上部(封裝模塊的名稱下面);Help編輯框輸入的字符串作為封裝模塊的幫助信息,當(dāng)按下模塊參數(shù)對(duì)話框的Help按鈕時(shí),將在MATLAB瀏覽器中顯示。封裝信息設(shè)置完成后,單擊OK按鈕,這樣就可以在別的系統(tǒng)模型中直接使用該模塊了。第12章MATLABSimulink系統(tǒng)仿真12.5S函數(shù)的設(shè)計(jì)與應(yīng)用S函數(shù)稱為系統(tǒng)函數(shù)(systemfunction),采用非圖形化的方式描述功能模塊。MATLAB語(yǔ)言編寫的S函數(shù)可以充分利用MATLAB所提供的豐富資源,方便地調(diào)用各種工具箱函數(shù)和圖形函數(shù);使用C語(yǔ)言編寫的S函數(shù)可以實(shí)現(xiàn)對(duì)操作系統(tǒng)的訪問(wèn),如實(shí)現(xiàn)與其他進(jìn)程的通信和同步等。非MATLAB語(yǔ)言編寫的S函數(shù)需要用編譯器生成MEX文件。本節(jié)只介紹用MATLAB語(yǔ)言設(shè)計(jì)S函數(shù)的方法,并通過(guò)例子介紹S函數(shù)的應(yīng)用。第12章MATLABSimulink系統(tǒng)仿真12.5.1用MATLAB語(yǔ)言編寫S函數(shù)1.主程序S函數(shù)主程序的引導(dǎo)語(yǔ)句為:function[sys,x0,str,ts]=fname(t,x,u,flag)其中,fname是S函數(shù)的函數(shù)名,t、x、u、flag分別為仿真時(shí)間、狀態(tài)向量、輸入向量和子程序調(diào)用標(biāo)志。flag控制在仿真的各階段調(diào)用S函數(shù)的哪一個(gè)子程序,其含義和有關(guān)信息如表12-1所示。Simulink每次調(diào)用S函數(shù)時(shí),必須給出這4個(gè)參數(shù)。第12章MATLABSimulink系統(tǒng)仿真取值功能調(diào)用函數(shù)名返回參數(shù)0初始化mdlInitializeSizessys為初始化參數(shù),x0,str,ts如定義1計(jì)算連續(xù)狀態(tài)變量的導(dǎo)數(shù)mdlDerivativessys返回連續(xù)狀態(tài)2計(jì)算離散狀態(tài)變量的更新mdlUpdatesys返回離散狀態(tài)3計(jì)算輸出信號(hào)mdlOutputssys返回系統(tǒng)輸出4計(jì)算下一個(gè)采樣時(shí)刻mdlGetTimeOfNextVarHitsys返回下一步仿真的時(shí)間9結(jié)束仿真任務(wù)mdlTerminate無(wú)第12章MATLABSimulink系統(tǒng)仿真sys、x0、str和ts是S函數(shù)的返回參數(shù)。sys是一個(gè)返回參數(shù)的通用符號(hào),它得到何種參數(shù),取決于flag值。例如,flag

=

3時(shí),sys得到的是S函數(shù)的輸出向量值。x0是初始狀態(tài)值,如果系統(tǒng)中沒有狀態(tài)變量,x0將得到一個(gè)空陣。str僅用于系統(tǒng)模型同S函數(shù)API(應(yīng)用程序編程接口)的一致性校驗(yàn)。對(duì)于M文件S函數(shù),它將被置成一個(gè)空陣。ts是一個(gè)兩列矩陣,一列是S函數(shù)中各狀態(tài)變量的采樣周期,另一列是相應(yīng)的采樣時(shí)間的偏移量。采樣周期按遞增順序排列,ts中的一行對(duì)應(yīng)一個(gè)采樣周期。對(duì)于連續(xù)系統(tǒng),采樣周期和偏移量都應(yīng)置成0。如果取采樣周期為?1,則將繼承輸入信號(hào)的采樣周期。第12章MATLABSimulink系統(tǒng)仿真在主程序輸入?yún)?shù)中還可以包括用戶自定義參數(shù)表:p1、p2、…、pn,這也就是希望賦給S函數(shù)的可選變量,其值通過(guò)相應(yīng)S函數(shù)的參數(shù)對(duì)話框設(shè)置,也可以在命令行窗口賦值。于是S函數(shù)主程序的引導(dǎo)語(yǔ)句可以寫成:function[sys,x0,str,ts]=fname(t,x,u,flag,p1,p2,…,pn)主程序采用switch-case語(yǔ)句,引導(dǎo)Simulink到正確的子程序。第12章MATLABSimulink系統(tǒng)仿真2.子程序M文件S函數(shù)共有6個(gè)子程序,供Simulink在仿真的不同階段調(diào)用,這些子程序的前輟為mdl。每一次調(diào)用S函數(shù)時(shí),都要給出一個(gè)flag值,實(shí)際執(zhí)行S函數(shù)中與該flag值對(duì)應(yīng)的那個(gè)子程序。Simulink在仿真的不同階段,需要調(diào)用S函數(shù)中不同的子程序。第12章MATLABSimulink系統(tǒng)仿真(1)初始化子程序mdlInitializeSizes子程序mdlInitializeSizes定義S函數(shù)參數(shù),如采樣時(shí)間、輸入量、輸出量、狀態(tài)變量的個(gè)數(shù)以及其他特征。為了向Simulink提供這些信息,在子程序mdlInitializeSizes的開始處,應(yīng)調(diào)用simsizes函數(shù),這個(gè)函數(shù)返回一個(gè)sizes結(jié)構(gòu),結(jié)構(gòu)的成員sizes.NumContStates、sizes.NumDiscStates、sizes.NumOutputs和sizes.NumInputs分別表示連續(xù)狀態(tài)變量的個(gè)數(shù)、離散狀態(tài)變量的個(gè)數(shù)、輸出的個(gè)數(shù)和輸入的個(gè)數(shù)。這4個(gè)值可以置為

?

1,使其大小動(dòng)態(tài)改變。成員sizes.DirFeedthrough是直通標(biāo)志,即輸入信號(hào)是否直接在輸出端出現(xiàn)的標(biāo)志,是否設(shè)定為直通,取決于輸出是否為輸入的函數(shù),或者是取樣時(shí)間是否為輸入的函數(shù)。1表示yes,0表示no。成員sizes.NumSampleTimes是模塊采樣周期的個(gè)數(shù),一般取1。按照要求設(shè)置好的結(jié)構(gòu)sizes用sys

=

simsizes(sizes)語(yǔ)句賦給sys參數(shù)。除了sys外,還應(yīng)該設(shè)置系統(tǒng)的初始狀態(tài)變量x0、說(shuō)明變量str和采樣周期變量ts。第12章MATLABSimulink系統(tǒng)仿真(2)其他子程序狀態(tài)的動(dòng)態(tài)更新使用mdlDerivatives和mdlUpdate兩個(gè)子程序,前者用于連續(xù)狀態(tài)的更新,后者用于離散狀態(tài)的更新。這些函數(shù)的輸出值,即相應(yīng)的狀態(tài),均由sys變量返回。對(duì)于同時(shí)含有連續(xù)狀態(tài)和離散狀態(tài)的混合系統(tǒng),則需要同時(shí)寫出這兩個(gè)函數(shù)來(lái)分別描述連續(xù)狀態(tài)和離散狀態(tài)。模塊輸出信號(hào)的計(jì)算使用mdlOutputs子程序,系統(tǒng)的輸出仍由sys變量返回。一般應(yīng)用中很少使用flag為4和9的情況,mdlGetTimeOfNextVarHit和mdlTerminate兩個(gè)子程序較少使用。第12章MATLABSimulink系統(tǒng)仿真12.5.2S函數(shù)的應(yīng)用例12-8采用S函數(shù)實(shí)現(xiàn)y

=

nx,即把一個(gè)輸入信號(hào)放大n倍。①利用MATLAB語(yǔ)言編寫S函數(shù),程序如下。%*******************************************************%S函數(shù)timesn.m,其輸出是輸入的n倍%*******************************************************function[sys,x0,str,ts]=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論