1 引言
传统的靶场试验存在着试验组织过程复杂、试验成本代价高昂、试验易受自然客观条件限制等问题[1]。利用通用体系结构支撑平台(如DIS,HLA,TENA)构建仿真试验系统来模拟现实中的靶场试验,可以部分的解决传统靶场试验中存在的问题[2][3]。仿真试验系统存在着对高速、实时性等相关性能指标的要求,反射内存网作为一种实时网络已经成功解决了许多领域的实时性问题,将反射内存网技术应用到靶场仿真试验系统中也可以很好的解决高速、实时性的问题,因此本文实现了一种适用于通用试验体系支撑平台的反射内存网通讯组件,以完成仿真试验系统中反射内存网上各试验设备的实时通讯,实现对试验设备的实时控制及试验数据的监视[4][5]。
2 组件设计需求描述
反射内存网通讯组件实现系统平台对反射内存通讯方式的支持,在仿真试验系统中的主要功能是能够与反射内存网上各个试验设备进行实时通讯,实现对试验设备的控制以及对试验过程中的试验数据进行动态监测。反射内存网通讯组件实现为DLL(动态链接库)封装,提供对外接口以实现与试验平台的互联,可以进行动态加载、卸载。
按照应用需求,使用本组件的用户可以实现的主要功能如下:
(1) 对反射内存卡进行启动、关闭、初始化、复位、清零、中断设置等相关操作;
(2) 对反射内存网进行读写操作;
(3) 能够获取信息管理平台发送的相关信息表并进行解析工作;
(4) 用户可动态选择监测各试验设备的发布属性,并可动态设定监测周期;
(5) 对反射内存网上的属性值进行监测,并将试验数据发布到信息传输管理平台,可通过各种显示组件(如数码窗、示波器等)进行显示,通过数据存储组件对试验数据进行存储;
(6) 能够发送控制指令,接收试验设备的返回状态并显示;
(7) 能够接收进程控制组件的控制指令,转发到试验设备,接收各试验设备的状态反馈,发送给进程控制组件,在试验流程控制下实现对各试验设备的控制,完成仿真试验。
3 组件设计
反射内存网通讯组件主要是从组件基类继承下来,根据对组件相关的功能分析,将其划分为监测属性配置类、菜单显示类、监测周期配置类、反射内存卡设备配置类以及对反射内存卡的驱动封装类这五个类。将具有相同属性的方法独立出来,并将类与类之间的相互组成关系进行分析,可以规划出组成关系图和相应的组件类图,如图1、图2所示:
从上面两幅图中可以看出各个类之间的相互关系,以下是对各个类的概括性说明:
(1) 组件基类
组件基类提供组件和HIT-GPTA支撑平台的接口,包括参数配置接口,编辑控制接口,运行控制接口,信息获取接口和数据交互接口。通过这些接口,HIT-GPTA支撑平台可调用组件,获得组件的运行状态信息,完成组件的初始化,并与组件进行数据交互。
(2) 反射内存网通讯组件接口类
该类负责实现组件的具体创建工作,包括创建组件对象、绘制组件对象、移动组件对象、销毁组件对象等;该类还可完成向数据源订购数据以及通过信息传输平台接收模型位置状态数据的工作。在该类中还维护试验中要监测的属性结构体列表,提供给各个相关的类使用;同时,负责创建菜单显示对话框以及反射内存卡配置对话框。此外,该类还负责保存用户设置信息,每次启动自动调用这些配置信息,避免重复设置。
(3) 菜单显示类
该类负责监测属性配置窗口的弹出,并且作为中转使组件接口类与配置窗口类进行数据交互。
(4) 监测属性配置类
通过该类的方法实现对话框参数的初始化;在此类中完成对信息管理平台发送过来的各类反射内存配置信息如设备信息表、公共信息表等信息文件的解析工作;并建立发布属性表和订购属性表用来维护参加仿真试验的各个设备的相关属性;并进行可视化操作方便用户配置;同时把相关数据回传给反射内存网通讯组件接口类中。此外,该类负责监测属性周期配置窗口的弹出,并且作为中转使监测属性配置类与本类进行数据交互。
(5) 监测周期配置类
通过该类的方法实现对话框参数的初始化;显示本次仿真试验中所有的订购属性/发布属性,用户通过相关操作进行监测周期的设定,并把最终的数据保存到相应的结构体列表中。
(6) 反射内存卡配置类
通过该类的方法实现对话框参数的初始化。此类通过调用设备驱动类中的相关API函数来完成反射内存卡的启动、停止、初始化、清零等设备操作。在前面各个类的配置完成基础之上,此类还支持对反射内存网中数据进行监测,同时把监测到的属性值保存并且动态的显示在对话框的列表控件上,以便用户观察。通过此类还可以手动对反射内存卡进行读写操作,用户可以进行地址配置以及相关的读写操作配置来完成这一功能。此类还支持远程控制,可接收平台上的进程控制组件的控制指令,对各试验设备进行控制。
(7) 设备驱动类
设备驱动类主要是对反射内存卡设备的驱动程序进行封装,以便组件中相关的类进行API函数的调用。
4 软件实现
4.1 反射内存网通讯组件接口
反射内存网通讯组件接口类——————CRFMCommunicationWindon,用于完成组件与平台间的各项数据交互,该类的主要构造如下:
(1) 属性
m_pShowDlg 反射内存卡配置对话框指针;
m_result 设备运行返回状态;
m_Handle 设备句柄;
m_nShowDlgShowFlag 反射内存卡配置对话框显示标志;
m_selPublicNameToInfoMap 发布属性信息表;
m_selOrderNameToInfoMap 订购属性信息表;
m_devNodeIDToAddrMapWindow公共信息表;
m_bPublicOrderFlag 发布订购标志;
(2) 方法
SetRunStatus): 设置仿真状态;
GetHandleCount(): 获取句柄个数;
GetHandle(): 获取当前句柄;
OpenInstrument(): 打开显示设备;
CloseInstrument(): 关闭显示设备;
DeviceOpen(): 启动设备;
Devicestop(): 停止设备;
DeviceSendData(): 发送数据;
DeviceReceiveData(): 接收数据;
DeviceSendEvent(): 发送中断事件;
DeviceWaitForEvent(): 等待中断事件;
DevReset(): 设备的复位;
SetRFM(): 反射内存卡内存整体配置;
DevPause() 设备的暂停;
DevConfig(): 设备动态、动态配置;
ReleaseMap(): 内存释放;
4.2 监测属性配置接口
监测属性配置接口类——CdevInfoDlg,用于完成对仿真试验中需要监测的各个仿真设备的属性进行配置的工作,其主要构造如下:
(1) 属性
m_pWindow 反射内存网通讯组件接口指针;
m_devNodeIDToAddrMap 设备信息表;
m_publishNameToInfoMap 选择的发布属性信息表;
m_orderNameToInfoMap 选择的订购属性信息表;
m_cmPublishInfo 发布信息列表控件关联变量;
m_cmOrderInfo 订购信息列表控件关联变量;
m_CheckPropertyFlag 监测属性标志;
(2) 方法
OnBnClickedBtnBrowse() 对各种信息表解析;
OnCbnSelchangeCombo() 选择参与仿真试验的设备;
OnBnClickedSetcheckcycle() 创建监测周期配置对话框;
OnBnClickedBtnPublishOk() 将选择的发布属性添加到列表中;
OnBnClickedBtnOrderOk() 将选择的订购属性添加到列表中;
OnBnClickedOk() 声明发布属性和订购属性;
4.3 监测周期配置接口
监测周期配置接口类——CsetCycleDlg,用于设定仿真试验中对各个设备的相关属性的监测时间的设定。其主要构造如下:
(1) 属性
pDevInfoDlg 监测属性配置类指针;
m_SelPropertyList 列表控件,显示选择的属性;
m_nSetCycle 修订监测周期变量;
(2) 方法
OnBnClickedAllsel() 选择需要修订监测周期的属性;
OnBnClickedConfirm() 更改周期;
4.4 反射内存卡配置接口
(1) 属性
m_pWindow 反射内存网通讯组件接口指针;
m_bShowFlag 窗口显示标志;
m_nCardNum 本机反射内存卡数量;
m_bDevOpenFlag 反射内存卡打开标志;
m_nRFMNodeID 本机反射内存卡节点ID号;
m_bRemote 远程控制标志;
m_nInputAddress 输入地址参数;
m_DataDisplayList 数据显示列表控件变量;
m_nTypeChoose 读写数据类型选择控件变量;
(2) 方法
OnBnClickedInspectstart() 开始监测;
OnBnClickedInspectstop() 停止监测;
UpPropertyDisplay() 更新属性列表;
UpDataDisplay() 动态显示数据;
TimerSet() 定时器设定
OnMyTimer() 定时器处理函数;
TenMilliSecondProc() 监测时间小于10MS的回调函数;
UpTenMilliSecondTimerProc() 监测时间大于10ms的回调函数;
OnBnClickedRfmconfigure() 内存卡读写配置面板显示设置;
OnCbnSelchangeChoosenodeid() 选择反射内存卡节点号;
OnCbnSelchangeChooseaddr() 选择设备基地址;
OnBnClickedReadorwrite() 反射内存卡读写操作;
OnBnClickedRemote() 远程控制处理函数;
5 组件测试及结果
组件测试是在HIT-GPTA通用试验体系支撑平台下进行的,首先将本次仿真试验的反射内存配置信息文件加载到反射内存通讯组件中,并完成相应的监测属性选择、参数设置等相关的配置操作。完成反射内存信息配置后,即可进入反射内存通讯组件的运行界面。双击平台工作区中的反射内存通讯组件图标,即可打开反射内存通讯组件的运行界面。图4所示的是部分测试结果界面。
设备驱动类主要是对反射内存卡设备的驱动程序进行封装,以便组件中相关的类进行API函数的调用。
4 软件实现
4.1 反射内存网通讯组件接口
反射内存网通讯组件接口类——————CRFMCommunicationWindon,用于完成组件与平台间的各项数据交互,该类的主要构造如下:
(1) 属性
m_pShowDlg 反射内存卡配置对话框指针;
m_result 设备运行返回状态;
m_Handle 设备句柄;
m_nShowDlgShowFlag 反射内存卡配置对话框显示标志;
m_selPublicNameToInfoMap 发布属性信息表;
m_selOrderNameToInfoMap 订购属性信息表;
m_devNodeIDToAddrMapWindow公共信息表;
m_bPublicOrderFlag 发布订购标志;
(2) 方法
SetRunStatus): 设置仿真状态;
GetHandleCount(): 获取句柄个数;
GetHandle(): 获取当前句柄;
OpenInstrument(): 打开显示设备;
CloseInstrument(): 关闭显示设备;
DeviceOpen(): 启动设备;
Devicestop(): 停止设备;
DeviceSendData(): 发送数据;
DeviceReceiveData(): 接收数据;
DeviceSendEvent(): 发送中断事件;
DeviceWaitForEvent(): 等待中断事件;
DevReset(): 设备的复位;
SetRFM(): 反射内存卡内存整体配置;
DevPause() 设备的暂停;
DevConfig(): 设备动态、动态配置;
ReleaseMap(): 内存释放;
4.2 监测属性配置接口
监测属性配置接口类——CdevInfoDlg,用于完成对仿真试验中需要监测的各个仿真设备的属性进行配置的工作,其主要构造如下:
(1) 属性
m_pWindow 反射内存网通讯组件接口指针;
m_devNodeIDToAddrMap 设备信息表;
m_publishNameToInfoMap 选择的发布属性信息表;
m_orderNameToInfoMap 选择的订购属性信息表;
m_cmPublishInfo 发布信息列表控件关联变量;
m_cmOrderInfo 订购信息列表控件关联变量;
m_CheckPropertyFlag 监测属性标志;
(2) 方法
OnBnClickedBtnBrowse() 对各种信息表解析;
OnCbnSelchangeCombo() 选择参与仿真试验的设备;
OnBnClickedSetcheckcycle() 创建监测周期配置对话框;
OnBnClickedBtnPublishOk() 将选择的发布属性添加到列表中;
OnBnClickedBtnOrderOk() 将选择的订购属性添加到列表中;
OnBnClickedOk() 声明发布属性和订购属性;
4.3 监测周期配置接口
监测周期配置接口类——CsetCycleDlg,用于设定仿真试验中对各个设备的相关属性的监测时间的设定。其主要构造如下:
(1) 属性
pDevInfoDlg 监测属性配置类指针;
m_SelPropertyList 列表控件,显示选择的属性;
m_nSetCycle 修订监测周期变量;
(2) 方法
OnBnClickedAllsel() 选择需要修订监测周期的属性;
OnBnClickedConfirm() 更改周期;
4.4 反射内存卡配置接口
(1) 属性
m_pWindow 反射内存网通讯组件接口指针;
m_bShowFlag 窗口显示标志;
m_nCardNum 本机反射内存卡数量;
m_bDevOpenFlag 反射内存卡打开标志;
m_nRFMNodeID 本机反射内存卡节点ID号;
m_bRemote 远程控制标志;
m_nInputAddress 输入地址参数;
m_DataDisplayList 数据显示列表控件变量;
m_nTypeChoose 读写数据类型选择控件变量;
(2) 方法
OnBnClickedInspectstart() 开始监测;
OnBnClickedInspectstop() 停止监测;
UpPropertyDisplay() 更新属性列表;
UpDataDisplay() 动态显示数据;
TimerSet() 定时器设定
OnMyTimer() 定时器处理函数;
TenMilliSecondProc() 监测时间小于10MS的回调函数;
UpTenMilliSecondTimerProc() 监测时间大于10ms的回调函数;
OnBnClickedRfmconfigure() 内存卡读写配置面板显示设置;
OnCbnSelchangeChoosenodeid() 选择反射内存卡节点号;
OnCbnSelchangeChooseaddr() 选择设备基地址;
OnBnClickedReadorwrite() 反射内存卡读写操作;
OnBnClickedRemote() 远程控制处理函数;
5 组件测试及结果
组件测试是在HIT-GPTA通用试验体系支撑平台下进行的,首先将本次仿真试验的反射内存配置信息文件加载到反射内存通讯组件中,并完成相应的监测属性选择、参数设置等相关的配置操作。完成反射内存信息配置后,即可进入反射内存通讯组件的运行界面。双击平台工作区中的反射内存通讯组件图标,即可打开反射内存通讯组件的运行界面。图4所示的是部分测试结果界面。
6 结束语
通用体系结构支撑平台和反射内存网技术相结合构建仿真试验系统为靶场提供了新的试验手段,本文所开发的反射内存网通讯组件已经在某靶场仿真试验系统中进行了应用。
楼主最近还看过