FMPy更新后doStep方法返回状态值无法获取问题咨询
FMPy更新后doStep方法状态值获取问题
我之前用的是约2年前的旧版本FMPy,2023年2月25日更新后,发现doStep方法返回状态值的逻辑变了。
之前的代码是这样的:
fmu = fmpy.fmi2.FMU2Slave(guid=model_description.guid, unzipDirectory=unzipdir, modelIdentifier=model_description.coSimulation.modelIdentifier, instanceName='instance1') status = 0 ... status = fmu.doStep(...)
这段代码原本能正常仿真,status会被赋值为对应状态:
# status # 0 - OK # 1 - warning # 2 - discard (状态信息无法返回) # 3 - error (可使用fmi2SetFMUstate重启) # 4 - fatal (需重新运行程序) # 5 - pending (仍在忙碌)
但更新后status完全不更新,看起来返回值被移除了,怎么才能获取状态值?
解决方法
更新后的FMPy版本里,FMU2Slave.doStep()不再直接返回状态值,而是把执行后的状态存储在FMU实例的status属性中。你可以修改代码,通过访问这个属性来获取状态:
fmu = fmpy.fmi2.FMU2Slave(guid=model_description.guid, unzipDirectory=unzipdir, modelIdentifier=model_description.coSimulation.modelIdentifier, instanceName='instance1') status = 0 ... fmu.doStep(...) status = fmu.status # 从实例属性获取状态值
状态值的含义和之前完全一致:
0- OK1- warning2- discard(状态信息无法返回)3- error(可使用fmi2SetFMUstate重启)4- fatal(需重新运行程序)5- pending(仍在忙碌)
内容的提问来源于stack exchange,提问作者user2024223
相关产品推荐
相关产品推荐

