После добавления библиотек в dymola я не могу подключить его к Python через Buildingspy.

После того, как я загрузил некоторые библиотеки напрямую, когда я открываю 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\Mes documents\Dymola");

Модель отлично работает в Dymola. Но при попытке смоделировать модель через Python с использованием библиотеки Buildingspy симуляция не удалась. Любые предложения, которые помогут мне найти решение?


person Hâla    schedule 16.08.2018    source источник


Ответы (1)


Я предполагаю, что ваша проблема в том, что Buildingspy полагается на путь к рабочему каталогу по умолчанию, который Dymola получает, когда dymola.exe вызывает Buildingspy, но команды openModel в вашем dymola.mos изменяют рабочий каталог.

Использовать

openModel("<path-to-package.mo>", changeDirectory=false); 

чтобы избежать этого.

Кроме того, в более новых версиях Dymola вы должны убедиться, что не используется сохраненный каталог запуска, выбрав: «Правка» -> «Параметры» -> «Настройки» -> «Не сохранять каталог запуска». Поскольку в настоящее время вы используете Dymola 2016 FD01, в данный момент это не проблема для вас.

Такие проблемы можно обнаружить, отобразив окно Dymola, когда Buildingspy моделирует модель. Вы можете сделать это с помощью 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()

Некоторые дополнительные подсказки для вашего примера:

  • Вам не нужны вызовы Utilities.setenv() для открытия библиотеки. openModel достаточно
  • Я бы не стал использовать Utilities.setenv, так как это недокументированный и видимо очень старый пакет (дата создания 2004 год). Вместо этого используйте Modelica.Utilities.System.setEnvironmentVariable. Таким образом, вы также не загружаете лишний пакет в браузер пакетов.
  • Using the file /insert/dymola.mos has some disadvantages:
    • it is used system wide by every user, so it should not contain paths to user directories
    • если вы устанавливаете новую версию dymola, вы должны снова отредактировать файл insert/dymola.mos этой установки
  • Alternatives to dymola.mos
    • In Dymola 2016 FD01 use the file setup.mos instead to add the openModel commands (located in C:\Users\\AppData\Roaming\Dynasim)
    • В более новых версиях Dymola больше нет setup.mos, но есть setup.dymx для настроек и startup.mos для пользовательских команд (для открытия библиотек и т. д.)
person marco    schedule 12.10.2018