基于HLA/RTI仿真的联邦成员的设计与实现

时间:2022-06-05 04:49:43

基于HLA/RTI仿真的联邦成员的设计与实现

摘 要:针对空地对抗作战仿真问题,采用高级体系结构和运行支撑框架技术设计和实现了模拟空地对抗作战仿真的联邦成员。构建了FOM/SOM并生成了FED文件,为以后空地对抗仿真平台研究提供基础。

关键词:高级体系结构;运行支持系统;对象模型

引言

仿真技术的发展经过了三个阶段:仿真网络(SIMNET),分布交互仿真(DIS)和聚合级仿真协议(ALSP)高级体系结构(HLA)。[1]基于HLA的分布仿真是今后仿真发展的主要方向,故文章选用高级体系结构对空地对抗仿真的联邦成员进行了研究。

1 高级体系结构

HLA中将实现某种特定仿真目的的仿真系统称为联邦。联邦由若干交互的仿真应用和其它一些相关的应用(统称联邦成员Federate)、运行支持系统(RTI)和联邦对象模型(OM)构成。[2]联邦成员由若干对象构成, 成员间通过RTI提供的服务来实现交互。

1.1 RTI简介

RTI是一个按照HLA接口规范开发的软件系统,能为仿真应用提供通用的、相对独立的支撑服务,其功能类似于分布式操作系统。[3]

1.2 对象模型模版

对象模型模板(OMT)是HLA应用系统中联邦执行数据交互的基础。OMT 主要由对象模型鉴别表、对象类结构表、交互类结构表、属性表、参数表、枚举数据类型表、复合数据类型表、路径空间表、FOM/SOM 词典九种表格组成。[4]

2 模拟仿真

实例:A方出动一架战斗机空袭B方阵地,攻击目标为阵地司令部,B方探查到空情指示,奉命拦截该架战斗机。

2.1 联邦成员设计

在作战中,设计了两个成员来仿真该空袭过程。一个为A方空袭飞机成员,一个B方阵地。双方公布/定购关系如下:A方飞机成员(B方阵地订购): 对象类-飞机,交互类-飞机投掷炸弹、飞机被击毁;B方阵地成员公布(A方飞机成员订购):对象类-B方阵地营司令部,交互类-高炮对飞机开火。

其FOM/SOM定义的对象类(表1)和交互类(表2)如下:

表1 对象类表

表2 交互类表

2.2 RTI实现

将表1和表2输入OMDT生成Fed文件,当RTI创建联邦时予以加载。

下面以A方飞机为例,详细介绍仿真如何实现:

(1)创建联邦

调用rtiAmb.createFederationExecution(“空地对抗仿真”,“airraid.fed”);其中“空地对抗仿真”是将要创建的联邦的名字,“airraid.fed”是由FOM/SOM生成的Fed文件名。

(2)加邦

调用FedHandle=rtiAmb.joinFederationExecution(“A方空袭飞机”,“空地对抗仿真”,&fedAmb);其中“A方空袭飞机”为联邦成员名,FedHandle为函数返回的成员句柄值。

(3)获取Fed文件定义的对象类及其属性、交互类及其参数的句柄值

获取B方司令部对象类及其属性的句柄值:

HeadquartersId=rtiAmb.getObjectClassHandle( “Headquarters”);

positionId= rtiAmb.getAttributeHandle(“position”, HeadquartersId);

获取飞机交互类及其属性的句柄值:

PlaneDamageId=rtiAmb.getInteractionClassHandle(“PlaneDama ge”);

PCrashId=Id=rtiAmb.getParameterHandle(“num”,PlaneDamageId);

(4)声明公布/定购关系

公布A方飞机对象类:

AttributeHandleSet *Attributes= RTI::AttributeHandleSetFactory::create(3);

Attributes->add( PnumId ); //加入飞机编号属性

Attributes->add( PpositionId ); //加入飞机位置属性

Attributes->add( PvelocityId ); //加入飞机速度属性

rtiAmb.publishObjectClass( PlaneId, *Attributes);//公布飞机对象类

Attributes->empty();

定购B方司令部对象类:

Attributes->add(HpositionId ); //加入司令部位置属性

Attributes->add(HstateId ); //加入司令部状态属性

rtiAmb.subscribeObjectClass(HId, *Attributes);//订购司令部对象类

delete Attributes;

公布飞机投弹和飞机坠毁交互类:

rtiAmb.publishInteractionClass(DropBombId );//公布飞机投弹类

rtiAmb.publishInteractionClass(PlaneDamageId );//公布飞机坠毁类

定购高炮开火交互类:

rtiAmb.subscribeInteractionClass(FireId);

(5)声明时间推进策略

飞机成员的时间推进既Regulating又为Constrained。

rtiAmb.enableTimeConstrained(); //声明时间推进为Constrained

rtiAmb.enableTimeRegulation(Federate_time,Lookahead_time);//声明时间推进为Regulating.其中Federate_time为当前的联邦仿真时间,Lookahead_time为成员的前瞻时间。

(6)注册飞机对象类

PlaneInstanceId = rtiAmb.registerObjectInstance (PlaneId);

(7)发送飞机投掷炸弹交互

ParameterHandleValuePairSet*pParams=RTI::ParameterSetFactory::create(3);

pParams->add(Dbomb_typeId,(char*)&bombType,sizeof(bombType));

pParams->add(Dbomb _noId,(char*)&bombNum , sizeof(bombNo));

pParams->add(Bpoint_fallId,(char*)&point_fall , sizeof(Vector));

rtiAmb.sendInteraction(DBombId, *pParams, time_stamp,NULL);

(8)请求时间推进

rtiAmb.timeAdvanceRequest(requestTime);//请求时间推进

FederateAmbassador::timeAdvanceGrant;//通知成员当前的联邦仿真时间grantTime

然后跳转第7步,直至仿真结束。

3 结束语

文章以模拟的空地对抗仿真为研究内容,基于HLA/RTI设计和实现了仿真联邦成员。在设计和实现过程中采用通用的技术框架、模型和数据标准,具有较好的通用性。

参考文献

[1]周彦,戴剑伟.HLA仿真程序设计[M].北京:电子工业出版社,2002:3-20.

[2]齐欢,代建民,吴义明. HLA仿真与UML建模[M]. 北京:科学出版社, 2004:6-40.

[3]郝江波.基于HLA的分布交互仿真应用系统开发研究[J].系统仿真学报,2000, 12(05): 253-255.

[4]王元慧.基于HLA的舰船操纵综合仿真平台的设计[J].系统仿真学报, 2009, 21(2): 386-387.

作者简介:刘娅,(1981.12-)女,江苏省连云港,本科学历,讲师,研究方向:程序设计和数据库。

上一篇:锥齿轮齿根应力有限元模型和分析 下一篇:基于AT89S52单片机的步进电动机控制模块设计