问题描述
我正在尝试使用 ModelicaSystem python 模块模拟 OpenModelica 示例模型。但是我在其构造函数中收到以下错误。如下:
代码:
import numpy as np
from matplotlib import pyplot as plt
import pyfmi
from OMPython import OMCSessionZMQ
from OMPython import ModelicaSystem
omc = OMCSessionZMQ()
model_path = '/usr/lib/omlibrary/Modelica 3.2.3/Electrical/'
omc.sendExpression('loadModel(model_path + Machines.mo)')
mod = ModelicaSystem(model_path + 'Machines.mo','Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines.aimC_Inverter')
错误:
loadFile Error: Error: Failed to insert class Machines within Modelica.Electrical;
the available classes were:
有人可以帮我吗?
解决方法
我承认 User's Guide on OpenModelica Python Interface 目前还不清楚。 ModelicaSystem
还缺少从路径中的标准库加载模型的简单方法。
loadModel
是加载 Modelica 标准库 (MSL) 的函数,请参阅 OpenModelica Scripting API for loadModel。你不能用它加载文件。
如果要使用 omc.sendExpression
,则需要使用 loadFile 从 Python 界面加载特定文件。
如果您想为 MSL 示例创建一个 ModelicaSystem
,我建议您加载所有 MSL 包:
from OMPython import OMCSessionZMQ
from OMPython import ModelicaSystem
omc = OMCSessionZMQ()
model_path = '/usr/lib/omlibrary/Modelica 3.2.3/package.mo'
mod = ModelicaSystem(model_path,'Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines.AIMC_Inverter')
您不能只加载 /usr/lib/omlibrary/Modelica 3.2.3/Electrical/Modelica 3.2.3/Electrical/Machines.mo
,因为它仍然取决于 MSL 3.2.3。
在 OMEdit 中,您会得到更精确的错误消息,但在 Python 中,您只会得到该消息的第一行。