已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄Fcn 模塊1MATLAB Fcn 模塊2S Function (System Function)21. 函數(shù)的函數(shù)頭32. 函數(shù)分析33.帶參數(shù)的S函數(shù)54.S函數(shù)格式及說明6simulink中子模塊的封裝11Fcn 模塊Fcn模塊對它的輸入進(jìn)行指定的表達(dá)式運(yùn)算。使用的表達(dá)式可由下面的一個或多個部分組成。u - 模塊的輸入。 如果u是一個向量,u(i)表示此向量的第i個元素;u(1)或者u表示第一個元素?cái)?shù)值常數(shù) (例如表達(dá)式5.2*u)算術(shù)運(yùn)算符(+ - * / 例如表達(dá)式 u2+5.2)關(guān)系運(yùn)算符(= != = user-defined function下拖一個S-Function到你的模型, 就可以用了. 在simulink - user-defined function還有個s-Function Builder, 他可以生成用c語言寫的s函數(shù). 或者在matlab的workspace下打sfundemos, 可以看到很多演示s函數(shù)的程序 4.S函數(shù)格式及說明function sys,x0,str,ts = sfuntmpl(t,x,u,flag)% SFUNTMPL 是M-文件 S函數(shù)模板% 通過剪裁,用戶可以生成自己的S函數(shù),不過一定要重新命名% 利用S函數(shù)可以生成連續(xù)、離散混合系統(tǒng)等,實(shí)現(xiàn)任何模塊的功能% M-文件S函數(shù)的語法為:% SYS,X0,STR,TS = SFUNC(T,X,U,FLAG,P1,.,Pn)% 參數(shù)含義:% t是當(dāng)前時間% x是S函數(shù)相應(yīng)的狀態(tài)向量% u是模塊的輸入% flag是所要執(zhí)行的任務(wù)% FLAG 結(jié)果 功能% - - -% 0 SIZES,X0,STR,TS 模塊初始化% 1 DX 計(jì)算模塊導(dǎo)數(shù)% 2 DS 更新模塊離散狀態(tài)% 3 Y 計(jì)算模塊輸出% 4 TNEXT 計(jì)算下一個采樣時間點(diǎn)% 9 結(jié)束仿真% 用戶切勿改動輸出參數(shù)的順序、名稱和數(shù)目% 輸入?yún)?shù)的數(shù)目不能小于1,這四個參數(shù)的名稱和排列順序不能改動% 用戶可以根據(jù)自己的要求添加額外的參數(shù),位置依次為第5,6,7,8,9等。% S函數(shù)的flag參數(shù)是一個標(biāo)記變量,具有6個不同值,分別為0,1,2,3,4,9% flag的6個值分別指向6個不同的子函數(shù)% flag所指向的子函數(shù)也成為回調(diào)方法(Callback Methods)switch flag,%初始化,調(diào)用“模塊初始化”子程序% case 0, sys,x0,str,ts=mdlInitializeSizes;%連續(xù)狀態(tài)變量計(jì)算,調(diào)用“計(jì)算模塊導(dǎo)數(shù)”子函數(shù)% case 1, sys=mdlDerivatives(t,x,u);%更新,調(diào)用“更新模塊離散狀態(tài)”子函數(shù)% case 2, sys=mdlUpdate(t,x,u);%輸出,調(diào)用“計(jì)算模塊輸出”子函數(shù)% case 3, sys=mdlOutputs(t,x,u);%計(jì)算下一時刻采樣點(diǎn),調(diào)用“計(jì)算下一個采樣時刻點(diǎn)”子函數(shù)% case 4, sys=mdlGetTimeOfNextVarHit(t,x,u);%結(jié)束,調(diào)用“結(jié)束仿真”子函數(shù)% case 9, sys=mdlTerminate(t,x,u);%其他的flag% otherwise DAStudio.error(Simulink:blocks:unhandledFlag, num2str(flag);end% end sfuntmpl%=% “模塊初始化”子函數(shù)% 返回大小、初始條件和樣本function sys,x0,str,ts=mdlInitializeSizes% 調(diào)用simsizes函數(shù),返回規(guī)范格式的sizes構(gòu)架% 這條指令不要修改sizes = simsizes;% 模塊的連續(xù)狀態(tài)個數(shù),0是默認(rèn)值% 用戶可以根據(jù)自己的要求進(jìn)行修改sizes.NumContStates = 0;% 模塊的離散狀態(tài)個數(shù),0是默認(rèn)值% 用戶可以根據(jù)自己的要求進(jìn)行修改sizes.NumDiscStates = 0;% 模塊的輸出個數(shù),0是默認(rèn)值% 用戶可以根據(jù)自己的要求進(jìn)行修改sizes.NumOutputs = 0;% 模塊的輸入個數(shù),0是默認(rèn)值% 用戶可以根據(jù)自己的要求進(jìn)行修改sizes.NumInputs = 0;% 模塊中包含的直通前向饋路個數(shù),1是默認(rèn)值% 用戶可以根據(jù)自己的要求進(jìn)行修改sizes.DirFeedthrough = 1;% 模塊中采樣時間的個數(shù),1是默認(rèn)值,至少需要一個樣本時間% 用戶可以根據(jù)自己的要求進(jìn)行修改sizes.NumSampleTimes = 1;% 初始化后的構(gòu)架sizes經(jīng)simsizes函數(shù)處理后向sys賦值% 這條指令不要修改sys = simsizes(sizes);% 給模塊初始值變量賦值,是默認(rèn)值% 用戶可以根據(jù)自己的要求進(jìn)行修改x0 = ;% 系統(tǒng)保留變量% 切勿改動,保持為空str = ;% “二元對”描述采樣時間及偏移量。0 0是默認(rèn)值% 0 0適用于連續(xù)系統(tǒng)% -1 0則表示該模塊采樣時間繼承其前的模塊采樣時間設(shè)置ts = 0 0;% end mdlInitializeSizes%=% 計(jì)算導(dǎo)數(shù)向量function sys=mdlDerivatives(t,x,u)% 此處填寫計(jì)算導(dǎo)數(shù)向量的指令% 是模塊的默認(rèn)值% 用戶必須把算得的離散狀態(tài)的導(dǎo)數(shù)向量賦給syssys = ;% end mdlDerivatives%=% 計(jì)算離散狀態(tài)向量function sys=mdlUpdate(t,x,u)% 此處填寫計(jì)算離散狀態(tài)向量的指令% 是模塊的默認(rèn)值% 用戶必須把算得的離散狀態(tài)向量賦給syssys = ;% end mdlUpdate%=% 計(jì)算模塊輸出向量function sys=mdlOutputs(t,x,u)% 此處填寫計(jì)算模塊輸出向量的指令% 是模塊的默認(rèn)值% 用戶必須把算得的模塊輸出向量賦給syssys = ;% end mdlOutputs%=% 計(jì)算下一采樣時刻function sys=mdlGetTimeOfNextVarHit(t,x,u)% 該子函數(shù)僅在“采樣時間”情況下使用% sampleTime = 1 是模塊默認(rèn)設(shè)置,表示在當(dāng)前時間1秒后再調(diào)用本模塊% 用戶可以根據(jù)自己的要求修改sampleTime = 1;% 將計(jì)算得到的下一采樣時刻賦給sys% 切勿改動sys = t + sampleTime;% end mdlGetTimeOfNextVarHit%=function sys=mdlTerminate(t,x,u)% 模板默認(rèn)設(shè)置,一般情況不要改動sys = ;% end mdlTerminatesimulink中子模塊的封裝對于比較復(fù)雜的系統(tǒng),模塊化思想是很有必要的,使得思路較為清晰、錯誤容易排查。對復(fù)雜的系統(tǒng)進(jìn)行仿真,如果將其中獨(dú)立的功能進(jìn)行封裝,會顯得特別清爽。這學(xué)期做了電機(jī)仿真和伺服系統(tǒng)仿真,特別感覺到子模塊封裝的必要性,有效的提高了系統(tǒng)的可讀和可維護(hù)性。 在simulink中建立子模塊的步驟如下: 1、建立系統(tǒng)框圖。這步需要確定輸入輸出的個數(shù),輸入端為sources中的in,輸出端為sinks中的out。將Simulink庫下的Ports&Subsystems中的Subsystem拉至simulink框圖中。 2、功能的搭建。點(diǎn)擊建好的子模塊,在其中進(jìn)行功能模塊的搭建。 3、子模塊的封裝。所謂封裝(masking),即將其對應(yīng)的子系統(tǒng)內(nèi)部結(jié)構(gòu)隱含以來,訪問該模塊的時候僅僅出現(xiàn)一個參數(shù)設(shè)置對話框。需要如下幾步完成: 3.1、右擊模塊,選擇Mask Subsystem選項(xiàng),蹦出Mask Editor對話框。 3.2、Icon屬性。如果要顯示端口的名稱,Transparency屬性設(shè)置成Transparent。Drawing commands編輯框允許給該模塊圖標(biāo)上繪制圖像,可以選擇的有plot()、disp()等等,比如disp(PID Controller)。在Drawing commands中輸入語句,如何寫函數(shù)的提示在封裝編輯對話框的下方。 3.3、Parameters屬性。這個東西是給模塊中的變量賦值的,選擇左方有朝左的小箭頭的按鈕是添加變量的,這時右方會有一橫欄,Prompt是該變量的提示信息,Variable是相關(guān)聯(lián)的變量名稱,一定要與模塊中的變量名稱一樣,Type是變量的類型,edit(可編輯)、popup(下拉框),選擇后者的時候需要在左下方的popups中分行寫上可以選擇的數(shù)值。左方的叉按鈕是刪除變量的。 3.4、Initialization屬性。對模塊進(jìn)行初始化操作。 3.5、Documentation屬性。對模塊進(jìn)行說明。封裝后雙擊模塊就可以看見Mask Description中的內(nèi)容。 關(guān)于模塊封裝的一些操作還有:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度分享匯編【人事管理篇】十篇
- 單位管理制度范例選集【人事管理】十篇
- 《學(xué)校組織結(jié)構(gòu)》課件
- 《建筑環(huán)境管理技術(shù)》課件
- 《紙板的創(chuàng)想-坐椅設(shè)計(jì)》課件
- 2024年公務(wù)員個人年終總結(jié)
- 2014年高考語文試卷(福建)(空白卷)
- 稅務(wù)稽查事項(xiàng)總結(jié)
- 雙十二旅游狂歡節(jié)
- 樂器銷售工作總結(jié)
- 2025中國地震應(yīng)急搜救中心公開招聘應(yīng)屆畢業(yè)生5人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 部編版八年級初二語文上冊第六單元《寫作表達(dá)要得體》說課稿
- 遼寧沈陽市文體旅產(chǎn)業(yè)發(fā)展集團(tuán)有限公司招聘筆試沖刺題2024
- 政治-2025年八省適應(yīng)性聯(lián)考模擬演練考試暨2025年四川省新高考教研聯(lián)盟高三年級統(tǒng)一監(jiān)測試題和答案
- 2024年中國醫(yī)藥研發(fā)藍(lán)皮書
- 坍塌、垮塌事故專項(xiàng)應(yīng)急預(yù)案(3篇)
- 2024年融媒體中心事業(yè)單位考試工作人員另選錄用55人內(nèi)部選題庫及參考答案(研優(yōu)卷)
- 陜西省安康市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
- WPS Office辦公軟件應(yīng)用教學(xué)教案
- 2024年時政熱點(diǎn)知識競賽試卷及答案(共四套)
- 幼兒園后勤主任年終總結(jié)
評論
0/150
提交評論