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

时间:2019-01-03 09:04:57

标签: python openmodelica fmi jmodelica

在带有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时应该做些额外的事情?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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