FMU 模块并使用 PyFMI 从 OpenModelica 传输到 Python

FMU-module and transfer from OpenModelica to Python with PyFMI

在使用 PyFMI 的 Python 环境中加载 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 相同)。

我的问题是所描述的错误是在 PyFMI 还是 OpenModelica 方面,或者两者都有?或者在从带有噪声块的 OpenModelica 导出 FMU 时是否需要做一些额外的事情才能使其正常工作?

从错误信息来看,表明FMU缺少它的一个依赖,libModelicaExternalC.so(一个FMU的所有依赖都应该包含在FMU中)。问题出在FMU的生成工具,而不是PyFMI。

在 OMEdit 中,在生成 FMU 之前,在工具->选项->FMI 中将平台设置为 "Static"。