Dymola / Modelica实时仿真进展太快

时间:2014-01-08 11:02:59

标签: real-time modelica dymola

我想在Dymola中实时模拟一个模型以供HiL使用。在结果中,我看到模拟的速度提高了约5%。

  

集成在T = 691200

成功终止      

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

     

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

我已经尝试增加网格间隔以减少相对误差,但模拟进展仍然太快。我只阅读了关于降低模型复杂度的方法,以便在规定的时间步骤内进行模拟。

请注意,Simulation确实可以实现并且速度更快。我怎么能在这种情况下匹配模拟的时间和实时?

编辑1:

我使用Lsodar求解器并在Realtime选项卡中选中了“Synchronize with realtime option”。我有实时模拟许可选项。我在Windows 7上使用Dymola 2013.这里的结果为15秒:

  

集成在T = 691200

成功终止      

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

     

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

偏差仍约为4.5%。

但我没有使用内联集成。

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

编辑2:relative difference between real time and Simulation advance in %

我从Berkeley Buildings库中获取了Python27块以读取系统时间并将其与Simulation advance进行比较。结果显示,在模拟开始后36小时,模拟稍微减慢(与实时相比)。模拟开始后约72小时开始比实时快约10%。此外,在72小时后,结果中的抖动也会增加。

有任何解释吗?

接下来的步骤将是: - 改为固定步骤求解器(可能这是解决方案的一个重要部分) - 从DDE服务器改为OPC服务器,然而在Dymola 2013中似乎无法实现这一点。

编辑3: Relative Simulation time deviation with fixed step solver

没有......使用固定步骤求解器似乎解决了这个问题。在模拟时间的前48小时内,偏差似乎等于使用​​具有可变步长的求解器的偏差。在这个例子中,我使用Rkfix 3求解器,积分器步长为0.1。

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

Dymola中有一个参数可用于设置CPU速度,但我现在无法找到它,我稍后会再次查看。

答案 2 :(得分:1)

我解决了切换到嵌入式OPC服务器的问题。在这种情况下,实时和模拟时间之间的误差如下所示。 Timing error for Simulation with embedded OPC-Server

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