FMU FMI模拟,设置特定类型的参数时不修改结果

2024-04-27 23:07:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我为示例开发了一个基于MSL流体库的简单Modelica模型。作为一个源和一个连接在下面的流管的图像:

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

我用OpenModelica(in-model-exchange)生成一个FMU包。 我用python管理这个FMU包,代码如下:

import pyfmi, os
from pyfmi import load_fmu

myModel = load_fmu('PathToFolder\\test3.fmu')
res1 = myModel.simulate() # First simulation with m_flow in source set to [1] Kg/s
x = myModel.get('boundary1.m_flow') # Mass flow rate of the source
y = myModel.get('pipe.port_a.m_flow') # Mass flow rate in pipe
print x, y

myModel.set('boundary1.m_flow', 2)
option = myModel.simulate_options()
option['initialize'] = False # Need to initialize the simulation
res2 = myModel.simulate(options = option) # Second simulation with m_flow in source set to [2] Kg/s
x = myModel.get('boundary1.m_flow') # Mass flow rate of the source
y = myModel.get('pipe.port_a.m_flow') # Mass flow rate in pipe
print x, y

os.system('pause')

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

Modelica中的流体源模型如下所示(只是我们感兴趣的部分):

^{pr2}$

我认为FMU在if状态下不会考虑参数。对我来说,这是个问题,因为我需要管理FMU,并确保如果我设置了一个参数,模拟将使用这个新的设置。如何确保FMU/FMI正常工作?FMU中无法管理的参数类型的详尽列表在哪里?在

我已经知道在FMU管理中不能考虑改变方程数量的参数(idem是指改变dae索引的变量)。在


Tags: in模型source参数getrateflowmass
3条回答

我不熟悉PyFMI,但我以前也遇到过同样的情况。你可以试试下面的几件事。在

  1. 尝试在第一个sim卡后立即终止/释放。

  2. 由于大多数参数在init之后无法更改,所以可以将该参数作为输入连接器,以便可以随时更改此特定参数。

  3. (在Dymola的FMU中)我还发现,如果这个参数包含在初始的非线性方程组中,那么如果你试图在同一时刻初始化模型,你会得到一个错误“模型无法初始化”。

每当您尝试为参数设置新值时, 请执行以下步骤:
1.重置模型
2.为参数设置新值
3.模拟模型。在

注意OpenModelica有一个结构参数和Evaluate=true注释的概念。例如,如果某个参数用作数组维度,则可能会将其计算为整数值。该参数的所有使用都将使用计算值,就像它是常量一样。在

为了找出OpenModelica对系统做了什么,Modelica源代码将更容易查看,而不是包含图表的图片。在

我怀疑某个参数被计算了。如果生成非FMU代码,则可以检查modelName_初始化.xml由OpenModelica生成,并查找参数项并查找属性isValueChangeable。在

您还可以使用OMEdit调试系统并查看初始方程(生成包含调试信息的可执行文件)。文件->;打开转换文件,然后选择模型名称_信息.xml文件。搜索您试图更改的变量,然后转到定义它的初始方程。很可能忽略了起始值(由PyFMI设置),因为不需要它来生成解决方案。在

相关问题 更多 >