问题标签 [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 回答
426 浏览

python - 如何使用 FMPy 获取字符串输出变量?

我正在使用 FMPy 来模拟一些具有字符串输出变量的 FMU,但这些在模拟结果中不可用(由 Simulation_fmu(filename) 返回的对象)。

这些变量是否以不同的方式处理?如果是这样,我该如何访问它们?

谢谢你。

编辑1:

我使用具有字符串输出变量 ( ) 的values.fmu 运行string_out了一个模拟。

最小的例子:

注意:要运行示例,您必须下载并安装 fmusdk,它需要 Microsoft Visual Studio 2005 (VS8)、2008 (VS9)、2010 (VS10)、2012 (VS11)、2013 (VS12) 或 2015 (VS14) 之一.

输出:

Results names and types: [('time', '<f8'), ('int_out', '<i4'), ('bool_out', '?')]

预期的:

我期望它res包含输出变量string_out

使用调试日志:

我意识到fmi2GetString永远不会调用它,因此输出不可能具有string_out. 因此,我不确定 FMPy 是否支持 TypeDefinitions String。

系统详情:

Python version: 3.7.3

FMPy version: 0.2.10

0 投票
1 回答
455 浏览

parameters - Modelica 中参数的 FMU 输入

我的电路中有几个块“FixedCurrent”。我希望能够通过 FMU 更改这些块的电流值。我可以使用“参数”更改一个值,如下面的代码所示:

但我不能为他们分配输入。例如,如果我使用输入命令 (1) 或 RealInput 块 (2) 为块 fixedCurrent3 设置电流值:

我收到相应的错误:

因此,我无法通过 FMU 输入设置参数值。我将不胜感激得到这个问题的任何解决方案。

0 投票
2 回答
1071 浏览

python - 使用 pyfmi 库在 python 中加载 fmu 时出错

我已经安装了 PyFMI 库并尝试在 python 中加载由 GT-Suite 创建的 fmu。

我正在关注 jmodelica 的本教程:

https://jmodelica.org/pyfmi/tutorial.html

这组发出警告

当我尝试加载 fmu 模型时

我收到一个错误

有人可以帮我弄这个吗。该怎么办?

'pyfmi.check_packages()' 的输出

0 投票
1 回答
482 浏览

python - 如何解决 - FMUException: 从站初始化失败

我是 FMU 世界的新手,并从它开始。我正在尝试在 Python 中加载和模拟在 GT-Suite 中创建的 FMU。我在加载 FMU 时很难解决错误,但最终可以做到。我正在关注jmodelica 教程

现在,当我尝试模拟模型时出现错误。错误是:

可能是什么原因?我的 .fmu 文件是否有问题,因为当我尝试加载和模拟从fmi-standard下载的 fmu 时,一切正常。

'RoomHeating_OM_RH.fmu'来自fmi 标准

0 投票
1 回答
320 浏览

python - 使用 pyfmi 创建 2 元组作为 fmu 模型的 model.simulate() 的输入时出错

我在 gt-suite 中创建了一个 fmu。我正在尝试使用 python PyFMI 包在 python 中使用它。我的代码

文档说,model.simulate 将输入作为其参数之一

'InputVarI','InputVarP' 是输入变量,u_traj,v_traj 是数据矩阵。

我的代码给出了一个错误给出了一个错误 -

input_object 创建错了吗?有人可以帮助如何根据文档正确创建输入元组吗?

0 投票
1 回答
416 浏览

python - FMUException: 未能设置实验

我有一个在 GT-Suite 中创建的 fmu,并试图在 python 中使用它。

我遵循了 jmodelica 教程

我的 fmu 已加载,但是当我尝试运行 model.simulate 步骤时会引发错误

我曾尝试在我的电脑的多个环境中运行它,但遇到了同样的错误。谷歌搜索了很多,但找不到任何东西。有人可以帮我解决这个问题吗?

0 投票
1 回答
51 浏览

modelica - 阵列元件的冗余连接

收到警告称我有“冗余连接(由于其他连接)”。我将一个连接HeatPort到几个通过使用数组进行扩展的组件。请参阅下面的代码段。

的使用each似乎不起作用,或者我没有正确完成。

和之间的热量平衡在数学.solid.port_a应该是正确的,但我可能没有在 Modelica 中正确设置平衡。请让我知道是否有一种方法可以创建这些连接而不会使它们变得多余。虽然这只是一个警告,但我收到了基于这些警告的以下错误。

Edit 1我已经设置了一个辅助模型,其中组件不再排列,而是在模型中复制了几次。热端口连接到其他几个热端口,但我仍然收到上述消息。连接如下所示: 冗余连接

连接方式有问题吗?

Edit 2添加代码片段。以下是冗余连接警告的相关代码。此模型有更多代码,但为简洁起见已将其删除。

0 投票
1 回答
290 浏览

python - 如何使用 PyFMI 定义依赖于模拟 FMU 输出的输入函数?

我有一个 FMU 可以使用 PyFMI 进行模拟。如何创建依赖于模拟 FMU 输出的输入函数?该文档仅提供了依赖于外部变量的输入函数的示例,例如:

如果我希望我的输入函数 u_traj 依赖于模型的输出 'y' 而不是 t,我该怎么办?

0 投票
1 回答
343 浏览

python - pyfmi.load_fmu 加载 fmu 时出错

我想通过 pyfmi.load_fmu 在 Linux 中加载“fmu”,但出现错误。

env1 中的错误 1:

找不到 GLIMDA。回溯(最后一次调用):文件“/home/user/Documents/hdh/paper/ling_min_du.py”,第 12 行,在模型 = pyfmi.load_fmu(fmu_path) 文件“src/pyfmi/fmi.pyx”,行7899,在 pyfmi.fmi.load_fmu 文件“src/pyfmi/fmi.pyx”中,第 2558 行,在 pyfmi.fmi.FMUModelCS1 中。初始化 文件“src/pyfmi/fmi.pyx”,第 1167 行,在 pyfmi.fmi.FMUModelBase 中。init File "src/pyfmi/fmi.pyx", line 45, in pyfmi.fmi.encode TypeError: latin_1_encode() argument 1 must be str, not bytes

env2中的错误:

回溯(最后一次调用):文件“ling_min_du.py”,第 26 行,在 model = pyfmi.load_fmu(fmu_path) 文件“src/pyfmi/fmi.pyx”,第 7898 行,在 pyfmi.fmi.load_fmu 文件“src /pyfmi/fmi.pyx”,第 2553 行,在 pyfmi.fmi.FMUModelCS1 中。初始化 文件“src/pyfmi/fmi.pyx”,第 1225 行,在 pyfmi.fmi.FMUModelBase 中。init pyfmi.fmi.FMUException:FMU 不包含此平台的二进制文件。

env1:我已经安装了 FMILibrary 并成功导入了 pyfmi。点子列表:

env2:我尝试通过 conda install 重新安装 pyfmi,得到一个新错误。点子列表:

0 投票
2 回答
289 浏览

emscripten - 问题:使用 emscripten 从 jmodelica 编译 FMU c 代码

问题

如果我尝试使用 emcc 编译 c 代码(来自 JModelica 导出的 FMU),我会收到一个错误,即找不到头文件“gnu/stubs-32.h”。

错误

我已经尝试通过安装 libc6-dev:i386 为编译器提供所需的头文件。但它不起作用,因为在 64 位机器上编译 32 位软件。来自 emscripten的人已经告诉我,没有可用的 32 位版本的 emcc 编译器。所以我认为唯一的方法是继续使用64位......

我在 gnu/stubs.h 中找到了负责选择错误头文件的文件:

因此我得出结论,__LP64__没有定义但应该定义为能够使用 64 位头文件。

有谁知道我如何能够用 emcc 编译 c 代码?

添加(添加 16.08.2019)

我又开始了一次尝试:

不使用系统头文件进行编译emcc -I /home/osboxes/Programme/JModelica/include/RuntimeLibrary/ -I /home/osboxes/Programme/JModelica/ThirdParty/FMI/2.0/ BouncingBall.c会导致此错误'linux/limits.h' file not found

所以我访问了包含“linux/limits.h”的文件。它是 JModelica 的头文件,名称为/../JModelica/include/RuntimeLibrary/jmi_utils.h

所以我通过传递emcc -I /home/osboxes/Programme/JModelica/include/RuntimeLibrary/ -I /home/osboxes/Programme/JModelica/ThirdParty/FMI/2.0/ BouncingBall.c -DRT给 emcc 编译器来定义“RT”,一切正常工作。

但是变量 RT 和 NRT 是什么?这样做我是否需要担心一些事情?


我的环境:

  • Ubuntu 18.10(64 位)
  • JModelica(版本 r12614)
  • Emscripten(emcc:1.3820 / clang:6.0.1 / 目标:x86_64-unknown-linux-gnu / 选定的 gcc:/usr/lib/gcc/x86_64-linux-gnu/8)