导入FMU协同仿真组件
我们告诉你如何使用块。 FMU Import 要将FMU格式的外部模型添加到Engee画布。
模型描述
FMU(功能模拟单元)组件中的协同仿真模式旨在将不同建模工具中开发的多个模型组合到一个时间同步系统中。
此模式允许您连接在不同环境(MATLAB/Simulink,Dymola,OpenModelica等)中创建的模型。),而不必重写他们的代码。
每个FMU都像一个"黑盒子",有自己的求解器。
在这个例子中,我们的"外部"模型在文件中 fmuVanDerPol.fmu,我们将放置在FMU导入块中,配置后,我们将从其中的模型中获取图表。
我们建议检查FMU文件。 为此,请安装几个库并调用命令 info(fmu).
In [ ]:
Pkg.add( ["FMI"] )
using FMI
fmu = loadFMU( "fmuVanDerPol.fmu" )
info(fmu)
配置块
在这些信息中,我们需要找到输入和输出端口的名称以及参数的名称,以便正确创建和配置块的接口。
这个模型没有输入,有两个输出(Out1 和 Out2)并且有一个参数 mu. 此外,我们没有看到该模型的求解器正在等待的时间步长设置。
我们根据经验发现,这个FMU模型的计算步骤的大小不应该更低
0.1 с. 整个仿真的全局步长可以是任意的。
让我们运行模型以执行并构建图表。:
In [ ]:
model_name = "fmu_co_simulation";
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
res = engee.run( model_name );
plot( res["x"].time, [res["x"].value res["dx"].value], label=["x" "dx"],
lw=3, size=(600,300) )
Out[0]:
您何时选择协同仿真而不是模型交换?
模型交换(ME)需要整个系统的单个求解器,如果所有模型都可以使用单个求解器,则适用。
协同仿真(CS)选择何时:
*模型使用不同的求解器,
*有一个遗留代码或专有模拟器。,
*需要分布式执行(例如,HIL测试)。
结论
协同仿真FMU是集成异构模型的强大工具,无需完全重写它们,但具有受控同步和潜在采样误差形式的折衷。