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

如何通过OMPython获取“循环等式”的详细错误信息?

解答

可以通过以下几种方式在OMPython中获取详细的错误信息:

  • 启用日志输出并指定日志文件
    在调用simulate命令时,显式指定日志文件路径并开启verbose模式,完整记录编译和仿真过程:

    from OMPython import OMCSessionZMQ
    omc = OMCSessionZMQ()
    # 加载模型文件
    omc.sendExpression('loadFile("circuit.mo")')
    # 带日志参数执行仿真
    simulate_result = omc.sendExpression('simulate(circuit, logFile="circuit_error.log", verbose=true)')
    # 读取并打印日志内容
    with open("circuit_error.log", "r") as log_file:
        print(log_file.read())
    

    日志文件中会包含命令行下能看到的完整错误详情。

  • 使用getLastError()获取最新错误
    部分OpenModelica版本中getErrorString()可能失效,可尝试调用getLastError()获取最近的错误信息:

    from OMPython import OMCSessionZMQ
    omc = OMCSessionZMQ()
    omc.sendExpression('loadFile("circuit.mo")')
    omc.sendExpression('simulate(circuit)')
    # 获取详细错误
    error_details = omc.sendExpression('getLastError()')
    print(error_details)
    
  • 单独编译模型捕获错误
    先执行编译命令而非直接仿真,更早捕获模型构建阶段的错误:

    from OMPython import OMCSessionZMQ
    omc = OMCSessionZMQ()
    omc.sendExpression('loadFile("circuit.mo")')
    # 仅编译模型,不启动仿真
    build_result = omc.sendExpression('buildModel(circuit)')
    # 获取编译错误信息
    error_details = omc.sendExpression('getErrorString()')
    print(error_details)
    

另外,你的模型本身存在的核心问题是缺少接地元件,导致电路存在电压环路约束冲突(即命令行提示的“循环等式”)。在Modelica电气模型中,必须添加至少一个Modelica.Electrical.Analog.Basic.Ground元件来确定参考电位,解决这个问题后模型才能正常仿真。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:53:14