1、簡介:是用代碼仿真,對simulink的擴展功能,和子系統(tǒng)是一類的理解意思。
特點:
(1)、擴展接口:可以移植其他代碼,比如C、C++等。
(2)、是simulink的系統(tǒng)函數(shù)
(3)、可以開發(fā)新的Simlink模塊,擴展Simulink功能
2、S-Function的啟動,在Simulink下面的User-Defined Function里面。
注意這里的模塊是用圖形的方式完成調(diào)用S函數(shù)的接口,實際的功能需要由S函數(shù)的源文件完成。
3、如何創(chuàng)建自己的S函數(shù)模塊:
(1)、可以自己寫,但是沒必要。直接使用S函數(shù)的模版或者例子改寫。
(2)、在新建的模型窗口中添加S-FUNCTION模塊,并設(shè)置即可。
(3)、剩下的就是一般的模型的建立了...
相當于在模型窗口下面的S-FUNCTION是一個指針,指向這個S函數(shù)的源代碼,來實現(xiàn)這個模塊的功能。
4、注意:
在模塊中的S函數(shù)的名稱、參數(shù)列表必須和自己建立的S函數(shù)的原型的完全保持一致!并且函數(shù)參數(shù)之間必須用逗號分開。此外,自己也可以使用子系統(tǒng)的封裝技術(shù)對S函數(shù)進行封裝,用以增強系統(tǒng)模型的可讀性!
5、啟動S函數(shù)的模版和示例,找到User-Definded Fuction,雙擊S函數(shù)Examples模塊...雙擊MATLAB s函數(shù),Level-1是兼容以前版本的MATLAB、 Level-2是用于擴展M文件的S函數(shù)仿真。
6、仿真執(zhí)行解析:
在初始化階段,通過控制變量flag=0調(diào)用S函數(shù),并請求提供輸入\輸出變量的個數(shù)、初始狀態(tài)和采樣時間等信息。然后,仿真開始。通過修改控制變量flag=4,請求S函數(shù)提供下一步的采樣時間(對于固定采樣時間系統(tǒng),此函數(shù)不被調(diào)用)。接下來修改控制變量flag=3,計算模塊的輸出。接著修改控制變量flag=2,更新每一個采樣時間的系統(tǒng)離散狀態(tài)。對于連續(xù)系統(tǒng),再修改控制變量flag=1,求連續(xù)系統(tǒng)的導(dǎo)數(shù)。然后再通過控制變量flag=3計算新的輸出。這樣就完成了一個仿真步長的計算工作。當仿真結(jié)束后,通過控制flag=9,調(diào)用結(jié)束處理函數(shù),進行結(jié)束前的工作。
7、在自己建立S函數(shù)的時候,保存的時候可以將這個文件名字喝你的里面主函數(shù)的名字不一樣!
8、如何在S函數(shù)中添加用戶參數(shù):
(1):在S函數(shù)源代碼中,用到該參數(shù)的各個子函數(shù),在函數(shù)聲明部分均應(yīng)添加該參數(shù)。
(2):在Simulink模型中設(shè)置“S-Function”模塊參數(shù)時,參數(shù)的名稱和順序必須與S函數(shù)源代碼中的參數(shù)名稱和順序完全一致。
(3):注意再添加用戶參數(shù)之后,在仿真的時候必須在S函數(shù)model的屬性配置里面進行參數(shù)的配置!
9、注意在保存各種文件名字的時候要注意命名的規(guī)范化,比如函數(shù)文件的命名要和函數(shù)名字完全一致,還有S函數(shù)文件的名字雖然可以不和內(nèi)部的主函數(shù)的名字不一樣,但是為了規(guī)范化,強制性要寫成一致。注意S函數(shù)文件保存的時候不要和已有的模型的名字重復(fù)!