在我打开Dymola时,通过修改以下文件直接加载了一些库:“ c:/ program files(x86)/ dymola 2016 fd01 / insert / dymola.mos”,并添加了以下几行:
Utilities.setenv(“ MODELICAPATH”,“ C:/ Users / hrameh / Desktop / EnergySystems_V2-73p / ModelicaLibraries / ExternalMedia-master / Modelica / ExternalMedia 3.2.1”); openModel(“ C:\ Users \ hrameh \ Desktop \ EnergySystems_V2-73p \ ModelicaLibraries \ ExternalMedia-master \ Modelica \ ExternalMedia 3.2.1 \ package.mo”); Utilities.setenv(“ MODELICAPATH”,“ C:\ Users \ hrameh \ Desktop \ EnergySystems_V2-73p \ ModelicaLibraries \ EnergySystems”); openModel(“ C:\ Users \ hrameh \ Desktop \ EnergySystems_V2-73p \ ModelicaLibraries \ EnergySystems \ package.mo”); Utilities.setenv(“ MODELICAPATH”,“ \ illuin \ users $ \ hrameh \ Mesdocuments \ Dymola”);
该模型在Dymola中完全正常。但是,当尝试使用buildingspy库通过Python模拟模型时,模拟会失败。有什么建议可以帮助我找到解决方案吗?
答案 0 :(得分:0)
我猜你的问题是,buildings依赖于buildingpy调用dymola.exe时Dymola获取的默认工作目录路径-但是dymola.mos中的openModel-commands会更改工作目录。
使用
openModel("<path-to-package.mo>", changeDirectory=false);
避免这种情况。
此外,对于较新的Dymola版本,必须选择以下选项以确保不使用已保存的启动目录:编辑->选项->设置->不保存启动目录。 由于您当前正在使用Dymola 2016 FD01,因此目前这对您来说不是问题。
当buildingpy模拟模型时,通过显示Dymola窗口可以检测到此类问题。您可以使用showGUI
进行此操作,如以下最小示例所示:
import os
from buildingspy.simulate.Simulator import Simulator
os.environ["PATH"] += os.pathsep + "C:/Program Files (x86)/Dymola 2016 FD01/bin"
s = Simulator("Modelica.Blocks.Examples.PID_Controller", "dymola")
s.showGUI(show=True)
s.simulate()
有关您的示例的其他提示: