我目前正在 Simulink 中使用 Dymola 生成的一些联合仿真 FMU。 我想通过使用指定的多线程模拟来加速模拟here
据说“如果模型有一个非直接馈通块,后跟一个直接馈通块,您还可以在多个线程上运行模型”
为此,我尝试将 Dymola 生成的 FMU 从直接馈通 (DF) 转换为非直接馈通 (NDF)。
我的模型的输入是来自 MSL 的经典输入。
我发现的一种方法是在输入后添加延迟块以获得 NDF FMU。
对于问题2:延迟块似乎不合适。也许使用 pre() 运算符创建一个块? here提出了一个相关问题,但出于不同的需求,并且没有几十年来的任何发展
根据 FMI 2.0 标准进行联合仿真 FMU,不具有直接馈通。 (该标准定义了一个顺序:设置输入 - 按通信时间步提前时间 - 获取 FMU 的输出) 如果 Simulink 将此视为具有直接馈通:联系 Mathworks 支持并将其报告为错误。 (原因可能是初始化时映射到 Simulink 特定实现的特殊行为。)