matlab函數以及simulink模塊的使用---S- function


一、simulink中S-function(S- function模塊,位於 Simulink/User- Defined Functions模塊庫中)

1、S- function屬性窗口介紹

(1)S- function name:S- functioni的名字,隨便寫,自己認識即可

(2)S- function parameters:S- function的模塊參數,默認為空

(3)S-function modS- function的模塊,無需修改,采用系統默認模塊即可也就是說,這三個參數,只需要修改第一個參數為模塊命名即可

(4)點擊Edit,可以進入S- function!的代碼編輯界面

 

2、S- function內部函數介紹

(1)[sys, X0,str,ts]= functionName(t,x,u,flag)這是函數的總入口,收到信號后,首先進入這個函數.這個函數包含一個 switch語句,根據情況進入不同的子函數.

(2)[sys, XO,str,ts, simstate Compliance]= mdllnitialize Sizes;S- function進行基本的設置,具體參數會在后面進行介紹。相當於構造函數

(3)sys= mdlDerivatives(t,x,u);該函數僅在連續系統中被調用,用於產生控制系統狀態的導數

(4)sys= mdlUpdate(t, x,u);該函數僅在離散系統中被詞用,用於產生控制系統的下一個狀態

(5)sys= mdlOutputs(t, x,u);產生(傳遞)系統輸出

(6)sys= mdlGetTimeOfNextVarHit(t,x,u)獲得下一次系統執行( next hit)的時間,該時間為絕對時間,此函數僅在采樣時間數組中指定變量離散時間采樣時間[-2 0]時會被調用

(7)sys= mdiTerminate(t,x,u)相當於構析函數,結束該仿真模塊時被調用

3、S- function的執行順序

 (1)在仿真開始時,執行 mdllnitialize Sizes
(2)若系統包含連續部分,則調用 mdlDerivatives;若系統包含離散部分,則調用 mdlUpdate
(3)調用 mdlOutputs,產生輸出
(4)若滿足條件,則執行 mdlGetTimeOfNextVarHit
(5)循環執行1--3,直至仿真停止
(6)執行 mdITerminate,仿真停止

4、S- function輸入輸出參數含義

(1)輸入參數t,x,u,flag

 t:系統時間
x:系統狀態
u:系統輸入,即在 simulink models中連接至S- function的線上的數據。注意區分x和u
fag:系統狀態,由系統自動生成,決定了系統應當執行哪個S- function子函數

(2)輸出參數sys,x0, str, ts, simStateCompliance 

SyS:系統本身,可以理解為下一時刻的系統;同時sys的前幾個數值(sys[1]等)是系統的輸出,即在 simulink中S- function伸出線上的數據
x0:系統初始狀態
str:狀態排序字符串,通常指定為。
ts:可認為是采樣時間
simstatecompllance例程與介紹

sizes= simsizes 調用構造函數,生成一個巽默認類

sizes. NumContStates=0;%設置系統連續狀態的數量
sizes. NumDiscStates=0;%設置系統離散狀態的數量
sizes. NumOutputs=0;%設置系統輸出的數量
sizes. NumInputs;%設置系統輸入的數量
sizes, Dirfeedthrough=1;%設置系統直接通過量的數量,一般為1
sizes. Numsampletimes =1:% at least one sample time is needed

                                             %需要的樣本時間,一般為1
                                            %猜測為如果為n,則下一時刻的狀態需要知道前個狀態的系統狀態

 sys= simsizes(sizes);
x0=[];%系統初始狀態
str=[];%保留變量,保持為空
ts=[0 0];%采樣時間
simStateCompliance="unknownsimstate';

 注意
S- function的基礎是現代控制理論的狀態定義,S- function.本身是一個系統,可以被設置為控制系統,也可以被設置為受控系統。因此本文所指的系統,均指S- - function本身

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM