C919机载数据实时处理系统设计
2019-05-08
(中国飞行试验研究院 测试所,西安 710089)
0 引言
随着信息化技术与我国民机产业振兴计划的全面开展,提高我国的民机适航审定能力刻不容缓。纵观欧美大飞机试飞过程,都非常重视机载实时处理系统在民机适航审定中的作用。未来大飞机采用了大量新技术、新材料,采用了新的试飞方法与测试技术,使得大型运输类飞机机上测试参数量骤增,参数量超一万已成常态[1-3]。
ARJ21试验机总的测试参数有8000多个,机载实时数据处理系统中涉及的有1500多个,原始数据传输占用的带宽为10 Mb/s,共有两路PCM数据和4路网络数据。随着测试规模的扩大和其它测试需求的变化,以前传统的测试系统受到了冲击,PCM也暴露出了一些自身的不足和缺陷,如受码速率和板卡通道容量限制的通道容量问题和布线问题[4]。
C919大型客机测试参数超过两万个,试飞过程中留空时间平均四小时以上,单架次飞行数据超过100 GB,同一架次中多科目混合、分时段进行,传统数据处理模式需2小时以上已无法满足型号试飞数据处理任务进度要求。在C919大型飞机试飞任务中,对机载实时数据处理提出了较高的性能要求,现有机载实时系统架构及设计已没有如此大的性能提升空间,解决超大量数据实时处理问题的需求极为迫切。
1 国内外现状
欧美大飞机试飞过程中,非常重视机载实时处理系统的作用,如空客A380、波音公司B747、777等飞机试飞过程中使用了当时功能强大的“机载实时数据分析与监视系统”,在试飞过程中可对关键参数实时监视,同时实时完成50%~60%数据的分析处理。从上世纪80年代末开始,我国开始在运7飞机定型试飞任务中引入机载实时监控,由于技术限制无法实现数据同步实时处理,这就导致在试飞过程中延缓了下一架次飞行决策的时间[5]。
图1 某大型运输机机载实时系统结构图
图1所示为某大型运输机机载实时系统结构图,系统实时接收来自机载采集系统核心交换机发出的网络数据包,通过实时监控系统服务器完成数据包解析、数据转发。其中,数据存储、参数快速处理、振动数据处理分别采用三台嵌入式工控设备完成。系统实时服务器选用Windows操作系统,实时性不能完全保证。系统网络接收速率最高为50 MB/S,实时处理参数2000个,数据存储量为256 GB。
2 系统设计
为解决机载超大量数据快速处理难题,同时保障系统处理的实时性,提出C919机载实时系统性能指标为:实时数据接收速率110 MB/S,实时处理参数在采样率为64时超过8000个,数据读写速率不小于500 MB/S。超大量数据的实时处理问题是该系统设计的重点,现有实时系统架构及设计已没有如此大的性能提升空间。
2.1 总体设计
为了提高系统实时性、提高系统运行稳定性,在经过分析、论证和前期测试的基础上,本次方案采用基于千兆以太网、VXWORKS实时操作系统。在对系统架构重新设计,各部分功能整合后,通过软件优化升级并改进数据处理流程来进一步提高系统性能。
C919 机载实时处理系统架构设计如图2所示,系统采用C/S架构,综合处理单元实时接收机载数据采集系统核心网络交换机发出的iNET-X网络数据包,实时完成网络数据包接收、原始数据存盘、网络数据实时处理、监控参数过滤、关键参数快速分组处理及存盘等工作。监控台端实时监控软件对物理量数据以数字、曲线、仪表等可视化方式显示。综合处理单元输出一路数据通过遥测发射至地面,供实时监控用。
图2 C919 机载实时处理系统结构
不同于现有机载实时系统的分散数据处理模式,C919机载实时系统核心数据处理功能集中于一台嵌入式计算机——综合处理单元来完成。综合处理单元模块的数据处理性能对于整个系统性能起着决定性作用,该系统是典型的多核多任务系统,根据项目中实时性任务特点选用了基于优先级的可抢占式分级调度策略来提高系统吞吐量,提升整个系统数据实时处理效率。
表1 现有机载实时系统与C919技术指标对比
C919机载实时处理系统较现有机载实时系统提高了数据预处理参数量及监控参数量,能够更好地保障试飞任务的开展;数据预处理效率的提升,缩短了试飞任务进行到试飞数据分析的时间,可快速提供给课题人员分析决策,为提高试飞效率,缩短试飞周期提供了必要的技术支持;开展了一系列关键技术的研究,为未来试飞需求的进一步提升进行了必要的探索。
2.2 软件设计与实现
图3所示为C919机载实时数据处理系统流程图,机载实时数据处理软件首先运行配置加载模块,将所需配置信息和参数组信息存储在缓存中,并对服务器进行初始化配置。创建数据流接收线程,服务器按照配置要求接收来自采集器发送的数据包,实现数据流参数提取、工程量转换,转换结果通过网络发送给客户端。机载实时数据处理软件的关键技术在于合理调配各个功能模块之间的资源,也即合理分配线程来实时的完成所有功能模块。其中,机载数据实时处理为核心模块,该模块功能由综合处理单元完成。
图3 C919机载实时数据处理系统流程图
图4所示为综合处理单元数据处理流程。综合处理单元实时接收机载网络核心交换机发来的INET-X网络数据,经过实时采集按照IRIG标准第十章中网络数据存储格式要求进行原始数据存盘,同时进行网络信息包分包解算,结合带头信息对数据进行实时处理,对照分组快速处理参数列表并按照各科目要求进行结果数据存盘,对照实时监控参数列表对需要实时监控的参数进行转发。综合处理单元可实时完成性能、操稳、发动机、燃油、起落架、电源等多个科目的数据预处理任务,在飞行前通过机载测试信息管理软件可对预处理任务进行调配。
图4 综合处理单元数据处理流程设计
由于网络时延的随机性,在对数据实时处理过程中首先要完成网络数据包的时间对齐,该系统通过分析网络数据包乱序规律,通过设置合理的环形缓存完成数据包的时间对齐。
由于课题人员所需结果参数总数及采样率提高的原因,关键参数分组快速处理结果文件数据量激增,本项目引入了预留缓存的思想和方法来解决试飞预处理结果文件的快速写问题。
2.2.1 多核多任务系统调度设计
多核多任务实时系统应用中,如何将线程分配到多个核,使得处理器资源得到最大程度利用,提高吞吐量,降低响应时间,对调度策略要进行一定的设计。本系统具有多个任务同时进行且都要求实时性极强的特点,对系统CPU资源调度存在很大考验。鉴于C919机载实时处理系统在运行过程中,线程比较固定,结合该系统具体应用特点决定采用基于优先级的可抢占式分级线程调度策略[6]。
其中实时业务优先级依次为:网络数据包接收、实时数据处理、原始数据存盘、快速分组处理参数存盘、监控参数转发。其中网络数据包接收为最高优先级可抢占任务;其它线程优先级依次降低,均为不可抢占型任务。网络数据包接收线程与实时数据处理线程要求实时性极强,且数据连续性强,分配于核2,核1运行操作系统中断服务程序,其余线程也运行于核1。
实验室测试过程中发现系统性能对于网络数据包接收缓存大小较为敏感,分析原因为缓存过小可能会造成CPU在两个核之间切换频繁,带来系统性能的下降,但是缓存过大可能会造成数据包丢失,经过实验室测试最终确定网络数据包接收缓存为8 M。
2.2.2 网络数据包时间对齐方法设计
机载网络采集系统各个子系统采集设备型号多样,数据包在从发送端到目的端时,网络中要经过若干个中间节点,节点与节点之间对包的传输会产生延时,由于包可能经过不同的中间节点到达目的端,以及局域网本身的其它传输不确定性,从而总的延时不同,导致数据包到达的顺序与期望的不同,产生了乱序。同一预处理结果文件中经常包括机上各个系统的采集参数,无时间相关性的数据预处理结果是无意义的,无法供课题人员进行进一步计算、分析,必须根据机上网络数据特点设计针对性的时间对齐方法。
机载实时系统首先应用访问控制列表技术,以匹配KEY字的方式将与实时数据处理无关的信息包进行滤除,并将高采和低采数据包彻底分开,为后续快速时间对齐做好准备。
针对在线预处理的原理和实时性要求,考虑时间对齐关键点在于:找到时间乱序的规律,设置合理的处理缓存。分析造成数据包乱序的原因可以看出,乱序是有周期性变化规律的,缓存区大小设定与该规律有关。本项目中考虑首先对失序情况进行量化,然后结合收到数据包的长度来确定缓存区大小。
第一步:量化网络数据包失序情况。
最大失序时间是指一个最大失序周期的时间,假设1 s内接收到信息包的个数为N,它们的时间标签分别为T1,T2,…,TN,进行如下计算:
ΔTi=Ti + 1-Ti(i= 1,2...,N-1)
比较每个ΔTi(i=1,2...,N-1),得到最大值ΔTmax,就是最大的逆序时间。乱序的规律就是以此逆序时间为周期,反复的出现的。
第二步:建立环形缓存区。
贵州毕节旅游资源丰富,织金洞、百里杜鹃闻名于世。打造彝族文化特色,深入挖掘民族元素,提供优质精品的服务,是酒店努力的运营方向。信步古城,浓郁的彝族特色迎面而来。红、黄、黑为主基调的彝族建筑风格酒店就落座在山腰,层楼叠院、高脊飞檐、曲径回廊,无处不彰显彝族元素。不仅如此,恢复重建的慕俄格古城结合旅游地产概念,设计了沿街商铺、小旅馆、四合院、工坊式商业、集中式旅游体验馆、度假别墅、功能型旅游影视产业基地等类型的产品,满足从普通游客、会务接待到各类型文化艺术界人士的需求。
求出满足如下条件的最小值T以确定用于排序的缓冲区大小L:
1)T为T1,T2,…,Tn的公倍数;
2)T>=ΔTmax;
3)Li(i=0,1,2...,N-1)为N个数据包长度;
L=T∕T1*L1+T∕T2*L2+…+T∕Tn*Ln。
申请环形缓存区L,对信息包进行排序,环形缓存是以最大逆序时间为周期来分块的。
数据包在线快速时间对齐示例如下:
图5 数据包在线快速时间对齐示例
2.2.3 海量数据快速存储设计
首次将预留缓存的思想和方法引入到海量试飞数据工程量处理中,期望能够为试飞数据的快速写技术研究提供指导[7]。
C919测试参数总量激增,数据总量超100 GB,试飞工程师所需的试验结果参数的采样率增大和总数增多,分析处理的结果工程量文件也随之增大。如何快速地对海量试验数据进行分析处理,除了在处理方法上进行优化设计外,在分析处理试验数据时实现快速地将结果工程量文件写入固态盘,是试飞数据处理的关键点和难点。
一般试飞数据处理软件的结构如图6所示,首先读入校线文件和分析需处理参数列表,随后循环进行读入原始数据、分析原始数据、结果工程量写入固态盘,直到飞行结束,这个过程是机载数据实时处理系统中关键参数快速分组处理的核心部分。
图6 关键参数快速分组处理软件结构图
对于机载数据实时处理系统而言,最理想的缓存情况当然就是采用部分缓存技术[8],结合数据分析模块,应用部分缓存设计预留机制,即利用试飞数据相关信息,预知未来的数据处理结果的存放地址,对工程量存盘情况进行预测,达到一个尽可能好的缓存性能。
如图7所示,为了提高关键参数快速分组处理效率,采用多线程并行计算方式[9]。如果不采用可以预测结果工程量写的地址的话,那么线程“结果工程量文件写0”必须是第一个被写入固态盘的数据,在这种情况下,即使线程“结果工程量文件写2”或者“结果工程量文件写1”先来,也必须要得到“结果工程量文件写1”写完才可以进行写操作,这样每个线程必须要等到上一个线程结束才可以进行,他们之间是串行关系,这样就增加了线程的等待时间,致使整个进程的效率降低。而采用预留缓存机制,“结果工程量文件写2”的写操作,不需要等待“结果工程量文件写0”或者“结果工程量文件写1”结束,他们之间是并行关系,没有必然的联系,消除了线程的等待时间,提高了关键参数快速分组处理的效率[10]。
图7 预留缓存机制实现
3 系统性能测试及应用验证
C919综合处理单元的研制为该系统设计的一个难点,既要解决速率为110 MB/S网络数据的实时接收、处理,同时要实现6000个采样率为64的关键参数分组快速预处理,并将处理结果进行存储,繁重的处理任务对综合处理单元的软件设计要求都非常高。该项目采用了基于优先级的可抢占式分级调度策略对多线程任务进行调度,数据接收速率、实时处理参数能力、核2使用率及丢包率是该系统的重要考察指标,其中该系统对丢包率容忍度为0,以下是实验室测试结果。
表2 C919机载数据实时处理系统性能测试
从实验数据可以看出,在参数采样率变化情况下,会导致核2使用率迅速恶化。为了保证系统稳定工作,建议在统一采样率64次/秒情况下,快速处理参数不超过11 000个;在不同采样32~1 024情况下,快速处理参数个数不超过5 000个,且高采参数(512次/秒,1 024次/秒)不宜超过250个 。
通过匹配KEY过滤了部分无用网络数据包,解决了高速数据流丢包问题。通过网络数据包在线快速时间对齐技术,在飞行过程中边飞行边处理,为C919飞机关键测试参数快速分组处理做好前期数据准备,保障了飞行过程中多个科目数据的实时预处理。实验室验证采样率为64时,实时处理参数可过万,在参数采样率不同时(32~1 024),处理参数量可达5 000个。目前实际应用中,快速分组预处理参数为2 200个,软件运行中CPU占用率不高,实时处理任务性能还有部分提升空间。
4 结束语
C919机载数据实时处理系统选择了VXWORKS操作系统,对原有工作数据预处理模式进行了改进,对算法流程进行了设计提升。网络数据实时接收处理能力从55 MB/S提升至110 MB/S,实时处理参数个数增多至过万,完善了关键参数快速分组处理功能,可保障多个科目预处理结果输出。该系统已成功保障C919飞机上海首飞工作,可供后续大飞机试飞机载数据实时处理系统搭建借鉴。未来该系统研究重点将放在数据预处理能力的进一步提升,以满足未来超大量数据处理需求。