APP下载

FMI系统的并行仿真算法研究

2021-07-28国一兵苏一博

科技创新导报 2021年2期

国一兵 苏一博

摘  要:随着计算机仿真技术的不断发展,FMI联合仿真已经成为当今系统性工程开发的必经之路。针对FMI系统中串行仿真算法的仿真速度低的问题,本文提出了基于FMI联合仿真的并行仿真算法,主要研究了该算法的流程设计和仿真过程,并对比分析了使用并行仿真算法和串行仿真算法仿真得到的结果,证明了并行仿真仿真算法极大地提高了FMI系统的仿真速度。

关键词:FMI系统  并行仿真  串行仿真  仿真速度

中图分类号:TP391.9           文献标识码:A                  文章编号:1674-098X(2021)01(b)-0108-03

Research on Parallel Simulation Algorithm in FMI System

GUO Yibing  SU Yibo

(Shenyang Ligong University, Shenyang, Liaoning Province, 110159 China)

Abstract: With the continuous development of computer simulation technology,FMI co-simulation has become the only way for systematic engineering development.Aiming at the low simulation rate of serial simulation algorithm in FMI system,In this paper, a parallel simulation algorithm based on FMI co-simulation is proposed. The flow design and simulation process of the algorithm are mainly studied, and the simulation results obtained by using parallel simulation algorithm and serial simulation algorithm are compared and analyzed, which proves that the parallel simulation algorithm greatly improves the simulation rate of FMI system.

Key Words: FMI system; Parallel simulation; Serial simulation; Simulation rate

当今FMI联合仿真技术的高速发展,使得FMI系统的开发与应用成为计算机仿真领域中的新趋势。但是,随着仿真任务、模型系统的复杂度以及仿真需求逐渐提高,通过研究和优化联合仿真算法來提高FMI系统的仿真效率变得越发重要[1-2]。

1  FMI系统概述

FMI系统是基于FMI联合仿真[3]标准而设计的仿真系统。FMI定义了一种新的仿真模型打包标准,用来支持跨学科的联合仿真、测试以及嵌入式软件的开发[4]。FMI系统支持外部导入或自身生成的以FMI标注封装接口的功能单元(FMU),将这些FMU以指定的关系连接起来组成仿真模型系统,并将这些仿真模型系统以指定仿真算法进行仿真得到仿真结果[5-6]。

2  并行仿真算法的提出

在FMI系统中,传统的串行仿真算法由于耦合程度较高,模型之间严格按照求解关系依次计算,并且每步计算都需要进行判敛操作而导致仿真速度降低。由此,为了提高FMI系统的仿真速度,本文在串行仿真算法的基础上进行优化设计,采用并行调度的策略重新规划仿真算法的执行流程,在FMI系统中实现并行仿真算法。

3  并行仿真算法的研究

以三个分别具备单个输入输出端口的仿真模型FMUA、FMUB、FMUC 组成的串联仿真系统为例“FMUA.y-FMUB.u-FMUB.y-FMUC.u-FMUC.y-FMUA.u-FMUA.y”

并行仿真算法改变了串行仿真算法的执行流程。以串行仿真算法中的三个FMU组成的耦合系统为例,他们的连接关系和参数配置保持不变,只是使用并行的方式来执行仿真。仿真初始化之后,得到的FMU求解顺序和端口的依赖关系与串行仿真算法相同,仿真开始后,仿真数据交互和FMU计算流程如图1所示。

图1描述了三个FMU第K步到第K+1步的并行仿真过程,按照FMU的连接关系进行第K+1步的仿真,过程如下:

①耦合系统中每个FMU都将第K步计算得到的输出值传输给有连接关系的FMU的输入端口;

②各FMU得到输入值后,进行第K+1步的计算,得到第K+1步的输出值,完成第K+1步的仿真。

依次类推,各FMU将第K+1步的输出值传给所连接FMU的输入端口,各FMU进行第K+2步的计算。按照此顺序,直到仿真结束为止。

并行仿真算法与串行仿真算法不同的是,每个FMU只按照连接关系对相对应的端口进行赋值,赋值过程没有先后顺序,也没有等待的机制,都是并行处理的。各FMU的输入端口同时得到了所需数值,所有FMU计算一步,至此,整个耦合系统完成一步仿真。

该算法与串行仿真算法的另一个不同之处是,假设仿真执行第K+1步,串行算法仅FMUB使用FMUA的第K步的输出值参与计算,其他模型都会使用接收到的第K+1步的值参与计算。在并行仿真算法计算第K+1步过程中,由于所有FMU是并行运行的,每个FMU都得不到来自第K+1步的值,故每个模型都是使用第K步的值进行数据交互。

4  仿真与分析

对由FMUA、FMUB、FMUC三个单输入输出端口的串联仿真模型系统为例,分别使用串行仿真算法和并行仿真算法进行仿真,取出FMUA.y输出端口的仿真结果如图2所示。

在图2中,实心圆点用来标注使用串行仿真算法进行仿真得到的通信点上的仿真结果,星点用来标记使用并行仿真算法进行仿真得到的通信点上的仿真结果。对比上述两条仿真结果曲线,可以看出:从第一步仿真开始,并行仿真算法的结果值始终比串行算法延迟一个步长,这也正是因为并行算法在运行第K步仿真时使用第K-1步计算得到的输出结果作为输入值而导致的。在实际仿真任务中,由于仿真步长短、仿真时间长,这种有限且数量极少的延迟步数均可以忽略不计,不会影响仿真的稳定性与准确性。

另外,读取每个仿真通信点的详细结果数据可以发现,使用并行仿真算法仿真得到的数据与使用串行仿真算法仿真得到的数据相比只有微小的差别,说明在误差允许的条件下,使用并行仿真算法所计算的结果几乎等同于使用串行仿真算法的仿真结果。

对比图3中两种仿真算法的执行流程可以发现,仿真任务为时长1s,通信步长0.1s,运行10步,使用串行仿真算法的仿真总共用时0.2784s,而使用并行仿真算法的仿真总共用时0.0464s。说明FMU的并行的计算,简化了数据通信的繁琐流程,很大程度上提高了仿真速度。

5  结语

本文主要对FMI系統中串行仿真算法仿真速度低的问题进行分析,提出并行仿真算法。本文从仿真控制流程的角度进行分析,采用并行调度策略,对仿真流程进行了重新设计,实现了对FMU的并行计算,并成功地使用实例进行仿真验证。仿真结果表明,使用并行仿真算法极大地提高了FMI系统的仿真效率,并且仿真结果正确可靠。

参考文献

[1] 樊卿.基于FMI的飞行器联合仿真技术研究[D].成都:电子科技大学,2018.

[2] 罗茂春.基于FMI的航空发动机控制系统多学科联合仿真[D].南京:南京航空航天大学,2019.

[3] 王鸿亮,廉东本,徐久强.基于FMI的分布式联合仿真技术研究[J].计算机仿真,2017(4):256-261.

[4] 陆冠华,郝明瑞,胡松,等.基于FMI的飞行器分系统多源异构模型一体化仿真[J].导航定位与授时, 2018(6):99-104.

[5] 苏一博,臧晶,玉绍康.基于FMI的功能模拟单元创建与仿真分析[J].科技创新导报,2019,16(14):1-2.

[6] 董政.基于FMI的Simulink模型到Modelica模型的转换技术研究[D].武汉:华中科技大学,2016.