我使用buildings library package中的组件在Dymola中创建了一个热水储存缸的基本模型。我已将模型保存为.mo文件,并成功编译了fmu并在JModelica中加载了模型。当我模拟使用时会出现问题:
res = model.simulate(final_time=100000)
这会导致以下错误消息:
FMUException Traceback(最近一次调用 最后)in() ----> 1 res = model.simulate(final_time = 100000)
pyfmi.fmi.FMUModelME1.simulate中的src \ pyfmi \ fmi.pyx (SRC \ pyfmi \ fmi.c:35608)()
pyfmi.fmi.ModelBase._exec_simulate_algorithm中的src \ pyfmi \ fmi.pyx (SRC \ pyfmi \ fmi.c:6045)()
pyfmi.fmi.ModelBase._exec_simulate_algorithm中的src \ pyfmi \ fmi.pyx (SRC \ pyfmi \ fmi.c:5936)()
C:\ JModelica.org-2.1 \ install \ Python \ pyfmi \ fmi_algorithm_drivers.pyc in init (self,start_time,final_time,输入,模型,选项) 如果isinstance为300(self.model,fmi.FMUModelME1): 301 self.model.time = start_time #Set初始化之前的开始时间 - > 302 self.model.initialize(tolerance = rtol) 303 304 elif isinstance(self.model,fmi.FMUModelME2)或isinstance(self.model,fmi_coupled.CoupledFMUModelME2):
pyfmi.fmi.FMUModelME1.initialize中的src \ pyfmi \ fmi.pyx (SRC \ pyfmi \ fmi.c:34954)()
FMUException:返回Initialize并显示错误。检查日志 信息(FMUModel.get_log)。
根据建议,我使用model.get_log()
检查了日志,这也没有多大意义:
FMIL:module =型号,日志级别= 2:[错误] [FMU状态:错误]无法将根括在“1”中。下部和上部均处于边界。
FMIL:module = Model,log level = 2:[INFO] [FMU status:Error]初始化失败。
FMIL:module = Model,log level = 2:[ERROR] [FMU status:Error]无法在name =“block”>“1”中括起根。下部和上部均处于边界。
FMIL:module = Model,log level = 2:[INFO] [FMU status:Error]初始化失败。
FMIL:module =型号,日志级别= 2:[错误] [FMU状态:错误] category =“error”>无法在name =“block”>“1”中括起根。下部和上部都是>界限。
FMIL:module = Model,log level = 2:[INFO] [FMU status:Error]初始化失败。
FMIL:module =型号,日志级别= 2:[错误] [FMU状态:错误] category =“error”>无法在name =“block”>“1”中括起根。下部和上部都是>界限。
FMIL:module = Model,log level = 2:[INFO] [FMU status:Error]初始化失败。
有关此处发生的事情的任何建议?我听说很多人用Dymola构建系统,保存脚本然后在JModelica中导入和模拟。不过这可能是问题吗?
答案 0 :(得分:0)
从错误消息中我们得到模型中存在难以解决的块(块1),并且我们找不到具有给定上限和下限的解。根据您是否在变量上设置了最小/最大值,这可能是问题所在。这是因为所讨论的块是一维的并且使用考虑最小/最大值的Brents方法来解决。
我建议运行具有更高日志级别的模型,看看是否是这种情况。尝试然后检查日志:
model = load_fmu("...", log_level=6)
model.set("_log_level", 8)
...