1

在 Python 环境中使用 PyFMI 加载 OpenModelica FMU 模块(带有 MSL 噪声模块)不起作用。

我试图在 PyFMI 环境中运行从 OpenModelica 导出的 FMU 模块。确定性模型工作正常。

但是,当我使用 MSL 块 Modelica.Blocks.Noise.NormalNoise 包含噪声模型时,我会得到一个 FMU,它在加载到 PyFMI 环境时会出现问题。错误文本以:

FMUException:加载二进制文件时出错。无法加载 DLLL:libModelicaExternalC.so.0:无法打开共享对象文件:没有这样的文件或目录。

不用说,但在 OpenModelica 中,带有噪声的系统运行良好。JModelica 中的相同代码以及使用 PyFMI 在 Python 环境中编译和加载的代码也运行良好。然而,OpenModelica 和 JModelica 中相同种子的随机噪声序列不同,这表明存在一些差异。

对于这个例子,我在 Docker Linux 中运行 JModelica 和 PyFMI 2.1 版,OpenModelica 也在 Linux 环境中运行。由于 Linux 在两者中我都可以传输 FMU 模型。JModelica 和 OpenModelica 都支持 Modelica 标准 3.2.2 和相应的 MSL。

我还刚刚使用来自 mclab 的 Docker Linux 映像使用 JModelica 和 PyFMI 2.4 版(或至少 2.2 版)测试了该示例。我得到与 2.1 相同的错误文本(并且没有噪音块,它的工作原理与 2.1 相同)。

——</p>

我的问题是,所描述的错误是在 PyFMI 还是 OpenModelica 方面,或者两者兼而有之?或者,从 OpenModelica 导出 FMU 时是否需要做一些额外的事情?

4

2 回答 2

3

在 OMEdit 中,在生成 FMU 之前,在 Tools->Options->FMI 中将 Platfoms 设置为“Static”。

于 2019-01-07T14:22:17.510 回答
2

从错误消息中,它表明 FMU 缺少其依赖项之一 libModelicaExternalC.so(FMU 的所有依赖项都应包含在 FMU 中)。问题在于 FMU 的生成工具,而不是 PyFMI。

于 2019-01-04T11:37:09.997 回答