【问题标题】:Simulate with dymola python package not possible - dsres.mat not found无法使用 dymola python 包进行模拟 - 未找到 dsres.mat
【发布时间】:2019-02-01 16:14:31
【问题描述】:

我尝试使用 python 模拟我的库的简单模型:

dymola.translateModel("path.to.model")

output = dymola.simulateExtendedModel('path.to.model')
log = dymola.getLastErrorLog()
print(log)
print(output)

输出是:

翻译 = 真

输出 =

Failed
Not possible to open file "dsres.mat": No such file or directory
 = false, {}

[False, []]

似乎模型翻译得很好,但没有完成/开始模拟。

编辑:

  • 许可证状态正确
  • 使用 DymolaInterface(showwindow=False) 表明已加载正确的模型及其所有依赖项
  • 很多警告(F.e. 使用了错误的单位),但模型使用 dymola 模拟得很好

错误信息:

还有: 我正在使用Modelica.Utilities.Files.loadResource(modelica://ProjectFolder/Data/Files/file.csv) 将一些文件加载​​到模型中。

编辑2:

  • 在项目中,我有两个包,一个包含模拟中使用的所有模型,另一个用于实际模拟的模型。
  • 使用基本模型模拟第一个包中的检查模型可以正常工作。
  • 将第二个包中的内容移到第一个包中并不能解决同样的错误
  • 模拟真实模型不起作用。为什么模拟第二个包中的模型不起作用?

【问题讨论】:

  • file:///C:/Program%20Files/Dymola%202019%20FD01/Modelica/Library/python_interface/doc/index.html 有一些文档,其中包含示例。这些对你有用吗?此外,如果上面的示例完整,即包括导入语句、使用 MSL 中的模型而不是 path.to.model 等,那么对您的帮助会更容易。
  • 用 MSL 模拟工作!将在星期一编辑我的问题..
  • Python 支持字符串的单引号和双引号,所以这不是问题。听起来您从 Python 开始的 Dymola 缺少许可证。使用dymola = DymolaInterface(showwindow=True) 启动Dymola 窗口并在GUI 中检查或使用函数RequestOption("Standard")
  • 自 Dymola 2018 FD01 起,您可以使用提到的函数 RequestOption() 来执行此操作,该函数可用作 python 函数并在 DymolaCommands 库中的 Dymola 中提供。
  • 尝试创建一个最小的示例并将其发布在此处。以目前的信息很难提供帮助。

标签: python modelica dymola


【解决方案1】:

解决了这个问题:

由于我使用的库预先加载了其他库,因此必须在加载期间设置 EnvironmentVariables:

model.executeCommand('Modelica.Utilities.System.setEnvironmentVariable("{}", "{}");'
                               .format("startupscript",repopath + "/libaryXY.mos"))

这些环境变量是在我在没有 Python 的情况下打开 Dymola 时使用的 load.mos 脚本中设置的。

没有这些,Dymola 无法找到必要的 csv 文件。

【讨论】:

  • 嗯,根据给定的信息,我们不可能知道。
  • 是的,如果我知道的话,我会把它包括在内。我只是忘了检查加载脚本..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2015-08-17
相关资源
最近更新 更多