【问题标题】:Setting a Level-2 Matlab S-Function Block Sample-Time to specific time intervals将 Level-2 Matlab S-Function Block Sample-Time 设置为特定的时间间隔
【发布时间】:2015-02-05 05:21:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: matlab simulink s-function


    【解决方案1】:

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

    话虽如此,如果您的 Simulink 模型运行速度快于实时,您可以放慢它的速度以运行“伪”实时,这将尽可能接近实时,因为您可以在非实时 -时间操作系统。详情请见Slowing Down Simulink

    【讨论】:

    • 感谢Slowing Down Simulink 链接完美地解决了我的问题!你为我节省了很多时间:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    相关资源
    最近更新 更多