-
0 引言
-
试飞是民机投放市场前的必经之路,是在真实的环境中对飞机的功能和性能进行测试和验证的过程[1]。试飞飞机与航司运营的飞机不同,它们会加装各种传感器、采集设备及数据处理设备,用于收集、传输、处理和分析飞机系统运行状态的相关参数。与此同时,地面监控系统会根据IRIG 106 CH4标准,使用脉冲编码调制(pulse code modulation,简称PCM)对试飞数据进行编码,并通过频率调制(frequency modulation,简称FM)或异形偏移正交相移键控(shaped offset quadrature phase shift keying,简称SOQPSK)等技术对遥测至地面的试飞数据进行实时监控[2-3]。传统的遥测信号容易受到飞行高度、飞行姿态和空域地形的影响,数据会产生跳变和错误,严重时甚至影响试飞安全[4]。国内外的主流试飞机构一直在积极探索和研究如何提升试飞遥测信号的质量以及保证遥测数据的准确性。例如,国内相关试飞机构曾尝试使用多遥测站遥测中继以及5G和以太网相结合的方式来扩大监控半径[5];国外遥测设备制造商从编码的角度入手,利用低密度奇偶校验码(low density parity check code,简称LDPC)或者其他校验方式还原被干扰数据,从而提高数据质量[6];国内的一些高校团队则依靠长短周期记忆(long short term memory,简称LSTM)算法来预测遥测数据中的异常,从而达到修复错误数据的目的[7]。
-
本文提出了一种新的解决方案,利用卫星建立空地通信,基于典型C/S架构设计研发了试飞数据实时监控系统,实现关键参数、告警信息和视频数据的订阅监控、实时存储和分析。
-
1 系统架构
-
试飞数据实时监控系统采用C/S架构实现,分为服务端和客户端,如图1所示。服务端运行于机载环境,用于侦听客户端的指令,完成系统配置、数据解析、参数打包和数据分发等操作;客户端部署在地面,通过上行链路与机载服务端建立长链接,并将配置文件和相关指令发送至服务端,同时可实时接收服务端数据流,实现数据监控,从而为地面指挥人员和试飞工程师提供决策依据。系统采用IoTDB组件进行数据存储,SQLite用于管理任务信息,同时采用XML文件辅助系统配置和管理。
-
图1 试飞数据实时监控系统架构图
-
1.1 服务端功能模块
-
服务端主要包含以下功能模块:
-
1)系统配置管理:接收并解析来自客户端的配置文件,根据这些配置动态调整数据采集参数、设定报警阈值及数据分发策略,以适应不同飞行测试的需求。
-
2)数据解析与打包:对飞机上安装的各类传感器收集的原始数据进行解析,将其转换为统一格式,随后根据预设规则进行高效打包,确保数据传输的经济性和安全性。
-
3)指令响应与执行:实时监听并响应客户端发送的指令,包括但不限于调整数据采集频率、启动特殊测试模式或执行紧急数据备份等操作。
-
4)数据分发与同步:通过优化算法将处理后的数据分发至地面客户端及其它指定的接收端,确保数据的实时共享与同步,支持多点并发访问。
-
1.2 客户端功能模块
-
客户端位于地面,作为试飞数据实时监控指挥中心,承担着数据接收、监控展示与决策支持的重要职责。其具体功能包括:
-
1)长链接管理:通过稳定的上行链路,与机载服务端建立并维护一个长期有效的通信连接,确保数据传输的持续性和可靠性。
-
2)指令与配置下发:根据试飞计划的变更或实时需求,向服务端发送最新的任务指令和配置文件,指导机载系统调整工作模式。
-
3)实时数据监控:接收并实时展示服务端传来的数据流,通过图表、报警提示等形式直观反映飞机状态,为地面指挥人员和试飞工程师提供直观、及时的信息。
-
4)数据分析与决策支持:利用集成的数据分析工具,对收到的数据进行初步处理与分析,为试飞过程中的决策提供科学依据,比如判断飞行性能是否达标、是否存在安全隐患等。
-
2 机载服务端
-
服务端运行于机载终端设备,可通过XML进行静态配置,也可实时接收地面上传的配置信息完成动态配置。服务端采用多线程模式,主要完成前端采集系统输出实时流的解析,同时响应地面订阅指令、进行数据打包和分发,机载服务端线程时序如图2所示。客户端功能模块与线程映射关系如表1所示。
-
图2 机载服务端线程时序图
-
首先,在实时模式下,数据接收线程通过UDP组播方式接收来自前端测试系统的实时数据流(包括试飞参数的网络数据包(NetworkPacket data,简称NPD)和PCM视频流)并转发至数据处理和视频处理线程。
-
其次,数据处理线程根据参数的结构化解析信息将试飞参数转换为工程量数据;视频处理线程从PCM数据流中提取多路嵌入式视频完成视频解析。
-
再次,处理线程解析后的数据和视频发送至存储线程,利用IoTDB时序数据库和二进制文件分别对试飞数据及视频进行实时存储。
-
最后,数据打包线程则根据约定协议将所有数据进行封装下传至地面。当服务端侦听到地面请求进入回放模式时,数据接收线程会从IoTDB和二进制视频文件中提取指定时间段数据进行打包下传。
-
2.1 信息侦听模块
-
信息侦听模块的核心是TCP服务器,工作流程如图3所示。
-
首先,服务器启动时,会从XML文件中获取IP地址、通信端口等信息对TCP服务器对象ServerSocket进行初始化,同时创建侦听终节点ListenEndPoint,并进行绑定。
-
其次,开启侦听线程,调用ServerSocket对象的Accept方法,以阻塞方式侦听客户端的连接。
-
再次,当客户端请求连接时,ServerSocket返回连接对象Connection,同时开启数据通信线程CommThread,并将Connection和CommThread写入字典,便于后续操作,ServerSocket则继续侦听其他客户端连接请求。
-
图3 信息侦听模块工作流程
-
最后,在CommThread中,Connection根据不同的指令提取动力、性能操稳以及航电等不同参数集合进行封装和下传,指令清单见表2。
-
2.2 数据解析模块
-
数据解析模块的主要功能是完成NPD数据包的解码、参数的工程转换以及视频数据的提取,NPD数据包[8]结构如图4所示。
-
下面以ARINC429总线数据“空速”(Airspeed,类型为BNR,取位为11-22,系数为0.25)为例介绍试飞参数解析过程:
-
1)根据配置文件信息确定参数Airspeed的类型、取位、系数以及所在的子帧编号(subframe identifier,简称SFID)和Word等信息;
-
图4 NPD数据包
-
2)解析NPD包头信息,提取当前数据包时间戳Timestamp,根据Data Type属性确定该数据包是否为ARINC429消息;
-
3)轮询该NPD数据包中的所有Data Segment,找到SFID匹配的数据段;
-
4)根据Word和取位信息提取参数所在的数据位,并转换为无符号整型数据;
-
5)对无符号整型数据进行补码运算,最后乘以系数得到最终工程量结果。
-
视频采用H.264压缩算法进行编码,并采用PCM(pulse code modulation)[9]数据帧的封装,格式如图5所示。
-
图5 多路视频帧的PCM编码
-
视频的解析相对简单,即按照图5结构,对每个子帧(每一行)中“相同颜色”(同一路视频)的PCM Word按照顺序挑选。以第一路视频为例,提取后的视频数据为[Word-01][Word-04][...][Word-n1][Word-n4]。
-
2.3 数据存储模块
-
数据存储模块的主要功能是对解析后的参数数据和视频数据进行实时存储,其中参数数据利用国产时序数据库IoTDB进行存储,支持根据架机号、参数名称等信息进行数据的快速定位。
-
针对每架机的不同采样率参数,本文采用多存储组加额外标识字段的方式存入IoTDB,结构如下:
-
1)AircraftID(STRING):存储组标识;
-
2)ParameterID(STRING):参数标识,可以包含参数名和索引以区分同一架飞机上的同名参数;
-
3)SampleRate(INT):参数采样率,用来区分参数的不同采样率;
-
4)Timestamp(TIMESTAMP):时间戳字段,数据在NPD数据包中的封装时间点;
-
5)Value(DOUBLE):工程量值,根据不同参数类型设计为DOUBLE、INT或其他合适的数据类型;
-
6)PRIMARY KEY (AircraftID,ParameterID,Timestamp):设置主键联合唯一索引以优化查询性能。
-
为了保证高并发写入效率,采取批量写入方式,每30 ms对缓存数据点telemetryData进行写入操作,代码片段如图6所示。视频则按照原始数据(PCM Word)以图7所示的IRIG 106第10章的格式以及可播放文件(.avi)进行实时保存。
-
视频的可播放文件调用外部的FFMPEG.exe程序实现,步骤如下:
-
图6 IoTDB写入代码片段
-
图7 IRIG 106 CH10记录格式
-
以时间信息“yyyy-MM-dd-HH-mm-ss.avi”初始化视频文件存储路径;
-
建立FFMPEG执行指令“-i udp://239.0.0.1:12345 yyyy-MM-dd-HH-mm-ss.avi”,其中239.0.0.1:12345是前端视频数据分发的组播地址;
-
通过System.Diagnostics.Process调用FFMPEG.exe并执行相应指令。
-
2.4 数据分发模块
-
数据分发模块根据信息侦听模块收到的不同指令从全量数据集中对指定专业的试飞参数进行挑选,并按照图8所示的应用层协议打包和封装,经UDP发送至地面客户端。
-
图8 有效负载数据格式
-
图8中参数的具体信息如下:
-
1)Type:数据包类型,占2 bit,取值为0~3,对应着表1中CMDONE、CMDTWO、CMDTHREE、CMDFOUR等指令请求的参数集;
-
2)Sequence Number:计数器,占16 bit,以s为单位,用于验证数据包传输的连续性;
-
3)Packet Length:数据包长度,为长整型,表示当前数据包有效数据的长度,单位为字节;
-
4)时(hour)、分(minute)、秒(second)、毫秒(msecond)等时间参数采用Float独立编码,分别占4个字节;
-
5)试飞参数P1—Pn均使用Float 4字节编码且按照既定顺序排列。
-
3 地面客户端软件
-
地面客户端软件基于WPF(windows presentation foundation)框架,采用MVVM模式[10-11]实现,分为Model层、View层、ViewModel层。其结构如图9所示,包括试飞数据监控、指令上行、数据分发功能模块。
-
3.1 Model层
-
Model层主要完成与机载服务端的连接、控制指令的发送以及进行UDP数据包的实时接收、解析和分析。其中,连接实现过程如下:
-
1)通过IP地址和通信端口Port完成客户端ClientSocket =Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
-
图9 MVVM设计模式
-
2)连接服务器,并发送校验指令“CMDHI”;
-
3)开启数据收发线程,通过异步方式进行指令收发。
-
数据解析服务按照图8所示的数据格式对UDP数据包进行解码,并建立参数名称与数据之间的映射关系ParameterValues<String,Double> {(P1,V1),(P2,V2),...,(Pn,Vn)};分析服务按照既定规则对ParameterValues进行实时分析,分析结果传输至ViewModel对象。ViewModel层采用MVVMLight框架,负责Model层方法的调用和View层数据的更新。
-
3.2 View层
-
View层客户端监控界面如图10所示,集成了GMAP.NET、航空仪表、指令按钮以及自定义显示组件,负责显示关键参数数据、飞行航迹和告警信息,以及响应用户操作上传参数请求指令。
-
图10 View层客户端实时监控界面
-
3.3 ViewModel层
-
ViewModel层提供可与视图进行数据绑定的属性来实现数据的展示和交互,同时封装了处理用户交互的命令(如按钮点击等事件),通过继承自INotifyPropertyChanged接口,以便在属性值发生变化时通知视图更新。
-
4 系统试验测试
-
本文设计了测试试验用以验证试飞数据实时监控系统的有效性和稳定性。试验将系统服务端软件部署于国产某支线客机机载环境。该支线客机在南昌开展试飞,系统客户端运行于上海地面监控中心,运行状态如图11所示。
-
图11 地面客户端软件运行状态
-
经过实际飞行测试,具体测试结果如下:
-
1)地面客户端实时接收试飞参数648个,参数采样率为32 Hz,数据完整性100%;
-
2)地面客户端实时接收试飞参数与传统遥测传输的参数数值进行比对,参数准确率100%;
-
3)通过卫星传输的机载视频连续且完整;
-
4)经测试,试飞参数的监控延时(从机载服务端接收参数到地面客户端显示的绝对时间差)为185 ms,视频延时约1 s。
-
验证试验表明:基于卫星通信的试飞数据实时监控系统可实现民机试飞参数的实时监控。
-
5 结论
-
本文针对民机试飞数据监控,基于卫星通信方式,采用C/S架构和WPF平台设计研发了一套新的实时监控系统,实现了国产民机试飞数据的实时解析、按需订阅和异地实时监控,为民机试飞安全监控提供了新的思路。
-
参考文献
-
[1] 黄涛,王伟.大型民机试飞测试发展与挑战[J].计算机测量与控制,2016,24(9):5-7,11.
-
[2] 张娟,支高飞.IRIG106第10章数据流实时及事后处理时效分析[J].信息系统工程,2017(4):112-114,116.
-
[3] 刘涛,冯灿,李成浩.民机试飞遥测实时数据处理软件设计与研发[J].计算机测量与控制,2022,30(12):195-202.
-
[4] 白效贤,杨廷梧,袁炳南.航空飞行试验遥测技术发展趋势与对策[J].测控技术,2010,29(11):6-9.
-
[5] 罗清华,彭宇,周鹏太,等.航空飞行试验新一代网络化遥测技术浅析[J].仪器仪表学报,2017,38(2):261-270.
-
[6] 徐文瑜.基于射频与以太网的民机试飞遥测数据传输系统设计与实现[D].上海:上海交通大学,2017.
-
[7] 董静怡,庞景月,彭宇,等.集成LSTM的航天器遥测数据异常检测方法[J].仪器仪表学报,2019,40(7):22-29.
-
[8] 蒋华,吴中福,王汝传.基于NPD协议的网格服务数据传输模型研究[J].计算机科学,2006,33(10):42-45.
-
[9] 段宝元,穆永花,穆永河.新飞机测试改装网络数据到PCM的转换设计[J].计算机测量与控制,2014,22(10):3356-3358.
-
[10] 刘铁猛.深入浅出WPF[M].北京:中国水利水电出版社,2010.
-
摘要
试飞数据实时监控系统是保证民机试飞安全、确定飞行试验有效性的重要手段,通常采用S波段遥测方式将数据下传至地面,监控半径一般不超过300 km,且数据质量易受到飞行姿态、高度和空域地形影响。基于客户端/服务器(Client/Server,简称C/S)架构设计研发了新的试飞数据实时监控系统,该系统采用卫星进行空地通信,包含服务端和客户端。服务端部署于机载环境,用于实时侦听来自地面客户端的数据订阅指令;客户端采用WPF(Windows Presentation Foundation)框架,利用模型-视图-视图模型(Model-View-ViewModel,简称MVVM)模式开发,集成了物联网数据库(internet of things database,简称IoTDB)、GMAP.Net、FFmpeg等组件,可实现试飞关键参数、实时飞行轨迹、告警信息和机载视频的可视化监控。试验中,该系统客户端完成了某国产支线客机在南昌试飞全过程的实时监控,且系统运行稳定、可靠性高,为特殊试飞科目的开展提供了解决方案。
Abstract
The real-time flight test data monitoring system is a crucial means to ensure the safety of civil aircraft test flights and to verify the effectiveness of flight tests. Typically,the system uses S-band telemetry to transmit data to the ground,with a monitoring radius generally not exceeding 300 km. Data quality is easily affected by flight attitude,altitude,and airspace terrain. A new real-time flight test data monitoring system has been designed and developed based on a C/S (Client/Server) architecture,employing satellite communication for air-to-ground communication. The system consists of a server-side and a client-side; the server-side is deployed in the airborne environment,continuously listening for data subscription commands from the ground client-side. The client-side is developed using the WPF (Windows Presentation Foundation) framework and the MVVM (Model-View-ViewModel) pattern,integrating components such as IoTDB,GMAP.Net,and FFmpeg. This allows for the visualization of key flight test parameters,real-time flight trajectories,alarm information,and airborne video. During testing,the system's client-side operated in Shanghai and successfully monitored the entire test flight process of a domestically-produced regional jet in Nanchang in real-time. The system ran stably and reliably,providing a solution for conducting special flight test missions.