1

我的 SIMULINK 模型中有一个旧版 C 函数,它在其函数中使用了一些静态变量。静态变量是全局可用的。当我引用我的模型的多个实例时,我收到错误,因为我的 S-Function 没有为此配置。我收到此错误消息,因为代码生成不允许这样做。

我收到的错误消息如下:

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

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

4

1 回答 1

3

使用 DWork 向量而不是静态变量。从这里引用:

DWork 向量有几个优点:

Provide instance-specific storage for block variables
Eliminate static and global variables
于 2013-12-09T13:12:51.923 回答