#define S_FUNCTION_NAME myfunction_sFun
#define S_FUNCTION_LEVEL 2
#define MDL_INITIAL_SIZES
#define MDL_INITIALIZE_SAMPLE_TIMES
#include“tmwtypes.h”
#include“simstruc_types.h”
#include“mex.h”
#include“simstruc.h”
void mdlInitializeSizes(SimStruct * S)
{
ssPrintf("Initialize\n");
//My code has been removed from here
ssPrintf("End Initialize\n");
}
void mdlInitializeSampleTimes(SimStruct * S)
{
ssPrintf("Sample Times\n");
}
#define MDL_OUTPUTS
#ifdef MDL_OUTPUTS
void mdlOutputs(SimStruct * S,int_T tid)
{
ssPrintf("Outputs\n");
}
#ENDIF
#define MDL_START
#ifdef MDL_START
void mdlStart(SimStruct * S)
{
ssPrintf("Start\n");
}
#ENDIF
void mdlTerminate(SimStruct * S){}
/ =============================
必需的S-function预告片*
============================= /
#ifdef MATLAB_MEX_FILE / *此文件是否编译为MEX文件? * /
#include“simulink.c”/ * MEX文件接口机制* /
的#else
#include“cg_sfun.h”/ *代码生成注册功能* /
#ENDIF
答案 0 :(得分:1)
mdlStart
和mdlOutputs
是只在某些情况下才会被调用的选项方法。例如,mdlOutputs
只有在定义了任何输出时才会被调用 - 在您的情况下没有。 (我对mdlStart
没有被调用感到有些惊讶。)
请参阅文档Simulink Engine Interaction with C S-Functions,了解哪些方法是可选的,以及它们的调用顺序。