Simulink S-Function Builder 中的静态变量

Static Variables in Simulink S-Function Builder

我目前正在使用 S-Function Builder 模块在 Simulink 模型中实现一些 C 代码。

该代码使用了各种定时器和计数器,它们被定义为静态变量,以便在接下来的模拟步骤中能够访问数据。

但是,如果我开始仿真,MATLAB 会崩溃且没有错误消息 ('Fatal Exception')。为了测试,我定义了没有 'static' 语句的变量。模拟在这种情况下有效,但是 S-Function 的(逻辑上)错误结果。

有没有其他人遇到过类似的问题或知道如何在 Simulink 中声明静态变量?

P.S.

我知道我可以使用 Work Vectors,但我不打算这样做,因为它会导致采用该功能的巨大努力。 此外,我可以使用内存块在模型中简单地构建一个反馈循环。对于大约 100 个变量,此解决方案也非常不切实际。

不是解决方案,但可能的解决方法是使用 coder.ceval 功能。我用它来包装一个 C-function 具有类似(用作计数器的静态变量)功能。然后将 coder.ceval 调用置于嵌入式 matlab 块中。可能还必须对接口进行一些定义(结构/总线对象)。 检查调用结构的 coder.ceval、coder.rref 和 coder.wref。

这似乎是 Simulink 或 MinGW 编译器中的错误。然而,我拆掉了代码,最终它因调用一个特定变量而崩溃。我重命名了变量,因为我找不到语法中的任何错误。现在一切正常...

变量名有各种下划线和大写字母 - 以防有人有类似经历。