2

我想在 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。

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

4

3 回答 3

2

我怀疑 Dymola 的时钟速度是错误的。

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

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

于 2014-01-10T06:04:26.447 回答
2

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

于 2014-01-09T01:33:59.490 回答
1

I solved the problem switching to an embedded OPC-Server. Error between real time and simulation time in this case is shown below. Timing error for Simulation with embedded OPC-Server

Compiling Dymola Problems with an embedded OPC-Server requires administrator rights (which I did not have before). The active folder of Dymola must not be write protected.

于 2014-01-29T11:54:13.567 回答