问题标签 [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.
c - 如何使用 fmusdk 将 c 文件/函数导出到 FMU
这是我的功能。我正在尝试将此代码导出到fmu。我正在使用fmusdk。
对于每个周期(时间步长),
- my
input
应更改为模拟期间给出的值。 myexecute()
应该调用。input
和的值pout
应在模拟过程中存储,以便我们可以在模拟后绘制值。
我尝试了fmusdk中给出的示例(BouncingBall 和值)。我已经创建了相应的 fmus 并将它们导入 Amesim。他们工作正常。但我无法弄清楚如何为我的 C 文件/函数做同样的事情
我检查了 bouncingBall.c 和 values.c,它们只有四种方法
有人可以帮我完成这个 fmi 导出吗?简而言之,我正在寻找上述 4 个功能的内容。对上述 4 种方法的解释也足够了。我可以为函数创建内容。
fmi - 使用 FMU_SDK 模拟 FMU 的错误
我试图导出从 file.c 和 XML 创建的 fmu 但我不知道为什么当我尝试模拟“非法元素输出”时会出现这个问题
arrays - FMI 2.0 中的数组参数
在 FMI 2.0 中,数组参数被序列化为标量变量。导入工具可以将它们显示为数组,但它们的大小是固定的,处理效率低下。FMI 项目的一个工作组目前正在开发更好的数组支持,但我想知道同时如何处理数组参数的变通方法。
想法是
- 对它们进行硬编码(缺点:不再是参数......)
- 将它们放在资源文件夹中的 CSV 文件中,并在模拟开始时读取它们(缺点:不支持参数掩码,复杂)
- 将它们放在字符串参数中并在模拟开始时对其进行解析(缺点:字符串长度有限,复杂)
还有其他想法/解决方法吗?提前致谢。
fmi - fmi2:API“fmi2SetupExperiment”中输入参数容差的单位是什么
我正在为fmi 2.0.
API实现从属
我了解公差参数用于模拟期间的误差估计。
我想知道tolerance
参数的单位/值形式,例如如果tolerance
是 5%,那么 的值是tolerance
多少?是 5 还是 1.05 或其他形式?
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
matlab - 在 Matlab 中设置“高级”FMU 参数
我已经通过 Simulink 模型中的 FMI-Toolbox 实现了一些 FMU。我目前正在尝试从 FMU 设置中的“高级”选项卡中设置值,尤其是采样间隔。据我了解,参数和起始值可以通过 fmuSetValueSimulink() 设置,但也可以设置高级值吗?
非常感谢!菲利克斯
python - 使用 PyFMI 进行敏感性分析 - for-loop 中的 FMU
主要目标
区域供热网络的敏感性分析。
方法
使用 AixLib 和 BuildingSystem 库的系统 Modelica 模型(在 Dymola 中)
将模型导出为 FMU 联合仿真
使用 SALib(敏感性分析 python 库)定义样本(参数扫描)
使用 PyFMI 在 Python 中的 for 循环中为所有单个样本运行模型(并并行化 for 循环,可能使用 JobLib 在多个处理器上执行模拟)
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代码
更新
我做了一些更多的测试,这就是我发现的:
根据 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:
- 即使
load_fmu
在 for 循环内也能正常工作(但速度较慢) - 此经验与第 5.4.2 章 ( http://www.jmodelica.org/api-docs/usersguide/2.1/ch05s04.html#d0e1854 ) 中JModelica 文档中给出的示例不对应,其中
load_fmu
命令在 for -环形 - for 循环中需要命令
model.reset()
or (与 Dymola FMU 相反) -> 为什么?model.instatiate()
我的问题:
执行循环的正确原因是什么,该循环以不同的参数多次模拟 FMU 模型?
model.reset()
using或model.instatiate()
none 和有什么区别?
附件
model.reset()
这是一个图表,显示了带有和不带有它
的 for 循环之间的区别。
从 JModelica 导出的 FMU(不需要任何许可证)可以在这里下载:http ://www.jmodelica.org/27925#comment-6668
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
有谁知道可能是什么原因?
提前致谢!
c++ - 在模拟期间更改 FMI 变量/函数
我有一个简单的 FMU 文件,其中包含一个将 u 作为输入并输出 y 的正弦块。在这种情况下,u 设置为等于时间。在我的 C++ 代码中,我从FMILibrary加载了 FMI 库,并完成了所有必要的步骤,直到我想给我的输入 ua 新的 pi 值(如 3.14)。所以我去了:
即使我试图给它一个新的值,你仍然设置为时间。我错过了什么?
PS。在哪里可以找到有关 FMI 库函数的更详细说明?目前我只能找到输入输出描述或者我又错过了什么。
更新:经过几次试验,我认为这个问题可能是因为我试图重新定义我的方程 u = time。换句话说,当我将 u 变量更改为 openmodelica 中的 RealInput 块时,一切正常。那么如果我真的想重新定义某个方程呢?我需要做什么?
gpu - 使用 GPU 执行 FMU
我目前正在使用 FMI 进行模拟。由于性能问题,我正在寻找在 GPU 上执行 FMI 的解决方案。
是否存在直接在 GPU(高级)上执行 FMI 的解决方案?
问候