【问题标题】:Run a continuous Simulink model with real-time input?运行具有实时输入的连续 Simulink 模型?
【发布时间】:2016-09-07 22:08:20
【问题描述】:

我是 Matlab/Simulink 新手,但需要通过软件与 Simulink 模型交互。

目前,我创建了一个简单的 Simulink 函数“Inc”,它有一个输入到一个加法块,一个常数为 1 和一个输出。我使用了 To/From Workspace 模块,并且可以使用时间/值向量输入在固定时间内运行模拟,例如 simin = [0,0;5,0;5,1;10,1]。

我想做的是连续运行我的模型吗?实时读取 Workspace 值而不是基于预定义时间的向量?

我看不到如何设置? Matlab/Simulink 可以做到这一点吗?

总而言之,我希望 simin 和 simout 是单个值,即 simin = 1,然后模型在下一个固定步骤连续(无限)运行,simout 将更新为 simout = 2。simin 将在不同间隔的工作区。

【问题讨论】:

    标签: matlab simulink


    【解决方案1】:

    简短的回答是您不能(轻松)这样做,这不是 Simulink 的工作方式。 MATLAB 工作区在仿真开始时被读取/访问并传递给 Simulink 引擎,即使在仿真完成之前工作区中的值发生变化,运行的 Simulink 模型也不会考虑到这一点。

    有一些方法可以解决这个问题,但如果您是 MATLAB 和 Simulink 的新手,请注意这些是相当先进的技术,我建议您先熟悉 Simulink。

    查看这些类似的问题,以获取有关如何做你想做的事情的建议:

    显然,您需要将模拟结束时间更改为Inf 或较大的数字。

    【讨论】:

    • 谢谢。我已经使用事件侦听器技术进行了一些工作,并且正在使用 tcpclient 将实时更新从外部系统流式传输到模型中。我注意到虽然我需要在事件侦听器上运行的脚本中添加一个暂停(TimeStep),以将模型降低到实时执行速度。这感觉不对,我是不是错过了某个地方的设置?
    • 是的,Simulink 本身并不是一个实时系统。首先,它在 Windows 或其他非实时的 O/S 上运行,但该模型基本上运行得尽可能快。由于模型的复杂性,它可能比实时更快或更慢。如果它更快,则有一些工具可以将执行速度减慢到伪实时,例如uk.mathworks.com/matlabcentral/fileexchange/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多