-1

#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”

#包括“mex.h”

#include “simstruc.h”

无效 mdlInitializeSizes(SimStruct *S)

{

ssPrintf("Initialize\n");

  //My code has been removed from here

ssPrintf("End Initialize\n");

}

无效 mdlInitializeSampleTimes(SimStruct *S)

{

ssPrintf("Sample Times\n");

}

#define MDL_OUTPUTS

#ifdef MDL_OUTPUTS

void mdlOutputs(SimStruct *S, int_T tid)

{

ssPrintf("Outputs\n");

}

#万一

#define MDL_START

#ifdef MDL_START

无效 mdlStart(SimStruct *S)

{

ssPrintf("Start\n");

}

#万一

无效 mdlTerminate(SimStruct *S){}

/ ==============================

  • 所需的 S-function 拖车 *

    ============================== /

#ifdef MATLAB_MEX_FILE /* 这个文件是否被编译为 MEX 文件?*/

#include "simulink.c" /* MEX 文件接口机制 */

#别的

#include "cg_sfun.h" /* 代码生成注册函数 */

#万一

4

1 回答 1

1

mdlStart并且mdlOutputs是仅在某些情况下调用的选项方法。例如,mdlOutputs只有在定义了任何输出时才会调用 - 在您的情况下没有。(我有点惊讶mdlStart没有被调用。)

请参阅文档Simulink Engine Interaction with C S-Functions,了解哪些方法是可选的,以及它们的调用顺序。

于 2017-03-01T04:38:30.103 回答