将Level-2 Matlab S-Function Block Sample-Time设置为特定时间间隔

时间:2015-02-05 05:21:02

标签: matlab simulink s-function

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

  

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

我现在真的陷入困境,因为我需要每200毫秒输出一次传感器数据,而且我根本没有Matlab或Simulink的任何经验。 我希望我的问题很清楚,但如果需要,我会提供更多细节。 感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:1)

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

话虽如此,如果您的Simulink模型比实时运行得更快,您可以将其减速以实时运行“伪”,这将非常接近实时,因为您可以获得非实时模拟时间操作系统。有关详细信息,请参阅Slowing Down Simulink