【问题标题】:How to export FMU with steady-state?如何导出具有稳态的 FMU?
【发布时间】:2020-07-08 04:21:45
【问题描述】:

我尝试导出我的模型的FMU,但是在0-30000s期间,模型处于非稳态,但我想导出稳态的FMU,所以我检查了以下屏幕截图中的每个选项,没有他们可以实现我的想法。

我的问题是: 如何导出 FMU 并保持稳定状态?

【问题讨论】:

  • 在 FMI-Standard 中,时间始终是积分变量,因此所有 FMU 根据定义都是瞬态的。导出模型的稳态不适合这张图片。您的系统(实际上)是否非常快地达到稳定状态,而仅仅是您解决它的方法需要很长的集成时间?如果是这种情况,有一些选项可以解决这个问题。
  • 是的,我建立了一个发电厂的模型,在我设置的初始化条件下,模型需要 50000s 才能达到稳态,所以如果我将 FMU 导出到 Simulink 来设计一个 PID 控制器,FMU 也需要 50000 秒才能稳定,然后我可以设置步进激励器来获得响应。如果我可以将初始化状态设置为稳态会更容易。

标签: modelica dymola fmi


【解决方案1】:

根据文档FMI Support in Dymola 第 19 页的第一个表格,Dymola 似乎支持 canGetAndSetFMUState 功能。

有关背景信息,请参阅FMI Specification2.1.8 获取和设置完整的 FMU 状态一章,但简而言之,这意味着您应该能够执行以下操作:

  1. 导出FMU,不用担心稳态。
  2. 在您的调用工具 (Simulink) 中,将 FMU 集成到您感兴趣的稳态。
  3. 拥有调用工具调用函数fmiGetFMUstate并存储FMU的完整状态。
  4. 现在,当您想从稳定状态开始时,让您的调用工具使用函数 fmiSetFMUstate 来恢复它。

这当然需要您的调用工具支持上述功能。

【讨论】:

    【解决方案2】:

    独立于 FMI 的一个选项是告诉 Dymola 通过设置将模型初始化为接近稳定状态:

    Advanced.DefaultSteadyStateInitialization = true;

    但是,它是默认的稳定状态,因此如果您的模型具有固定的起始值(通常),它们优先,并且此标志可能无效。

    请注意,这在 Dymola 2020 中得到了显着改进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 2019-05-27
      • 1970-01-01
      • 2020-06-14
      相关资源
      最近更新 更多