【问题标题】:Getting data from MATLAB Simulink every 0.008s in .txt file在 .txt 文件中每 0.008 秒从 MATLAB Simulink 获取数据
【发布时间】:2013-06-13 19:07:57
【问题描述】:

我需要从我的 simulink 模型中获取数据,将其写入 txt 文件,让另一个程序读取它,并且每 0.008 秒一次。

有什么办法吗?我所能得到的就是将数据放入工作区

系统也是离散的

【问题讨论】:

    标签: c matlab simulink


    【解决方案1】:

    您应该使用To File block 将数据保存到磁盘。它将为您计算出正确的缓冲区大小等,并将数据写入磁盘。您只需从其他程序进行轮询即可获取新数据。

    8 毫秒通常不足以证明磁盘 IO 的开销是合理的,因此 To File 块需要更多的时间才能写入磁盘,而您的其他程序需要更多的时间才能读取。这显然会引入延迟。

    如果您想要更低延迟的解决方案,请考虑使用 DSP System Toolbox 库中的 UDP 或 TCP 通信块。

    【讨论】:

    • To File 块仅在 simultion 暂停或终止时写入,它不会在每个时间步写入。即使是这样,在非实时操作系统(所有 Simulink 都支持)上,您也无法获得 8 毫秒的采样率。您需要将模型转换为 C(使用 Simulink Coder)并在实时操作系统上运行代码。
    • @PhilGoddard 看起来它在模拟过程中向我写入了一个文件......我可以将“From Audio Device”块连接到“To File”块并观察文件大小随着模拟运行。只要你按块读/写,8ms 的采样率就不算什么。
    • 是的,我的错误 - To Workspace 块在暂停和终止时写入,而 To File 在模拟期间增量写入。但是请注意,它写入 .mat 文件而不是 OP 请求的 txt 文件。我仍然不同意你在非实时操作系统上保证 8 毫秒的采样率。
    【解决方案2】:

    当然,没有更多细节是不可能说什么的。

    多少数据?什么操作系统?如果你“错过”会怎样?文件在什么类型的磁盘上?它真的必须是磁盘上的文件吗,你不能使用例如管道或其他东西以避免撞击磁盘? “其他程序”与数据有什么关系?

    8 毫秒对于磁盘执行任何操作来说并不是很多时间,您基本上会假设所有访问都在缓存中以便工作,因此将磁盘排除在外。使用管道或 RAM 磁盘。

    8 毫秒对于典型的桌面操作系统来说也不算多。

    【讨论】:

    • 基本上我需要从我的 simulink 模型中获取速度来调节虚拟机器人,机器人将其当前位置发送给 simlink 模型,这就是控制回路的大小,数据只是速度,单位为 m/ s,操作系统是windows 7,问题是其他程序只能读写txt文件数据,8ms是因为robot的频率问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多