如何通过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
相关产品推荐
相关产品推荐

