梁彦刚,高晓升,张 翼,唐国金
(国防科学技术大学航天与材料工程学院,湖南 长沙 410073)
建模与仿真的高层体系结构HLA(High Level Architecture)自1995年提出后得到社会普遍认可,在工业、军事等仿真领域得到广泛应用。HLA的基本思想就是使用面向对象的方法设计、开发和实现系统的对象模型,从而获得仿真联邦高层次的互操作和重用,其最显著的特点就是实现了仿真功能与运行支撑系统的分离。运行支撑环境RTI(Run Time Infrastructure)是HLA体系结构的核心,它实现了HLA接口规范中定义的服务,提供底层和基本功能支持。但是,基于RTI应用程序接口(API)编程给仿真应用的开发带来了很大的不便,因此国内外很多学者研究开发了联邦成员代码生成工具,用以辅助仿真联邦成员的开发[1~4]。这些方法都是通过对FOM/SOM表的解析,获取HLA仿真联邦中的成员交互信息,通过一定的映射关系生成联邦成员代码框架。还有一种方式是对RTI的API函数进行封装,如 MAK-RTI的程序开发工具箱VR-Link。但是,无论是代码框架还是工具箱形式,联邦成员用户的模型代码与RTI提供的服务代码都存在相互耦合的问题,在调试过程中具有一定的灵活性,但需要用户掌握RTI的基本服务功能,如对象实例注册/注销、对象实例属性更新/反射、交互实例参数发送/接收等,因此需要仿真专业人员进行辅助和指导。国内周忠等[5]对HLA中通用而独立的功能模块进行抽象,建立了通用管理模型,开发了仿真应用程序开发框架BH HLA FM。它类似于MFC,提供给用户丰富的类库以支持仿真应用系统开发,实质上它仍然是一个程序框架,开发具体的应用程序需要对框架进行实例化。而对仿真应用模型开发者而言,往往要求接口部分越简单越好,且不希望改变其原有程序框架和编程习惯。这样就需要对RTI服务功能进一步封装,使得仿真计算模型部分与HLA功能模块完全隔离。本文通过仿真适配器技术和共享内存、中断回调技术将仿真模型与仿真运行环境有效隔离,开展了基于HLA的分布式仿真框架自动生成技术研究,提高了仿真系统开发效率和可靠性。
在基于HLA的仿真系统中,仿真应用程序一般包含两部分内容,一是实体模型计算部分,另一部分是RTI的服务程序。仿真成员要正常参与联邦运行,除了需要进行自身模型部分解算,还要按照HLA的规则响应RTI的管理和回调,这里称之为RTI服务程序,包括初始化成员数据、创建并加入联邦、声明时间推进策略、声明公布/订购关系、请求时间推进、更新和反射对象实例、发送和接收交互、退出并撤销联邦等,具体运行过程如图1所示[2],其中虚线框为后台执行线程。
从图1可以看出,仿真成员中计算模型和RTI服务程序最主要的耦合就是数据耦合和计算调度的耦合,因此必须采用一种仿真中间件技术,解除二者的强耦合,对仿真成员的模型计算部分进行隔离,从而提高计算模型的独立性。与联邦成员程序框架不同,该仿真中间件为独立的执行程序,本文称其为仿真适配器,负责对RTI的服务程序部分的封装,相应的仿真计算模型为另一独立执行程序。这样即实现了两者在设计上的有效隔离,使得计算模型的开发用户完全得到解放,接下来的问题就是如何实现两个独立进程在单机环境下的数据交互和调度管理。
Figure 1 The running process of federate图1 联邦成员运行过程
数据交互的问题可以通过共享内存解决,所谓共享内存,就是多个进程把一段内存映射到自己的进程空间,以此来实现数据的共享以及传输,这是所有进程间通信方式中最快的一种。而调度管理的问题可以通过中断回调机制解决,所谓中断回调,是指多进程运行过程中,主控进程通过向受控进程发送中断消息,触发受控进程所注册的回调接口函数,完成相应任务,从而达到控制和调度其它进程运行的目的。
本文的核心思想就是在共享内存/中断回调技术基础上,采用仿真适配器对仿真应用成员中与RTI服务相关的部分进行封装,适配器和用户计算模型程序间引入共享内存,从而进一步降低用户程序开发的难度。在此情况下,系统整体架构如图2所示,其中分布在不同计算机节点的仿真适配器通过RTI环境构成一个联邦原型,可在仿真管理节点控制下实现联邦推进。
所谓适配器,是为了解决不同系统间的交互信息格式不统一而开发的信息格式转换接口。HLA仿真适配器是用户模型程序与RTI运行环境的桥梁,适配器的实现一般需要有专业的分布式仿真领域知识。为提高程序设计效率,本文研究并实现了仿真适配器自动生成技术。
Figure 2 Schematic of system integration图2 系统集成架构图
在HLA技术框架中,对象模型OM(Object Model)是核心内容之一,它描述了联邦在运行过程中需要交换的各种数据及相关信息[6,7]。对象模型分为联邦对象模型FOM(Federate Object Model)和仿真对象模型SOM(Simulation Object Model)。FOM提供一个联邦内各成员间所有用于交换的数据的详细说明,如公共的对象类及其属性、交互类及其参数等信息;SOM提供每个仿真成员能够提供给联邦的自身功能的详细说明。进行HLA仿真程序开发必须首先完成FOM表设计与编辑[8]。
由于FOM表记录了联邦成员间进行数据交换的各类结构体,可以通过FOM表的设计和编辑输出数据接口结构体到仿真计算模型,同时输出接口描述文件到适配器自动生成软件。基于适配器技术的仿真应用成员设计与开发流程框架如图3所示。仿真系统研制中,由FOM表设计与编辑软件建立规范的数据接口,由适配器自动生成软件生成HLA仿真适配器,依据模型规范开发相应的仿真计算模型,仿真计算模型通过HLA仿真适配器联入底层的分布式仿真支撑环境。仿真计算模型和适配器之间通过共享内存进行数据交换。
Figure 3 Design and development process of simulation memeber图3 仿真应用成员设计与开发过程
下面进一步讨论仿真适配器自动生成技术。根据联邦成员的运行过程分析,生成一个联邦成员所需的完整信息包括:成员的详细信息、对象的详细信息、实例数据存储的结构信息、公布/订购关系等。因此,HLA适配器自动生成过程抽象为五个基本步骤,即:
(1)输入联邦成员接口描述文件,提取仿真成员名称和仿真模型名称及对应实例情况;
(2)确定仿真实例类型与对象类和交互类的对应关系;
(3)确定联邦成员公布能力与订购需求(声明管理);
(4)确定联邦成员时间推进策略(时间管理);
(5)生成源代码并编译生成HLA仿真适配器的执行程序。
在此基础上,HLA仿真适配器还需要实现和封装HLA接口规范中定义的联邦管理服务和对象管理服务。对于数据分发管理服务和所有权管理服务,根据仿真系统功能需求,暂时不予考虑。
此外,HLA仿真适配器还作为共享内存管理的主控程序,完成共享内存数据管理功能,通过发送中断消息触发仿真模型实例的回调函数,控制实例程序按照RTI服务要求进行仿真推进。
通过HLA仿真适配器对RTI服务程序进行封装后,回避了仿真计算模型与RTI直接的交互关系,但增加了计算模型与仿真适配器间的数据交互和计算模型的调度管理问题。为简化接口关系,本文采用动态库形式对共享内存数据管理程序和计算模型调度管理程序进行封装,提供给用户的是标准化接口函数,包括节点注册、数据结构体注册以及数据读写,如表1所示。
Table 1 Interface functions of computation model表1 仿真计算模型的接口函数
在共享内存中交换的数据采用订购和发布的方式进行管理,每个计算进程称为一个节点,各进程在完成自己的节点注册之后就可以进行数据注册,凡是注册的数据都自动进行发布,需要获取该数据的进程可通过查找数据标识ID号读取该数据。
在单机运行的多个仿真进程间的同步推进,采用中断回调机制实现。仿真运行过程中,HLA仿真适配器作为主控进程负责发送中断消息,各计算进程分别响应其回调接口函数,依据主控进程下发的消息获取仿真时钟与行为类型,调用Get Data-ByID()函数读取订购的数据,然后将自身状态推进至指定时刻,调用WriteDataByID()函数更新发布的数据,从而完成一步推进并等待下一次消息。其中,模型回调接口函数的实现原型如下:
当计算模型的回调接口函数被调用的时候,根据主控进程传入的消息类型msg.MSGTYPE决定当前仿真进程是初始化、推进计算或退出仿真。用户通过填写初始化函数、运行函数和退出函数,完成每一段case分支中相应的操作程序。
弹道导弹攻防过程是一个多实体参与的复杂过程,包括进攻弹和防御方的拦截弹、预警卫星、预警雷达以及指控系统等,采用分布式仿真可降低计算机负载,增强演示效果。
在弹道导弹攻防仿真中,可以按照参与仿真的模型实体分配仿真节点,形成多个仿真成员。如可按照各模型功能分为进攻弹成员、拦截弹成员、防御方指控成员、预警卫星成员、预警雷达成员以及仿真管理成员。仿真管理系统需要用到管理对象模型信息,因此独立实现,其它成员可通过HLA仿真适配器自动生成技术生成各成员适配器。在此基础上,通过联邦运行支撑环境RTI将各成员适配器组合在一起,便可形成导弹攻防仿真系统分布式仿真框架,如图4所示。
该仿真框架为导弹攻防仿真的联邦原型,各仿真成员可以在仿真管理系统协调下完成仿真运行过程中的相关操作,如初始化、运行、终止等。但是,由于没有计算模型参与,因此没有相关数据交互。各仿真适配器在本地节点通过共享内存与各自模型计算进程实现同步运行,便可完成弹道导弹攻防仿真系统构建。在这种机制下,仿真计算模型的接入更加灵活,从而方便不同粒度模型的替换和使用。
Figure 4 Distributed simulation framework of missile combat图4 导弹攻防分布式仿真框架
随着基于HLA的分布式仿真技术广泛应用,如何进一步简化仿真系统开发流程,对来自不同用户的仿真模型进行快速有效集成成为大家普遍关注的问题。本文对此开展了深入研究,采用仿真适配器对RTI服务程序进行封装,并研制了相关软件使得用户无需编写程序即可自动生成仿真适配器,提高了仿真系统开发效率。在仿真系统运行效率方面,由于采用仿真适配器作为中间件,增加了共享内存数据交换和中断回调的时间消耗,使运行效率有所降低。仿真实验表明,这种机制下额外增加的仿真时延约为原仿真推进时延的1%左右,在可接受范围之内。
此外,该适配器目前只适用于基于时间步长推进的连续系统仿真,只实现了RTI服务中的部分功能,仍需要在数据分发管理、仿真推进管理等方面进一步开展研究。
[1]Cox K.A framework-based approach to HLA federate development[C]∥Proc of 1998 Fall Simulation Interoperability Workshop,1998,14(6):14-18.
[2]Yin Juan,Hao Jian-guo,Huang Ke-di.Research and implementation of automatically geerating federate software framework from high level architecture object model[J].Journal of System Simulation,2002,14(6):718-722.(in Chinese)
[3]Zhou Wei,Shao Dong-qing,Dong Xiao-she.Research on XSLT application in the realization of a HLA federate member code generation tool[J].Journal of Shanghai Institute of Technology,2006,6(3):166-171.(in Chinese)
[4]Gan Bin,Wang Yue-ping.Design and Implementation of component-based federate generation framework[J].Journal of System Simulation,2007,19(1):1622-1624.(in Chinese)
[5]Zhou Zhong,Wu Wei.Distributed virtual environments[M].Beijing:The Science Press,2009.(in Chinese)
[6]IEEE standard for modeling and simulation(M&S)high level architecture(HLA)-framework and rules[S].USA:IEEE Std 1516-2000,2000.
[7]IEEE standard for modeling and simulation(M&S)high level architecture(HLA)-object model template(OMT)specification[S].USA:IEEE Std 1516.2-2000,2000.
[8]Liang Yan-gang,Tang Guo-jin,Yong En-mi.The analysis and design of missile-combat simulation system based on HLA[J].Journal of National University of Defense Technology,2004,26(5):18-21.(in Chinese)
附中文参考文献:
[2]尹娟,郝建国,黄柯棣.基于高层体系结构对象模型的联邦成员软件框架自动生成研究与实现[J].系统仿真学报,2002,14(6):718-722.
[3]周炜,邵东青,董小社.XSL在HLA联邦成员代码生成工具实现中的应用研究[J].上海应用技术学院学报,2006,6(3):166-171.
[4]甘斌,王月平.基于组件的联邦成员生成框架设计与实现[J].系统仿真学报,2007,19(11):1622-1624.
[5]周忠,吴威.分布式虚拟环境[M].北京:科学出版社,2009.
[8]梁彦刚,唐国金,雍恩米.基于HLA的导弹攻防仿真系统分析与设计[J].国防科技大学学报,2004,26(5):18-21.
LIANG Yan-gang,born in 1979,PhD,lecturer,his research interests include modeling and simulation of weapon system,and distributed simulation system integration.
高晓升(1979-),男,山东青岛人,硕士,助理工程师,研究方向为飞行器系统建模与仿真。E-mail:gaoxiaosheng@sohu.com
GAO Xiao-sheng,born in 1979,MS,assistant engineer,his research interests include modeling and simulation of spacecraft system.
张翼(1975-),男,云南盐津人,博士生,讲师,研究方向为航天系统仿真和仿真平台技术。E-mail:zhangyi@263.net
ZHANG Yi,born in 1975,PhD candidate,lecturer,his research interests include simulation of aerospace system,and simulation platform technology.