




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、S函數(shù)用于自定義實(shí)現(xiàn)特定的算法,然后嵌入到simulink模塊“S-Function”中用于仿真。一、主函數(shù)1、函數(shù)頭:function sys,x0,str,ts=functionname(t,x,u,flag,p1,p2,p3.)1 sys,x0,str,ts為系統(tǒng)默認(rèn)輸出變量;2 t,x,u,flag為系統(tǒng)默認(rèn)輸入?yún)?shù);3 p1,p2,p3.為用戶可選輸入變量;(如果定義函數(shù)時(shí)列表中有可選輸入?yún)?shù),在S-Function模塊中要設(shè)置參數(shù)的值)4 s函數(shù)文件名要與函數(shù)名一致。2、 函數(shù)體switch flagcase 0sys,x0,str,ts=mdlInitializeSizes;ca
2、se 1sys = mdlDerivatives(t,x,u);case 2sys = mdlUpdates(t,x,u);case 3sys = mdlOutputs(t,x,u);case 4sys = mdlGetTimeOfNextVarHit(t,x,u);case 9sys=mdlGetTimeOfNextVarHit(t,x,u);3、 說(shuō)明對(duì)于特定的算法可能只用到某些flag狀態(tài)的操作,對(duì)于不需要操作的flag狀態(tài),有兩種處理方式,一種是在主函數(shù)中處理,另一種是在定義子函數(shù)時(shí)處理。以不需要進(jìn)行flag為1、4和9狀態(tài)時(shí)的操作為例分別進(jìn)行說(shuō)明。1 在主函數(shù)中處理在主函數(shù)中編寫(xiě)為:
3、case 1,2,9 sys = ; 這樣處理就不需要再編寫(xiě)對(duì)應(yīng)狀態(tài)的子函數(shù)。2 在子函數(shù)中處理在主函數(shù)中編寫(xiě)為:case 1sys = mdlDerivatives(t,x,u);case 4sys = mdlGetTimeOfNextVarHit(t,x,u);case 9sys=mdlGetTimeOfNextVarHit(t,x,u);在子函數(shù)中編寫(xiě)為:function sys = mdlUpdates(t,x,u)sys = ;function sys = mdlGetTimeOfNextVarHit(t,x,u)sys = ;function sys=mdlTerminate(t,
4、x,u) sys = ;二、子函數(shù)算法的設(shè)計(jì)可能會(huì)用到狀態(tài)變量x,那么根據(jù)x的性質(zhì)可以將算法分為三大類(lèi):基于連續(xù)狀態(tài)變量的算法、基于離散狀態(tài)變量的算法和不基于狀態(tài)變量的算法。接下來(lái)分別介紹這三種類(lèi)型的算法設(shè)計(jì)。1、 基于連續(xù)狀態(tài)變量的算法算法的整體設(shè)計(jì)思想是:=f1(t,x,u) y=f2(t,x,u)1 初始化(flag=0)設(shè)置使用的連續(xù)狀態(tài)變量的個(gè)數(shù):size.NumContStates = 設(shè)置不使用離散狀態(tài)變量:size.NumDiscStates = 0設(shè)置輸出變量的個(gè)數(shù):size.NumOutputs = 設(shè)置輸入變量的個(gè)數(shù):size.NumInputs = 設(shè)置輸出變量與輸入變
5、量是否相關(guān):size.DirFeedthrough = 1或0設(shè)置采樣時(shí)間的個(gè)數(shù):size.NumSampleTimes = 用系統(tǒng)變量sys記錄并返回上述設(shè)置:sys=simsize(sizes)設(shè)置狀態(tài)變量的初始值:x0 = .設(shè)置保留變量str為空:str = 設(shè)置采樣時(shí)間類(lèi)型:ts = .示例:/*/function sys,x0,str,ts = mdlInitializeSizessizes = simsizes;sizes.NumContStates = 2;sizes.NumDiscStates = 0;sizes.NumOutputs = 2;sizes.NumInputs
6、= 2;sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = zeros(2,1);str = ;ts = 0 0;/*/2 狀態(tài)變量求導(dǎo)(flag=1)子函數(shù)mdlDerivatives實(shí)現(xiàn)連續(xù)狀態(tài)變量x導(dǎo)數(shù)的表達(dá)式:f1(t,x,u),用系統(tǒng)變量sys記錄并傳遞給。在函數(shù)體中也可以編寫(xiě)其它操作,但是sys只返回給。示例:/*/function sys = mdlDerivatives(t,x,u,A,B,C,D)sys = A*x + B*u;/*/3 狀態(tài)變量更新(flag=2)子函數(shù)m
7、dlUpdates實(shí)現(xiàn)離散狀態(tài)變量x的更新,因此在基于連續(xù)狀態(tài)變量的算法中不需要這一步運(yùn)算。4 輸出變量計(jì)算(flag=3)子函數(shù)mdlOutputs實(shí)現(xiàn)輸出變量y的表達(dá)式:f2(t,x,u),用系統(tǒng)變量sys記錄并傳遞給y。在函數(shù)體中也可以編寫(xiě)其它操作,但是sys只返回給y。示例:/*/function sys = mdlOutputs( t,x,u,A,B,C,D )sys = A*x + B*u;/*/5 采樣時(shí)刻計(jì)算(flag=4)子函數(shù)mdlGetTimeOfNextVarHit計(jì)算下一次采樣時(shí)刻,只在離散采樣系統(tǒng)中有用(即mdlInitializeSizes中的ts設(shè)置ts(1)不
8、為0)。示例:/*/function sys = mdlGetTimeOfNextVarHit( t,x,u )sys = t + u(2);/*/6 Simulink仿真結(jié)束時(shí)的操作(flag=9)編寫(xiě)simulink仿真結(jié)束時(shí)刻進(jìn)行的操作,用sys記錄返回值,但是返回值傳遞給哪個(gè)變量不詳,一般置sys=。示例:/*/function sys=mdlTerminate(t,x,u) sys = ;/*/2、 基于離散狀態(tài)變量的算法算法的整體設(shè)計(jì)思想是:x(n+1)=f1(t,x,u) y(n)=f2(t,x,u)1 初始化(flag=0)設(shè)置不使用連續(xù)狀態(tài)變量:size.NumContSta
9、tes = 0設(shè)置使用的離散狀態(tài)變量的個(gè)數(shù):size.NumDiscStates = 設(shè)置輸出變量的個(gè)數(shù):size.NumOutputs = 設(shè)置輸入變量的個(gè)數(shù):size.NumInputs = 設(shè)置輸出變量與輸入變量是否相關(guān):size.DirFeedthrough = 1或0設(shè)置采樣時(shí)間的個(gè)數(shù):size.NumSampleTimes = 用系統(tǒng)變量sys記錄并返回上述設(shè)置:sys=simsize(sizes)設(shè)置狀態(tài)變量的初始值:x0 = .設(shè)置保留變量str為空:str = 設(shè)置采樣時(shí)間類(lèi)型:ts = .示例:/*/function sys,x0,str,ts = mdlInitializ
10、eSizessizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 2;sizes.NumOutputs = 2;sizes.NumInputs = 2;sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = zeros(2,1);str = ;ts = 0 0;/*/2 狀態(tài)變量求導(dǎo)(flag=1)子函數(shù)mdlDerivatives實(shí)現(xiàn)連續(xù)狀態(tài)變量x的更新,計(jì)算f1(t,x,u),用系統(tǒng)變量sys記錄并傳遞給。因此在基于離散
11、狀態(tài)變量的算法中不需要這一步運(yùn)算。3 狀態(tài)變量更新(flag=2)子函數(shù)mdlUpdates實(shí)現(xiàn)離散狀態(tài)變量x導(dǎo)數(shù)的表達(dá)式:f1(t,x,u),用系統(tǒng)變量sys記錄并傳遞給x(n+1)。在函數(shù)體中也可以編寫(xiě)其它操作,但是sys只返回給x(n+1)。示例:/*/function sys = mdlUpdates(t,x,u,A,B,C,D)sys = A*x + B*u;/*/4 輸出變量計(jì)算(flag=3)子函數(shù)mdlOutputs實(shí)現(xiàn)輸出變量y的表達(dá)式:f2(t,x,u),用系統(tǒng)變量sys記錄并傳遞給y。在函數(shù)體中也可以編寫(xiě)其它操作,但是sys只返回給y。示例:/*/function sys = mdlUpdates( t,x,u,A,B,C,D )sys = A*x + B*u;/*/5 采樣時(shí)刻計(jì)算(flag=4)子函數(shù)mdlGetTimeOfNextVarHit計(jì)算下一次采樣時(shí)刻,只在離散采樣系統(tǒng)中有用(即mdlInitializeSizes中的ts設(shè)置ts(1)不為0)。示例:/*/function sys = mdlGetTimeOfNextVarHit( t,x,u )sy
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)發(fā)展路徑預(yù)測(cè)-洞察及研究
- JJG 688-2025汽車(chē)排放氣體測(cè)試儀檢定規(guī)程
- 運(yùn)輸安全生產(chǎn)制度
- 燃油鍋爐安全管理制度
- 電梯事故隱患排查和整治記錄
- 魯棒性人機(jī)交互系統(tǒng)-洞察及研究
- 未來(lái)教育技術(shù)如何提升學(xué)習(xí)體驗(yàn)與效果
- 醫(yī)療心理健康教育的課程設(shè)計(jì)與實(shí)踐
- 學(xué)習(xí)動(dòng)力教育成功的關(guān)鍵因素
- 實(shí)時(shí)決策支持系統(tǒng)開(kāi)發(fā)-洞察闡釋
- 古詩(shī)詞九宮格題目課件
- 保險(xiǎn)行業(yè)管理會(huì)計(jì)sap方案
- 中醫(yī)外科醫(yī)生面試問(wèn)題及答案
- 硝酸銀安全技術(shù)說(shuō)明書(shū)MSDS
- 服裝設(shè)計(jì)畢業(yè)論文-范本4
- 2023年02月2023年中華社會(huì)救助基金會(huì)招考聘用人員筆試題庫(kù)含答案解析
- 工程費(fèi)率招標(biāo)文件模板
- GB/T 4622.1-2003纏繞式墊片分類(lèi)
- GA 1089-2013電力設(shè)施治安風(fēng)險(xiǎn)等級(jí)和安全防范要求
- 懸索橋施工控制課件
- 中醫(yī)四大經(jīng)典題目及答案
評(píng)論
0/150
提交評(píng)論