APP下载

基于STK-RTI异构系统交互通信技术研究

2012-09-26容晓峰

电子设计工程 2012年22期
关键词:中间件模拟器联邦

陈 勇,容晓峰

(西安工业大学 陕西 西安 710021)

HLA(高级体系结构,High Level Architecture),由美国国防领域的相关组织通过大量的研究提出的用于建模和仿真的高层体系结构。HLA的基本思想就是在体系结构上建立一个框架,设计、开发及实现系统不同层次和粒度的对象模型,来获得仿真部件和仿真系统高层次上的互操作性与可重用性。同时能利用不断发展的新技术,来满足复杂大系统的仿真需求。HLA通过运行支撑环境RTI,提供通用的、相对独立的支撑服务程序。RTI是HLA接口规范的具体实现,为仿真应用提供通用的、相对对立的支撑服务。在RTI平台之上,仿真开发者可以开发各种自己需要的服务、构建自己的仿真、加入人机交互参与等[1]。

卫星工具包STK(Satellite Tool Kit)是航天领域中先进的系统分析软件,用于分析复杂的航天、航空、陆地以及海洋任务。在STK仿真系统中,各模块、子系统间使用TCP/IP或UNIX Domain Socket进行数据传输。地面仿真网络中,各指挥所、雷达接收站、地面移动部队等部门的仿真通信多采用基于HLA/RTI高层体系结构的方式进行仿真交互。为实现基于TCP/IP通信的STK仿真网络同基于HLA/RTI地面仿真网络进行交互,实现天地一体化的大仿真,研究STK-RTI异构系统的交互方法成为一个课题。相关资料中有三种方法实现了这种通信。1)采用中间件,为每对需要交流的异构子系统模块提供中间件,由中间件完成二者之间的通信。2)建立具有通用交互能力的桥接,实现两个系统的相互编译,并且具有分布式管理功能。3)采用双方代理,设计HLA邦员代理和其他系统代理,由代理完成系统之间的交互通信[2-4]。

本文在内容上首先列举了异构系统交互三种方式的优缺点,重点对系统代理方式进行研究,分析了具体设计思路,并且采用VC++编程实现了基于TCP/IP通信的系统和基于HLA/RTI联邦通信的系统之间的信息交互。

1 STK-RTI异构系统交互方法

STK仿真系统遵循TCP/IP通信协议,而地面战术通信网络多采用HLA/RTI高层体系结构方法进行通信,下面我们研究总结出两类系统间交互通信的3种方法。

1.1 中间件的方法

当基于TCP/IP协议通信的STK仿真系统中的模拟器要传输数据给地面仿真系统HLA邦员时,首先由STK-RTI中间件接收,中间件将符合TCP/IP传输的数据转换为符合HLA交互的数据并发送到相应的HLA邦员。翻过来,当HLA邦员要传输数据给仿真模拟器时,也是首先由中间件接收,再将符合HLA的数据转换为符合TCP/IP网络仿真协议的数据单元后传送给仿真模拟器。

STK-RTI中间件用于连接STK于RTI,使得STK可以通过RTI与其他HLA联邦成员集成,完成更大规模的仿真。STK-RTI中间件的目的是将STK改造成为符合HLA分布仿真标准的仿真软件,从而拓展STK仿真软件的应用领域,增强功能,满足天地一体化作战建模与仿真的需求。中间件的方法实现的系统耦合度比较低,集成度好。但是,一个仿真对应一个中间件。多个仿真模块就需要多个中间件,是一种资源浪费。

1.2 桥接器的方法

这是一种通用中间件的方法,这种方法不仅局限于某个特定的HLA邦员和特定仿真模拟器之间的互操作,还可以实现多个HLA邦员和多个仿真模拟器之间的互操作,在一定程度上具有通用性。

它的实现原理是桥接器从STK仿真系统中接受到一个TCP/IP协议数据包时,将其转换为HLA/RTI联邦FOM文件中的对象类,并向联邦执行中注册该对象类实例,从而实现联邦内成员间交互通信。反方向交互时,由于桥接器在HLA/RTI联邦执行中实现注册,桥接器按照邦员规则接收信息,将其转变为TCP/IP协议数据包后发送打偶STK仿真系统,完成交互。

跟第一种方法相比,桥接器方法中一个邦员可以同时与多个仿真模拟器通信,一个模拟器也可以同时与多个邦员通信。比较中间件的方法,桥接器方法更具有通用性,编程员和用户都不需要对所连接的两类系统内部非常了解。用户可以有更多的选择。

1.3 系统代理的方法

当仿真模拟器要传输数据给HLA联邦成员时,首先用仿真模拟器代理接收,仿真模拟器代理和HLA联邦代理交换数据后,由 HLA联邦代理将数据传给HLA联邦成员。反之,当HLA联邦成员要传输数据给仿真模拟器时,首先用HLA联邦代理接收,HLA联邦代理和仿真模拟器代理交换数据后,由仿真模拟器代理将数据传给仿真模拟器。其结构示意图如图1所示。

图1 系统代理节点结构Fig.1 The structure of system agent

在实现这种方法的过程中发现,程序思路简单,主要通过代理节点完成本系统同其他系统的交互操作。应用此种方法需要为每个系统分别设置代理节点,要求对系统内部通信方式比较了解,工作量较大。

2 STK和RTI仿真代理节点的设计实现

2.1 HLA和TCP/IP代理节点的工作原理

实现某种特定仿真目的系统称为联邦,联邦由若干联邦成员、RTI和联邦对象模型构成。联邦成员间通过RTI提供的服务进行交互。仿真应用于底层的邦员通信功能分离,RTI提供的服务实现底层的通信功能,联邦成员不必涉及底层的网络通信,这一点正是HLA/RTI通信的特别之处。HLA/RTI代理节点是仿真系统中一个比较特殊的邦员,仿真系统中某个邦员需要与其他系统进行交互时,首先将交互信息发送到HLA/RTI代理节点,由代理节点通过某种策略完成交互。代理节点接收到其他系统的信息之后,会将信息发送到目标邦员,从而完成仿真系统中某个节点与其他系统的信息交互。

STK仿真系统可以借助STK/Connect通信模块接受第三方软件程序发布的控制命令,改变仿真场景的属性。由此我们可以选定某个HLA邦员作为代理节点与STK仿真系统进行交互,代理节点在通信机制上即要遵循STK/Connect模块的通信原理完成与STK仿真系统交互通信,又能按照HLA通信机制实现与其他邦员节点进行通信。

2.2 实现方法

STK-RTI代理在本质上是一个HLA邦员,可按照联邦成员开发的基本步骤进行开发和设计。第三方应用程序通过STK/Connect模块向STK发送命令,根据STK/Connect模块可接收的命令进行STK-RTI代理交互类的设计。

在每一个仿真步长时间内,STK-RTI代理订购HLA成员公布的对象类,由此生成STK场景中相应的对象;同时接受来自HLA成员的命令交互,让后想STK转发相应的命令。接着,STK-RTI代理向STK发出命令,要求STK返回STK中场景、景象对象的属性、状态,STK-RTI代理可将数据转发给其他HLA邦员,让其对所关心的数据进行处理。代理成员的运行流程如图2所示。

代理节点由VC编程实现,首先配置支持STK连接的头文件和库文件。头文件包括:AgConnect.h、AgConSendData.h和AgCoUtMsgCommon.h,三者均位于”STK安装目录ConnectIncludes”文件夹中。所需的库文件为:AgConnect.lib位于”STK安装目录ConnectLib”文件夹中。在程序代码中依次初始化连接,打开与STK连接,建立新场景,新建对象并设置参数,从而实现程序对STK仿真场景的命令控制。仿真模型建立之后,系统可以控制STK进行仿真运行,可用AgConProcessSTKCmd函数接收仿真场景数据。

图2 代理成员运行流程Fig.2 Operation process of the deputy member

将 STK/Connect函数 int AgConProcessSTKCmd(char**context,char*cmdString,AgTConReturnInfo*returnInfo) 以 交互类的形式实现,函数中的参数 context、cmdStrin、returnInfo表示为交互类的参数。参数 context、cmdStrin分别表示了接受命令的不同联接方式和命令的具体内容。参数returnInfo表示了异步通讯模式、存贮类型、标识符信息、返回数据包的数目,及每一个具体数据包的信息。 HLA成员发出命令交互,STK-RTI代理接受命令交互并向STK转发命令,STK接受命令后做出应答。应答包含一个枚举数据类型的参数,其值表示为 AgCNoError、AgCError、AgCNackReturned。 命令交互类实现了 HLA成员作为第三方应用程序通过RTI向 STK发出命令,此时STK-RTI代理的作用是转发HLA成员的命令,STK接受命令后作出的应答。在这种情况下,RTI及STKRTI中间件是透明的,可以视为HLA成员作为第三方应用程序与STK通过Connect模块直接进行通讯。

图3 代理节点界面图Fig.3 Interface of agent node

HLA联邦开发相对复杂,RTI运行时,需要两个配置文件:一个是联邦执行数据FED;一个是RTI初始化文件RID。创建联邦执行数据FED文件,FED文件包含了FOM中的信息,包括联邦成员中各个联邦成员的对象类、交互类、对象类属性、交互类参数和路径空间等数据结构信息。在创建联邦执行后,需要指定FED文件所在的路径和文件名。当创建联邦执行后,FED文件中的信息被读取和解析,并储存在一个内部数据库中。RID初始化文件内容包含了控制RTI运行的配置参数,因此可以通过配置RID文件,使RTI满足特定的仿真应用。RTI使用环境变量RTI_RID_FILE来确定RID初始化文件的位置和文件名。当联邦创建之后,所有邦员根据系统中配置的RTI_HOME参数确定联邦的位置,主动加入联邦,然后可以在邦员FED文件的规则下,各帮员自由进行信息交互。编程实现的代理节点截图如图3所示。

3 结 论

文中研究了STK仿真系统与基于HLA仿真系统交互通信的3种实现方法——代理法,中间件法和桥接器法,比较了3种方法的优缺点,选定代理方法进行了STK仿真系统中与HLA分布式交互仿真系统通信的设计。在研究代理基本工作原理、系统结构模块的基础上,使用VC++根据编译技术编写了相应的程序,实现了该代理方法通信。

[1]柴旭东,李伯虎.高层体系结构HLA/RTI及其实现综述[J].系统仿真学报,1999,10(2):92.

CHAI Xu-dong,LI Bo-hu.An overview of HLA/RTI and its implementation[J].Journal of System Simulation,1999,10(2):92.

[2]陈敏.OPNET网络仿真[M].北京:清华大学出版社,2004.

[3]张亚崇,孙国基,严海蓉,等.RTI中时间推进机制的研究[J].计算机应用研究,2005(3):104-109.

ZHANG Ya-chong,SUN Guo-ji,YAN Hai-rong,et al.Research on time advance mechanism in RTI[J].Application Research of Computers,2005(3):104-109.

[4]贺光霞.基于HLA通信网络仿真平台的研究[J].无线电通信技术, 2008, 33(1):39-41.

HE Guang-xia.Based on the HLA communication network simulation platform research [J].Radio Communications Technology,2008,33(1):39-41.

[5]陈长兴,高晓光,张敬伟,等.基于OPNET的网络仿真[J].空军工程大学学报:自然科学版,2007,8(2):86-88.

CHEN Chang-xing,GAO Xiao-guang,ZHANG Jing-wei,et al.Network simulation based on OPNET [J].Journal of Air Force Engineering University:NaturalScience Edition,2007,8(2):86-88.

[6]黄为.基于HLA的战场环境仿真研究 [D].武汉:华中科技大学,2009.

[7]蒲玮,孙少斌.联邦成员应用程序的一种模板实现[J].计算机工程与设计,2009(4):987-989.

PU Wei,SUN Shao-bin.The federal member for application to a template[J].Computer Engineering and Design,2009(4):987-989.

猜你喜欢

中间件模拟器联邦
了不起的安检模拟器
盲盒模拟器
划船模拟器
一“炮”而红 音联邦SVSound 2000 Pro品鉴会完满举行
303A深圳市音联邦电气有限公司
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
动态飞行模拟器及其发展概述
中间件在高速公路领域的应用
一种支持智能环境构建的中间件