问题标签 [fmi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1013 浏览

c - 如何使用 fmusdk 将 c 文件/函数导出到 FMU

这是我的功能。我正在尝试将此代码导出到fmu。我正在使用fmusdk

对于每个周期(时间步长),

  1. myinput应更改为模拟期间给出的值。
  2. myexecute()应该调用。
  3. input和的值pout应在模拟过程中存储,以便我们可以在模拟后绘制值。

我尝试了fmusdk中给出的示例(BouncingBall 和值)。我已经创建了相应的 fmus 并将它们导入 Amesim。他们工作正常。但我无法弄清楚如何为我的 C 文件/函数做同样的事情

我检查了 bouncingBall.c 和 values.c,它们只有四种方法

有人可以帮我完成这个 fmi 导出吗?简而言之,我正在寻找上述 4 个功能的内容。对上述 4 种方法的解释也足够了。我可以为函数创建内容。

0 投票
1 回答
101 浏览

fmi - 使用 FMU_SDK 模拟 FMU 的错误

我试图导出从 file.c 和 XML 创建的 fmu 但我不知道为什么当我尝试模拟“非法元素输出”时会出现这个问题

在此处输入图像描述

0 投票
1 回答
339 浏览

arrays - FMI 2.0 中的数组参数

在 FMI 2.0 中,数组参数被序列化为标量变量。导入工具可以将它们显示为数组,但它们的大小是固定的,处理效率低下。FMI 项目的一个工作组目前正在开发更好的数组支持,但我想知道同时如何处理数组参数的变通方法。

想法是

  • 对它们进行硬编码(缺点:不再是参数......)
  • 将它们放在资源文件夹中的 CSV 文件中,并在模拟开始时读取它们(缺点:不支持参数掩码,复杂)
  • 将它们放在字符串参数中并在模拟开始时对其进行解析(缺点:字符串长度有限,复杂)

还有其他想法/解决方法吗?提前致谢。

0 投票
2 回答
141 浏览

fmi - fmi2:API“fmi2SetupExperiment”中输入参数容差的单位是什么

我正在为fmi 2.0.API实现从属

我了解公差参数用于模拟期间的误差估计。

我想知道tolerance参数的单位/值形式,例如如果tolerance是 5%,那么 的值是tolerance多少?是 5 还是 1.05 或其他形式?

0 投票
0 回答
237 浏览

python-2.7 - PyFMI:在调用 FMU 2.0 的 load_fmu() 期间,Python 停止使用异常代码 0xc0000005

我使用 PyFMI 作为 FMU 主机来测试我的工具,该工具充当 FMU 2.0 从机。

当我调用 load_fmu('fmuFile.fmu', log_level=5) 函数来加载 fmu 时,python.exe 正在崩溃。

当我检查事件查看器时,它显示异常代码 0xc0000005。

如何修复此错误或如何获取有关此错误的更多信息?

注意:当我的工具充当 FMU 1.0 从站时,pyFMI 工作正常。我对 FMU 1.0 和 FMU 2.0 使用相同的 python

以下是事件查看器的摘录:

错误应用程序名称:python.exe,版本:0.0.0.0,时间戳:0x56634a05 错误模块名称:未知,版本:0.0.0.0,时间戳:0x00000000 异常代码:0xc0000005 错误偏移量:0x00000000 错误进程 id:0x3328 错误应用程序启动时间:0x01d3375493d4b63f 错误应用程序路径:C:\JModelica.org-SDK-1.12\Python27\python.exe 错误模块路径:未知报告 ID:e9932029-a347-11e7-bb26-40b0341357d4

0 投票
0 回答
306 浏览

matlab - 在 Matlab 中设置“高级”FMU 参数

我已经通过 Simulink 模型中的 FMI-Toolbox 实现了一些 FMU。我目前正在尝试从 FMU 设置中的“高级”选项卡中设置值,尤其是采样间隔。据我了解,参数和起始值可以通过 fmuSetValueSimulink() 设置,但也可以设置高级值吗?

非常感谢!菲利克斯

0 投票
2 回答
2198 浏览

python - 使用 PyFMI 进行敏感性分析 - for-loop 中的 FMU

主要目标

区域供热网络的敏感性分析。

方法

  1. 使用 AixLib 和 BuildingSystem 库的系统 Modelica 模型(在 Dymola 中)

  2. 将模型导出为 FMU 联合仿真

  3. 使用 SALib(敏感性分析 python 库)定义样本(参数扫描)

  4. 使用 PyFMI 在 Python 中的 for 循环中为所有单个样本运行模型(并并行化 for 循环,可能使用 JobLib 在多个处理器上执行模拟)

  5. SALib 执行基于方差的敏感性分析 ( http://salib.readthedocs.io/en/latest/basics.html#an-example )

第一步

Ishigami 函数的简单 modelica 模型(不依赖于时间)。该功能常用于测试敏感性分析方法(https://www.sfu.ca/~ssurjano/ishigami.html)。

python 代码(包括使用 PyFMI 和参数扫描加载 FMU)工作正常。

问题

经过一定数量的模拟后,我们得到一个错误。错误输出看起来并不总是相同的。有时我们得到

FMUException:加载二进制文件时出错。无法加载 DLL:Eine DLL-Initialisierungsroutine ist fehlgeschlagen。

翻译:DLL 初始化例程失败。

有时我们会得到:

FMUException:加载二进制文件时出错。无法加载 DLL:Für diesen Befehl ist nicht genügend Speicher verfügbar。

翻译:没有足够的内存可用于此命令。

该错误发生在大约 650 次模拟运行之后。这不取决于模拟是在较小的循环块中执行的,这些循环块是一个接一个地重新运行的,还是一个单独的 for 循环贯穿所有模拟。通过重新启动 python 控制台/进程,可以再次运行新的模拟。

工作环境:

Windows 10、Python 2.7、使用 pip(不是 JModelica)安装的 PyFMI、Jupyther notebook 上的 Python 编码(在 Mozilla Firefox 上)

我们只有 python 和 PyFMI 的基本知识,并且真的在为这个错误而苦苦挣扎!

附件

您可以在下面找到

  • 用于从 Dymola 导出协同仿真 FMU 的 Modelica 模型(使用 CVode)

  • Python 代码作为 py 文件

  • python代码的输出散点图。

我还在JModelica论坛发了一个帖子,可以直接下载文件(FMU、Jupyter notebook等): http ://www.jmodelica.org/27925

模型

Python代码

python脚本的输出图 在此处输入图像描述

更新

我做了一些更多的测试,这就是我发现的:

根据 FMU 是从 Dymola 还是从 JModelica 导出的,行为会有所不同:

使用从 Dymola 导出的 FMU:

  • 从for循环中取出这load_fmu条线似乎有效
  • 即使load_fmu不在 for 循环中,有时也会崩溃
  • model.reset()在命令之前添加新行model.set(...)似乎可以正常工作
  • 有或没有模拟时的结果是不同的 model.reset() -> 为什么?
  • model.instantiate()而不是model.reset()-> 不起作用。任务管理器中的内存使用量上升到大约 350 MB,然后

    FMUException:无法实例化模型。请参阅日志以获取更多信息。

log_level=4 的日志文件:

使用从 JModelica 导出的 FMU:

我的问题:

执行循环的正确原因是什么,该循环以不同的参数多次模拟 FMU 模型?

model.reset()using或model.instatiate()none 和有什么区别?

附件

model.reset()这是一个图表,显示了带有和不带有它 的 for 循环之间的区别。在此处输入图像描述

从 JModelica 导出的 FMU(不需要任何许可证)可以在这里下载:http ://www.jmodelica.org/27925#comment-6668

0 投票
1 回答
512 浏览

python - pyfmi 的 ImportError

我打算在我们的大学 Linux HPC 集群上使用 pyfmi。构建 FMILibrary 并安装 pyfmi 不会引发任何错误。但是,当我尝试在 python 中导入 pyfmi 时收到以下错误消息:

文件“/home/user/.local/lib/python2.7/site-packages/pyfmi/init .py”,第 24 行,从.fmi导入 FMUModel、load_fmu、FMUModelME1、FMUModelME2 导入错误:/home/user/。 local/lib/python2.7/site-packages/pyfmi/fmi.so:未定义符号:__intel_sse2_strcpy

有谁知道可能是什么原因?

提前致谢!

0 投票
1 回答
454 浏览

c++ - 在模拟期间更改 FMI 变量/函数

我有一个简单的 FMU 文件,其中包含一个将 u 作为输入并输出 y 的正弦块。在这种情况下,u 设置为等于时间。在我的 C++ 代码中,我从FMILibrary加载了 FMI 库,并完成了所有必要的步骤,直到我想给我的输入 ua 新的 pi 值(如 3.14)。所以我去了:

即使我试图给它一个新的值,你仍然设置为时间。我错过了什么?

PS。在哪里可以找到有关 FMI 库函数的更详细说明?目前我只能找到输入输出描述或者我又错过了什么。

更新:经过几次试验,我认为这个问题可能是因为我试图重新定义我的方程 u = time。换句话说,当我将 u 变量更改为 openmodelica 中的 RealInput 块时,一切正常。那么如果我真的想重新定义某个方程呢?我需要做什么?

0 投票
0 回答
184 浏览

gpu - 使用 GPU 执行 FMU

我目前正在使用 FMI 进行模拟。由于性能问题,我正在寻找在 GPU 上执行 FMI 的解决方案。

是否存在直接在 GPU(高级)上执行 FMI 的解决方案?

问候