SIMULINK中S-Functions(C代码)的多实例使用

时间:2013-12-09 11:26:14

标签: code-generation simulink s-function

我的SIMULINK模型中有一个遗留C函数,它在函数中使用了一些静态变量。静态变量可在全球范围内使用。当我引用我的模型的多个实例时,我得到错误,因为我的S函数没有为此配置。我收到此错误消息,因为代码生成不允许这样做。

我收到的错误消息如下:

  

多实例正常模式不支持S-Function块'ECDCTRL / PULDESC / S-Function Builder',因为它没有声明它支持多个执行实例。如果S-Function满足多个执行实例要求,则可以使用'mdlSetWorkWidths'方法中的SimStruct函数'ssSupportsMultipleExecInstances'来声明它。

当我使用自动生成的代码构建它时,我正在使用(MYSFUNC)_Outputs_Wrapper.c文件。在使用模型的多个引用时,如何确保可以使用我的旧C函数? SIMULINK网站建议使用ssSupportsMultipleExecInstances(SimStruct *S, bool flag)方法,但由于我没有使用SimStruct头文件,因此它不正确。怎么回事?

1 个答案:

答案 0 :(得分:3)

使用DWork向量而不是静态变量。引自here

  

DWork向量有几个优点:

Provide instance-specific storage for block variables
Eliminate static and global variables