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

OMSimulator Python中replaceSubModel函数原理及FMU替换无效问题咨询

OMSimulator replaceSubModel 工作原理及替换失效问题解决

一、replaceSubModel 工作原理

  • 定位子模型:通过传入的模型路径(如sim1.Root.VfController),在已加载的SSP模型结构中精准找到待替换的子模型组件。
  • 接口兼容性校验:自动对比新FMU与原模型的输入输出变量名、数据类型、单位等接口信息,确保替换后模型逻辑能正常衔接。
  • 执行替换/校验:
    • 当dryRun=False(默认值)时,会实际修改模型文件,将原FMU的引用替换为新FMU的路径及配置。
    • 当dryRun=True时,仅完成接口兼容性检查,不会对模型做任何实际修改。

二、你的替换失效原因及修正方案

失效原因

你代码中设置了dryRun=True,这会让函数只做兼容性验证,不执行实际替换操作,所以模型里的FMU没有被更新。

修正后的代码

from OMSimulator import OMSimulator

oms = OMSimulator()
oms.importFile("sim1.ssp")
# 方案1:关闭dryRun模式
oms.replaceSubModel("sim1.Root.VfController", r"C:\Users\Njssa\OneDrive - Aalto University\Master's In Mech\Master's Thesis\Open Modelica\MotorSystem\VfController\VfController2.fmu", dryRun=False)

# 方案2:直接省略dryRun参数(默认就是False)
# oms.replaceSubModel("sim1.Root.VfController", r"C:\Users\Njssa\OneDrive - Aalto University\Master's In Mech\Master's Thesis\Open Modelica\MotorSystem\VfController\VfController2.fmu")

额外注意点

Python中字符串里的反斜杠会被当作转义字符,建议在路径前加r声明为原始字符串,避免路径解析出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:42:07