问题标签 [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.
python - FMU 模块和方法 get_author()
我使用 JModelica 已经很多年了,现在运行的是当前版本 2.2。我有兴趣分享(编译)FMU 模块并将我的姓名和公司放入 FMU 模块。如果您的 FMU 模块具有名称模型,那么有一个方法 model.get_author() 将带来该信息。对于我现在执行的 FMU 模块,调用此方法时我只得到一个空白结果。如何将信息放入我的模型中?对于当前版本的 JModelica,这可能吗?
python - FMU 模块方法 get_states_list()
我发现了 FMU 模块方法 get_states_list() 的限制。这种方法似乎只带来了一个连续时间状态的列表,而不是离散时间状态的列表。我通常会制作包含描述过程和控制系统的连续和离散时间子模型的模型,并且我对能够获得系统中所有状态的列表非常感兴趣。
一种可能是 get_fmu_state(),但我收到异常文本“此 FMU 不支持获取和设置 FMU 状态”。
另一种可能性可能是使用并整理出包含在声明“fixed=true”中的所有变量的更大列表,但是这个属性我不知道如何带出,尽管可以带出其他属性,例如最小值,最大值,标称。get_model_variables() 方法可能会有所帮助,但我只能得到一些与变量关联的地址……。
该怎么办?
python - FMU-module method get_variable_unit() and more
Since FMI version 2.0 we have methods: get_variable_unit() and get_variable_display_unit() that brings the information from the Modelica code for the FMU-module. What I can see there is no impact on what you obtain from get_variable_data() from the FUM-module on the results from a simulation.
Is there any python-package today that facilitate consistent handling of units in diagrams showing simulated data with JModelica, similar to what you get in for instance OpenModelica in the graphical user interface there?
modelica - 在 JModelica 中未正确调用 c 函数
我有一个 Modelica 模型:
并且c代码也如下所示:
上面的代码在 Dymola 中运行良好,但是当我在 JModelica 中运行它时,我遇到了一个问题:
在 [0,200] 期间模拟此模型时,我预计 c 函数将被调用 4 次:t=10,30,90,150。但是我在Jmodelica中发现,c函数实际上被调用了24次!
任何解释上述问题的帮助将不胜感激。
python - pyFMI Python模拟不同数量的输出点
如何精确控制模型输出的数量
我根据不同的输入参数得到不同数量的输出点:
foo 是将参数转换为正确格式的函数 thetaInit 是参数的初始值
通过将初始参数值乘以 0.9 来更改它们
对于校准问题,我需要具有相同数量的输出点。如果有人知道如何控制它。
simulink - Simulink 中的 FMI 协同仿真运行时错误
起初我在 Simulink 中将一个 simulink 模型导出到 FMU,然后使用 FMU 导入块将该 FMU 也导入到 Simulink 中,后来当我尝试运行仿真时出现以下错误,谁能帮我解决这个问题?
modelica - PyFMI/JModelica - 暂停模拟并从修改参数的状态重新启动
我正在使用 Dymola 2019 将我的 Modelica 模型转换为 FMU,然后我使用 JModelica 进行模拟(我从 2018 年 3 月 15 日开始使用 JModelica 2.2 版)。我的目标是能够模拟某个时期,分析结果,根据这些结果修改某些参数,然后在使用新参数值的同时从中断的地方继续之前的模拟。
我知道get_fmu_state
andset_fmu_state
在技术上应该能够做到这一点,但是在尝试实现它时我没有设法使它工作,并且 PyFMI 目录中似乎没有任何示例使用其中任何一个功能。我尝试了以下方法:
上面的代码在不引发任何异常的情况下工作,尽管它确实在最后打印了以下警告:WARNING:root:The simulation start time (5.000000) and the current time in the model (0.000000) is different. Is the simulation start time correctly set?
. 但更重要的是,当在一个相对复杂的模型上尝试使用 Modelicasample()
函数定期更改的离散实变量时,该离散变量的状态似乎在第二次模拟中变得不可变。它的初始值从第一次模拟结束时延续,但之后不再改变。因此,在前面的代码中,将产生与以下代码中res2
截然不同的结果:res3
即使将通信点的数量增加一倍res3
以更准确地反映,差异仍然存在res2
。我不知道为什么我的真实离散变量在使用set_fmu_state()
. 有没有人有任何想法?我没有set_fmu_state()
正确使用吗?
还值得注意的是,我也看过这个问题,但这显然需要使用compile_fmu()
而不是load_fmu()
为了使用该"state_initial_equations": True
选项(更不用说它似乎不适用于模拟中未包含的变量结果)。我也看过这个问题,但这是专门针对 Dymola 而不是 JModelica 的,并且依赖于结果文件中存在的所需状态,但情况并非总是如此。
编辑
为了让我的问题更清楚,我在下面提供了一个示例模型。
之后,使用 Dymola 2019 将此模型转换为 FMU 格式,然后使用 JModelica 在我的问题中运行 Python。首先,以下结果res3
符合预期:
但是,以下结果res2
表明,虽然连续变量在使用 时表现如预期,但另一方面set_fmu_state()
,离散变量在整个第二次模拟中不会发生变化:
python - pyFMI 参数更改不会更改模拟输出
我正在使用 pyFMI 更改初始的 2 个参数值(在可能值的范围内)并模拟模型响应我可以看到我的响应仅受 1 个变量更改的影响,而不受另一个变量更改的影响,但如果我仅用第二个变量(在初始模拟中没有变化)我可以清楚地看到对模型响应的影响。
但是,如果我只使用参数模拟我的模型响应(在上述情况下不影响模拟响应),我可以看到明显的模型响应差异。欢迎任何提示如何解决这个问题。
implementation - VC2015 中的 FMI 实现
我正在 vc2015 中实现联合仿真。当我尝试使用 LoadLibraryA 加载从 fmi1.0 生成的 dll 文件时,它成功了。但是当我尝试从 fmi2.0 加载 dll 时,它总是以 hMod=NULL 失败。任何人都知道如何解决它?
python - FMU 模块并使用 PyFMI 从 OpenModelica 传输到 Python
在 Python 环境中使用 PyFMI 加载 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 相同)。
——</p>
我的问题是,所描述的错误是在 PyFMI 还是 OpenModelica 方面,或者两者兼而有之?或者,从 OpenModelica 导出 FMU 时是否需要做一些额外的事情?