【问题标题】:Dymola/Modelica real-time simulation advances too fastDymola/Modelica 实时仿真进展太快
【发布时间】:2014-01-08 11:02:58
【问题描述】:

我想在 Dymola 中实时模拟模型以供 HiL 使用。在结果中,我看到模拟的推进速度太快了大约 5%。

集成在 T = 691200 成功终止

集成的 CPU 时间:6.57e+005 秒

一个 GRID 间隔的 CPU 时间:951 毫秒

我已经尝试增加网格间隔以减少相对误差,但模拟仍然进展得太快。我只阅读了有关降低模型复杂性以允许在定义的时间步内进行仿真的方法。

请注意,模拟确实可以跟上实时速度,而且速度更快。在这种情况下如何匹配模拟时间和实时?

编辑 1:

我使用 Lsodar 求解器,并在实时选项卡中选中了“与实时选项同步”。我有实时模拟许可证选项。我在 Windows 7 上使用 Dymola 2013。这是步长为 15 秒的结果:

集成在 T = 691200 成功终止

集成的 CPU 时间:6.6e+005 秒

一个 GRID 间隔的 CPU 时间:1.43e+004 毫秒

偏差仍然约为 4.5%。

但我没有使用内联集成。

我是否需要硬实时或内联集成来改善这些结果?是否可以使用软实时获得低于 4.5% 的偏差?

编辑 2:

我从 Berkeley Buildings 库中获取了 Python27 块来读取系统时间并将其与 Simulation Advance 进行比较。结果显示,模拟开始 36 小时后,模拟速度略有下降(与实时相比)。模拟开始大约 72 小时后,它开始比实时速度快 10%。此外,在 72 小时后,结果中的抖动会增加。

有什么解释吗?

接下来的步骤是: -更改为固定步长求解器(很可能这是解决方案的重要组成部分) - 从 DDE 服务器更改为 OPC 服务器,但目前在 Dymola 2013 中似乎无法实现。

编辑 3:

不...使用固定步长求解器似乎确实可以解决问题。在模拟时间的前 48 小时内,偏差似乎等于使用​​可变步长求解器的偏差。在此示例中,我使用了 Rkfix 3 求解器,积分器步长为 0.1。

没有人知道如何摆脱那些巨大的偏差?

【问题讨论】:

    标签: real-time modelica dymola


    【解决方案1】:

    如果我没记错的话,Dymola 有一个用于实时性能的特殊编译选项。但是,我认为这是一个许可选项(不确定)。

    【讨论】:

    • 是的,在实时选项卡中,您可以检查“与实时同步”,我这样做了。我有许可证选项。然而,实时和模拟时间偏差约 5%,我不知道为什么。模拟比实时更快,并且不会“等待”它。
    【解决方案2】:

    我怀疑 Dymola 的时钟速度有误。

    您可以使用模拟设置中的“减速因子”,位于“与实时同步”下方的“实时”选项卡上。将此设置为 1/0.95。

    在 Dymola 中有一个参数可以用来设置 CPU 速度,但我现在找不到这个,我稍后再看看。

    【讨论】:

    • 嗨!正如您在我更新的问题中看到的那样,不幸的是,一个简单的因素无法解决问题。随着时间的推移,模​​拟速度似乎在发生变化。开始有点太慢,模拟最终变得比实时快。但是非常感谢你的想法!!
    【解决方案3】:

    我解决了切换到嵌入式 OPC 服务器的问题。在这种情况下,实时和仿真时间之间的误差如下所示。

    使用嵌入式 OPC-Server 编译 Dymola 问题需要管理员权限(我以前没有)。 Dymola 的活动文件夹不得写保护。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 2014-07-06
      相关资源
      最近更新 更多