2014-01-07 15 views
6

Ich habe ein OpenModelica-Modell mit OMEdit gemacht. Um ein konkretes Beispiel zu bekommen entworfen ich folgende:Wie kann ich ein OpenModelica-Modell in Python mit OMPython aufrufen?

OpenModelica Model from OMEdit called myGain

Nun möchte Ich mag das Modell in Python laufen. Ich kann dies tun, indem ich OMPython benutze. Nach OMPython Importieren und Laden der Dateien, die ich den folgenden Befehl verwenden, um die Simulation auszuführen:

result = OMPython.execute ("simulieren (myGain, numberOfIntervals = 2, output = \" mat \ ")")

Die Simulation läuft jetzt und die Ergebnisse werden in eine Datei geschrieben.

Jetzt möchte ich das gleiche Modell aber mit einem anderen Parameter für den konstanten Block ausführen.

Wie kann ich das tun?

Da der Parameter in das Modell kompiliert wird, sollte es nicht möglich sein, es zu ändern. Also, was ich brauche, ist ein Modell wie folgt aus:

myGain with a variable as parameter

Ist es möglich, das Modell von Python zu rufen und die Variable „a“ auf einen bestimmten Wert?

Mit dem Befehl OMPython.execute („simulieren (...)“) ich einige Umgebungsvariablen wie „numberOfIntervals“ angeben oder „output“, aber nicht mehr.

Antwort

2

Sie können dem Simulate-Befehl weitere Flags senden. Zum Beispiel Simflags zum Überschreiben von Parametern. Details finden Sie unter https://openmodelica.org/index.php/forum/topic?id=1011.

Sie können auch den Befehl buildModel(...) verwenden, gefolgt von system("./ModelName -overrideFile ..."), um eine erneute Übersetzung und erneute Kompilierung zu vermeiden oder mit kleineren Scriptingparallelparameter-Sweeps. Wenn Sie Linux oder OSX verwenden, sollte es einfach sein, OMPython aufzurufen, um die ausführbare Datei zu erstellen und sie dann selbst aufzurufen. Unter Windows müssen Sie einige Umgebungsvariablen einrichten, damit es wie erwartet funktioniert.

0

Ich glaube, Sie suchen nach dem setParameterValue Befehl. Sie können hier darüber lesen: https://openmodelica.org/download/OMC_API-HowTo.pdf

Grundsätzlich Sie vor der Zeile eine Zeile wie OMPython.execute("setParameterValue(myGain, a, 20)") zu Ihrem Python-Skript hinzufügen würden, wo Sie die Simulation laufen, solange a ein Parameter im Modell ist.

0
  • Erzeuge einen neuen Ordner in Windows

  • In diesem Ordner put/erstellen 2 neue Dateien file1.py und file2.bat

  • Der file1.py Inhalt ist:


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)")` 
  • die Datei2.Fledermaus-Gehalt:

@echo off 
python file1.py 
pause 
  • dann auf file2.bat klicken ... und bitte etwas Geduld!

Das Ergebnisfenster wird angezeigt.