Simulink是MATLAB最重要的組件之一,它提供一個(gè)動(dòng)態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。在該環(huán)境中,無(wú)需大量書(shū)寫(xiě)程序,而只需要通過(guò)簡(jiǎn)單直觀的鼠標(biāo)操作,就可構(gòu)造出復(fù)雜的系統(tǒng)。Simulink具有適應(yīng)面廣、結(jié)構(gòu)和流程清晰及仿真精細(xì)、貼近實(shí)際、效率高、靈活等優(yōu)點(diǎn),并基于以上優(yōu)點(diǎn)Simulink已被廣泛應(yīng)用于控制理論和數(shù)字信號(hào)處理的復(fù)雜仿真和設(shè)計(jì)。同時(shí)有大量的第三方軟件和硬件可應(yīng)用于或被要求應(yīng)用于Simulink。
學(xué)習(xí)目標(biāo):
(1)學(xué)習(xí)和掌握Simulink基本操作;
(2)學(xué)習(xí)和掌握Simulink運(yùn)行仿真參數(shù)設(shè)置;
(3)學(xué)習(xí)和掌握Simulink創(chuàng)建模型的方法;
(4)學(xué)習(xí)和掌握Simulink簡(jiǎn)單的仿真分析等


?MATLAB有兩種啟動(dòng)Simulink的方式,具體如下:
?(1)在MATLAB命令窗口中輸入Simulink,結(jié)果是在桌面上出現(xiàn)一個(gè)稱為Simulink Library Browser的窗口,在這個(gè)窗口中列出了按功能分類的各種模塊的名稱。具體如圖2-1所示。
?(2)用戶也可以通過(guò)MATLAB主窗口的快捷按鈕來(lái)打開(kāi)Simulink Library Browser窗口,相應(yīng)能打開(kāi)Simulink Library Browser窗口模塊庫(kù)窗口


?Simulink模塊庫(kù)包括很多工具箱,使得用戶能夠針對(duì)不同行業(yè)的數(shù)學(xué)模型能夠進(jìn)行快速設(shè)計(jì),在打開(kāi)Simulink時(shí)出現(xiàn)的界面中,如圖2-2所示左側(cè)的模塊庫(kù)和工具箱(Block and Toolboxes)欄中列出了各領(lǐng)域開(kāi)發(fā)的仿真環(huán)節(jié)庫(kù)。
?主要的仿真環(huán)節(jié)庫(kù)有:
?(1)控制系統(tǒng)工具箱(Control System Toolbox)
?(2)通信模塊工具箱(Communications Blockset)
?(3)數(shù)字信號(hào)處理模塊工具箱(DSP Blockset)
?(4)非線性控制模塊工具箱(NCD Blockset)
?(5)定點(diǎn)處理模塊工具箱(Fixed-Point Blockset)
?(6)狀態(tài)流(StateFlow)
?(7)系統(tǒng)辨識(shí)模塊工具箱(System ID Blocks)
?(8)神經(jīng)網(wǎng)絡(luò)模塊工具箱(Neural Network Blockset)
?(9)模糊邏輯工具箱(Fuzzy Logic Toolbox)
?其中,控制系統(tǒng)工具箱(Control System Toolbox)應(yīng)用最為廣泛,具體的Simulink模塊庫(kù)如下:


?常用模塊庫(kù)如圖2-4所示。
?常用模塊包括用戶常用的模塊集,通常該常用模塊為一般Simulink模型的基本構(gòu)建模塊,例如輸入、輸出、示波器、常數(shù)輸出、加減運(yùn)算、乘除運(yùn)算等。



?連續(xù)函數(shù)模塊如圖2-5所示。
?連續(xù)函數(shù)模塊主要用于控制系統(tǒng)的拉氏變換中,主要為積分環(huán)節(jié)、傳遞函數(shù)、抗飽和積分、延遲環(huán)節(jié)等。



?非連續(xù)函數(shù)模塊如圖2-6所示。
?如圖2-6所示非連續(xù)函數(shù)模塊主要為死區(qū)、信號(hào)的一階導(dǎo)數(shù)Rate Limiter模塊、階梯狀輸出模塊Quantizer模塊、約定信號(hào)的輸出的上下界Saturation以及Relay環(huán)節(jié)等。



?離散函數(shù)模塊如圖2-7所示。
?離散模塊主要將拉氏變換后的傳遞函數(shù)經(jīng)Z變換離散化,從而實(shí)現(xiàn)傳遞函數(shù)的離散化建模,離散化系統(tǒng)容易進(jìn)行程序移植,因此廣泛應(yīng)用在各種控制器仿真設(shè)計(jì)中,具體的離散模塊庫(kù)包括延時(shí)Delay環(huán)節(jié)、導(dǎo)數(shù)Difference、離散零極點(diǎn)配置Discrete Zero-Pole,離散時(shí)間積分環(huán)節(jié)等。



?邏輯控制器模塊庫(kù)如圖2-8所示。
?如圖2-8所示邏輯控制器主要邏輯位運(yùn)算,在常用的系統(tǒng)建模較少用到,主要有Bit Clear位清除、Bit Set位設(shè)置、Combinatorial Logic組合邏輯運(yùn)算等。



?查表模塊庫(kù)如圖2-9所示。
?如圖2-9所示查表模塊庫(kù),包括1-D Lookup Table、2-D Lookup Table、Direct Lookup Table(n-D)等,主要是根據(jù)模塊參數(shù)的定義值對(duì)輸入進(jìn)行插值映射輸出,輸出的值定義為T(mén)able參數(shù),方便用戶進(jìn)行定義和應(yīng)用。



?數(shù)學(xué)模塊庫(kù)如圖2-10所示。
?如圖2-10所示數(shù)學(xué)模塊庫(kù),主要為絕對(duì)值計(jì)算Abs、加減運(yùn)算Add、放大縮小倍數(shù)運(yùn)算Gain、乘除運(yùn)算Product等,用戶根據(jù)相應(yīng)的模型表達(dá)式構(gòu)建相應(yīng)的不同模塊的配合使用,達(dá)到相應(yīng)的表達(dá)式計(jì)算,該數(shù)學(xué)模塊庫(kù)基本涵蓋了所有的基本運(yùn)算功能。



?數(shù)據(jù)輸出顯示庫(kù)如圖2-11所示。
?如圖2-11所示數(shù)據(jù)輸出顯示庫(kù),包含有輸出端Out1、示波器Scope、數(shù)據(jù)顯示Display等模塊,方便用戶搭建模型后,進(jìn)行仿真觀察模型輸出參數(shù)值的變化圖。



?用戶自定義模塊如圖2-13所示。
?如圖2-13所示的戶自定義模塊,該模塊主要用于供用戶自己抒寫(xiě)相應(yīng)的程序進(jìn)行系統(tǒng)仿真,從而實(shí)現(xiàn)快速的建模仿真。
?相應(yīng)的還有模型驗(yàn)證庫(kù)Model-Verification、子系統(tǒng)模塊庫(kù)Ports&Subsystems、航空器模塊Aerospace Blockset、通信模塊Communications System Toolbox等,用戶可以根據(jù)實(shí)際問(wèn)題背景以及模型需要,選擇不同的模塊進(jìn)行設(shè)計(jì)。



?如圖2-14為一Simulink模塊仿真圖。
?對(duì)于該Simulink模塊仿真圖的搭建,主要有以下幾步:



在命令行窗口輸入Simulink,打開(kāi)Simulink模塊庫(kù)界面,如圖2-15所示。



?接下來(lái),新建一個(gè)仿真文件,點(diǎn)擊Simulink Library Browser界面左上方File下的圖標(biāo),彈出新建一個(gè)Simulink文件,如圖2-16所示。



?(3)點(diǎn)擊新建文件的保存按鈕,進(jìn)行該Simulink文件的保存操作,進(jìn)行命名,在此程序中,命名為“ysw2_1”,即生成一個(gè)Simulink文件“ysw2_1.slx”。
?(4)在Simulink Library Browser界面上進(jìn)行每一個(gè)仿真元件的尋找,查詢位置如圖2-17所示。



?(5)通過(guò)輸入Step,進(jìn)行查找,得到相應(yīng)的查找結(jié)果,得到如圖2-18所示結(jié)果。



?(6)選擇查詢的結(jié)果,拖放到新建的Simulink文件“ysw2_1.slx”下,依次查詢其它的sum、PID、scope元件,將它們放入Simulink文件“ysw2_1.slx”下,如圖2-19所示。



?(7)依次搭建每一個(gè)模塊,通過(guò)連線構(gòu)成一個(gè)系統(tǒng),得到相應(yīng)的仿真結(jié)果圖如圖2-20所示。
?如圖2-20所示的仿真模型與圖2-14的Simulink模塊仿真圖一致,設(shè)置相應(yīng)元器件的參數(shù),點(diǎn)擊該仿真文件的仿真運(yùn)行按鈕,進(jìn)行模型仿真,如圖2-21所示。




?(8)帶仿真結(jié)束,點(diǎn)擊示波器,彈出示波器圖形界面,如圖2-22所示。
?至此,一個(gè)簡(jiǎn)單的Simulink模型由搭建到仿真到生成圖形,全部結(jié)束。
?Simulink模型搭建較簡(jiǎn)單,關(guān)鍵在于Simulink模型所代表的數(shù)學(xué)模型,通常情況下,數(shù)學(xué)模型限制了Simulink資源的使用。



?Simulink仿真文件建立后,常常會(huì)出現(xiàn)仿真故障診斷問(wèn)題,仿真不通過(guò),系統(tǒng)提示仿真步長(zhǎng)設(shè)置、仿真參數(shù)設(shè)置等問(wèn)題,因此本節(jié)主要討論Simulink仿真文件運(yùn)行仿真及參數(shù)設(shè)置。
?2.2.1 模型的創(chuàng)建
?Simulink的模型窗口的常用菜單如表2-1所示。



?1.模塊的復(fù)制
?Simulink模型搭建過(guò)程中,模塊的復(fù)制能夠?yàn)橛脩籼峁┛旖莸牟僮鞣绞剑唧w的復(fù)制操作如下:
?(1)不同模型窗口(包括模型庫(kù)窗口)之間的模塊復(fù)制
?§ 1)選定模塊,用鼠標(biāo)將其拖到另一模型窗口。
?§ 2)選定模塊,使用菜單的“Copy”和“Paste”命令。?§ 3)選定模塊,使用工具欄的“Copy”和“Paste”按鈕。
?(2)在同一模型窗口內(nèi)的復(fù)制模塊(如圖1.8所示)
?§ 1)選定模塊,按下鼠標(biāo)右鍵,拖動(dòng)模塊到合適的地方,釋放鼠標(biāo)。
?§ 2)選定模塊,按住Ctrl鍵,再用鼠標(biāo)拖動(dòng)對(duì)象到合適的地方,釋放鼠標(biāo)。
?§ 3)使用菜單和工具欄中的“Copy”和“Paste”按鈕。? 具體如圖2-23所示。



?2.模塊的移動(dòng)
?(1)在同一模型窗口移動(dòng)模塊,選定需要移動(dòng)的模塊,用鼠標(biāo)將模塊拖到合適的地方。
?(2)在不同模型窗之間移動(dòng)模塊,在不同模型窗之間移動(dòng)模塊,在用鼠標(biāo)移動(dòng)的同時(shí)按下Shift鍵。
?(3)當(dāng)模塊移動(dòng)時(shí),與之相連的連線也隨之移動(dòng)。?3.模塊的刪除
?要?jiǎng)h除模塊,應(yīng)選定待刪除模塊,按Delete鍵;或者用菜單“Edit”、“Clear”或“Cut”。?4.改變模塊大小
?選定需要改變大小的模塊,出現(xiàn)小黑塊編輯框后,用鼠標(biāo)拖動(dòng)編輯框,可以實(shí)現(xiàn)放大或縮小。
?具體如圖2-24所示。



?5. 模塊的翻轉(zhuǎn)
?(1)模塊翻轉(zhuǎn)180度
?選定模塊,選擇菜單“Format” —> “Flip Block”可以將模塊旋轉(zhuǎn)180度,
?(2)模塊翻轉(zhuǎn)90度
?選定模塊,選擇菜單“Format” —> “Rotate Block”可以將模塊旋轉(zhuǎn)90度,如果一次翻轉(zhuǎn)不能達(dá)到要求,可以多次翻轉(zhuǎn)來(lái)實(shí)現(xiàn),或者使用“ctrl + R”快捷鍵實(shí)現(xiàn)模塊的翻轉(zhuǎn)。如圖所示
? 具體如圖2-25所示。



?6. 模塊名的編輯
?(1)修改模塊名:?jiǎn)螕裟K下面或旁邊的模塊名,出現(xiàn)虛線編輯框就可對(duì)模塊名進(jìn)行修改。?(2)模塊名字體設(shè)置:選定模塊,選擇菜單“Format”—>“Font”,打開(kāi)字體對(duì)話框設(shè)置字體。
?(3)模塊名的顯示和隱藏:選定模塊,選擇菜單“Format” —> “Hide / Show name”,可以隱藏或顯示模塊名。
?(4)模塊名的翻轉(zhuǎn):選定模塊,選擇菜單“Format” —> “Flip name”,可以翻轉(zhuǎn)模塊名。


?1. 模塊間連線
?(1)先將光標(biāo)指向一個(gè)模塊的輸出端,待光標(biāo)變?yōu)槭址?,按下鼠?biāo)鍵并拖動(dòng),直到另一模塊的輸入端。
?(2)按住”ctrl”鍵,選中兩個(gè)模塊,Simulink模塊之間自動(dòng)連線,能夠在模塊很密集情況下,解決用戶不好連線的問(wèn)題。Simulink



?(1)分支的產(chǎn)生
?將光標(biāo)指向信號(hào)線的分支點(diǎn)上,按鼠標(biāo)右鍵,光標(biāo)變?yōu)槭址?,拖?dòng)鼠標(biāo)直到分支線的終點(diǎn),釋放鼠標(biāo);或者按住Ctrl鍵,同時(shí)按下鼠標(biāo)左鍵拖動(dòng)鼠標(biāo)到分支線的終點(diǎn),如圖2-27所示。



?(2)信號(hào)線的折線
?選中已存在的信號(hào)線,將光標(biāo)指向折點(diǎn)處,按住Shift鍵,同時(shí)按下鼠標(biāo)左鍵,當(dāng)光標(biāo)變成小圓圈時(shí),用鼠標(biāo)拖動(dòng)小圓圈將折點(diǎn)拉至合適處,釋放鼠標(biāo),如圖2-28所示。



?3. 信號(hào)線文本注釋(label)
?(1)添加文本注釋:雙擊需要添加文本注釋的信號(hào)線,則出現(xiàn)一個(gè)空的文字填寫(xiě)框,在其中輸入文本。?(2)修改文本注釋:?jiǎn)螕粜枰薷牡奈谋咀⑨專霈F(xiàn)虛線編輯框即可修改文本。
?(3)移動(dòng)文本注釋:?jiǎn)螕魳?biāo)識(shí),出現(xiàn)編輯框后,就可以移動(dòng)編輯框。
?(4)復(fù)制文本注釋:?jiǎn)螕粜枰獜?fù)制的文本注釋,按下Ctrl鍵同時(shí)移動(dòng)文本注釋,或者用菜單和工具欄的復(fù)制操作。
?文本注釋具體如圖2-29所示。



?4. 在信號(hào)線中插入模塊
?如果模塊只有一個(gè)輸入端口和一個(gè)輸出端口,則該模塊可以直接被插入到一條信號(hào)線中。
?具體的信號(hào)線中插入模塊時(shí),信號(hào)線自動(dòng)連接,如圖2-30所示。



仿真參數(shù)設(shè)置簡(jiǎn)介
?在模型窗口選擇菜單“Simulation” —> “Model Configurationparameters”,則會(huì)打開(kāi)參數(shù)設(shè)置對(duì)話框,如圖2-31所示。



?1. Solver頁(yè)的參數(shù)設(shè)置
?(1)仿真的起始和結(jié)束時(shí)間
?包括仿真的起始時(shí)間(Start time)和仿真的結(jié)束時(shí)間(Stop time)。?(2)仿真步長(zhǎng)
?仿真的過(guò)程一般是求解微分方程組,“Solve options”的內(nèi)容是針對(duì)解微分方程組的設(shè)置。
?(3)仿真解法
?Type的右邊:設(shè)置仿真解法的具體算法類型。
?(4)輸出模式
?根據(jù)需要選擇輸出模式(Output options),可以達(dá)到不同的輸出效果。
?2. Data Import/Export的設(shè)置
?如圖2-26所示,可以設(shè)置Simulink從工作空間輸入數(shù)據(jù)、初始化狀態(tài)模塊,也可以把仿真的結(jié)果、狀態(tài)模塊數(shù)據(jù)保存到當(dāng)前工作空間。



?(1)從工作空間裝載數(shù)據(jù)(Load from workspace);
?(2)保存數(shù)據(jù)到工作空間(Save to workspace);
?(3)Time欄:勾選Time欄后,模型將把(時(shí)間)變量以在右邊空白欄填寫(xiě)的變量名(默認(rèn)名為tout)存放于工作空間。
?(4)States欄:勾選States欄后,模型將把其狀態(tài)變量在右邊空白欄填寫(xiě)的變量名(默認(rèn)名為xout)存放于工作空間。
?(5)Output欄:如果模型窗口中使用輸出模塊“Out”,那么就必須勾選Output欄,并填寫(xiě)在工作空間中的輸出數(shù)據(jù)變量名(默認(rèn)名為yout)。
?(6)Final state欄:Final state欄的勾選,將向工作空間以在右邊空白欄填寫(xiě)的名稱(默認(rèn)名為xFinal),存放最終狀態(tài)值。
?(7)變量存放選項(xiàng)(Save options):Save options必須與Save to workspace配合使用。


子系統(tǒng)及其封裝
?子系統(tǒng)類似于編程語(yǔ)言中的子函數(shù)。建立子系統(tǒng)有兩種方法:在模型中新建子系統(tǒng)和在已有的子系統(tǒng)基礎(chǔ)上建立。


?打開(kāi)Simulink模型庫(kù),建立相應(yīng)的模型,并創(chuàng)建一個(gè)子系統(tǒng)。
?在模型窗口中,將控制對(duì)象中的中間模塊連接部分,用鼠標(biāo)拖出的虛線框框住,選擇菜單“Edit”—>“Create subsystem”,則系統(tǒng)如圖2-33所示。
?雙擊子系統(tǒng),則會(huì)出現(xiàn)“Subsystem”模型窗口,如圖2-34所示。




?可以看到子系統(tǒng)模型除了用鼠標(biāo)框住的兩個(gè)環(huán)節(jié),還自動(dòng)添加了一個(gè)輸入模塊“In1”和一個(gè)輸出模塊“Out1”。該輸入模塊和輸出模塊將應(yīng)用在主模型中作為用戶的輸入和輸出接口,如圖2-35所示。
?運(yùn)行仿真結(jié)果如圖2-36所示。




?新建一個(gè)PID控制器,建立新子系統(tǒng),利用Simulink模型庫(kù)中模塊搭建PID控制器,如圖所示。



?將圖中的所有對(duì)象都復(fù)制到新的空白模型窗口中,雙擊打開(kāi)子系統(tǒng)“Subsystem”,則出現(xiàn)如圖所示的子系統(tǒng)模型窗口,子系統(tǒng)創(chuàng)建好后,復(fù)制粘貼都是整體進(jìn)行。
?添加模型構(gòu)成反饋環(huán)形成閉環(huán)系統(tǒng),如圖所示。




?建立一個(gè)用使能子系統(tǒng)控制正弦信號(hào)為半波整流信號(hào)的模型。
?模型由正弦信號(hào)“Sine wave”為輸入信號(hào)源,示波器“Scope”為接收模塊,使能子系統(tǒng)“Enabled Subsystem”為控制模塊。
?連接模塊,將“Sine wave”模塊的輸出作為“Enabled Subsystem”的控制信號(hào),


?由此得到使能子系統(tǒng)如圖2-43所示。
?對(duì)該使能子系統(tǒng)開(kāi)始仿真,由于“Enabled Subsystem”的控制為正弦信號(hào),大于零時(shí)執(zhí)行輸出,小于零時(shí)就停止,則示波器顯示為半波整流信號(hào),示波器的顯示如圖1.42(b)所示。





觸發(fā)子系統(tǒng)(TriggeredSubsystem)
?模型由正弦信號(hào)“Sine wave”為輸入信號(hào)源,示波器“Scope”為接收模塊,觸發(fā)子系統(tǒng)“Triggered Subsystem”為控制模塊,選擇“Sources”模塊庫(kù)中的“PulseGenerator”模塊為控制信號(hào)。
?連接模塊,將“Pulse Generator”模塊的輸出作為“TriggeredSubsystem”的控制信號(hào),模型如圖2-46所示。




? 開(kāi)始仿真,由于“Triggered Subsystem”的控制為正弦信號(hào)“Sinewave”模塊的輸出,示波器輸出如圖2-47所示。
? 運(yùn)行仿真文件,輸出圖形如圖2-48所示。




使能觸發(fā)子系統(tǒng)(Enabledand Triggered Subsystem)
?使能觸發(fā)子系統(tǒng)就是觸發(fā)子系統(tǒng)和使能子系統(tǒng)的組合,含有觸發(fā)信號(hào)和使能信號(hào)兩個(gè)控制信號(hào)輸入端,觸發(fā)事件發(fā)生后,Simulink檢查使能信號(hào)是否大于0,大于0就開(kāi)始執(zhí)行。
?模型由正弦信號(hào)“Sine wave”為輸入信號(hào)源,示波器“Scope”為接收模塊,觸發(fā)子系統(tǒng)“Triggered Subsystem”為控制模塊,使能子系統(tǒng)“Enabled Subsystem”為控制模塊,選擇“Sources”模塊庫(kù)中的“RandomNumber”模塊為控制信號(hào)。
?連接模塊,將“Random Number”模塊的輸出作為“TriggeredSubsystem”的控制信號(hào),正弦信號(hào)“Sine wave”模塊的輸出作為“Enabled Subsystem”的控制信號(hào),模型如圖2-46所示。




?開(kāi)始仿真,由于“Triggered Subsystem”的控制為正弦信號(hào)“Sinewave”模塊的輸出,示波器輸出如圖2-47所示。
?運(yùn)行仿真文件,輸出圖形如圖2-48所示。




封裝子系統(tǒng)
?1. 封裝子系統(tǒng)的步驟
?(1)選中子系統(tǒng)雙擊打開(kāi),給需要進(jìn)行賦值的參數(shù)指定一個(gè)變量名;
?(2)選擇菜單“Edit”—>“Mask subsystem”,出現(xiàn)封裝對(duì)話框;
?(3)在封裝對(duì)話框中的設(shè)置參數(shù),主要有“Icon”、“Parameters”、“Initialization”和“Documentation”四個(gè)選項(xiàng)卡。
?2. Icon選項(xiàng)卡
?Icon選項(xiàng)卡用于設(shè)定封裝模塊的名字和外觀,如圖2-52所示。



?Drawing commands欄用來(lái)建立用戶化的圖標(biāo),可以在圖標(biāo)中顯示文本、圖像、圖形或傳遞函數(shù)等。在Drawing commands欄中的命令如上圖中“Examples of drawing commands”的下拉列表所示,包括plot、disp、text、port_label、image、patch、color、droots、dploy和fprintf。
?3. Parameters & Dialog選項(xiàng)卡
?Parameters & Dialog選項(xiàng)卡用于輸入變量名稱和相應(yīng)的提示,如圖2-53所示。
?用戶可以從左側(cè)添加功能進(jìn)入Dialog box中,然后用鼠標(biāo)右鍵,可以對(duì)該模塊進(jìn)行刪除、復(fù)制、剪切等操作,具體如圖2-54所示。




?對(duì)于Dialog Parameters,
?(1)Prompt:輸入變量的含義,其內(nèi)容會(huì)顯示在輸入提示中。
?(2)Variable:輸入變量的名稱。
?(3)type:給用戶提供設(shè)計(jì)編輯區(qū)的選擇。“Edit”提供一個(gè)編輯框;“Checkbox”提供一個(gè)復(fù)選框;“Popup”提供一個(gè)彈出式菜單。
?(4)Evaluate:用于配合“type”的不同選項(xiàng)提供不同的變量值,有兩個(gè)選項(xiàng)“Evaluate”和“Literal”,其含義如表2-2所示。



?4. Initialization選項(xiàng)卡
?Initialization選項(xiàng)卡用于初始化封裝子系統(tǒng)。具體如圖2-55所示。該界面主要為用戶參數(shù)的初始化設(shè)置。



?5. Documentation選項(xiàng)卡
?Documentation選項(xiàng)卡用于編寫(xiě)與該封裝模塊對(duì)應(yīng)的Help和說(shuō)明文字,分別有“Mask type”、“Mask Description”和“Maskhelp”欄。如圖2-56所示。
?(1)Mask type欄:用于設(shè)置模塊顯示的封裝類型。
?(2)Mask Description欄:用于輸入描述文本。
?(3)Mask help欄:用于輸入幫助文本。



?6. 按鈕
?設(shè)置參數(shù)設(shè)置對(duì)話框中的“Apply”按鈕用于將修改的設(shè)置應(yīng)用于封裝模塊;“Unmask”按鈕用于將封裝撤銷(xiāo),則雙擊該模塊就不會(huì)出現(xiàn)定制的對(duì)話框。?例如創(chuàng)建一個(gè)二階系統(tǒng),并將子系統(tǒng)進(jìn)行封裝。
?創(chuàng)建一個(gè)二階系統(tǒng),將其閉環(huán)系統(tǒng)構(gòu)成子系統(tǒng),并封裝將阻尼系數(shù)zeta和無(wú)阻尼頻率wn作為輸入?yún)?shù)。?(1)創(chuàng)建模型,并將系統(tǒng)的阻尼系數(shù)用變量zeta表示,無(wú)阻尼頻率用變量wn表示,如圖2-57所示。



?(2)用虛線框框住反饋環(huán),選擇菜單“Edit”—>“Create Subsystem”,則產(chǎn)生子系統(tǒng),如圖2-58所示。



?(3)封裝子系統(tǒng),選擇菜單“Edit” —> “Mask subsystem”,出現(xiàn)封裝對(duì)話框,將zeta和wn作為輸入?yún)?shù)。
?在Icon選項(xiàng)卡中設(shè)置的“Icon Drawing commands”欄中寫(xiě)文字并畫(huà)曲線,命令如下:?disp('二階系統(tǒng)')
?plot([0 1 2 3 10],-exp(-[01 2 3 10]))
?具體如圖2-59所示。



?在Parameters&Dialog選項(xiàng)卡中,單擊按鈕添加兩個(gè)輸入?yún)?shù),設(shè)置“Prompt”分別為“阻尼系數(shù)”和“無(wú)阻尼振蕩頻率”,并設(shè)置“type”欄分別為“Popup”和“edit”,對(duì)應(yīng)的“Variable”為“zeta”和“wn”,如圖2-60所示。在Initialization選項(xiàng)卡初始化輸入?yún)?shù),如圖2-61所示。




?在Documentation選項(xiàng)卡中輸入提示和幫助信息,如圖2-62所示。
?單擊“OK”按鈕,完成參數(shù)設(shè)置,然后雙擊該封裝子系統(tǒng),則出現(xiàn)如圖2-63所示的封裝子系統(tǒng)。
?雙擊該子系統(tǒng)出現(xiàn)圖2-63所示的輸入?yún)?shù)對(duì)話框,在對(duì)話框中輸入“阻尼系數(shù)”zeta和“無(wú)阻尼振蕩頻率”wn的值,如圖2-64所示。
?運(yùn)行仿真文件,輸出如圖2-65所示圖形。





用MATLAB命令創(chuàng)建和運(yùn)行Simulink模型
?MATLAB命令創(chuàng)建和運(yùn)行Simulink模型在程序和Simulink模型結(jié)合起來(lái)運(yùn)行時(shí),顯得很簡(jiǎn)捷,用戶可以內(nèi)嵌到GUI設(shè)計(jì)中,或者程序設(shè)計(jì)中進(jìn)行參數(shù)的循環(huán)運(yùn)算從而得到最佳模擬狀態(tài)。


?1)創(chuàng)建新模型
?new_system命令用來(lái)在MATLAB的工作空間創(chuàng)建一個(gè)空白的Simulink模型。?語(yǔ)法:
?new_system(‘newmodel’,option) %創(chuàng)建新模型
?說(shuō)明:
?newmodel:為模型名;
?option選項(xiàng)可以是Library和Model兩種,也可以省略,默認(rèn)為Model。
?(2)打開(kāi)模型?open_system命令用來(lái)打開(kāi)邏輯模型,在Simulink模型窗口顯示該模型。
?語(yǔ)法:
?open_system(‘model’) %打開(kāi)模型
?說(shuō)明:
?model:為模型名。
?(3)保存模型
?save_system命令用來(lái)保存模型為模型文件,擴(kuò)展名為.slx。
?語(yǔ)法:
?save_system(‘model’,文件名) %保存模型
?說(shuō)明:
?model:模型名可省略,如果不給出模型名,則自動(dòng)保存當(dāng)前的模型;
?文件名:指保存的文件名,是字符串,也可省略,如果不省略則保存為新文件。?例如用MATLAB命令創(chuàng)建新模型。
?new_system('Ex0711model') %創(chuàng)建邏輯模型?open_system('Ex0711model') %打開(kāi)模型?save_system('Ex0711model','Ex0711') %保存模型文件


?(1)添加模塊
?使用add_block命令在打開(kāi)的模型窗口中添加新模塊。
?語(yǔ)法:
?add_block(’源模塊名’,’目標(biāo)模塊名’,’屬性名1’,屬性值1,’屬性名2’,屬性值2,…
?說(shuō)明:
?源模塊名:為一個(gè)已知的庫(kù)模塊名,或在其它模型窗口中定義的模塊名,Simulink自帶的模塊為內(nèi)在模塊,例如正弦信號(hào)模塊為“built-in/Sine Wave”;
?目標(biāo)模塊名:為在模型窗口中使用的模塊名。
?(2)添加信號(hào)線
?模塊需要用信號(hào)線連接起來(lái),添加信號(hào)線使用add_line命令。
?語(yǔ)法:
?add_line(’模塊名’,’起始模塊名/輸出端口號(hào)’, ’終止模塊名/輸入端口號(hào)’)
?add_line(’模塊名’,m)
?說(shuō)明:
?模塊名:為在模型窗口中的模塊名;
?m:為有兩列元素的矩陣,每列給出一個(gè)轉(zhuǎn)折點(diǎn)坐標(biāo)。?用MATLAB命令添加四個(gè)模塊連接成一個(gè)二階系統(tǒng)模型。
?clc,clear,close all?open_system('ysw2_9.slx');
?add_block('built-in/Step','ysw2_9/Step','position',[20,100,40,120]) %添加階躍信號(hào)模塊
?add_block('built-in/Sum','ysw2_9/Sum','position',[60,100,80,120]) %添加Sum模塊?%添加傳遞函數(shù)模塊?add_block('built-in/TransferFcn','ysw2_9/Fcn1','position',[120,90,200,130])
?%添加示波器模塊?add_block('built-in/Scope','ysw2_9/Scope','position',[240,100,260,120])
add_line('ysw2_9','Step/1','Sum/1') %添加連線?add_line('ysw2_9','Sum/1','Fcn1/1')
?add_line('ysw2_9','Fcn1/1','Scope/1')?add_line('ysw2_9','Fcn1/1','Sum/2')
?程序中'position'為位置屬性,模塊名為'ysw2_9'。


?刪除模塊
?例如刪除示波器模塊則使用:?delete_block('ysw2_9/Scope')
?則出現(xiàn)如圖2-67所示的模型。


?(1)模型屬性的獲得
? 對(duì)Simulink模型進(jìn)行屬性的獲取分析,MATLAB函數(shù)如下:
?f1=simget('模型文件名')? 說(shuō)明:? 模型文件名:默認(rèn)為當(dāng)前分析的Simulink文件。
?對(duì)如圖2-66所示模型進(jìn)行屬性的獲取分析,
?clc,clear,close all?open_system('ysw2_9.slx');
?f1=simget('ysw2_9')?運(yùn)行程序輸出結(jié)果如下:
?f1 =
? AbsTol: 'auto' %絕對(duì)允許誤差限
? Debug: 'off' %是否允許跟蹤調(diào)試
? Decimation: 1 %輸出位數(shù),每個(gè)1點(diǎn)輸出1次
? DstWorkspace: 'current' %輸出量工作空間
? FinalStateName: '' %狀態(tài)變量名
? FixedStep:'auto' %定步長(zhǎng)? InitialState: [] %初始狀態(tài)向量
? InitialStep:'auto' %初始步長(zhǎng)
? MaxOrder:5 %最高算法階次
? SaveFormat:'Array' %變量類型
? MaxDataPoints: 1000 %最大返回點(diǎn)數(shù)
? MaxStep: 'auto' %最大步長(zhǎng)
? MinStep: [] %最小步長(zhǎng)
? OutputPoints: 'all' %輸出點(diǎn)
? OutputVariables: 'ty' %輸出變量
? Refine: 1 %插值點(diǎn)嗎
? RelTol: 0.0010 %相對(duì)誤差
? Solver: 'ode45' %仿真算法
? SrcWorkspace: 'base' %輸入量工作空間
? Trace: '' %是否逐步顯示
? ZeroCross:'on' %檢測(cè)過(guò)零點(diǎn)


?(1)模型屬性的獲得? 對(duì)Simulink模型進(jìn)行屬性的獲取分析,MATLAB函數(shù)如下:?f1=simget('模型文件名')
? 說(shuō)明:
? 模型文件名:默認(rèn)為當(dāng)前分析的Simulink文件。
?對(duì)如圖2-66所示模型進(jìn)行屬性的獲取分析,
?clc,clear,close all
?open_system('ysw2_9.slx')
?f1=simget('ysw2_9')?運(yùn)行程序輸出結(jié)果如下:
?f1 =
? AbsTol: 'auto' %絕對(duì)允許誤差限
? Debug: 'off' %是否允許跟蹤調(diào)試
? Decimation: 1 %輸出位數(shù),每個(gè)1點(diǎn)輸出1次
? DstWorkspace: 'current' %輸出量工作空間
? FinalStateName: '' %狀態(tài)變量名
? FixedStep:'auto' %定步長(zhǎng)
? InitialState: [] %初始狀態(tài)向量
? InitialStep:'auto' %初始步長(zhǎng)
? MaxOrder:5 %最高算法階次
? SaveFormat:'Array' %變量類型
? MaxDataPoints: 1000 %最大返回點(diǎn)數(shù)
? MaxStep: 'auto' %最大步長(zhǎng)
? MinStep: [] %最小步長(zhǎng)
? OutputPoints: 'all' %輸出點(diǎn)
? OutputVariables: 'ty' %輸出變量
? Refine: 1 %插值點(diǎn)
? RelTol: 0.0010 %相對(duì)誤差
? Solver: 'ode45' %仿真算法
? SrcWorkspace: 'base' %輸入量工作空間
? Trace: '' %是否逐步顯示
? ZeroCross:'on' %檢測(cè)過(guò)零點(diǎn)



?使用sim命令來(lái)完成,在命令窗口就可以方便地對(duì)模型分析和仿真。
?語(yǔ)法:
?[t,x,y]=sim(‘model’,timespan,options,ut) %利用輸入?yún)?shù)進(jìn)行仿真,輸出矩陣
?[t,x,y1,y2,…]=sim(‘model’,timespan,options,ut) %利用輸入?yún)?shù)進(jìn)行仿真,逐個(gè)輸出
?說(shuō)明:
?model:為模型名;
?timespan:是仿真時(shí)間區(qū)間,可以是[t0, tf]表示起始時(shí)間和終止時(shí)間,也可以是[],利用模型對(duì)話框設(shè)置時(shí)間,如果是標(biāo)量則指終止仿真時(shí)間;
?options參數(shù)為模型控制參數(shù);
?ut為外部輸入向量;
?t為時(shí)間列向量;
?x為狀態(tài)變量構(gòu)成的矩陣;
?y為輸出信號(hào)構(gòu)成的矩陣,每列對(duì)應(yīng)一路輸出信號(hào)。
?仿真中timespan、options和ut參數(shù)都可省略。
?運(yùn)行二階系統(tǒng)的階躍響應(yīng),
?[t,x,y]=sim('Ex0711',[0,15]);
?plot(t,x(:,2))
?運(yùn)行仿真輸出結(jié)果如圖2-69所示。



電子發(fā)燒友App


















評(píng)論