我在用PyFMI模拟EnergyPlus-FMU时遇到麻烦。我使用参考建筑模型创建了一个EnergyPlus FMU。我正在使用PyFMI2.5。如何运行do_step()函数?
from pyfmi import load_fmu
model = load_fmu("MyEnergyplus.fmu")
start_time = 0
final_time = 60.0 * 60 * 24 * 3 #seconds
step_size = 60 # seconds
opts = model.simulate_options()
idf_steps_per_hour = 60
ncp = (final_time - start_time)/(3600./idf_steps_per_hour)
opts['ncp'] = ncp
t = 0
status = model.do_step(current_t = t, step_size= step_size, new_step=True)
我得到的错误:
File "test_fmi2.py", line 15, in <module> status = model.do_step(current_t = t, step_size= step_size, new_step=True)
AttributeError: 'pyfmi.fmi.FMUModelME2' object has no attribute 'do_step'
我仔细检查了PyFMI的API,没有发现任何问题。 如何启用仿真?谢谢。
答案 0 :(得分:3)
从输出中我们可以看到,您加载的FMU是不具有do step功能的Model Exchange FMU(只有Co-Simulation FMU具有)。有关不同FMU类型的更多信息,请参阅FMI规范。
要模拟Model Exchange FMU,请使用“模拟”方法。 “仿真”方法也可用于协同仿真FMU,并且是进行仿真的首选方式
答案 1 :(得分:0)
不知道如何设置fmu,我至少可以说您忘记了model.initialize(start_time,final_time)
。