如何使用OMPython在Python中调用OpenModelica模型?

时间:2014-01-07 07:49:53

标签: python modelica openmodelica

我有一个用OMEdit制作的OpenModelica模型。为了得到一个具体的例子,我设计了以下内容:

OpenModelica Model from OMEdit called myGain

现在我想在Python中运行该模型。我可以通过使用OMPython来做到这一点。导入OMPython并加载文件后,我使用以下命令运行模拟:

result = OMPython.execute(" simulate(myGain,numberOfIntervals = 2,outputFormat = \" mat \")")

现在运行模拟并将结果写入文件。

现在我想运行相同的模型,但是常量块的参数不同。

我该怎么做?

由于参数已编译到模型中,因此无法更改它。所以我需要的是这样的模型:

myGain with a variable as parameter

是否可以从Python调用模型并设置变量" a"特定值?

使用命令 OMPython.execute("模拟(...)")我可以指定一些环境变量,例如" numberOfIntervals"或" outputFormat"但不是更多。

3 个答案:

答案 0 :(得分:3)

您可以向simulate命令发送更多标志。例如,用于覆盖参数的simflags。有关详细信息,请参阅https://openmodelica.org/index.php/forum/topic?id=1011

您还可以使用buildModel(...)命令后跟system("./ModelName -overrideFile ...")来避免重新转换和重新编译,或者使用一些次要的脚本并行参数扫描。如果您使用Linux或OSX,则应该很容易调用OMPython来创建可执行文件,然后自己调用它。在Windows上,您需要设置一些环境变量才能使其按预期工作。

答案 1 :(得分:1)

我相信您正在寻找setParameterValue命令。您可以在此处阅读:https://openmodelica.org/download/OMC_API-HowTo.pdf

基本上,只要OMPython.execute("setParameterValue(myGain, a, 20)")是模型中的参数,就会在运行模拟的行之前向python脚本添加类似于a的行。

答案 2 :(得分:1)

  • 在Windows中创建一个新文件夹

  • 在此文件夹中放置/创建2个新文件file1.pyfile2.bat

  • file1.py内容为:


import os
import sys
sys.path.insert(0, "C:\OpenModelica1.11.0-32bit\share\omc\scripts\PythonInterface")
from OMPython import OMCSession
sys.path.insert(0, "C:\OpenModelica1.11.0-32bit\lib\python")
os.environ['USER'] = 'stefanache'
omc = OMCSession()
omc.sendExpression("loadModel(Modelica)")
omc.sendExpression("loadFile(getInstallationDirectoryPath() + \"/share/doc/omc/testmodels/BouncingBall.mo\")")
omc.sendExpression("instantiateModel(BouncingBall)")
omc.sendExpression("simulate(BouncingBall)")
omc.sendExpression("plot(h)")`
  • file2.bat内容为:

@echo off
python file1.py
pause
  • 然后点击file2.bat ...请耐心等待!

将显示绘制的结果窗口。