【问题标题】:FMU-module method get_states_list()FMU 模块方法 get_states_list()
【发布时间】:2018-10-17 18:53:49
【问题描述】:

我发现 FMU 模块方法 get_states_list() 的限制。这种方法似乎只带来了一个连续时间状态的列表,而不是离散时间状态的列表。我通常会制作包含描述过程和控制系统的连续和离散时间子模型的模型,并且我对能够获得系统中所有状态的列表非常感兴趣。

一种可能是 get_fmu_state(),但我收到异常文本“此 FMU 不支持获取和设置 FMU-state”。

另一种可能性可能是使用并整理出声明“fixed=true”中包含的所有变量的更大列表,但是这个属性我不知道如何带出,尽管其他属性可以是像最小值、最大值、名义值一样。get_model_variables() 方法可能会有所帮助,但我只能得到一些与变量关联的地址……

怎么办?

【问题讨论】:

  • FMI 上下文中离散状态的定义是什么?
  • 离散时间状态的定义与连续时间相同,我想说。因此类似于:预测系统如何随时间演变所需的最少信息。当然,如果有输入信号,这些都需要知道。有关更多信息,请参阅:en.wikipedia.org/wiki/Dynamical_system。在 Modelica 代码中,我为作为状态的变量设置了属性 fixed=true,无论是连续时间还是离散时间。通过这种方式,它们很容易被识别。

标签: python fmi jmodelica


【解决方案1】:

get_states_list 方法是对 FMI 规范的映射,该规范仅包括连续时间状态。所以这是设计使然。

【讨论】:

  • 很难相信 FMI 规范不能更好地处理这个问题!我要解决的问题如下。我有一个 Modelica 模型,其中包含连续时间的过程和离散时间的调节器。如果要模拟一次,手动更改一些参数,然后继续模拟,则需要读出状态并保存,再次重新加载模型,进入上次模拟的最终状态并将其用作之前的初始条件你再次运行模拟。今天我有一个 Python 脚本,需要为每个模型量身定制离散时间状态。
  • 为了在上述过程中正确处理时间延迟(连续时间),我没有任何解决方案。我意识到这取决于所使用的数值积分例程。
猜你喜欢
  • 2019-03-22
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
相关资源
最近更新 更多