我的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
头文件,因此它不正确。怎么回事?
答案 0 :(得分:3)
使用DWork向量而不是静态变量。引自here:
DWork向量有几个优点:
Provide instance-specific storage for block variables Eliminate static and global variables