0

这里是 Matlab 初学者,我遇到了一些问题,Matlab 文档和这里的其他帖子都不能帮助我。我正在开发一个 Level-2 Matlab S-Function,它通过 USB(陀螺仪、磁力计和加速器信号)接收传感器信号,我必须每 200 毫秒分析一次这些数据以完成更高级别的任务。起初我以为我可以将 Simulink 模型的仿真时间设置为 Start time 0 和 Stop time 10 并通过 block.SampleTimes = [0.2 0] 将我的模块采样时间设置为 0.2;但是在得到一些意外行为之后,我发现通过文档模拟时间与 Simulink 中的时钟时间不同:

模拟时间与时钟时间不同。例如,运行 10 秒的模拟通常不需要 10 秒。总仿真时间取决于模型复杂性、求解器步长和计算机速度等因素。

我现在真的被困住了,因为我需要每 200 毫秒准确地输出一次传感器数据,而且我之前根本没有任何使用 Matlab 或 Simulink 的经验。我希望我的问题足够清楚,但如果需要,我会提供更多细节。感谢您提前提供任何帮助。

4

1 回答 1

1

Simulink(和 MATLAB)在 Windows、Linux、OSX 等非实时操作系统上运行。因此 MATLAB 代码或 Simulink 模型永远不会实时运行。确保 Simulink 模型硬实时执行的唯一方法是使用 Simulink Coder 和 Embedded Coder 从中生成 C 代码,并在实时(嵌入式)平台上运行生成的代码。

话虽如此,如果您的 Simulink 模型运行速度比实时速度快,您可以放慢它以运行“伪”实时,这将尽可能接近实时,因为您可以在非实时操作系统上获得. 有关更多详细信息,请参阅减慢 Simulink

于 2015-02-05T09:53:31.737 回答