将 FMU 转换为非直接馈通,以便并行执行 Simulink 协同仿真

问题描述 投票:0回答:1

我目前正在 Simulink 中使用 Dymola 生成的一些联合仿真 FMU。 我想通过使用指定的多线程模拟来加速模拟here

据说“如果模型有一个非直接馈通块,后跟一个直接馈通块,您还可以在多个线程上运行模型”

为此,我尝试将 Dymola 生成的 FMU 从直接馈通 (DF) 转换为非直接馈通 (NDF)。

我的模型的输入是来自 MSL 的经典输入。

我发现的一种方法是在输入后添加延迟块以获得 NDF FMU。

  1. 有人知道生成 NDF FMU 的更好解决方案吗?
  2. 是否可以将 Dymola 内部的单位延迟定义为来自解算器实际步长的单位延迟,而不是来自给定延迟时间的单位延迟?这有助于模拟性能。

对于问题2:延迟块似乎不合适。也许使用 pre() 运算符创建一个块? here提出了一个相关问题,但出于不同的需求,并且没有几十年来的任何发展

simulink modelica openmodelica dymola fmi
1个回答
0
投票

根据 FMI 2.0 标准进行联合仿真 FMU,不具有直接馈通。 (该标准定义了一个顺序:设置输入 - 按通信时间步提前时间 - 获取 FMU 的输出) 如果 Simulink 将此视为具有直接馈通:联系 Mathworks 支持并将其报告为错误。 (原因可能是初始化时映射到 Simulink 特定实现的特殊行为。)

© www.soinside.com 2019 - 2024. All rights reserved.