我想在 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。
没有人知道如何摆脱那些巨大的偏差?