韩玉芹,祖先锋,梁旭荣
(空军第一航空学院 军械装置教研室,河南 信阳 464000)
空空导弹试验实时测控系统是某型号导弹武器半实物仿真试验的重要组成部分[1],服务于新型导弹的研制、试验、优化和评估。依据现代导弹武器发展的特点,仿真试验系统应具有严格的实时响应能力、较强的通用性、较好的开放性、良好的交互方式、分布式的任务协作和广泛的数据信息源[2]。
在仿真试验中,信号的检测和处理、数据的显示和储存、性能参数的评价、信息交互的实现、过程的控制等,也是一个比较复杂且非常重要的环节[3]。这就需要根据仿真试验的要求,将导弹实物与各种仿真设备及仿真机之间进行必要的连接;在不同的仿真设备间进行实时准确的数据通讯和信号传递,确保整个仿真系统的协调工作;实现仿真试验各个环节的全过程控制;实时监控各种仿真设备及仿真机的工作情况;实现仿真试验的数据显示及其演算;实现数据输入输出的模型仿真验证及故障重现等。因此,在导弹半实物仿真试验中的测控系统应该能够实现实时仿真和实时测控,起到核心控制协调作用。
测试需求分析是测控系统集成最为重要的起点,全面准确合理的需求分析是系统构建和项目成功的关键和前提[4]。
该测控系统用于某型号空空导弹半实物仿真试验中与仿真计算机、转台以及参试部件连接,通过实时光纤网将各个仿真分系统和试验产品组成一个分布式网络,不仅可以完成综合供电、时序控制、数据的采集控制、模型仿真验证、产品动态测试、故障重现与诊断等功能,还通过良好的人机界面,对整个仿真系统包括产品的试验状态给出全面的显示。实时测控系统主要功能如下:
2.1.1 实时采集通讯功能
以0.5ms为帧周期,可同时采集16路A/D数据并实时放到VMIC实时网上,包括数据显示、状态监控、综合测试信号产生(正弦、锯齿波、方波等)以及实时数据采集均可以通过VMIC实时网输出。
2.1.2 严格的定时器功能
具有严格的信号定时能力,能产生试验所需的各种时序信号,控制仿真设备及参试部件的启动,时间精度小于0.01ms。
2.1.3 多路电源程控功能
具有多路可编程控制线性直流电源,可提供参试部件所需的工作电源,包括模拟上电过程,设置上电控制。并且,可在控制台面板上实时显示部件的电压、电流情况。
2.1.4 开环测试功能
在实时操作系统的支持下,生成各种测试信号作为参试部件的输入,同时采集部件的输出构成开环仿真环境,进行各种开环测试。
2.1.5 仿真验证功能
可实时将仿真数据、实弹飞行数据作为部件的输入,同时采集部件的输出,用于模型仿真验证及故障重现。
2.1.6 功能模拟功能
具有控制部件功能模拟功能,在单部件半实物仿真时,实时模拟其他部件,完成部件间接口通讯。
2.1.7 实时曲线显示功能
能够通过反射式内存接口板(VMIC),实时与仿真计算机及仿真设备进行数据通讯,控制仿真设备的运行,实现仿真弹道、姿态、参试设备指令及反馈等曲线实时显示。
2.1.8 参数运算功能
在产品半实物仿真结束后,能够完成指令复算、误差分析、频谱分析、特征量统计、曲线显示及试验结果的自动生成。
2.1.9 时序检测功能
能够完成各种时序检测功能,给出检测结果。
2.1.10 接口检测功能
具有强大的通讯接口检测功能,在线检测仿真设备及参试产品的工作状态,进行故障诊断、报警及应急处理等功能。
系统接口是测控系统硬件的重要组成部分,包括机械接口和电气接口。机械接口包括:与测试有关的UUT结构特征,如UUT接口连接器型号。电气接口包括UUT工作接口、专用测试接口、内置检测接口等,需要编写每个接口的接口控制文件,详细分析和确定接口信号的特征、参数、控制关系、功能等。UUT电气接口分析是UUT测试需求分析的重要部分,UUT测试项目、测试参数、测试方法和测试步骤的确定依赖于接口信号的特征。
导弹试验实时测控系统是空空导弹制导系统半实物仿真系统的主要设备之一,主要包括实时控制计算机、实时显示监测计算机、实验接口箱、操作台、硬件板卡以及相应的测试软件等。系统利用实时光纤网将各个仿真分系统和试验产品组成一个分布式网络,采用双联机柜形式,则导弹试验实时测控系统组成框图如图1所示。
图1导弹试验实时测控系统组成框图
实时测控系统由两个较为独立的实时控制部分和实时显示部分组成,作为VMIC实时网的两个节点。其中,实时控制计算机采用可靠性高的工控机,作为控制台的核心,与各仿真单元(仿真计算机、转台控制、目标模拟器等)之间通过光纤网连接,进行仿真试验控制命令的传达和设备状态信息的收集。同时,通过测试资源板卡和实验接口箱完成参试部件的测试和数据采集。实时显示监测计算机采用可靠性高的工控机,用来通过反射式内存接口板(VMIC),实时与仿真计算机及仿真设备进行数据通讯,控制仿真设备的运行,实现仿真弹道、姿态、参试设备指令及反馈等曲线实时显示。实验接口箱实现与参试产品连接和信号适配,将测试资源的A/D、D/A、D/D等接口信号引入参试产品的激励测试过程。
导弹半实物仿真试验对计算机操作系统提出了更高的要求:一方面,要求操作系统具有强大的通用功能,例如图形显示功能、支持数据库技术、分布式处理技术、较强的硬件支持;另一方面,要求操作系统具有良好的实时性。而Windows系统不是严格意义上的实时系统,在实时应用方面的缺点还比较多,例如,其中断响应时间有很大的不确定性,任务调度难以满足时间性要求,而且任务切换时间不可预测。为此,采用RTX实时开发技术,克服了Windows系统实时性差的局限性,解决了测控系统实时与非实时任务兼容处理难的问题。
RTX是美国IntervalZero公司开发的Windows平台的硬实时系统[5],可以无缝地与Windows 系统结合,并且能够充分利用其各种资源,包括各种通用资源、大量标准的API函数和高效的内存管理机制。RTX子系统利用IPC通信和同步机制,实现与Windows系统之间的数据交换。RTX时钟分辨率能够达到100ns,而最小定时器周期可以做到100μs,这种精确定时机制对于满足实时性至关重要。RTX应用时被实现为一套库的集合,包括动态库和静态库[6],利用Windows系统良好的可扩展体系结构增加了一个实时子系统RTSS(Real-Time Subsystem)。运行时,RTSS调用自身的实时RTSS线程而不调用非实时的Win32线程,而且所有的RTSS线程总是优于Win32线程取得调度权,以保证实时线程的优先执行,也包括Windows延迟过程调用和中断服务等。
仪器板卡的设备驱动程序是应用程序与底层硬件之间的通信桥梁,而在Windows系统中,仪器板卡必须通过设备驱动程序来配置和管理其数据处理的各种信息。为此,利用RTX实时子系统的开放性,重新开发了所用仪器板卡在RTX环境下的驱动程序,以提高其实时性。
RTX子系统对硬件的操作十分方便,只需通过遍历命令查找到相应硬件的端口,就可以跳过驱动层直接操作硬件资源。PCI总线设备RTX驱动程序的基本结构如图2所示。PCI总线设备硬件和RTX基本内核处于结构底层,他们之间数据交互采用I/O或中断方式进行。RTX基本内核服务于RTX库函数和PCI总线设备驱动程序,并通过他们对RTX基本内核发送系统调用(System Call)来实现交互,而应用程序处于整个结构最上层,通过PCI总线设备驱动程序接口实现信息交互。
图2 PCI总线设备RTX驱动程序的基本结构
RTX子系统下PCI总线设备完整的驱动程序开发步骤如下[7]:
4.2.1 设备初始化
首先查找PCI总线设备,通过遍历查找所有的PCI总线插槽,匹配两个主要参数:设备ID和供应商ID,一直到参数匹配即为找到设备,然后获得内存端口的基地址和相关中断资源,便于后续操作。
4.2.2 从接口基地址到系统虚拟地址的映射
硬件设备操作时读写的是物理地址,而上层应用程序操作时读写的是虚拟地址,驱动程序需要完成从物理地址到虚拟地址的映射工作。
4.2.3 读取应用程序传送给设备硬件的数据和回送应用程序
设备驱动程序的主要任务包括:一方面将从上层应用程序下传的数据通过设备硬件及时准确地发送出去,另一方面及时地将从设备硬件接受到的数据上传给上层应用程序。在通常情况下,数据处理以及其它服务处理程序都会使用缓冲区,这样当服务程序处理完数据后,先对缓冲区进行清空便于后续的继续使用;而某些数据处理时出现错误,则服务处理程序仅需收回缓冲区。
4.2.4 基本的控制操作
控制操作包含打开、关闭、等待、发送、清空等,以保证PCI总线设备在有序的情况下正常运行。
4.2.5 检测和处理设备出现的错误
对设备检测和处理中可能出现的错误给出足够的提示信息,使得返回的错误在程序中有相应的解释。
采集板卡采用日本康泰克公司的16位A/D采集模块AD16-16U(PCI总线),主要包括16路单端输入或8路差动输入,最大转换速度为1μsec/ch。根据上述驱动程序开发过程,以采集板卡AD16-16U为例开发其驱动程序如下:
4.3.1 初始化PCI设备
// PCI总线扫描,如果找到就使其处于工作状态
BOOL RTFCNDCL ScanPCI( )
{for (bus = 0; flag; bus++) {
for (i = 0; i < PCI_MAX_DEVICES && flag; i++)
{ SlotNumber.u.bits.DeviceNumber = i;
for (f = 0; f < PCI_MAX_FUNCTION; f++){
//传送设备ID和供应商ID
if((PciData->VendorID== 0x1221)&&(PciData->DeviceID == 0x9193)){
//获得基地址
liPhysAddr.QuadPart = PciData->u.type0.BaseAddresses[2];
liPhysAddr_IOControl.QuadPart
=PciData->u.type0.BaseAddresses[3];
flag = FALSE;
//找到PCI 设备
reValue = TRUE;
break; } } } }
return reValue; }
4.3.2 映射基地址
//将基本接口地址映射到系统映射地址
if(!RtTranslateBusAddress(PCIBus, 0, BAR1,&AddressSpace, &tBAR1 )){}
vBAR1 = (PCHAR)tBAR1.LowPart;
AD_PORT0_BASE0 = (PUCHAR)vBAR1 - 1;
4.3.3 对PCI基地址执行读写操作
//初始化配置寄存器
RtWritePortUchar((AD_PORT0_BASE0+0x06), 0x03);
RtWritePortUchar((AD_PORT0_BASE0+0x07), 0xc7);
RtWritePortUchar((AD_PORT0_BASE0+0x07), 0x00);
//配置16路采集通道
for (int k=0;k<16;k++){
RtWritePortUchar((AD_PORT0_BASE0+0x06), 0x02);
RtWritePortUchar((AD_PORT0_BASE0+0x07), k);
RtWritePortUchar((AD_PORT0_BASE0+0x07), k);
}
//启动16路信号采集
for(j=0;j<16;j++){
cY1 = RtReadPortUchar((AD_PORT0_BASE0+0x00));
cY2 = RtReadPortUchar((AD_PORT0_BASE0+0x01));
rp->Buffer[rp->count] = (((cY2<< 8)+cY1)*20.0)/65536.0 - 10;
rp->count = rp->count + 1;
}
4.3.4 控制操作
在PCI总线仪器板卡RTX实时驱动程序退出时,首先要关闭中断,然后调用RtReleaseInterruptVector释放中断、RtUnmapMemory释放内存、RtDisablePortIO关闭I/O空间。
导弹试验实时测控系统一方面通过反射内存网实现分布式实时仿真,另一方面基于RTX实时子系统开发实现实时测控,并且具备多项测控任务,主要包括实时测量控制和实时显示监测两大部分,分别运行在实时测量控制计算机和实时显示监测计算机上。
导弹试验实时测控系统集仿真、测试、控制于一体,具有多项测控功能。其中,实时测量控制部分用来完成导弹产品的状态控制和性能参数测试,主要包括实时采集通讯功能、严格的定时器功能、开环测试功能、仿真验证功能和时序检测功能等。实时显示监测部分用来实现实时数据显示和数据监测,主要包括实时曲线显示功能、电源程控功能、参数运算功能、数据管理功能和存储打印功能等。
其中,实时测控系统中的实时采集通讯功能具有较强的代表性,既有实时采集、精确定时、实时网络传输等实时性任务,也有信号配置、数据曲线显示、状态监控等非实时性任务,同时测控计算机和显示计算机分别作为VMIC实时网络节点参与实时数据传输。实时采集通讯功能要求在0.5ms仿真帧周期内,测控计算机同时采集16路A/D数据并实时放到VMIC实时网上,而显示计算机通过VMIC实时网及时接收数据并显示出来。实时采集通讯软件采用模块化设计方法,由定时器模块、D/A模拟量输出模块、A/D数据采集模块、共享内存模块、VMIC网络模块等组成。其中,定时器模块实现0.5ms定时器的设置、开启和停止;D/A模拟量输出模块内嵌D/A板卡驱动程序,控制板卡输出模拟信号;A/D数据采集模块内嵌A/D板卡驱动程序,控制板卡采集数据;VMIC网络模块实现数据的网络传输;共享内存模块实现共享内存的建立、打开、写入和读取等。
实时采集通讯功能要求在0.5ms仿真帧周期内实现,是体现半实物仿真实时性的重要指标,为此,在VMIC网络的发送端和接收端每一个帧周期内均增加时标,然后计算其时间间隔,如图3所示。由图3可以看出,作为发送端的测控计算机,由于实时测控程序运行在RTSS子系统下,0.5ms帧周期得到了较好的保证,误差仅为±0.05ms;而接收端的显示计算机,由于其非实时程序运行于Win32环境下,帧周期误差较大,达到0.3ms。
图3 网络发送端和接收端时间间隔
实时采集通讯功能要求采集16路信号并通过VMIC实时网传输,为此,在接收端用一个文本文件将16路信号数据保存起来,然后以曲线方式显示出来,如图4所示为1~3通道数据波形(局部放大)。可以看出,信号波形完整,数据没有丢失,说明VMIC实时网络传输是稳定可靠的。
图4 通道1~3信号数据波形(局部放大)
基于RTX子系统的导弹试验实时测控系统是导弹武器半实物仿真试验的重要组成部分,它集仿真、测试、控制于一体,通过反射内存网络将仿真设备、实时测控系统和参试部件等连接起来,构成分布式实时网络,能够用于新型导弹的研制、试验、优化和评估。系统运行稳定可靠、测试精度高、实时性好、自动化程度高、使用操作简便。系统应用RTX实时子系统开发技术,克服了Windows系统实时性差的局限性,增加了实时和非实时任务兼容处理能力,可完全满足导弹半实物仿真试验中实时仿真和实时测控的需要。
[1] 高立娥,康凤举,路尧,等.YFK-1仿真试验控制台的研究与开发[J].系统仿真学报,2005,17(11):2641-2644.
[2] Palma Rafael Augusto, Fernandes Jose Manoel. Hardware-in-the-loop simulation-A methodology proposal[C]// ISA EXPO 2005 Technical Conference—Technical Papers Collection. Chicago: ISA, 2005:1064-1075.
[3] Frederi Mahieu, Andres Folleco, Edgar An, etc. Software Development of the Hardware-in-the-loop Implementation and 3D Viewer for Ocean Explorer[EB/OL]. [2000-01-01].http://www.eng.fau.edu.
[4] 李行善,左毅,孙杰.自动测试系统集成技术[M].北京:电子工业出版社,2004:344-348.
[5] Ardence, a Citrix Company. RTX_7.1_User_Guide [EB/OL]. [2008-01-01].http://www.Ardence.com.
[6] 闫宇壮,杨祚堂. RTX在半实物仿真中的软件开发方法[J]. 软件开发与应用,2006,25(9):89-90.
[7] 单勇.实时半实物仿真平台关键技术研究与实现[D].长沙:国防科学技术大学,2010:8-13.