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

使用OMPython在Spyder仿真OpenModelica模型遇指定错误求助

解决Spyder中OMPython仿真OpenModelica模型的错误问题

看起来你遇到的错误是由几个连锁问题导致的,我来一步步帮你排查和解决:

1. 编码解码错误的根源

第一个错误 'utf-8' codec can't decode byte 0xd7... 说明你的Modelica文件(SystemZweiterOrdnungKausalTotal.mo)不是以UTF-8编码保存的,或者文件中包含了非ASCII的特殊字符(比如中文注释、特殊符号)。

解决方法:

  • 用记事本、VS Code等编辑器打开你的.mo文件,重新保存时选择「UTF-8」编码;
  • 移除文件中所有非英文的字符(包括注释里的中文),确保文件内容完全符合UTF-8编码规范。

2. 仿真选项设置格式错误

错误提示 stopTime !is not a simulation-option variable 是因为你用了错误的参数格式调用setSimulationOptions。OMPython的这个方法要求传入字典类型的参数,而不是字符串列表。

修正代码:
把原来的列表格式改为键值对字典:

mod.setSimulationOptions({
    "stopTime": STime,
    "stepSize": h,
    "solver": "euler"
})

3. 缺少模型编译步骤

最后抛出的 Error: application file not generated yet 是因为OMPython需要先编译模型生成可执行文件,再执行仿真。你需要在调用simulate()之前添加编译步骤。

完整修正后的脚本

import numpy as np
from numpy import linalg as la
import matplotlib.pyplot as plt
from OMPython import ModelicaSystem
from OMPython import OMCSessionZMQ

font = {'family': 'sans-serif', 'color': 'darkblue', 'weight': 'normal', 'size': 14}
h = 0.0001  # Simulationsschrittweite
STime = 0.1

# 初始化OMC会话
omc = OMCSessionZMQ()

# 加载模型(确保mo文件是UTF-8编码)
mod = ModelicaSystem("SystemZweiterOrdnungKausalTotal.mo", "SystemZweiterOrdnungKausal")

# 正确设置仿真选项
mod.setSimulationOptions({
    "stopTime": STime,
    "stepSize": h,
    "solver": "euler"
})

# 先编译模型生成应用文件
mod.buildModel()

# 执行仿真
mod.simulate()

# 获取并查看仿真结果
results = mod.getSolutions()
print(results)

额外排查建议

  • 先在OpenModelica的GUI环境中打开你的.mo模型,确保模型本身没有语法错误,能正常编译和仿真,排除模型逻辑问题;
  • 确认你的OMPython和OpenModelica版本兼容,尽量使用两者的最新稳定版,避免API不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:33:57