在Dymola中创建的基本模型无法在JModelica中模拟 - FMU异常

时间:2018-03-05 11:31:48

标签: modelica jmodelica

我使用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中导入和模拟。不过这可能是问题吗?

1 个答案:

答案 0 :(得分:0)

从错误消息中我们得到模型中存在难以解决的块(块1),并且我们找不到具有给定上限和下限的解。根据您是否在变量上设置了最小/最大值,这可能是问题所在。这是因为所讨论的块是一维的并且使用考虑最小/最大值的Brents方法来解决。

我建议运行具有更高日志级别的模型,看看是否是这种情况。尝试然后检查日志:

model = load_fmu("...", log_level=6)
model.set("_log_level", 8)
...