面向试飞科目的iNET网络数据快速处理技术
2022-04-02张思硕
张思硕,郝 朝,山 寿
(中国飞行试验研究院,陕西 西安 710089)
0 引 言
目前在飞行试验中使用的机载测试系统会将参数测量结果形成标准的PCM[1]数据流进行遥测传输和记录,机载测试系统普遍遵循IRIG106遥测标准[2]。在某型飞机的飞行试验中需要测量超大容量的参数,因此采用了网络化架构的机载测试系统来解决参数数量庞大的问题。网络化系统将测量结果形成IENA/INET[3]结构的网络数据包进行传输和记录,网络数据包具有数据包灵活、数据包分散、数据量大、参数多等显著特点,其结构与IRIG106遥测标准的PCM数据流完全不同。在网络化测试系统中,由网络交换机对前端数据采集系统采集的飞行数据进行打包发送到数据记录器,记录器以一定格式对采集的网络数据包进行记录。
为了满足型号试飞数据处理需求,提出了基于iNET的网络数据分析软件设计方案,通过对机载记录网络数据进行处理,对新型网络化测试系统的iNET网络协议进行分析研究,实现对该测试系统采集的网络数据的解包分析,保证了型号任务的顺利进行。
1 iNET介绍
美国试验中心和项目评估投资机构(CTEW)于2004年10月启动了增强遥测综合网(integrated network enhanced telemetry,iNET)项目开发计划,目的是为试验场和试验基地自主开发综合增强型遥测网络系统。iNET由3个部分组成:vNET机载网络系统、rfNET遥测射频传输网络系统、gNET地面网络系统,即建立空、地一体化的遥测网络系统[4]。
iNET是CIA(CTEIP integrated architecture)试验集成结构框架中的重要组成部分,包括遥测网络系统(telemetry network system,TmNS)[5]、机载测试系统(外围设备)和各种操作、控制的应用软件。iNET可通过中间件实现与TENA(test and training enabling architecture)的联接[6]。
随着新型航空武器飞行试验发展的需要,中国飞行试验测试为满足新机飞行试验的要求,采用了基于IENA/INET的网络架构。这样对试飞数据处理也提出了新的要求。该系统是在机载采用新的网络化架构测试系统后,地面数据处理必须要解决的一个问题,否则,机载网络化测试系统便不能投入实际使用。
iNET数据包格式[7]如图1所示。一个iNET数据包由包头和数据组成。数据包包头占24字节。第1个字段为配置项,占4个字节;第2个字段为数据包ID,占4个字节,标识唯一的一个数据包;第3个字段为包计数,占4个字节,代表同一个数据包的计数值,可以用来判断数据包的丢包情况;第4个字段为包长度,占4个字节,代表当前iNET数据包长度,包括包头长度和有效数据字节数;第5个字段为时间戳,占8个字节,代表当前数据包采集时间。iNET数据包采用8字节的UDP头、20字节的IP头和14字节的MAC头依次进行封装,然后记录为*.enet网络包文件。
2 多科目实时数据处理
2.1 多科目数据处理特点
现代飞行器的试飞阶段通常需要处理发动机、性能、品质、航电、火控等多种试飞科目的数据,某型飞机在试飞阶段需要采集一百多条数据流,处理二十多个科目的数据,包含四万多个参数、不同科目的参数采样率从1到4 096不等。传统的数据处理方式只能一次处理单架次单科目的数据,操作复杂,处理效率低,在多科目数据处理过程中会耗费大量的时间。为了达到试飞任务要求,提高数据处理效率,该文提出了面向多科目的试飞数据处理方法。
多科目数据处理具有如下几个特点:
(1)每个试飞科目都有一个处理参数组,数据处理时需按照任务书要求和每个科目的参数组处理数据,将结果发送给课题人员;
(2)许多基本参数如气压高度、俯仰角、马赫数等,在不同科目中都需要处理;
(3)各个科目需求的参数采样率不同,同一参数在不同科目中所需的采样率也可能不同。
传统的数据处理方式对不同科目中的重复参数处理多次,是对计算资源的浪费,并且这种参数组与科目相对应的数据处理方式将大量时间花费在对参数的轮询查找上,处理时间较长。
2.2 多科目数据处理流程
基于上述分析,为解决试飞数据量的快速增长与数据处理效率之间的矛盾,针对不同科目中的重复参数,提出一种更高效的方法,“整体—分流”方法:
(1)将不同科目的参数组按照参数的信息合并成一个参数列表,合并过程中会剔除重复的参数;
(2)按照合并后的参数列表处理所有参数,读取每个网络包的数据,按照带头中参数的校线将码值转化为物理量,得到原始数据;
(3)对原始数据进行分流得到各科目的预处理结果。
算法流程如图2所示,所有重复的参数只需处理一次,并且数据只需对参数进行一遍轮询查找,极大地提高了数据处理效率。
3 软件总体设计
基于iNET的网络数据分析软件分为带头文件管理模块、校准曲线管理模块和数据处理模块,如图3所示。带头文件是对机载格式格栅文件进行转换后便于数据处理读取使用的文件[8],包括数据包采集信息、参数相关信息(校准曲线、有效位、偏移字等)。校准曲线就是用已知试飞测试参数输入试飞测试传感器及连接的测试系统获得的响应曲线,代表码值与工程量转换的对应关系。校准曲线文件一般为Excel文件。带头文件管理模块包括机载格式格栅转换和参数管理(编辑、删除、增加和查找)功能。校准曲线管理模块包括校线编辑、校线替换和校线批导入。数据处理模块包括参数提取、丢包分析和批处理。
在进行数据处理前,首先需要将机载格式格栅转换为带头文件,以后每次数据处理只需要读取带头文件即可。由于机载记录网络数据包括视频数据、振动数据、普通数据等各种类型数据,因此需要对机载网络数据进行分流提取处理[9],得到需要的普通网络数据包。然后读取带头文件获得参数信息,经过参数码值提取、工程量转换写入结果文件。网络数据处理流程如图4所示。
4 关键技术
4.1 内存映射文件技术
传统的文件读取一般采用文件指针模式,这种模式需要对原始数据文件频繁地执行I/O操作。采用此种方式处理PCM数据影响不大,因为PCM帧结构存储形式比较整齐规范,一帧数据长度相同,处理逻辑与算法相对比较简单。在处理大量的网络包数据时,需不断地进行读取数据、判断、跳过等操作。如果沿用过去的做法,使用文件指针模式去读写数据,在效率上无法满足海量网络数据处理的需求。运用计算机内存映射文件技术[10],将不必再对文件执行I/O操作,实现快速地读取原始网络数据。运用内存映射文件技术,将LST文本文件映射到内存后文件中的每个数据位置就会有对应的内存地址。Win32提供了内存映射函数CreateFileMapping,使用内存映射文件处理存储于磁盘上的文件时,减少了大量不必要的I/O操作,并节约了内存空间,在数据处理过程中起到了相当重要的作用。
对海量网络数据,应用内存映射技术进行大数据量的读取,实现一次读入,快速提取技术。步骤如下:
(1)创建/打开一个文件内核对象;
(2)在进程的虚拟地址空间中创建一个文件映射;
(3)将文件映射对象的全部或部分映射到创建的文件映射中;
(4)通过指向文件映射的指针对文件进行访问;
(5)从进程的地址空间撤消文件映射内核对象;
(6)关闭文件映射内核对象;
(7)关闭文件内核对象。
4.2 Excel校线文件摸版制定与批量快速读取技术
目前参数校准曲线是以Excel文件的形式存在的[11],如果通过人工对带头文件中的参数校准曲线进行手动输入,必然后会导致效率低下,甚至出现错误。校准曲线的格式固定统一,为了提高校线录入效率,软件设计了Excel校线文件模版及其工程化转换之后的存储格式(见图5),采用基于OLE(object linking and embedding)[12]的Excel交互技术,实现参数校线的自动识别与导入。
校线文件读取步骤如下:
(1)读取带头参数并存入数组;
(2)打开多个Excel校线文件;
(3)遍历校线文件,读取参数名,如果带头中存在该参数,则获取码值及物理量,然后按照码值进行排序;
(4)遍历完成后将参数信息写入带头文件。
新型飞机包含大量加装的测试参数,若为参数结构体数组分配固定长度会占用大量内存空间,并且影响软件的扩展性,因此采用TList的方法动态调整参数数组内存,开辟单独的线程进行校线导入,防止界面假死。
基于OLE的Excel校线文件批量快速读取技术如图6所示。
4.3 面向多科目流式并行计算
WINDOWS是一个支持多进程的多任务操作系统[13]。而进程本质上是一个正在执行着的程序,每个进程可以有一个或多个线程,进程中至少有一个主执行线程,它是由系统自动创建的。用户可以根据需要在应用程序中创建其他线程,多个线程并发地运行于同一进程。这样可以将一些占用时间长的程序任务放到后台去处理,提高程序的运行速度、占用更少的资源等等。处理多任务时,线程间的切换比进程间的切换要快得多,并且线程间的通信通常比进程间的通信要更快、更容易[14],多数情况下,程序可以采用多线程方法实现多任务处理功能。在试飞数据处理的环境下,采用多线程计算的开销更小,效率更高,程序的运行速度更快。
常规的数据处理方法为预处理软件每次处理一个试飞科目的数据,处理完成后部分科目还需要进行二次处理。当需要处理的试飞科目较多时,全部试飞科目数据处理完成需要花费较长时间。
针对网络数据包文件数据量较大和多个试飞科目,若采用常规的数据处理方法对各个科目逐个进行处理,效率较低。因此先对合并后的参数列表进行整体处理,再采用多线程并行处理技术(见图7),开辟多个数据处理线程将处理结果分流到各个试飞科目中。先将每时刻的预处理数据写入缓存,如果该科目无需进行二次处理,则直接写入各科目的结果文件;否则将数据发送给二次处理程序进行二次处理。多科目并行处理打破常规的数据处理方式,一次处理完成后自动进行二次处理,减少预处理结果文件的重复读写操作,有效提高数据处理效率。
4.4 网络数据包快速解析技术
网络数据包的结构与上述遥测标准的PCM数据流截然不同,具有数据量大、参数多、数据包分散、数据包灵活等显著特点[15]。每个网络数据包有单独的时间戳,而且网络包在整个原始文件中可能存在乱序的问题。
针对网络数据包的这些特性,在进行数据包参数提取前,首先将数据包放入缓冲区,设计单独线程对缓冲区中的数据包按照时间戳进行排序,数据处理线程从缓冲区中依次读取数据包通过判断网络包KEY值进行参数提取,在参数数据包按照KEY字排序的过程中,统计相同时间戳数据包的个数,若某个时间戳的网络数据包个数少于带头文件中记载的个数,则视为丢包,将这个数据包舍弃。设计时间对齐算法实现多个网络数据包处理参数的时间统一,采用计算标识符来表示当前参数组开始提取的标识,网络数据包快速解析技术整体流程如图8所示。
5 应用效果
软件具有实时显示、保存与数据处理功能。界面如图9所示。开始处理前需要选择飞机带头与组播地址设置处理结果保存路径以及选择需要二次处理的科目,软件会自动读取对应科目的二次处理程序。应用效果表明,该软件能够实现iNET数据包的实时数据处理,满足遥测数据处理的实时性和稳定性要求。
6 结束语
为了快速分析处理海量网络数据,对机载网络化测试系统中采集记录的网络数据包进行了深层次的理解和分析,并对网络试飞数据同步分析技术进行研究,应用先进的计算机技术设计了网络数据处理软件。提出整体—分流数据处理方法,并采用文件内存映射技术和多线程技术,大大提高了飞行试验海量网络数据处理软件的处理效率,使其能够满足大量iNET网络数据快速处理需求,解决了在某型飞机飞行试验的数据处理问题。该iNET网络数据处理软件目前已在某型机中得到验证,保障了多个科目的试飞工作顺利进行,同时为将来其他型号的飞行试验网络化测试应用打下技术基础。