【发布时间】:2016-08-29 23:38:48
【问题描述】:
嗨 Modelica 社区,
我想在 JModelica 中并行运行两个模型,但我不确定如何在模型之间传递变量。一个模型是 python 模型,另一个是 EnergyPlusToFMU 模型。
JModelica 文档中的示例在模型仿真之前定义了完整的仿真周期输入。我不明白如何配置一个暂停输入的模型,这是 FMU 和协同仿真的一个关键特性。
谁能提供一个示例或一段代码来说明如何在 JModelica 中实现这一点?
我是否将模拟命令置于循环中?如果是这样,我如何在不丢失先前时间步长的数据的情况下处理预热期和初始化?
感谢您的宝贵时间,
贾斯汀
【问题讨论】:
-
您想执行一个模拟,其中每个模型都在单独的进程中运行,还是可以在进程中运行并在它们之间交换信息?有没有考虑只在协同仿真 FMU 上使用 do_step 方法?
-
嗨@ChristianAndersson,感谢您的信赖。我相信 do_step 可能是我正在寻找的。我已经使用 help(do_step) 来获取一些信息,但我不熟悉这个命令,是否有地方可以获取有关这些命令的其他文档?此外,我注意到变量的 set 和 get 表现得很奇怪。当我“设置”一个变量时,我注意到 FMU 结果的变化,但是当我“获取”相同的变量时,返回的不是设置的值。这是常见的行为吗?我将尝试在另一个 FMU 上重复此行为,但很好奇您能否提供见解。
-
我建议查看标准规范 (fmi-standard.org/downloads) 并查看那里的方法 do_step。另请注意,该标准有 1.0 版和 2.0 版,因此您必须检查您的 FMU 遵循哪个版本。关于 set/get 的行为,按照标准,除非调用 do_step 方法,否则不会更新值。
标签: modelica openmodelica fmi jmodelica