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

simulink - 在 Simulink 中初始化 Dymola FMU

我在尝试使用 Simulink 中的 fmu 文件模拟模型时遇到了一个问题:

我正在使用 Dymola/Simulink 接口的 Modelon FMI 工具箱将 Model-Exchange 类型的 fmu 文件(1.0 版)导入 Simulink 模型。我有一个 Matlab m 文件,它以编程方式依次模拟模型,保存模型的最终内部状态以在下一次模拟中进行初始化。模拟的第一次迭代运行没有错误,但在第二次迭代中,Matlab 在调用模拟时返回以下错误:

模块 = partial_run_sim2/BasicModels.System_model_final_Sim,日志级别 = 错误:[][FMU 状态:错误] fmiInitialize:dsblock_ 失败,QiErr = 1
模块 = partial_run_sim2/BasicModels.System_model_final_Sim,日志级别 = 错误:[][FMU 状态:错误]可能的错误(非详尽): 1. 未找到许可证文件。使用环境变量“DYMOLA_RUNTIME_LICENSE”来指定您的 Dymola 许可证文件。2. 模型引用了目标机器上不存在的外部数据,至少不在同一位置。'partial_run_sim2/BasicModels.System_model_final_Sim' 中的 S-function 'sfun_fmu_me_1_0' 报告的错误:fmiInitialize 在 initialize_fmu_model_first_time 返回错误。有关 FMU 模型打印的更多信息,请参阅命令窗口。

我知道我的 Dymola 和 FMI 工具箱许可证是最新的。

m文件中的模拟调用是:

其中“model”是 Simulink .slx 模型文件,“model_cs”是 Simulink 配置设置变量。我已经设置了配置,以便模型从工作区加载初始状态,并且我已经将之前的迭代最终状态保存到该工作区变量。此操作也发生在第一次迭代中,尽管初始状态与 fmu 文件中的默认初始状态相同。我怀疑第一次迭代运行没有问题,因为初始化与默认值相同,但随后的迭代具有不同的初始化值,这与 fmu 块不一致。

我知道使用 fmi 函数在 Matlab 中模拟 fmu 文件的能力,但是这些方法不允许对系统状态进行尽可能多的透明度,这阻碍了顺序模拟。但是,我对任何允许这种模拟的方法持开放态度。

非常感谢有关在 Matlab/Simulink 中的 fmu 文件中初始化系统状态的任何建议。谢谢你。

0 投票
2 回答
994 浏览

matlab - 使用 Matlab 在 FMI 工具箱块中设置初始值

(这个问题和我之前发过的问题差不多,但是情况变了……)

我正在使用 Dymola/Simulink 接口的 Modelon FMI 工具箱将 Model-Exchange 类型的 fmu 文件(1.0 版)导入 Simulink 模型。我有一个 Matlab m 文件,它以编程方式依次模拟模型,保存模型的最终内部状态以在下一次模拟中进行初始化。

m文件中的模拟调用是:

其中“model”是 Simulink .slx 模型文件,“model_cs”是 Simulink 配置设置变量。我已经设置了配置,以便模型从工作区加载初始状态,并且我已经将之前的迭代最终状态保存到该工作区变量。

但是,当我运行我的代码时,模型中没有设置初始化值,并且仿真结果表明,每次运行仿真时,模型输出都会重置为其初始值。这种行为向我表明,状态没有使用工作区变量值进行初始化,但在模拟过程中没有设置错误。我已经确认为每次迭代加载和卸载模型没有帮助。

非常感谢有关在 Matlab/Simulink 中的 fmu 文件中初始化系统状态的任何建议。谢谢你。

0 投票
2 回答
1495 浏览

dymola - 如何使用 dymola 生成具有 64 位 dll 的 FMU

我需要使用生成带有64-bit-dll 的fmu-file。 条件是: 我使用,但fmu-file32-bit-dll 我搜索了互联网,我发现我应该设置标志 Advanced.CompileWith64=2。但问题是,我找不到设置 Advanced.CompileWith64=2 的位置。 任何人都知道我可以在哪里设置 Advanced.CompileWith64 的值?


0 投票
1 回答
2371 浏览

modelica - 处理 FMU 的 C/C++ 库

你知道是否有一个 C 库来处理 FMU 和运行模拟,包括一个好的求解器?

据我所知有:

  • QTronic 的 FMUSDK
  • Modelon 的 FMI 库

两者都可以打开 FMU,但只允许运行 FMU 以使用简单的欧拉求解器进行联合仿真。

包括处理不连续性但不在 C 中的良好求解器的库是:

  • Modelon 的 PyFMI:对于 Python
  • 来自 Ptolemy 的 JFMY:对于 Java(不确定这是否包括一个好的求解器)
0 投票
2 回答
2232 浏览

dymola - 协同仿真 dymola fmu 文件不能被 fmuchecker 仿真

我们正在尝试测试 Dymola 的协同仿真选项并创建了一个 fmu 文件。我们从 www.fmi-standard.org 安装/构建了 FMILibrary-2.0b2 和 FMUChecker-2.0b1。

我在尝试运行我的同事使用 Dymola 创建的 fmu 文件的 FMUChecker (fmuCheck.linux32) 时遇到问题。Wenn 我用我的 Dymola 许可证从同一个 Dymola 模型创建了一个 fmu 文件,这个问题是不可重现的。因为 fmuCheck.linux32 运行良好,没有任何错误消息。我的同事可以毫无问题地运行这两个文件!

由于我们的目标是使用此选项进行联合仿真,因此我尝试在没有 Dymola 的 PC 上运行 fmu 文件,但我的 fmu-copy 和我的同事创建的文件再次出现相同的错误。

这是错误消息

我认为 fmu 文件不需要模拟 Dymola 许可证,因此我看不出此模拟失败的原因。这种奇怪行为的原因可能是什么?

部分是此问题的相同错误消息 在 Simulink 中初始化 Dymola FMU

任何建议都非常感谢。谢谢你。

0 投票
0 回答
280 浏览

events - OpenModelica 内部错误 reinit 调用了错误的参数?

我正在编写一个程序,该程序从功能模型单元生成一个完整的 Modelica 模型。当我在 Dymola 中模拟模型时它工作得很好,但在 OpenModelica 中我得到了这个错误:

触发事件后,我调用reinit(states, fmiGetContinuousStates(...));where以模型的新状态返回。fmiGetContinuousStates有人知道是什么导致了这个问题吗?

编辑:这是我的程序生成的模型。我现在有一个错误Error: type in operand to change must be simple type in component <NO COMPONENT>.

0 投票
3 回答
1913 浏览

python - FMU FMI 模拟,设置某些类型的参数时不修改结果

我为示例开发了一个基于 MSL 流体库的简单 Modelica 模型。我将 MassFlowSource 与管道和 Boundary_PT 连接为接收器功能,如下图所示:

http://www.casimages.com/img.php?i=14061806120359130.png

我用 OpenModelica 生成了一个 FMU 包(在模型交换模式下)。我用 python 管理这个 FMU 包,代码如下:

目的是在您更改模型中的参数时显示问题,这里是源组件中的“m_flow”变量。这个新设置为“2”应该会改变管道中的“m_flow”,但它不会。结果:在第一次模拟中,“m_flow”都为“1”,这是正常的,因为模型是这样设置的。在第二个模拟中,我在源中将参数设置为“2”,但管道“m_flow”保持为“1”(应该是“2”)。 http://www.casimages.com/img.php?i=140618060905759619.png

Modelica 中流体源的模型是这个(只是我们感兴趣的部分):

我认为 FMU 在 if 条件下不考虑参数。对我来说这是一个问题,因为我需要管理 FMU 并确保如果我设置一个参数,模拟将使用这个新设置。如何确保 FMU/FMI 运行良好?我们无法在 FMU 中管理的参数类型的详尽列表在哪里?

我已经知道在 FMU 管理中不能考虑改变方程数量的参数(与改变 DAE 索引的变量相同)。

0 投票
0 回答
165 浏览

modelica - 来自 Dymola 的 FMU 衍生值参考

这个问题是关于 Dymola 如何将值引用 (VR) 分配给其变量(尤其是导数)。我知道这有点像关于如何分配 VR 的秘密,但我们将不胜感激。

例如,我有一个从 Dymola 导出的模型,衍生变量的 VR 看起来像这样

可以发现,从der_1der_6的 VR 是一致的,除了der_4。并且不一致因为这个der_4也是一个状态,所以这个VR和它的状态VR是一样的。所以我很理解这部分。

我的问题是关于最后两个 VR。它们突然变得不一致,它们不是状态变量。我不明白为什么。

我查看了模型中的那些变量,我发现那些导数似乎有这样的形式

所以我相信 Dymola 有理由为这些变量分配不同的 VR。(代数环?)

这些衍生物有什么具体的名字吗?以及如何在 Dymola 中处理这些衍生物?

谢谢

0 投票
5 回答
1940 浏览

python-2.7 - 准备 FMU:为模型输入交换模型参数

我想将 Modelica 模型导出为 FMU 以使用 Dymola 2014 进行协同仿真。我计划使用 pyfmi 完成协同仿真。

为了测试这一点,我试图模拟通过两个流体边界之间的管道的流体流动。我希望将流体源的压力作为模型的输入。我的计划是在外部计算这个压力,并在每个时间步输入 Modelica 模型。

我的所有标准库组件的初始模型是:

然后我将其包装在两个测试模型中:

并使用参数类型,这是根据@Thierry 的建议完成的

运行这些模型给了我相同的结果:

没有变量类型。

带参数输入

两种模型都在 Dymola 中工作。

现在我希望加载 fmu 并使用 pyfmi 进行模拟,所以我编写了这个脚本:

失败并给我以下错误:

从追溯:

鉴于模型在 Dymola 中正确模拟,什么可能导致此解析错误?

  • 我也尝试使用 CS 1.0 导出并引发相同的异常,尽管这次读取 fmu 的模块不同。

  • 我认为通过同时删除inputparameter标签会出现一些神秘的变量问题,但没有。即使使用 parameter标签,Test_2我也会引发相同的异常(CS 2.0)。

摘要:Dymola 2014、python 2.7.x、FMI for CO-simulation 2.0

0 投票
0 回答
1067 浏览

initialization - FMU 初始化问题

我最近在 Dymola 2015 中导出了 FMU 2.0 模型,但初始化时遇到了一些问题。

在导出模型之前,我通过将输入连接器连接到一些知道确切输出值的常量值来检查模型的有效性,结果一切看起来都很好。该模型可以按预期进行转换、初始化和模拟。

然后我继续将我的模型导出为 ME FMU 2.0 RC。在C中可以实例化,进入初始化前fmiSetupExperiment调用成功,但是在调用fmiEnterInitializationMode后初始化失败。

错误如下图所示 在此处输入图像描述

我尝试根据这篇在 Simulink 中初始化 Dymola FMU 的帖子为模型分配一些合理的输入值,但没有帮助。

然后我发现我有几个具有 initial="approx" 的标量变量,但是当我在 Dymola 中检查它们的最终值时,初始近似值非常接近最终值。

所以我对接下来要尝试什么感到很困惑......我想知道这里是否有人可以帮助我(我什至不知道这个错误消息是什么意思......)我将不胜感激。

谢谢!