将 Level-2 Matlab S-Function 模块采样时间设置为特定时间间隔

Setting a Level-2 Matlab S-Function Block Sample-Time to specific time intervals

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

Simulation time is not the same as clock time. For example, running a simulation for 10 seconds usually does not take 10 seconds. Total simulation time depends on factors such as model complexity, solver step sizes, and computer speed.

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

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

话虽如此,如果您的 Simulink 模型 运行 比实时快,您可以将其减慢到 运行 "pseudo" 实时,这将尽可能接近实时,因为你可以在非实时操作系统上获得。有关详细信息,请参阅 Slowing Down Simulink