You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 - OK
  • 1 - warning
  • 2 - discard(状态信息无法返回)
  • 3 - error(可使用fmi2SetFMUstate重启)
  • 4 - fatal(需重新运行程序)
  • 5 - pending(仍在忙碌)

内容的提问来源于stack exchange,提问作者user2024223

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:10:12