0

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

该代码使用各种计时器和计数器,这些计时器和计数器被定义为静态变量,以便在以下模拟步骤中访问数据。

但是,如果我开始仿真 MATLAB 崩溃而没有错误消息(“致命异常”)。为了测试,我定义了没有“静态”语句的变量。模拟在这种情况下有效,但是 S-Function 的(逻辑上)错误结果。

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

附言

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

4

2 回答 2

0

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

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

于 2017-03-06T13:32:08.400 回答
0

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

于 2017-02-07T14:20:00.877 回答