我正在尝试使用real-time Workshop在Simulink中运行实时模拟。目标是grt(我已经尝试过rtwin,但是我的模拟拒绝为它编译)。我需要实时运行模拟,以便在模拟中的一秒持续一秒的实时。Grt忽略实时,并在尽可能短的时间内完成模拟。有没有同步的方法?
我尝试过http://www.mathworks.com/matlabcentral/fileexchange/3175,但是不能让它工作(不能编译)。
感谢您的任何建议。
发布于 2012-07-19 21:51:56
看起来是不可能的。我能够通过使用WinApi的睡眠(以毫秒为单位的时间)函数和time.h的时钟函数来减慢执行速度,这对于低采样率看起来非常好。然而,当我增加采样率时,睡眠功能休眠了太长时间,这导致了错误,模拟中的一秒持续了不止一秒。
这个想法是说,一个迭代周期应该持续,比如说200ms。然后使用clock函数计算一次迭代代码执行所需的时间。然后调用睡眠(200- u),其中u是迭代的长度。问题是,睡眠函数会让进程休眠,并在需要的时候唤醒它,而不是在参数中告诉它的时候唤醒它。
我知道这不是一个解决方案,但是把这篇文章贴出来,这样如果有人遇到和我一样的问题,他们就不会尝试这个死胡同的解决方案了。我不得不重写rtwin的模拟,现在它工作得很好。
另一个想法是以某种方式使用中断,但我想这将是相当复杂的,不值得麻烦。
https://stackoverflow.com/questions/11540088
复制相似问题