0

我正在尝试使用 Real-time Workshop 在 Simulink 中运行实时仿真。目标是 grt(我试过 rtwin,但我的模拟拒绝为它编译)。我需要模拟实时运行,以便模拟中的一秒持续一秒的实时。Grt 忽略实时并在尽可能短的时间内完成模拟。有什么方法可以同步吗?

我试过http://www.mathworks.com/matlabcentral/fileexchange/3175但无法让它工作(不编译)。

感谢您的任何建议。

4

1 回答 1

0

看起来这是不可能的。通过使用 WinApi 中的 Sleep(time in ms) 函数和 time.h 中的时钟函数,我能够减慢执行速度,这对于低采样率看起来相当不错。但是,当我提高采样率时,睡眠功能睡眠时间过长,从而导致错误,模拟中的一秒持续时间超过现实世界的一秒。

这个想法是说一个迭代周期应该持续,比如说 200 毫秒。然后计算使用时钟函数执行一次代码迭代需要多长时间。然后调用 Sleep(200 - u),其中 u 是迭代的长度。问题是 Sleep 函数使进程休眠并在它想要的时候唤醒它,而不是当你在参数中告诉它时。

我知道这不是一个解决方案,但发布这个,以便如果有人面临与我相同的问题,他们将不会尝试这个死胡同的解决方案。我不得不为 rtwin 重写模拟,现在它工作正常。

另一个想法是以某种方式使用中断,但我想这会很复杂,不值得麻烦。

于 2012-07-19T13:51:56.157 回答