版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第7章:動(dòng)態(tài)系統(tǒng)Simulink建模與仿真本章內(nèi)容:Simulink工具箱簡(jiǎn)介Simulink建模與仿真基本方法 動(dòng)態(tài)系統(tǒng)Simulink仿真模型的建立 Simulink子系統(tǒng)技術(shù)S-函數(shù)與Simulink仿真 *模糊邏輯工具箱簡(jiǎn)介7.1 Simulink工具箱簡(jiǎn)介7.1.1 Simulink工具箱簡(jiǎn)介 Simulink是Simulation(仿真)與link(連接)的簡(jiǎn)寫(xiě)形式,它提供一個(gè)動(dòng)態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境 ,是MATLAB最重要的組件之一,也是其它仿真工具箱的可視化仿真平臺(tái) 。優(yōu)點(diǎn):建模方便靈活, 適用面廣, 結(jié)構(gòu)和流程清晰, 效率高等。 1 Simulink啟動(dòng)(1)在
2、MATLAB命令窗口輸入“simulink”命令。(2)單擊MATLAB主窗口左下角的“Start”按鈕,在彈出的快捷菜單中單擊【Simulink】【Library Browser】命令。(3)單擊MATLAB主窗口工具欄里的工具。7.1.2 Simulink組成組成圖7-1 Simulink窗口界面Commonly Used Blocks(常用模塊庫(kù))Continuous(連續(xù)系統(tǒng)模塊庫(kù))Discontinuous(非連續(xù)系統(tǒng)模塊庫(kù))Discrete(離散系統(tǒng)模塊庫(kù))Logic and Bit Operations(邏輯與位操作模塊庫(kù))Lookup Tables(查詢表模塊庫(kù))Math Op
3、erations(數(shù)學(xué)操作模塊庫(kù))Model Verification(模型驗(yàn)證模塊庫(kù))2 Simulink模塊庫(kù)組件模塊庫(kù)組件 Simulink7.1模塊庫(kù)共包含16個(gè)子模塊庫(kù),它們是:Model-Wide Utility,Ports & Subsystems(接口與子系統(tǒng)模塊庫(kù)),Signal Attributes(信號(hào)屬性模塊庫(kù))Signal Routing(信號(hào)路由模塊庫(kù))Sinks(輸出模塊庫(kù))Sources(信號(hào)源模塊庫(kù))User-Defined Functions(用戶自定義模塊庫(kù))Additional Math & Discrete (附加數(shù)學(xué)和離散系統(tǒng)模塊庫(kù))
4、 是為了加快建模速度,節(jié)省建模過(guò)程中尋找模塊的時(shí)間而將最常用的基本模塊集中放在一起形成的,在初學(xué)Simulink建模與仿真時(shí),是使用最為頻繁的模塊庫(kù)。 (1) Commonly Used Blocks(常用模塊庫(kù))圖7-2v常用模塊庫(kù)包括總線信號(hào)生成器(Bus Creator)模塊、總線信號(hào)選擇器(Bus Selector)模塊、常數(shù)模塊(Constant)、數(shù)據(jù)類型轉(zhuǎn)換(Data Type Conversion)模塊,信號(hào)分離器(Demux)模塊,離散時(shí)間積分(Discrete-Time Integrator)模塊,增益(Gain)模塊,信號(hào)地(Ground)模塊,輸入接口(In1)模塊,積
5、分(Integrator)模塊,邏輯操作(Logic Operator)模塊,信號(hào)合成器(Mux)模塊,輸出接口(Out1)模塊,乘法(Product)模塊,關(guān)系操作(Relational Operator)模塊,飽和(Saturation)模塊,示波器(Scope)模塊,子系統(tǒng)(Subsystem)模塊,求和模塊(Sum),開(kāi)關(guān)轉(zhuǎn)換模塊(Switch),信號(hào)終端(Terminator)模塊,單位延遲(Unit Delay)模塊。 連續(xù)系統(tǒng)(Continuous)模塊庫(kù)提供了連續(xù)系統(tǒng)Simulink建模與仿真的基本模塊,有: 微分環(huán)節(jié)模塊(Derivative),積分環(huán)節(jié)模塊(Integrat
6、or),狀態(tài)空間模型(State-space),傳遞函數(shù)功能模塊(Transfer Fun),傳輸延遲模塊(Transport Delay),可變時(shí)間延遲模塊(Veriable Transport Delay),可變傳輸延遲模塊(Veriable Transport Delay)零極點(diǎn)增益模塊(Zero-Pole) (2) 連續(xù)系統(tǒng)模塊庫(kù)連續(xù)系統(tǒng)模塊庫(kù) 圖7-3v非連續(xù)系統(tǒng)模塊庫(kù)(DisContinity)在以前版本中也稱為非線性模塊庫(kù),包含一些常用的非線性運(yùn)算模塊,主要包括: (3) 非連續(xù)系統(tǒng)模塊庫(kù)非連續(xù)系統(tǒng)模塊庫(kù) 飽和非線性模塊(Saturation)死區(qū)非線性模塊(Dead Zone)
7、變化率限幅模塊(Rate Limiter)變化率動(dòng)態(tài)限幅模塊(Rate Limiter Dynamic)用于設(shè)置飽和輸出上下限。動(dòng)態(tài)飽和非線性模塊(Saturation Danymic)可以根據(jù)輸入端口Up和Lo的設(shè)定值動(dòng)態(tài)設(shè)置輸出的上限和下限。用于設(shè)定死區(qū)區(qū)間。動(dòng)態(tài)死區(qū)非線性模塊(Dead Zone Danymic)可以根據(jù)輸入端口Up和Lo的設(shè)定值動(dòng)態(tài)設(shè)置死區(qū)區(qū)間。用于設(shè)置信號(hào)輸出變化率限幅,即:上升變化率限幅(Rising slew rate)和下降變化率限幅(Falling slew rate)??梢愿鶕?jù)輸入端口Up和Lo的設(shè)定值動(dòng)態(tài)設(shè)置信號(hào)上升變化率限幅參數(shù)R和下降變化率限幅參數(shù)L。
8、磁滯回環(huán)模塊(Backlash):建立間隙模型。繼電模塊(Relay)量化模塊(Quantizer):用于輸入信號(hào)的量化處理。穿越值檢測(cè)模塊(Hit Crossing):庫(kù)侖與黏性摩擦(Coulomb & Viscous Friction):返回零模塊(Wrap to Zero)繼電模塊輸出值可以在兩個(gè)設(shè)定值之間切換。當(dāng)繼電器吸合時(shí),它保持吸合狀態(tài)輸出直到輸入信號(hào)值小于繼電斷開(kāi)值(Switch off point)。當(dāng)繼電器分離時(shí),它保持分離狀態(tài)輸出直到輸入信號(hào)值大于繼電吸合值(Switch on point)??砂丛O(shè)定的穿越檢測(cè)方向(Hit crossing direction)檢測(cè)
9、信號(hào)達(dá)到設(shè)定值的時(shí)間。此時(shí)輸出一個(gè)正脈沖。在零值為不連續(xù)點(diǎn),在其它值為連續(xù)線性增益。當(dāng)輸入信號(hào)值超過(guò)設(shè)定的極限值(Threshold),輸出信號(hào)返回到零值。單位延遲模塊(Unit Delay):延遲一個(gè)采樣周期整數(shù)延遲模塊(Integer Delay):延遲輸入N個(gè)采樣周期,N為自然數(shù)。觸發(fā)延遲模塊(Tapped Delay):延遲N個(gè)采樣周期后并輸出全部的輸入信息。離散時(shí)間積分器(Discrete-Time Integrator):離散積分器模塊可以代替積分器用來(lái)建立純離散采樣系統(tǒng)。在離散積分器模塊參數(shù)對(duì)話框里,可以設(shè)定初始狀態(tài)值、增益值、輸出飽和值。離散傳遞函數(shù)功能模塊(Discrete
10、Transfer Fcn):可以建立離散傳遞函數(shù)模型。離散濾波器模塊(Discrete Filter):用于建立離散系統(tǒng)濾波器仿真模型。離散零極點(diǎn)增益模型(Discrete Zero-Pole):使用零點(diǎn)、極點(diǎn)、增益值建立離散系統(tǒng)的零極點(diǎn)增益模型。離散微分模塊(Difference):輸出當(dāng)前輸入信號(hào)值與前一個(gè)采樣值之差。派生離散微分模塊(Discrete Derivative):模塊的輸出值按下式計(jì)算:(3)離散系統(tǒng)模塊庫(kù))離散系統(tǒng)模塊庫(kù)離散系統(tǒng)模塊庫(kù)主要包括用于建立離散采樣系統(tǒng)的模塊 ,包括:圖7-4離散狀態(tài)空間模型(Discrete State-Space):離散狀態(tài)空間模型實(shí)現(xiàn)下面系統(tǒng)
11、模型 一階離散傳遞函數(shù)功能模塊(Transfer Fcn First Order):用于建立一階的離散傳遞函數(shù)模型。傳遞函數(shù)引導(dǎo)或終止模塊(Transfer Fcn Lead or Lag):用于實(shí)現(xiàn)輸入信號(hào)的離散時(shí)間引導(dǎo)或終止補(bǔ)償。實(shí)數(shù)零點(diǎn)傳遞函數(shù)功能模塊(Transfer Fcn Real Zero):用于實(shí)現(xiàn)具有一個(gè)實(shí)數(shù)零點(diǎn)而無(wú)極點(diǎn)的傳遞函數(shù)模型。加權(quán)滑動(dòng)平均模塊(Weighted Moving Average):模塊采樣并保持最近N個(gè)輸入信號(hào),并根據(jù)設(shè)定的權(quán)重參數(shù)值(weights)計(jì)算它們的平均值。該模塊適用于SISO系統(tǒng)或SIMO系統(tǒng)模型。記憶模塊(Memory):輸出前一時(shí)刻的輸
12、入信號(hào)值。一階保持器(First-Order Hold):實(shí)現(xiàn)離散采樣系統(tǒng)的一階采樣保持功能。零階保持器(Zero-Order Hold):實(shí)現(xiàn)離散采樣系統(tǒng)的零階采樣保持功能。v其它模塊請(qǐng)參考MATLAB軟件!7.2 Simulink建模與仿真基本方法v7.2.1 簡(jiǎn)單系統(tǒng)仿真模型的建立簡(jiǎn)單系統(tǒng)仿真模型的建立 建立上圖所示系統(tǒng)框圖的Simulink仿真模型的基本方法如下; 1.啟動(dòng)MATLAB/Simulink工具箱 2.建立Simulink空白模型Simulink空白模型的建立可方法如下:在MATLAB主窗口中選擇菜單File/New/Model。選擇Simulink模塊庫(kù)瀏覽器窗口的菜單F
13、ile/New/Model。單擊Simulink模塊庫(kù)瀏覽器工具欄的新建圖標(biāo)“”。3.根據(jù)系統(tǒng)框圖選擇模塊 4.模塊的復(fù)制與刪除操作在模塊庫(kù)選中模塊后,按住鼠標(biāo)左鍵不放并拖動(dòng)到Simulink模型窗口指定位置,釋放鼠標(biāo)左鍵,完成模塊的復(fù)制操作。在模塊庫(kù)選中模塊后,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,單擊“Add to Example_Model”命令將模塊添加到指定模型窗口,完成模塊的復(fù)制操作。在模塊庫(kù)選中模塊后,在庫(kù)瀏覽器窗口的Edit菜單中選擇Copy命令,用鼠標(biāo)單擊目標(biāo)模型窗口中指定位置,再?gòu)哪P痛翱诘腅dit菜單中選擇Paste,完成模塊的復(fù)制操作。當(dāng)模型窗口已有所需模塊時(shí),也可以直接從
14、該處復(fù)制模塊,操作方是單擊鼠標(biāo)右鍵,在彈出的快捷菜單中單擊“Copy”命令,然后用鼠標(biāo)右鍵單擊模型窗口空白處,在彈出的快進(jìn)誒菜單中單擊“Paste”命令來(lái)完成粘貼任務(wù)。此外,也可以使用編輯菜單進(jìn)行復(fù)制、粘貼操作。當(dāng)然還可以用鼠標(biāo)右鍵按住所需復(fù)制的模塊不放,并拖動(dòng)到指定位置完成復(fù)制操作,這可大大加快建模速度。5.模塊的連接 將鼠標(biāo)移動(dòng)到模塊的輸出端子上,當(dāng)鼠標(biāo)出現(xiàn)“十字”符號(hào)后,按下鼠標(biāo)左鍵并拖動(dòng)到下級(jí)模塊的輸入端子上,完成模塊信號(hào)的連接。如上圖所示。選中信號(hào)輸出模塊,按下鍵盤“Ctrl”鍵并單擊下級(jí)模塊完成模塊信號(hào)的連接。在已存在的信號(hào)線上引出新的信號(hào)線時(shí),可用鼠標(biāo)右鍵單擊源信號(hào)線,并按住不放
15、拖動(dòng)到指定位置,完成信號(hào)線的分支連接。如圖所示,在模塊沒(méi)有完成連接時(shí),以紅色虛線顯示,當(dāng)連接完成后以黑色實(shí)線顯示。v將各子模塊連接起來(lái)后,構(gòu)成如圖所示的系統(tǒng)模型 7.2.2 Simulink仿真模型參數(shù)設(shè)置1.基本模塊參數(shù)設(shè)置 在完成模塊的信號(hào)線連接并建立起系統(tǒng)的Simulink仿真模型后,需要設(shè)置模塊的參數(shù)。在Simulink模型里,雙擊需要修改參數(shù)的模塊,彈出參數(shù)設(shè)置對(duì)話框。2. 仿真參數(shù)設(shè)置仿真參數(shù)設(shè)置 單擊模型窗口的“Simulation”菜單,在彈出的下拉菜單中單擊“Configuration Parameters”命令,打開(kāi)“Configuration Parameters”對(duì)話框
16、如圖所示。 3. 運(yùn)行仿真與仿真輸出運(yùn)行仿真與仿真輸出 雙擊“Scope”模塊,彈出如圖所示仿真輸出結(jié)果 仿真參數(shù)配置完畢后,可運(yùn)行仿真,方法有三種:?jiǎn)螕裟P痛翱诠ぞ邫?工具單擊“Simulation”菜單,在彈出的下拉菜單中單擊“Start”命令 同時(shí)按下快捷鍵“Ctrl+T”。7.3動(dòng)態(tài)系統(tǒng)Simulink仿真模型的建立v由系統(tǒng)框圖建立由系統(tǒng)框圖建立Simulink仿真模型仿真模型v由傳遞函數(shù)建立由傳遞函數(shù)建立Simulink仿真模型仿真模型v由狀態(tài)方程建立由狀態(tài)方程建立Simulink仿真模型仿真模型v由微分方程建立由微分方程建立Simulink仿真模型仿真模型7.1.1 由系統(tǒng)框圖建立
17、由系統(tǒng)框圖建立Simulink仿真模型仿真模型v在控制領(lǐng)域,控制系統(tǒng)通常以功能框圖的形式進(jìn)行描述,與在控制領(lǐng)域,控制系統(tǒng)通常以功能框圖的形式進(jìn)行描述,與Simulink仿真模型在結(jié)構(gòu)上十分相似,因此通過(guò)被控系統(tǒng)的仿真模型在結(jié)構(gòu)上十分相似,因此通過(guò)被控系統(tǒng)的框圖,很容易建立其框圖,很容易建立其Simulink仿真模型。下面以直流電機(jī)雙仿真模型。下面以直流電機(jī)雙閉環(huán)調(diào)速系統(tǒng)為例來(lái)說(shuō)明通過(guò)系統(tǒng)框圖建立閉環(huán)調(diào)速系統(tǒng)為例來(lái)說(shuō)明通過(guò)系統(tǒng)框圖建立Simulink仿真模仿真模型的基本方法。型的基本方法。r(t)為給定輸入,采用階躍信號(hào)。y(t)為系統(tǒng)輸出,表示直流電機(jī)的轉(zhuǎn)速。ASR和ACR分別為轉(zhuǎn)速調(diào)節(jié)器、電
18、流調(diào)節(jié)器,由PI調(diào)節(jié)器組成。根據(jù)直流雙閉環(huán)調(diào)速系統(tǒng)工程整定方法,進(jìn)行ASR和ACR的參數(shù)整定時(shí),首先斷開(kāi)轉(zhuǎn)速環(huán),整定電流調(diào)節(jié)器ACR。然后接通轉(zhuǎn)速環(huán),整定轉(zhuǎn)速環(huán)ASR,同時(shí)調(diào)節(jié)電流環(huán)參數(shù)。根據(jù)上述分析,首先建立直流雙閉環(huán)調(diào)速系統(tǒng)的高層仿真模型,其中轉(zhuǎn)速調(diào)節(jié)器和電流調(diào)節(jié)器由空白子系統(tǒng)組成,如圖所示。轉(zhuǎn)速調(diào)節(jié)器子系統(tǒng)Simulink模型 電流調(diào)節(jié)器子系統(tǒng)Simulink模型 7.1.2 由傳遞函數(shù)建立由傳遞函數(shù)建立Simulink仿真模型仿真模型v由系統(tǒng)傳遞函數(shù)建立Simulink仿真模型可直接使用Continue模塊庫(kù)的Transfer Fun模塊,下面以實(shí)例說(shuō)明?!纠}】已知某單位負(fù)反饋系統(tǒng)開(kāi)
19、環(huán)傳遞函數(shù)為15 . 22410*521)(2sssssG試建立其Simulink仿真模型并進(jìn)行仿真。建立模型過(guò)程如下:(1)建立一個(gè)空白的Simulink仿真模型窗口,如圖 (a)所示。(3)建立傳遞函數(shù)的模型。 (2)選擇系統(tǒng)所需的Simulink模塊 (4)連接模塊并設(shè)置仿真參數(shù) (5)運(yùn)行仿真7.1.3 由狀態(tài)方程建立由狀態(tài)方程建立Simulink仿真模型仿真模型v由系統(tǒng)狀態(tài)方程建立Simulink仿真模型可直接使用Continue模塊庫(kù)的State-space模塊,下面以實(shí)例說(shuō)明?!纠恳阎诚到y(tǒng)狀態(tài)空間模型為: uxx100005221320100001000010 xy0001試
20、建立其simulink仿真模型,并求其單位階躍響應(yīng)。 求解過(guò)程如下:(2) 選擇系統(tǒng)所需的Simulink模塊 (1) 建立一個(gè)Simulink空白仿真模型窗口 (3) 連接模塊并設(shè)置參數(shù) (4) 設(shè)置仿真參數(shù)并運(yùn)行仿真 7.1.4 由微分方程建立由微分方程建立Simulink仿真模型仿真模型第一是將系統(tǒng)微分方程轉(zhuǎn)換為傳遞函數(shù)模型,第二是將微分方程轉(zhuǎn)換為狀態(tài)空間模型,第三是由微分方程直接建立第三是由微分方程直接建立Simulink仿真模型。仿真模型。 由微分仿真建立Simulink仿真模型有三種方法,【例】已知某系統(tǒng)數(shù)學(xué)模型是一個(gè)高階微分方程: uyyyy3252010 且輸出量y的各階導(dǎo)數(shù)初
21、始值均為零,試建立其Simuink仿真模型。求解過(guò)程如下: (1)將高階微分方程轉(zhuǎn)換為一組一階微分方程:設(shè)yx 1yx2輸出方程。則得:21xyx 32xyx uxxxuyyyyx325201032520101233 1xy (2) 建立每個(gè)一階微分方程的Simulink仿真模型 這里首先需要知道微分環(huán)節(jié) 的Simulink模型如圖(a)所示 dtxx11dtxx22dtxx33因此可以建立 Simulink仿真模型如圖(b、c、d)所示 (3) 建立微分方程組的simulink仿真模型。 將各個(gè)微分單元連接起來(lái)就構(gòu)成了整個(gè)系統(tǒng)的Simulink仿真模型,結(jié)果如下圖所示。(4) 設(shè)置Simul
22、ink仿真參數(shù)。 上圖中u取單位階躍響應(yīng)信號(hào),Simulink求解器取默認(rèn)參數(shù)配置。運(yùn)行仿真得輸出響應(yīng)曲線如圖下圖所示。7.4 Simulink子系統(tǒng)技術(shù) 在使用Simulink進(jìn)行建模與仿真時(shí),經(jīng)常會(huì)遇見(jiàn)很復(fù)雜的系統(tǒng),難以用一個(gè)簡(jiǎn)單的Simulink框圖模型來(lái)進(jìn)行描述。與軟件開(kāi)發(fā)方法一樣,此時(shí)可將復(fù)雜系統(tǒng)的模型進(jìn)行功能劃分,將其分割為各個(gè)獨(dú)立的子系統(tǒng),然后再采用以下兩種策略加以實(shí)現(xiàn):(1)自下而上的策略:首先建立復(fù)雜系統(tǒng)中的每一個(gè)功能模塊,然后再組合這些模塊,逐漸建立整個(gè)系統(tǒng)的模型。(2)自上而下的策略:首先建立復(fù)雜系統(tǒng)的整體結(jié)構(gòu)模型,然后再逐一實(shí)現(xiàn)每一部分的模型。無(wú)論那種策略,對(duì)于復(fù)雜系統(tǒng)
23、模型的建立,都要用到子系統(tǒng)技術(shù)。本節(jié)主要介紹子系統(tǒng)及其封裝技術(shù)。7.4.1子系統(tǒng)的創(chuàng)建方法子系統(tǒng)的創(chuàng)建方法1.通過(guò)port&subsystem模塊庫(kù)建立子系統(tǒng) 在建立子系統(tǒng)時(shí),比較方便的是首先使用Port&Subsystem的Subsystem模塊建立一個(gè)空白子系統(tǒng),然后對(duì)空白子系統(tǒng)進(jìn)行編輯,最后再建立系統(tǒng)整體的Simulink仿真模型。這里以閉環(huán)系統(tǒng)的PID控制為例來(lái)說(shuō)明子系統(tǒng)的建立方法。如圖所示v在已經(jīng)建立好的復(fù)雜系統(tǒng)模型之中建立子系統(tǒng)。其基本方法是:首先選擇將要生成子系統(tǒng)的一組模塊,然后選擇Simulink模型編輯器的菜單【Edit:Create Subsystem】或者
24、單擊鼠標(biāo)右鍵選擇Create Subsystem選項(xiàng),都將生成子系統(tǒng)模塊。如圖所示。2.直接建立子系統(tǒng)7.4.2子系統(tǒng)的封裝方法子系統(tǒng)的封裝方法v在上述PID控制的子系統(tǒng)模型中,如果需要修改PID的參數(shù),則需要打開(kāi)其子系統(tǒng)模型窗口。為了能不打開(kāi)該子系統(tǒng)模塊窗口而修改其內(nèi)部參數(shù),Simulink提供了子系統(tǒng)封裝技術(shù)。v以上述建立的PID控制器子系統(tǒng)為例來(lái)說(shuō)明子系統(tǒng)封裝的基本步驟。 (1) 選中子系統(tǒng),單擊鼠標(biāo)右鍵,在彈出的對(duì)話框中單擊“Mask Subsystem”命令或者單擊菜單【Edit】【Mask Subsystem】,彈出子系統(tǒng)封裝編輯窗口,如圖所示。在“Drawing commands
25、”編輯窗口,可以給模塊圖標(biāo)上繪制圖形,如使用plot繪制圖形、disp顯示文字、image顯示已有圖形 (1)子系統(tǒng)圖標(biāo)設(shè)置,單擊 Icon按鈕,設(shè)置子系統(tǒng)圖標(biāo)。在“Drawing commands”編輯窗口,可以給模塊圖標(biāo)上繪制圖形,如使用plot繪制圖形、disp顯示文字、image顯示已有圖形例:使用如下命令可得到如圖所示結(jié)果disp(PID Controller)plot(sin(0:0.1:2*pi),cos(0:0.1:2*pi)/2)image(imread(library.bmp)封裝編輯框基本設(shè)置封裝編輯框基本設(shè)置(2)參數(shù)設(shè)置:?jiǎn)螕鬚arameters按鈕,建立封裝模塊內(nèi)部
26、變量與封裝對(duì)話框之間的聯(lián)系 。單擊按鈕或按鈕可以增加或刪除變量 “Type” 可選擇參數(shù)為:“Edit”表示用文本編輯框輸入?yún)?shù) “Popup”表示以下拉菜單形式輸入?yún)?shù) “checkbox”表示以復(fù)選框形式輸入?yún)?shù) 此處變量名稱要與子系統(tǒng)參數(shù)名稱相同(3)初始化設(shè)置:?jiǎn)螕簟癐nitialization” 按鈕,彈出封裝編輯器參數(shù)初始化設(shè)置對(duì)話框。(4)文檔編輯。單擊“Documentation”按鈕,彈出如圖所示的文檔編輯窗口。在這里可建立子系統(tǒng)的文檔說(shuō)明。 經(jīng)過(guò)上述操作,完成對(duì)PID子系統(tǒng)的封裝操作,雙擊子系統(tǒng)模塊,彈出參數(shù)設(shè)置對(duì)話框如圖所示。7.5 S-函數(shù)與Simulink仿真v7.5
27、.1 S-函數(shù)簡(jiǎn)介函數(shù)簡(jiǎn)介 S-函數(shù)是系統(tǒng)函數(shù)(System Function)的簡(jiǎn)稱,是指用指定語(yǔ)言描述的一個(gè)非圖形化功能模塊(以區(qū)別Simulink的系統(tǒng)模塊),是Matlab為用戶提供的一個(gè)擴(kuò)展功能接口。用戶可以采用MATLAB語(yǔ)言,C、C+,F(xiàn)ortran或者Ada等語(yǔ)言編寫(xiě)S函數(shù)。S-函數(shù)由一種特定的語(yǔ)法構(gòu)成,用來(lái)描述并實(shí)現(xiàn)連續(xù)系統(tǒng)、離散系統(tǒng)、混合系統(tǒng)等模型。S函數(shù)可接收來(lái)自Simulink求解器的相關(guān)信息,并對(duì)求解器發(fā)出的命令作出響應(yīng),這種交互作用類似Smulink系統(tǒng)模塊與求解器的交互作用。7.5.2.S-函數(shù)的用法v在動(dòng)態(tài)系統(tǒng)設(shè)計(jì)、仿真與分析中,用戶可以使用Simulink瀏覽
28、器里用戶自定義模塊庫(kù)中的S-Functiong模塊來(lái)調(diào)用已編寫(xiě)的S-函數(shù)。S-Function模塊默認(rèn)為一個(gè)單輸入單輸出的系統(tǒng)模塊,如果有多個(gè)輸入或者輸出信號(hào),可以采用Mux模塊和Demux模塊對(duì)信號(hào)進(jìn)行組合和分離操作。在Simulink空白模板里粘貼“S-Function”模塊,雙擊該模塊彈出參數(shù)設(shè)置對(duì)話框,如圖所示。創(chuàng)建S-函數(shù)源文件。在Simulink模型框圖中添加S-Function模塊,并進(jìn)行正確的參數(shù)設(shè)置。在Simulink模塊框圖中按照定義好的功能連接輸入輸出端口進(jìn)行基本仿真參數(shù)設(shè)置,單擊工具欄工具,運(yùn)行仿真。一般而言,使用S-函數(shù)的基本步驟如下: 創(chuàng)建S-函數(shù)源文件的方法有很多
29、,用戶可以按照S-函數(shù)語(yǔ)法格式自行編寫(xiě)每一行代碼,但是這樣做既費(fèi)時(shí)費(fèi)力,又容易出錯(cuò)。Simulink為用戶提供了很多S-函數(shù)的模板和例子,我們可以根據(jù)自己的需要修改相應(yīng)的模板或者例子即可。詳細(xì)的Simulink模板文件在后面介紹。7.5.3 S-函數(shù)模板v單擊Simulink Library的“User-Defined Function”前的擴(kuò)展按鈕,再雙擊“S-function Examples”模塊彈出如圖7-477所示的S-函數(shù)實(shí)例模塊庫(kù)。圖中包括用M文件、C語(yǔ)言、C+、Ada、和Fortran語(yǔ)言編寫(xiě)的S-函數(shù)實(shí)例?!纠}】以S-函數(shù)完成對(duì)輸入信號(hào)的運(yùn)算:y3*u+2。解:基本步驟如下
30、:(1)建立Simulink仿真模型,如圖所示 2)打開(kāi)S-函數(shù)模板源文件如下function sys,x0,str,ts = sfuntmpl(t,x,u,flag)switch flag, case 0, sys,x0,str,ts=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTermina
31、te(t,x,u); otherwise DAStudio.error(Simulink:blocks:unhandledFlag, num2str(flag); endfunction sys,x0,str,ts=mdlInitializeSizessizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 0;sizes.NumInputs = 0;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1; 定義采用周期的個(gè)數(shù)sys = si
32、msizes(sizes); x0 = ; str = ; ts = 0 0;function sys=mdlDerivatives(t,x,u) sys = ;function sys=mdlUpdate(t,x,u) sys = ;function sys=mdlOutputs(t,x,u)sys = ;function sys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime = 1; sys = t + sampleTime;function sys=mdlTerminate(t,x,u)sys = ;ts是一個(gè)12的向量,ts(1)定義采樣周期,ts(2
33、)是偏移量。當(dāng)ts(1)=0表示系統(tǒng)為連續(xù)系統(tǒng),當(dāng)ts(1)=-2表示系統(tǒng)采樣時(shí)間由flag4的mdlGetTimeOfNextVarHit函數(shù)決定。 輸入變量中,t是采樣時(shí)間,x是狀態(tài)變量,u是輸入變量(從Simulink輸入來(lái)的變量信息,當(dāng)有多個(gè)輸入時(shí),u為一個(gè)行向量,flag是仿真過(guò)程中的狀態(tài)標(biāo)志或稱之為控制變量,由它來(lái)判斷當(dāng)前將要調(diào)用的回調(diào)函數(shù);輸出變量sys根據(jù)flag的不同而返回不同的內(nèi)容。 ) 在本例題中,為了完成設(shè)定的函數(shù)功能y=3*u+2,可將上述S-函數(shù)的模板進(jìn)行如下修改(這里只列出需要修改的部分):首先將S函數(shù)文件首行修改為:function sys,x0,str,ts
34、=Mysfun(t,x,u,flag),并將文件另存為Mysfun。其次,找到function sys,x0,str,ts=mdlInitializeSizes,作如下修改: sizes.NumOutputs= 1; sizes.NumInputs= 1;然后,再找到function sys=mdlOutputs(t,x,u),作如下修改: sys =3*u+2;最后,將該文件保存到當(dāng)前目錄下的Mysfun.m文件中。(3)雙擊仿真模型中的S-function模塊打開(kāi)參數(shù)設(shè)置對(duì)話框,并修改S-function的名稱為“Mysfun”。(4)修改仿真參數(shù),完成仿真。這里仿真求解器參數(shù)取系統(tǒng)默認(rèn)值
35、,運(yùn)行仿真,可得如圖所示仿真結(jié)果。【例】已知某系統(tǒng)狀態(tài)方程為:uxx20223300020001xy111試用S-函數(shù)建立其仿真模型,并求其單位階躍響應(yīng)曲線。解:首先打開(kāi)S-函數(shù)模板文件。打開(kāi)S-函數(shù)模板文件除了按照上述介紹的方法,也可以在Command Windows中輸入命令: open sfuntmpl或者 edit sfuntmpl執(zhí)行命令后系統(tǒng)彈出M文件的S-函數(shù)編輯窗口。實(shí)現(xiàn)上述系統(tǒng)的S-函數(shù)程序代碼如下所示:function sys,x0,str,ts = Mysfun01(t,x,u,flag)switch flag,case 0, % 初始化% sys,x0,str,ts=m
36、dlInitializeSizes;case 1, %求導(dǎo)數(shù) sys=mdlDerivatives(t,x,u);case 2, % 狀態(tài)更新% sys=mdlUpdate(t,x,u);case 3, %計(jì)算輸出% sys=mdlOutputs(t,x,u);%計(jì)算下一個(gè)采樣時(shí)刻%case 4, sys=mdlGetTimeOfNextVarHit(t,x,u);case 9, % 結(jié)束處理 % sys=mdlTerminate(t,x,u);otherwise%錯(cuò)誤處理 % DAStudio.error(Simulink:blocks:unhandledFlag, num2str(flag
37、); endfunction sys,x0,str,ts=mdlInitializeSizessizes = simsizes; sizes.NumContStates = 3;% 系統(tǒng)有三個(gè)連續(xù)狀態(tài)變量sizes.NumDiscStates = 0;sizes.NumOutputs = 1;% 系統(tǒng)有一個(gè)輸出變量sizes.NumInputs = 1;% 系統(tǒng)有一個(gè)輸入變量sizes.DirFeedthrough = 0;%系統(tǒng)不存在直通環(huán)節(jié)sizes.NumSampleTimes = 1; % 只有一種采樣時(shí)間sys = simsizes(sizes);x0 = 0;0;0; %str =
38、 ;ts = 0 0;function sys=mdlDerivatives(t,x,u)x(1)=-1*x(1)+3*u;x(2)=-2*x(2)-22*u;x(3)=-3*x(3)+20*u;sys =x;function sys=mdlUpdate(t,x,u)sys = ;function sys=mdlOutputs(t,x,u)sys = -x(1)-x(2)-x(3);function sys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime = 1; % 設(shè)置采樣周期sys = t + sampleTime;function sys=mdlTerm
39、inate(t,x,u)sys = ;將上述S-函數(shù)在當(dāng)前目錄下保存為M文件Mysfun01,再建立Simulink仿真模型如圖所示,并設(shè)置S-function模塊的參數(shù)為S-function name,仿真參數(shù)取默認(rèn)值,運(yùn)行仿真可得仿真結(jié)果如圖所示。7.5.4 添加用戶參數(shù)的S-函數(shù)v 當(dāng)S-函數(shù)需要添加用戶參數(shù)時(shí),要注意兩點(diǎn)。第一,在S-函數(shù)源代碼中,用到該參數(shù)的各個(gè)子函數(shù),在函數(shù)聲明部分均應(yīng)添加該參數(shù),第二,在Simulink模型中設(shè)置“S-function”模塊參數(shù)時(shí),參數(shù)的名稱和順序必須與S-函數(shù)源代碼中的參數(shù)名稱和順序完全一致。下面以建立一個(gè)三角波函數(shù)發(fā)生器為例來(lái)說(shuō)明帶參數(shù)項(xiàng)的S-
40、函數(shù)的建立與使用?!纠吭嚱imulink下三角波函數(shù)發(fā)生器,且三角波頻率幅值可調(diào)。解:首先編寫(xiě)生成三角波S-函數(shù)的M文件,打開(kāi)M文件模板程序,做如下所改:function sys,x0,str,ts = sanjiaobo(t,x,u,flag,A,Freq)%輸入?yún)?shù)A為三角波幅值,F(xiàn)req為三角波頻率switch flag, case 0, sys,x0,str,ts=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t
41、,x,u,A,Freq);%注意在輸出函數(shù)部分用到附加參數(shù) case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(Unhandled flag = ,num2str(flag);endfunction sys,x0,str,ts=mdlInitializeSizessizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 1; sizes.NumInputs
42、 = 1;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1; %只有一種采樣時(shí)間sys = simsizes(sizes);x0 = ;str = ;% initialize the array of sample timests = 0 0;function sys=mdlDerivatives(t,x,u)sys = ;function sys=mdlUpdate(t,x,u)sys = ;function sys=mdlOutputs(t,x,u,A,Freq)T=1/Freq; %求三角波周期m=rem(u,T); %u為外部輸入時(shí)間信
43、息,rem為求余函數(shù)K=floor(u/T); %floor為向零取整r=4*A*Freq; c=T/2;if (m=0)&(m=c)&(m=T)sys=-r*(u-(K+0.75)*T);else sys=A;endfunction sys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime =1; sys = t + sampleTime;function sys=mdlTerminate(t,x,u)sys = ; % 仿真結(jié)束 將上述M文件的S函數(shù)在當(dāng)前目錄下保存為sanjiaobo.m文件,建立Simulink仿真模型如圖(a)所示。雙擊“
44、S-function”模塊,在彈出的參數(shù)設(shè)置對(duì)話框種,設(shè)置“S-functionname”為“saniaobo”,設(shè)置“S-function Parameter”為“1,1500”,如圖(b)所示。Simulink求解器參數(shù)“Max step size”設(shè)置為1e-5,“Stop time”設(shè)置為0.2s,其它取系統(tǒng)默認(rèn)值。單擊Simulink模型窗口工具,運(yùn)行仿真得如圖7-56所示結(jié)果(圖中顯示時(shí)間范圍為07e-3s)。7.5.5離散系統(tǒng)的S-函數(shù) 【例】已知離散PID表達(dá)式為:u(k)=Kp*e(k)+Ki*T*kmke0)(+Kd*e(k-1)-e(k-2)/T試使用S-函數(shù)實(shí)現(xiàn)離散PI
45、D控制器,并建立Simulink仿真模型。v解:首先打開(kāi)S-函數(shù)M-文件的模板程序,建立離散PID的 S-函數(shù)源文件。結(jié)果如下:function sys,x0,str,ts = sfuntmpl(t,x,u,flag,Kp,Ki,Kd)switch flag,case 0, sys,x0,str,ts=mdlInitializeSizes;case 1, sys=mdlDerivatives(t,x,u);case 2, sys=mdlUpdate(t,x,u,Kp,Ki,Kd);case 3, sys=mdlOutputs(t,x,u);case 4, sys=mdlGetTimeOfNex
46、tVarHit(t,x,u);case 9, sys=mdlTerminate(t,x,u);otherwise DAStudio.error(Simulink:blocks:unhandledFlag, num2str(flag); end % end sfuntmplfunction sys,x0,str,ts=mdlInitializeSizessizes = simsizes; sizes.NumContStates = 0;sizes.NumDiscStates = 4;sizes.NumOutputs = 1;sizes.NumInputs = 1;sizes.DirFeedthrough = 0;sizes.NumSampleTimes = 1; % 只有一種采樣時(shí)間 sys = simsizes(sizes);x0 = 0;0;0;0; %在此定義系統(tǒng)狀態(tài)變量的初始值str = ;ts = -2 0
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024印刷品印刷合同范本:圖書(shū)印刷合作協(xié)議5篇
- 2024年度物流運(yùn)輸?shù)谌截?zé)任擔(dān)保服務(wù)協(xié)議2篇
- 2024年度醫(yī)療設(shè)備維修保養(yǎng)及備用件供應(yīng)合同范本3篇
- 2024年智能化住宅購(gòu)買合同范本(含智能家居設(shè)備安裝及維護(hù))3篇
- 2024年攤鋪機(jī)設(shè)備租賃及現(xiàn)場(chǎng)施工協(xié)調(diào)管理合同3篇
- 2024年地調(diào)院食堂餐飲經(jīng)營(yíng)授權(quán)承包合同3篇
- 2024信托資金房地產(chǎn)信托貸款服務(wù)合同模板3篇
- 2024年度農(nóng)民工勞務(wù)權(quán)益保障與培訓(xùn)合同范本3篇
- 2024外貿(mào)實(shí)習(xí)實(shí)訓(xùn)基地實(shí)習(xí)項(xiàng)目推廣與合作合同3篇
- 2024年大學(xué)生期末個(gè)人工作總結(jié)(32篇)
- 二年級(jí)上冊(cè)《語(yǔ)文園地八》日積月累
- 《英語(yǔ)演講》課件-Task 2 Case Studies-1of English Speech and Debate
- 2024年度石料供應(yīng)框架協(xié)議
- 2024年中國(guó)PVC鞋底料市場(chǎng)調(diào)查研究報(bào)告
- 臥式橢圓封頭儲(chǔ)罐液位體積對(duì)照表
- Unit 3 The Internet Reading for writing 課件高中英語(yǔ)人教版(2019)必修第二冊(cè) -
- 商業(yè)街價(jià)格策略與收益預(yù)測(cè)
- 2024-2025學(xué)年湖北省武漢市九年級(jí)上學(xué)期元月調(diào)研模擬物理試題(含答案)
- 2024年度醫(yī)療器械臨床試驗(yàn)合同
- 全國(guó)自考社會(huì)經(jīng)濟(jì)調(diào)查方法與應(yīng)用真題
- 中醫(yī)婦科疾病的治療(完美版)課件
評(píng)論
0/150
提交評(píng)論