创建一个有1输入(2维),2输出(1维),3个参数,还有全局变量的s-function。
1.新建sfunction的C语言文件
打开simulink,点击User-Defined Functions里面的S-Function Examples。这个里面有多个语言版本的模板,有C,C++,Ada,Fortran和M语言的版本,其实都大同小异,只要了解几个函数就很容易使用了。
选择C语言的版本:从S-function模块中选择C-file S-functions里面的Basic C-MEX template。打开后,另存为自己的模块名字,如test.c。
下面我们来分析代码:
#define S_FUNCTION_NAME test//这里把文件名sfuntmpl_basic修改为test
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
//程序里面要用到的头文件在这里引用,如“math.h”等。
float global_var; //定义全局变量
static void mdlInitializeSizes(SimStruct *S)
{
//这个函数用来设置输入、输出和参数的。
ssSetNumSFcnParams(S, 3); /*设置参数个数,这里为3 */
if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {
return;
}
ssSetNumContStates(S, 0);//设置