基于功能样机接口(Functional Mock-up Interface, FMI)规范的联合仿真方式,成为了实现多领域建模仿真的重要方法。FMI标准中存在着两个版本:Model Exchange(模型交换)和Co-Simulink(联合仿真),这两种方差的差别在于生成的模型中有无原来建模软件中进行模型方程求解的求解器,这也导致其具体的应用场景也不同。其生成原理如图1所示。
图1 Simulimk模型到FMU转换流程
实际操作过程中的方法不唯一,可以选择
1、官方插件Simulink complier+Simulink coder;
2、第三方插件FMIKit+Simulink coder
等等
以某挖机工作系统为例,采用FMIKit(第三方插件)+Simulink coder实现
1、下载第三方开源插件:
FMIkit V3.0-alpha.4版本,如图1所示
图1 FMIKit插件
https://github.com/CATIA-Systems/FMIKit-Simulink/releases/tag/v3.0-alpha.4
2、初始化插件
打开MATLAB(以2021b为例),选择插件保存路径文件夹,在工作区添加相对路径并初始化插件,如图2所示
addpath('FMIKit-Simulink-3.0-alpha.1')
FMIKit.initialize()
图2 初始化FMIKit
初始化完毕显示:Initializing FMI Kit 2.9.0,即初始化完毕
3、Simulink模型与Simulink coder插件
加载Simulink挖机工作模型,进行子系统封装并暴露出所需要的接口信息,如图3所示,下载官方插件Simulink coder(原RTW工具箱),如图4所示
图3 Simulink-挖机工作模型
图4 Simulink coder
4、配置求解器并生成FMU模型
1)、点击Settings(CTRL+E)进行配置 ,如图5所示
图5 Simulink coder-settings
2)、选择定步长求解,如图6所示
图6 Simulink-定步长
3)、选择grtfmi.tlc系统目标文件,如图7所示
图7 Simulink-grtfmi.tlc
4)、选择合适的C编译器求解(以Visual Studio 16 2019版本为例),如图8所示。(环境问题容易造成困扰:Failed to run Cmake)
图9 Simulink-Cmake
5)点击Build(CTRL+B)生成FMU模型,如图9所示
图9 Simulink-Build
5、导入Modelica仿真平台
选择FMU模型导入,进行加载和求解,如图10所示,转换结束
图10 Import FMU