S-函式是系統函式(System Function)的簡稱,是指採用非圖形化的方式(即計算機語言,區別於Simulink的系統模組)描述的一個功能塊。用戶可以採用MATLAB代碼,C,C++,FORTRAM等語言編寫S-函式。S-函式由一種特定的語法構成,用來描述並實現連續系統、離散系統以及複合系統等動態系統;S-函式能夠接受來自Simulink求解器的相關信息,並對求解器發出的命令作出適當的回響,這種互動作用非常類似於Simulink系統模組與求解器的互動作用。一個結構體系完整的S-函式包含了描述動態系統所需的全部能力,所有其他的使用情況都是這個結構體系的特例。往往S-函式模組是整個Simulink動態系統的核心。
根據S-函式代碼使用的程式語言,S-函式可以分成M檔案S-函式(即用MATLAB語言編寫的S-函式)、C語言S-函式、C++語言S-函式以及Fortran語言S-函式等。通過S-函式創建的模組具有與Simulink模型庫中的模組相同的特徵,它可以與Simulink求解器進行互動,支持連續狀態和離散狀態模型。
S-函式作為與其他語言相結合的接口,可以使用這個語言所提供的強大能力。例如,Matlab語言編寫的S-函式可以充分利用MATLAB所提供的豐富資源,方便地調用各種工具箱函式和圖形函式;使用C語言編寫的S-函式可以實現對作業系統的訪問,如實現與其他進程的通信和同步等。
用戶可能會有如下的疑問:Simulink已經提供了大量的內置的系統模組,並且允許用戶自定義模組,那么為何還要使用S-函式呢?誠然,對於大多數動態系統仿真分析語言,使用Simulink提供的模組即可實現,而無需使用S-函式。但是,當需要開發一個新的通用的模組作為一個獨立的功能單元時,使用S-函式實現則是一種相當簡便的方法。另外,由於S-函式可以使用多種語言編寫,因此可以將已有的代碼結合進來,而不需要在Simulink中重新實現算法,從而在某種程度上實現了代碼移植。此外,在S-函式中使用文本方式輸入公式、方程,非常適合複雜動態系統的數學描述,並且在仿真過程中可以對仿真進行更精確的控制。
簡單的來說,用戶可以從如下的幾個角度來理解S-函式:
(1) S-函式為Simulink的“系統”函式。
(2)能夠回響Simulink為求解器命令的函式。
(3)採用非圖形化的方法實現一個動態系統。
(4)可以開發新的Simulink模組。
(5)可以與已有的代碼相結合進行仿真。
(6)採用文本方式輸入複雜的系統方程。
(7)擴展Simulink功能。M檔案S-函式可以擴展圖形能力,C MEX S-函式可以提供與作業系統的接口。
(8)S-函式的語法結構是為實現一個動態系統而設計的(默認用法),其他S-函式的用法是默認用法的特例(如用於顯示目的)。