版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
動(dòng)態(tài)系統(tǒng)建模與仿真第一頁(yè),共六十五頁(yè),編輯于2023年,星期五7.1Simulink工具箱簡(jiǎn)介
7.1.1Simulink工具箱簡(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)和流程清晰,效率高等。
第二頁(yè),共六十五頁(yè),編輯于2023年,星期五1Simulink啟動(dòng)(1)在MATLAB命令窗口輸入“simulink”命令。(2)單擊MATLAB主窗口左下角的“Start”按鈕,在彈出的快捷菜單中單擊【Simulink】→【LibraryBrowser】命令。(3)單擊MATLAB主窗口工具欄里的工具。7.1.2Simulink組成圖7-1Simulink窗口界面第三頁(yè),共六十五頁(yè),編輯于2023年,星期五CommonlyUsedBlocks(常用模塊庫(kù))Continuous(連續(xù)系統(tǒng)模塊庫(kù))Discontinuous(非連續(xù)系統(tǒng)模塊庫(kù))Discrete(離散系統(tǒng)模塊庫(kù))LogicandBitOperations(邏輯與位操作模塊庫(kù))LookupTables(查詢(xún)表模塊庫(kù))MathOperations(數(shù)學(xué)操作模塊庫(kù))ModelVerification(模型驗(yàn)證模塊庫(kù))2Simulink模塊庫(kù)組件
Simulink7.1模塊庫(kù)共包含16個(gè)子模塊庫(kù),它們是:第四頁(yè),共六十五頁(yè),編輯于2023年,星期五Model-WideUtility,Ports&Subsystems(接口與子系統(tǒng)模塊庫(kù)),SignalAttributes(信號(hào)屬性模塊庫(kù))SignalRouting(信號(hào)路由模塊庫(kù))Sinks(輸出模塊庫(kù))Sources(信號(hào)源模塊庫(kù))User-DefinedFunctions(用戶(hù)自定義模塊庫(kù))AdditionalMath&Discrete(附加數(shù)學(xué)和離散系統(tǒng)模塊庫(kù))第五頁(yè),共六十五頁(yè),編輯于2023年,星期五
是為了加快建模速度,節(jié)省建模過(guò)程中尋找模塊的時(shí)間而將最常用的基本模塊集中放在一起形成的,在初學(xué)Simulink建模與仿真時(shí),是使用最為頻繁的模塊庫(kù)。(1)CommonlyUsedBlocks(常用模塊庫(kù))圖7-2第六頁(yè),共六十五頁(yè),編輯于2023年,星期五常用模塊庫(kù)包括總線信號(hào)生成器(BusCreator)模塊、總線信號(hào)選擇器(BusSelector)模塊、常數(shù)模塊(Constant)、數(shù)據(jù)類(lèi)型轉(zhuǎn)換(DataTypeConversion)模塊,信號(hào)分離器(Demux)模塊,離散時(shí)間積分(Discrete-TimeIntegrator)模塊,增益(Gain)模塊,信號(hào)地(Ground)模塊,輸入接口(In1)模塊,積分(Integrator)模塊,第七頁(yè),共六十五頁(yè),編輯于2023年,星期五邏輯操作(LogicOperator)模塊,信號(hào)合成器(Mux)模塊,輸出接口(Out1)模塊,乘法(Product)模塊,關(guān)系操作(RelationalOperator)模塊,飽和(Saturation)模塊,示波器(Scope)模塊,子系統(tǒng)(Subsystem)模塊,求和模塊(Sum),開(kāi)關(guān)轉(zhuǎn)換模塊(Switch),信號(hào)終端(Terminator)模塊,單位延遲(UnitDelay)模塊。第八頁(yè),共六十五頁(yè),編輯于2023年,星期五
連續(xù)系統(tǒng)(Continuous)模塊庫(kù)提供了連續(xù)系統(tǒng)Simulink建模與仿真的基本模塊,有:微分環(huán)節(jié)模塊(Derivative),積分環(huán)節(jié)模塊(Integrator),狀態(tài)空間模型(State-space),傳遞函數(shù)功能模塊(TransferFun),傳輸延遲模塊(TransportDelay),可變時(shí)間延遲模塊(VeriableTransportDelay),可變傳輸延遲模塊(VeriableTransportDelay)零極點(diǎn)增益模塊(Zero-Pole)(2)連續(xù)系統(tǒng)模塊庫(kù)
圖7-3第九頁(yè),共六十五頁(yè),編輯于2023年,星期五非連續(xù)系統(tǒng)模塊庫(kù)(DisContinity)在以前版本中也稱(chēng)為非線性模塊庫(kù),包含一些常用的非線性運(yùn)算模塊,主要包括:
(3)非連續(xù)系統(tǒng)模塊庫(kù)
飽和非線性模塊(Saturation)死區(qū)非線性模塊(DeadZone)變化率限幅模塊(RateLimiter)變化率動(dòng)態(tài)限幅模塊(RateLimiterDynamic)用于設(shè)置飽和輸出上下限。動(dòng)態(tài)飽和非線性模塊(SaturationDanymic)可以根據(jù)輸入端口Up和Lo的設(shè)定值動(dòng)態(tài)設(shè)置輸出的上限和下限。用于設(shè)定死區(qū)區(qū)間。動(dòng)態(tài)死區(qū)非線性模塊(DeadZoneDanymic)可以根據(jù)輸入端口Up和Lo的設(shè)定值動(dòng)態(tài)設(shè)置死區(qū)區(qū)間。用于設(shè)置信號(hào)輸出變化率限幅,即:上升變化率限幅(Risingslewrate)和下降變化率限幅(Fallingslewrate)??梢愿鶕?jù)輸入端口Up和Lo的設(shè)定值動(dòng)態(tài)設(shè)置信號(hào)上升變化率限幅參數(shù)R和下降變化率限幅參數(shù)L。第十頁(yè),共六十五頁(yè),編輯于2023年,星期五磁滯回環(huán)模塊(Backlash):建立間隙模型。繼電模塊(Relay)量化模塊(Quantizer):用于輸入信號(hào)的量化處理。穿越值檢測(cè)模塊(HitCrossing):庫(kù)侖與黏性摩擦(Coulomb&ViscousFriction):返回零模塊(WraptoZero)繼電模塊輸出值可以在兩個(gè)設(shè)定值之間切換。當(dāng)繼電器吸合時(shí),它保持吸合狀態(tài)輸出直到輸入信號(hào)值小于繼電斷開(kāi)值(Switchoffpoint)。當(dāng)繼電器分離時(shí),它保持分離狀態(tài)輸出直到輸入信號(hào)值大于繼電吸合值(Switchonpoint)??砂丛O(shè)定的穿越檢測(cè)方向(Hitcrossingdirection)檢測(cè)信號(hào)達(dá)到設(shè)定值的時(shí)間。此時(shí)輸出一個(gè)正脈沖。在零值為不連續(xù)點(diǎn),在其它值為連續(xù)線性增益。當(dāng)輸入信號(hào)值超過(guò)設(shè)定的極限值(Threshold),輸出信號(hào)返回到零值。第十一頁(yè),共六十五頁(yè),編輯于2023年,星期五單位延遲模塊(UnitDelay):延遲一個(gè)采樣周期整數(shù)延遲模塊(IntegerDelay):延遲輸入N個(gè)采樣周期,N為自然數(shù)。觸發(fā)延遲模塊(TappedDelay):延遲N個(gè)采樣周期后并輸出全部的輸入信息。離散時(shí)間積分器(Discrete-TimeIntegrator):離散積分器模塊可以代替積分器用來(lái)建立純離散采樣系統(tǒng)。在離散積分器模塊參數(shù)對(duì)話框里,可以設(shè)定初始狀態(tài)值、增益值、輸出飽和值。離散傳遞函數(shù)功能模塊(DiscreteTransferFcn):可以建立離散傳遞函數(shù)模型。離散濾波器模塊(DiscreteFilter):用于建立離散系統(tǒng)濾波器仿真模型。離散零極點(diǎn)增益模型(DiscreteZero-Pole):使用零點(diǎn)、極點(diǎn)、增益值建立離散系統(tǒng)的零極點(diǎn)增益模型。離散微分模塊(Difference):輸出當(dāng)前輸入信號(hào)值與前一個(gè)采樣值之差。派生離散微分模塊(DiscreteDerivative):模塊的輸出值按下式計(jì)算:(3)離散系統(tǒng)模塊庫(kù)離散系統(tǒng)模塊庫(kù)主要包括用于建立離散采樣系統(tǒng)的模塊,包括:圖7-4第十二頁(yè),共六十五頁(yè),編輯于2023年,星期五離散狀態(tài)空間模型(DiscreteState-Space):離散狀態(tài)空間模型實(shí)現(xiàn)下面系統(tǒng)模型一階離散傳遞函數(shù)功能模塊(TransferFcnFirstOrder):用于建立一階的離散傳遞函數(shù)模型。傳遞函數(shù)引導(dǎo)或終止模塊(TransferFcnLeadorLag):用于實(shí)現(xiàn)輸入信號(hào)的離散時(shí)間引導(dǎo)或終止補(bǔ)償。實(shí)數(shù)零點(diǎn)傳遞函數(shù)功能模塊(TransferFcnRealZero):用于實(shí)現(xiàn)具有一個(gè)實(shí)數(shù)零點(diǎn)而無(wú)極點(diǎn)的傳遞函數(shù)模型。加權(quán)滑動(dòng)平均模塊(WeightedMovingAverage):模塊采樣并保持最近N個(gè)輸入信號(hào),并根據(jù)設(shè)定的權(quán)重參數(shù)值(weights)計(jì)算它們的平均值。該模塊適用于SISO系統(tǒng)或SIMO系統(tǒng)模型。記憶模塊(Memory):輸出前一時(shí)刻的輸入信號(hào)值。一階保持器(First-OrderHold):實(shí)現(xiàn)離散采樣系統(tǒng)的一階采樣保持功能。零階保持器(Zero-OrderHold):實(shí)現(xiàn)離散采樣系統(tǒng)的零階采樣保持功能。第十三頁(yè),共六十五頁(yè),編輯于2023年,星期五其它模塊請(qǐng)參考MATLAB軟件!第十四頁(yè),共六十五頁(yè),編輯于2023年,星期五7.2Simulink建模與仿真基本方法7.2.1簡(jiǎn)單系統(tǒng)仿真模型的建立
建立上圖所示系統(tǒng)框圖的Simulink仿真模型的基本方法如下;
1.啟動(dòng)MATLAB/Simulink工具箱
2.建立Simulink空白模型Simulink空白模型的建立可方法如下:在MATLAB主窗口中選擇菜單File/New/Model。選擇Simulink模塊庫(kù)瀏覽器窗口的菜單File/New/Model。單擊Simulink模塊庫(kù)瀏覽器工具欄的新建圖標(biāo)“”。第十五頁(yè),共六十五頁(yè),編輯于2023年,星期五3.根據(jù)系統(tǒng)框圖選擇模塊4.模塊的復(fù)制與刪除操作在模塊庫(kù)選中模塊后,按住鼠標(biāo)左鍵不放并拖動(dòng)到Simulink模型窗口指定位置,釋放鼠標(biāo)左鍵,完成模塊的復(fù)制操作。在模塊庫(kù)選中模塊后,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,單擊“AddtoExample_Model”命令將模塊添加到指定模型窗口,完成模塊的復(fù)制操作。在模塊庫(kù)選中模塊后,在庫(kù)瀏覽器窗口的Edit菜單中選擇Copy命令,用鼠標(biāo)單擊目標(biāo)模型窗口中指定位置,再?gòu)哪P痛翱诘腅dit菜單中選擇Paste,完成模塊的復(fù)制操作。當(dāng)模型窗口已有所需模塊時(shí),也可以直接從該處復(fù)制模塊,操作方是單擊鼠標(biāo)右鍵,在彈出的快捷菜單中單擊“Copy”命令,然后用鼠標(biāo)右鍵單擊模型窗口空白處,在彈出的快進(jìn)誒菜單中單擊“Paste”命令來(lái)完成粘貼任務(wù)。此外,也可以使用編輯菜單進(jìn)行復(fù)制、粘貼操作。當(dāng)然還可以用鼠標(biāo)右鍵按住所需復(fù)制的模塊不放,并拖動(dòng)到指定位置完成復(fù)制操作,這可大大加快建模速度。第十六頁(yè),共六十五頁(yè),編輯于2023年,星期五5.模塊的連接將鼠標(biāo)移動(dòng)到模塊的輸出端子上,當(dāng)鼠標(biāo)出現(xiàn)“十字”符號(hào)后,按下鼠標(biāo)左鍵并拖動(dòng)到下級(jí)模塊的輸入端子上,完成模塊信號(hào)的連接。如上圖所示。選中信號(hào)輸出模塊,按下鍵盤(pán)“Ctrl”鍵并單擊下級(jí)模塊完成模塊信號(hào)的連接。在已存在的信號(hào)線上引出新的信號(hào)線時(shí),可用鼠標(biāo)右鍵單擊源信號(hào)線,并按住不放拖動(dòng)到指定位置,完成信號(hào)線的分支連接。如圖所示,在模塊沒(méi)有完成連接時(shí),以紅色虛線顯示,當(dāng)連接完成后以黑色實(shí)線顯示。第十七頁(yè),共六十五頁(yè),編輯于2023年,星期五將各子模塊連接起來(lái)后,構(gòu)成如圖所示的系統(tǒng)模型第十八頁(yè),共六十五頁(yè),編輯于2023年,星期五7.2.2Simulink仿真模型參數(shù)設(shè)置1.基本模塊參數(shù)設(shè)置在完成模塊的信號(hào)線連接并建立起系統(tǒng)的Simulink仿真模型后,需要設(shè)置模塊的參數(shù)。在Simulink模型里,雙擊需要修改參數(shù)的模塊,彈出參數(shù)設(shè)置對(duì)話框。2.仿真參數(shù)設(shè)置
單擊模型窗口的“Simulation”菜單,在彈出的下拉菜單中單擊“ConfigurationParameters”命令,打開(kāi)“ConfigurationParameters”對(duì)話框如圖所示。
第十九頁(yè),共六十五頁(yè),編輯于2023年,星期五3.運(yùn)行仿真與仿真輸出
雙擊“Scope”模塊,彈出如圖所示仿真輸出結(jié)果仿真參數(shù)配置完畢后,可運(yùn)行仿真,方法有三種:①單擊模型窗口工具欄工具②單擊“Simulation”菜單,在彈出的下拉菜單中單擊“Start”命令③同時(shí)按下快捷鍵“Ctrl+T”。第二十頁(yè),共六十五頁(yè),編輯于2023年,星期五7.3動(dòng)態(tài)系統(tǒng)Simulink仿真模型的建立由系統(tǒng)框圖建立Simulink仿真模型由傳遞函數(shù)建立Simulink仿真模型由狀態(tài)方程建立Simulink仿真模型由微分方程建立Simulink仿真模型第二十一頁(yè),共六十五頁(yè),編輯于2023年,星期五7.1.1由系統(tǒng)框圖建立Simulink仿真模型在控制領(lǐng)域,控制系統(tǒng)通常以功能框圖的形式進(jìn)行描述,與Simulink仿真模型在結(jié)構(gòu)上十分相似,因此通過(guò)被控系統(tǒng)的框圖,很容易建立其Simulink仿真模型。下面以直流電機(jī)雙閉環(huán)調(diào)速系統(tǒng)為例來(lái)說(shuō)明通過(guò)系統(tǒng)框圖建立Simulink仿真模型的基本方法。第二十二頁(yè),共六十五頁(yè),編輯于2023年,星期五r(t)為給定輸入,采用階躍信號(hào)。y(t)為系統(tǒng)輸出,表示直流電機(jī)的轉(zhuǎn)速。ASR和ACR分別為轉(zhuǎn)速調(diào)節(jié)器、電流調(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模型第二十三頁(yè),共六十五頁(yè),編輯于2023年,星期五7.1.2由傳遞函數(shù)建立Simulink仿真模型由系統(tǒng)傳遞函數(shù)建立Simulink仿真模型可直接使用Continue模塊庫(kù)的TransferFun模塊,下面以實(shí)例說(shuō)明?!纠}】已知某單位負(fù)反饋系統(tǒng)開(kāi)環(huán)傳遞函數(shù)為試建立其Simulink仿真模型并進(jìn)行仿真。第二十四頁(yè),共六十五頁(yè),編輯于2023年,星期五建立模型過(guò)程如下:(1)建立一個(gè)空白的Simulink仿真模型窗口,如圖(a)所示。(3)建立傳遞函數(shù)的模型。(2)選擇系統(tǒng)所需的Simulink模塊(4)連接模塊并設(shè)置仿真參數(shù)(5)運(yùn)行仿真第二十五頁(yè),共六十五頁(yè),編輯于2023年,星期五7.1.3由狀態(tài)方程建立Simulink仿真模型由系統(tǒng)狀態(tài)方程建立Simulink仿真模型可直接使用Continue模塊庫(kù)的State-space模塊,下面以實(shí)例說(shuō)明?!纠恳阎诚到y(tǒng)狀態(tài)空間模型為:試建立其simulink仿真模型,并求其單位階躍響應(yīng)。第二十六頁(yè),共六十五頁(yè),編輯于2023年,星期五求解過(guò)程如下:(2)選擇系統(tǒng)所需的Simulink模塊(1)建立一個(gè)Simulink空白仿真模型窗口(3)連接模塊并設(shè)置參數(shù)(4)設(shè)置仿真參數(shù)并運(yùn)行仿真第二十七頁(yè),共六十五頁(yè),編輯于2023年,星期五7.1.4由微分方程建立Simulink仿真模型第一是將系統(tǒng)微分方程轉(zhuǎn)換為傳遞函數(shù)模型,第二是將微分方程轉(zhuǎn)換為狀態(tài)空間模型,第三是由微分方程直接建立Simulink仿真模型。
由微分仿真建立Simulink仿真模型有三種方法,【例】已知某系統(tǒng)數(shù)學(xué)模型是一個(gè)高階微分方程:且輸出量y的各階導(dǎo)數(shù)初始值均為零,試建立其Simuink仿真模型。第二十八頁(yè),共六十五頁(yè),編輯于2023年,星期五求解過(guò)程如下:
(1)將高階微分方程轉(zhuǎn)換為一組一階微分方程:設(shè)輸出方程。則得:第二十九頁(yè),共六十五頁(yè),編輯于2023年,星期五(2)建立每個(gè)一階微分方程的Simulink仿真模型這里首先需要知道微分環(huán)節(jié)的Simulink模型如圖(a)所示因此可以建立Simulink仿真模型如圖(b、c、d)所示第三十頁(yè),共六十五頁(yè),編輯于2023年,星期五(3)建立微分方程組的simulink仿真模型。
將各個(gè)微分單元連接起來(lái)就構(gòu)成了整個(gè)系統(tǒng)的Simulink仿真模型,結(jié)果如下圖所示。第三十一頁(yè),共六十五頁(yè),編輯于2023年,星期五(4)設(shè)置Simulink仿真參數(shù)。上圖中u取單位階躍響應(yīng)信號(hào),Simulink求解器取默認(rèn)參數(shù)配置。運(yùn)行仿真得輸出響應(yīng)曲線如圖下圖所示。第三十二頁(yè),共六十五頁(yè),編輯于2023年,星期五7.4Simulink子系統(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)模型的建立,都要用到子系統(tǒng)技術(shù)。本節(jié)主要介紹子系統(tǒng)及其封裝技術(shù)。第三十三頁(yè),共六十五頁(yè),編輯于2023年,星期五7.4.1子系統(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)的建立方法。如圖所示第三十四頁(yè),共六十五頁(yè),編輯于2023年,星期五在已經(jīng)建立好的復(fù)雜系統(tǒng)模型之中建立子系統(tǒng)。其基本方法是:首先選擇將要生成子系統(tǒng)的一組模塊,然后選擇Simulink模型編輯器的菜單【Edit:CreateSubsystem】或者單擊鼠標(biāo)右鍵選擇CreateSubsystem選項(xiàng),都將生成子系統(tǒng)模塊。如圖所示。2.直接建立子系統(tǒng)第三十五頁(yè),共六十五頁(yè),編輯于2023年,星期五7.4.2子系統(tǒng)的封裝方法在上述PID控制的子系統(tǒng)模型中,如果需要修改PID的參數(shù),則需要打開(kāi)其子系統(tǒng)模型窗口。為了能不打開(kāi)該子系統(tǒng)模塊窗口而修改其內(nèi)部參數(shù),Simulink提供了子系統(tǒng)封裝技術(shù)。以上述建立的PID控制器子系統(tǒng)為例來(lái)說(shuō)明子系統(tǒng)封裝的基本步驟。
(1)選中子系統(tǒng),單擊鼠標(biāo)右鍵,在彈出的對(duì)話框中單擊“MaskSubsystem”命令或者單擊菜單【Edit】→【MaskSubsystem】,彈出子系統(tǒng)封裝編輯窗口,如圖所示。在“Drawingcommands”編輯窗口,可以給模塊圖標(biāo)上繪制圖形,如使用plot繪制圖形、disp顯示文字、image顯示已有圖形第三十六頁(yè),共六十五頁(yè),編輯于2023年,星期五
(1)子系統(tǒng)圖標(biāo)設(shè)置,單擊Icon按鈕,設(shè)置子系統(tǒng)圖標(biāo)。在“Drawingcommands”編輯窗口,可以給模塊圖標(biāo)上繪制圖形,如使用plot繪制圖形、disp顯示文字、image顯示已有圖形例:使用如下命令可得到如圖所示結(jié)果disp(‘PIDController‘)plot(sin(0:0.1:2*pi),cos(0:0.1:2*pi)/2)image(imread('library.bmp'))封裝編輯框基本設(shè)置第三十七頁(yè),共六十五頁(yè),編輯于2023年,星期五(2)參數(shù)設(shè)置:?jiǎn)螕鬚arameters按鈕,建立封裝模塊內(nèi)部變量與封裝對(duì)話框之間的聯(lián)系。單擊按鈕或按鈕可以增加或刪除變量“Type”可選擇參數(shù)為:“Edit”表示用文本編輯框輸入?yún)?shù)“Popup”表示以下拉菜單形式輸入?yún)?shù)“checkbox”表示以復(fù)選框形式輸入?yún)?shù)
此處變量名稱(chēng)要與子系統(tǒng)參數(shù)名稱(chēng)相同第三十八頁(yè),共六十五頁(yè),編輯于2023年,星期五(3)初始化設(shè)置:?jiǎn)螕簟癐nitialization”按鈕,彈出封裝編輯器參數(shù)初始化設(shè)置對(duì)話框。第三十九頁(yè),共六十五頁(yè),編輯于2023年,星期五(4)文檔編輯。單擊“Documentation”按鈕,彈出如圖所示的文檔編輯窗口。在這里可建立子系統(tǒng)的文檔說(shuō)明。第四十頁(yè),共六十五頁(yè),編輯于2023年,星期五
經(jīng)過(guò)上述操作,完成對(duì)PID子系統(tǒng)的封裝操作,雙擊子系統(tǒng)模塊,彈出參數(shù)設(shè)置對(duì)話框如圖所示。第四十一頁(yè),共六十五頁(yè),編輯于2023年,星期五7.5S-函數(shù)與Simulink仿真7.5.1S-函數(shù)簡(jiǎn)介
S-函數(shù)是系統(tǒng)函數(shù)(SystemFunction)的簡(jiǎn)稱(chēng),是指用指定語(yǔ)言描述的一個(gè)非圖形化功能模塊(以區(qū)別Simulink的系統(tǒng)模塊),是Matlab為用戶(hù)提供的一個(gè)擴(kuò)展功能接口。用戶(hù)可以采用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),這種交互作用類(lèi)似Smulink系統(tǒng)模塊與求解器的交互作用。第四十二頁(yè),共六十五頁(yè),編輯于2023年,星期五7.5.2.S-函數(shù)的用法在動(dòng)態(tài)系統(tǒng)設(shè)計(jì)、仿真與分析中,用戶(hù)可以使用Simulink瀏覽器里用戶(hù)自定義模塊庫(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ì)話框,如圖所示。第四十三頁(yè),共六十五頁(yè),編輯于2023年,星期五創(chuàng)建S-函數(shù)源文件。在Simulink模型框圖中添加S-Function模塊,并進(jìn)行正確的參數(shù)設(shè)置。在Simulink模塊框圖中按照定義好的功能連接輸入輸出端口進(jìn)行基本仿真參數(shù)設(shè)置,單擊工具欄工具,運(yùn)行仿真。一般而言,使用S-函數(shù)的基本步驟如下:
創(chuàng)建S-函數(shù)源文件的方法有很多,用戶(hù)可以按照S-函數(shù)語(yǔ)法格式自行編寫(xiě)每一行代碼,但是這樣做既費(fèi)時(shí)費(fèi)力,又容易出錯(cuò)。Simulink為用戶(hù)提供了很多S-函數(shù)的模板和例子,我們可以根據(jù)自己的需要修改相應(yīng)的模板或者例子即可。詳細(xì)的Simulink模板文件在后面介紹。第四十四頁(yè),共六十五頁(yè),編輯于2023年,星期五7.5.3S-函數(shù)模板單擊SimulinkLibrary的“User-DefinedFunction”前的擴(kuò)展按鈕,再雙擊“S-functionExamples”模塊彈出如圖7-477所示的S-函數(shù)實(shí)例模塊庫(kù)。圖中包括用M文件、C語(yǔ)言、C++、Ada、和Fortran語(yǔ)言編寫(xiě)的S-函數(shù)實(shí)例。第四十五頁(yè),共六十五頁(yè),編輯于2023年,星期五【例題】以S-函數(shù)完成對(duì)輸入信號(hào)的運(yùn)算:y=3*u+2。解:基本步驟如下:(1)建立Simulink仿真模型,如圖所示
第四十六頁(yè),共六十五頁(yè),編輯于2023年,星期五2)打開(kāi)S-函數(shù)模板源文件如下function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u);case3,sys=mdlOutputs(t,x,u);case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(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=simsizes(sizes);x0=[];str=[];ts=[00];functionsys=mdlDerivatives(t,x,u)sys=[];functionsys=mdlUpdate(t,x,u)
sys=[];functionsys=mdlOutputs(t,x,u)sys=[];functionsys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime=1;sys=t+sampleTime;functionsys=mdlTerminate(t,x,u)sys=[];ts是一個(gè)1×2的向量,ts(1)定義采樣周期,ts(2)是偏移量。當(dāng)ts(1)=0表示系統(tǒng)為連續(xù)系統(tǒng),當(dāng)ts(1)=-2表示系統(tǒng)采樣時(shí)間由flag=4的mdlGetTimeOfNextVarHit函數(shù)決定。輸入變量中,t是采樣時(shí)間,x是狀態(tài)變量,u是輸入變量(從Simulink輸入來(lái)的變量信息,當(dāng)有多個(gè)輸入時(shí),u為一個(gè)行向量,flag是仿真過(guò)程中的狀態(tài)標(biāo)志或稱(chēng)之為控制變量,由它來(lái)判斷當(dāng)前將要調(diào)用的回調(diào)函數(shù);輸出變量sys根據(jù)flag的不同而返回不同的內(nèi)容。)第四十七頁(yè),共六十五頁(yè),編輯于2023年,星期五在本例題中,為了完成設(shè)定的函數(shù)功能y=3*u+2,可將上述S-函數(shù)的模板進(jìn)行如下修改(這里只列出需要修改的部分):首先將S函數(shù)文件首行修改為:function[sys,x0,str,ts]=Mysfun(t,x,u,flag),并將文件另存為Mysfun。其次,找到function[sys,x0,str,ts]=mdlInitializeSizes,作如下修改:
sizes.NumOutputs=1;
sizes.NumInputs=1;然后,再找到functionsys=mdlOutputs(t,x,u),作如下修改:
sys=3*u+2;最后,將該文件保存到當(dāng)前目錄下的Mysfun.m文件中。第四十八頁(yè),共六十五頁(yè),編輯于2023年,星期五(3)雙擊仿真模型中的S-function模塊打開(kāi)參數(shù)設(shè)置對(duì)話框,并修改S-function的名稱(chēng)為“Mysfun”。(4)修改仿真參數(shù),完成仿真。這里仿真求解器參數(shù)取系統(tǒng)默認(rèn)值,運(yùn)行仿真,可得如圖所示仿真結(jié)果。第四十九頁(yè),共六十五頁(yè),編輯于2023年,星期五【例】已知某系統(tǒng)狀態(tài)方程為:試用S-函數(shù)建立其仿真模型,并求其單位階躍響應(yīng)曲線。解:首先打開(kāi)S-函數(shù)模板文件。打開(kāi)S-函數(shù)模板文件除了按照上述介紹的方法,也可以在CommandWindows中輸入命令:>>opensfuntmpl或者
>>editsfuntmpl執(zhí)行命令后系統(tǒng)彈出M文件的S-函數(shù)編輯窗口。實(shí)現(xiàn)上述系統(tǒng)的S-函數(shù)程序代碼如下所示:第五十頁(yè),共六十五頁(yè),編輯于2023年,星期五function[sys,x0,str,ts]=Mysfun01(t,x,u,flag)switchflag,case0,
%初始化%[sys,x0,str,ts]=mdlInitializeSizes;case1,%求導(dǎo)數(shù)sys=mdlDerivatives(t,x,u);case2,%狀態(tài)更新%sys=mdlUpdate(t,x,u);case3,%計(jì)算輸出%sys=mdlOutputs(t,x,u);%計(jì)算下一個(gè)采樣時(shí)刻%case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,%結(jié)束處理%sys=mdlTerminate(t,x,u);otherwise%錯(cuò)誤處理%DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));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=[];ts=[00];functionsys=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;第五十一頁(yè),共六十五頁(yè),編輯于2023年,星期五functionsys=mdlUpdate(t,x,u)sys=[];functionsys=mdlOutputs(t,x,u)sys=-x(1)-x(2)-x(3);functionsys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime=1;%設(shè)置采樣周期sys=t+sampleTime;functionsys=mdlTerminate(t,x,u)sys=[];將上述S-函數(shù)在當(dāng)前目錄下保存為M文件Mysfun01,再建立Simulink仿真模型如圖所示,并設(shè)置S-function模塊的參數(shù)為S-functionname,仿真參數(shù)取默認(rèn)值,運(yùn)行仿真可得仿真結(jié)果如圖所示。第五十二頁(yè),共六十五頁(yè),編輯于2023年,星期五7.5.4添加用戶(hù)參數(shù)的S-函數(shù)
當(dāng)S-函數(shù)需要添加用戶(hù)參數(shù)時(shí),要注意兩點(diǎn)。第一,在S-函數(shù)源代碼中,用到該參數(shù)的各個(gè)子函數(shù),在函數(shù)聲明部分均應(yīng)添加該參數(shù),第二,在Simulink模型中設(shè)置“S-function”模塊參數(shù)時(shí),參數(shù)的名稱(chēng)和順序必須與S-函數(shù)源代碼中的參數(shù)名稱(chēng)和順序完全一致。下面以建立一個(gè)三角波函數(shù)發(fā)生器為例來(lái)說(shuō)明帶參數(shù)項(xiàng)的S-函數(shù)的建立與使用?!纠吭嚱imulink下三角波函數(shù)發(fā)生器,且三角波頻率幅值可調(diào)。解:首先編寫(xiě)生成三角波S-函數(shù)的M文件,打開(kāi)M文件模板程序,做如下所改:第五十三頁(yè),共六十五頁(yè),編輯于2023年,星期五function[sys,x0,str,ts]=sanjiaobo(t,x,u,flag,A,Freq)%輸入?yún)?shù)A為三角波幅值,F(xiàn)req為三角波頻率switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u);case3,sys=mdlOutputs(t,x,u,A,Freq);%注意在輸出函數(shù)部分用到附加參數(shù)
case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);otherwiseerror(['Unhandledflag=',num2str(flag)]);end第五十四頁(yè),共六十五頁(yè),編輯于2023年,星期五function[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;%只有一種采樣時(shí)間sys=simsizes(sizes);x0=[];str=[];%initializethearrayofsampletimests=[00];functionsys=mdlDerivatives(t,x,u)sys=[];functionsys=mdlUpdate(t,x,u)sys=[];functionsys=mdlOutputs(t,x,u,A,Freq)T=1/Freq;%求三角波周期m=rem(u,T);%u為外部輸入時(shí)間信息,rem為求余函數(shù)K=floor(u/T);%floor為向零取整r=4*A*Freq;c=T/2;if((m>=0)&(m<c))sys=r*(u-(K+0.25)*T);elseif((m>=c)&(m<=T))sys=-[r*(u-(K+0.75)*T)];elsesys=A;endfunctionsys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime=1;sys=t+sampleTime;functionsys=mdlTerminate(t,x,u)sys=[];
%仿真結(jié)束第五十五頁(yè),共六十五頁(yè),編輯于2023年,星期五
將上述M文件的S函數(shù)在當(dāng)前目錄下保存為sanjiaobo.m文件,建立Simulink仿真模型如圖(a)所示。雙擊“S-function”模塊,在彈出的參數(shù)設(shè)置對(duì)話框種,設(shè)置“S-functionname”為“saniaobo”,設(shè)置“S-functionParameter”為“1,1500”,如圖(b)所示。Simulink求解器參數(shù)“Maxstepsize”設(shè)置為1e-5,“Stoptime”設(shè)置為0.2s,其它取系統(tǒng)默認(rèn)值。第五十六頁(yè),共六十五頁(yè),編輯于2023年,星期五單擊Simulink模型窗口工具,運(yùn)行仿真得如圖7-56所示結(jié)果(圖中顯示時(shí)間范圍為0~7e-3s)。第五十七頁(yè),共六十五頁(yè),編輯于2023年,星期五7.5.5離散系統(tǒng)的S-函數(shù)
【例】已知離散PID表達(dá)式為:u(k)=Kp*e(k)+Ki*T*+Kd*[e(k-1)-e(k-2)]/T試使用S-函數(shù)實(shí)現(xiàn)離散PID控制器,并建立Simulink仿真模型。解:首先打開(kāi)S-函數(shù)M-文件的模板程序,建立離散PID的
S-函數(shù)源文件。結(jié)果如下:第五十八頁(yè),共六十五頁(yè),編輯于2023年,星期五function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag,Kp,Ki,Kd)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u,Kp,Ki,Kd);case3,sys=mdlOutputs(t,x,u);case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);otherwiseDAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));end%endsfuntmpl第五十九頁(yè),共六十五頁(yè),編輯于2023年,星期五function[sys,x0,str,ts]=mdlInitiali
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)氣體管道電磁切斷閥市場(chǎng)調(diào)查研究報(bào)告
- 二零二五年度企業(yè)勞動(dòng)合同員工離職交接及保密協(xié)議
- 二零二五年度高端冷庫(kù)設(shè)施購(gòu)置及安裝維護(hù)服務(wù)協(xié)議3篇
- 二零二五年高校外籍教師薪資福利協(xié)議4篇
- 2025年度戶(hù)外露營(yíng)用品租賃服務(wù)協(xié)議4篇
- 二零二五年度車(chē)輛借人使用期間車(chē)輛使用責(zé)任保險(xiǎn)協(xié)議
- 二零二五年度輕傷害賠償和解協(xié)議及社會(huì)公益項(xiàng)目合作合同
- 二零二五年度退休解除勞動(dòng)關(guān)系的勞動(dòng)合同終止協(xié)議
- 2025年度個(gè)人獨(dú)院買(mǎi)賣(mài)合同(含抵押權(quán))協(xié)議書(shū)2篇
- 二零二五年度酒店入住服務(wù)協(xié)議書(shū)(含VIP貴賓專(zhuān)享服務(wù))
- DB43-T 3022-2024黃柏栽培技術(shù)規(guī)程
- 成人失禁相關(guān)性皮炎的預(yù)防與護(hù)理
- 九宮數(shù)獨(dú)200題(附答案全)
- 人員密集場(chǎng)所消防安全管理培訓(xùn)
- 《聚焦客戶(hù)創(chuàng)造價(jià)值》課件
- PTW-UNIDOS-E-放射劑量?jī)x中文說(shuō)明書(shū)
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹(shù)脂耐腐蝕立式貯罐
- 保險(xiǎn)學(xué)(第五版)課件全套 魏華林 第0-18章 緒論、風(fēng)險(xiǎn)與保險(xiǎn)- 保險(xiǎn)市場(chǎng)監(jiān)管、附章:社會(huì)保險(xiǎn)
- 典范英語(yǔ)2b課文電子書(shū)
- 員工信息登記表(標(biāo)準(zhǔn)版)
- 春節(jié)工地停工復(fù)工計(jì)劃安排( 共10篇)
評(píng)論
0/150
提交評(píng)論