一种ADS-B 数据转换系统的设计与实现
2020-03-05谢东颖
谢东颖
(中国民用航空汕头空中交通管理站,汕头515000)
0 引言
当前民航空管正大力推进对中小机场在空管技术上的帮扶,通过技术援助等方式提高中小机场的空管保障能力,促进民航整体空管水平的提升。以中南地区为例,汕头空管站负责了梅县机场的ADS-B 的技术支持和相应设备运维。当前梅县机场应用了ADS-B中小机场显示系统,该系统可以接入ADS-B 数据,实现对梅县管制区内的飞行态势监视。ADS-B 是民航近年推进发展的新技术,虽然已经在全国范围内实现了普及,但是目前数据稳定性方面还不如传统雷达。本文从实际出发提出一种将雷达数据转换为ADS-B 数据的软件系统,通过系统的转换可以将本地的雷达数据以ADS-B 数据格式接入中小机场显示系统,为当地机场的运行保障提供另一种手段。
1 转换的整体设计及思路
ADS-B 采用网络接入到中小机场显示系统,其格式为ASTERIX CAT021 格式,更新周期为0.4~0.6s。航空器的相关信息可以通过不同的消息广播,具体数据项的更新时间间隔不一致,因此,每次更新的目标描述数据不一定完整,存在部分数据更新的情况。雷达数据在实际工作中则通过同步串口,采用HDLC 高级数据链路协议。一般的A/C 模式雷达的目标数据格式为欧控ASTERIX CAT001,服务信息数据格式为ASTERIX CAT002(S 模式雷达则分别为CAT034 和CAT048)[1],相比之下,雷达数据更新的周期较长,一般为4s 或5s。因此设计必须解决以下问题:一是需要将雷达数据的同步串口进行解析和处理得出具体数据项内容;二是需要根据ASTERIX 协议将CAT001/CAT002和CAT034/CAT048 中的具体数据项和CAT021 中的具体对应项分别对应,进行数据状态的更新,封装为CAT021 的数据格式转换为UDP 网络数据接入到中小机场显示系统;三是解决两种数据格式之间的更新周期不一致问题。对雷达数据进行内插预测。主要的系统流程结构如图1,软件设计上可以分为雷达数据处理模块、数据转换模块、更新周期同步模块和数据发送模块。
图1 系统流程结构图
2 具体实现
2.1 雷达数据处理模块
为了提高开发效率,系统采用当前汕头空管站在用自动化系统的协议转换器,该协议转换器可以将接入的雷达信号由RS-232 同步信号转换为UDP 网络信号。因此,系统只需要在网络接入上对数据进行分析处理即可。在C#中UDP 数据处理可以采用以下方式。首先创建数据缓存队列,并开启数据包解析线程,创建UDP 通信对象,绑定本地IP 和端口,通过UDP 异步接收数据将接收到的数据封装为DataPacket 放入数据包缓冲队列中。后续的软件分析处理模块只需要在队列中对具体数据项处理即可。数据格式解析则可以根据CAT021、CAT001 和CAT048 进行具体解析。同时,系统将建立起目标数据列表,通过航班号为唯一识别信息建立数据类,该类将包含数据转换关键对应项的多个属性,后续的数据项对应只需要修改具体目标的具体属性即可,方便消息传递和处理[2]。
2.2 数据转换模块
中小机场显示系统在态势显示上的关键数据项为航空器的航班号、SSR、位置和高度,因此系统在进行数据转换时必须关注相应的数据项信息,除了上述数据,笔者对监视数据的必须关注项进行了整理得出关键数据项对应表,具体如表1。
表1 关键数据项对应表
中小机场显示系统在信号引接中需要数据源提供标识,而在ASTERIX 数据中,主要通过SAC/SIC 码进行识别,因此系统需要对010 数据项进行解析;实际工作中ADS-B 数据是可以不包含SSR 二次代码信息的,但是雷达数据必须实时具备该信息,因此为了提高信息的丰富余度,此处不管ADS-B 是否需要SSR 都将雷达数据的070 数据项转换到ADS-B 的070 数据项中;S 模式与ADS-B 在航班号和24 位地址码的格式表现上是类似的因此可以直接将其转换应用,如若是A/C模式雷达数据则将其置为不可信“????”字符(如航班号);至于SPI 是监视数据的重要信息,因此需要将雷达数据中的020 转换到ADS-B 数据中的040 数据项;特殊代码在ADS-B 中有两个标志位,如若雷达数据的该数据项有具体的内容,转换时必须将ADS-B 中的200 数据项的标志位置为有效和在070 中设置相应的特殊代码[3];位置和高度则是态势显示的关键,系统必须对其进行准确、实时的转换。雷达数据采用的是极坐标或笛卡尔坐标系表现位置,ADS-B 则是WGS-84坐标显示的经纬度坐标。因此此处需要将雷达数据坐标转为WGS-84。
在高度的处理上,主要存在精度的不一致情况。雷达数据主要采用C 模式高度,A/C 模式雷达的高度数据精度为100ft,S 模式则为25ft,ADS-B 也为25ft。而在实际应用中,这种精度的差别并不影响态势显示,因此可以选择不进行精度对应处理,直接将雷达数据的高度数据项值填入具体的ADS-B 数据项即可。
2.3 周期同步模块
如上所述,需要对雷达数据进行内插预测处理,此处采用随机森林内插算法[4]。随机森林可以综合集成学习思想和随机子空间方法,利用袋装重抽样的方法从4s 一周期的雷达历史数据中抽取多个与原始样本一样数量的元素构建一个决策树。在决策树的构建中,通过随机子空间法从特征中随机选择特征,利用最优特征进行节点分裂。预测决策树每次预测都会给出一个预测结果,并通过少数服从多数的原则得出最终的结果,最终进行回归计算。具体实现为:系统保存1分钟内的雷达数据作为训练集,并选择出测试集和特征维数,抽取根节点样本进行训练;若当前节点达到终止条件,该节点将会被设置为叶子节点,预测输出具体的平均值,否则从特征维数中随机选取特征维数寻找回归效果最优的特征和阈值,当最优特征值大于该阈值时,样本进入右节点,否则进入左节点。如此循环运行直到所有节点都被标记为叶子节点。为提高执行效率,算法采用Python 设计[5],部分代码实现如下:
对于中小型机场,管制空域较小,区域内需要显示的目标不多,因此可以在显示范围上对目标进行过滤,只关心和处理本区域内目标,降低算法运行开销。实际测试表明,这种算法能有效实现雷达数据更新周期的改变,位置和高度信息不会出现较大的突变,数据预测效果与实际的ADS-B 数据运行态势较为接近。
2.4 数据发送模块
数据最终需要封装为CAT021 的ADS-B 数据发送到中小机场显示系统。与雷达数据接收处理类似,此处采用UDP 封装类,而前端的数据处理效果能够满足实时性要求,因此此处采用C#的UDP 通信关键类Udpclient 进行设计,引入命名空间:
为了提高系统的人机交互性能,系统在前端提供用户接口,用户可以输入中小机场显示系统的IP 地址。最终软件通过“Send”方法的调用实现数据的发送。采用UdpClient 类调用函数发送UDP 数据包,具体实现部分代码如下:
3 结语
根据当前ADS-B 在中小机场的显示应用提出一种ADS-B 数据转换系统,该系统将A/C 模式和S 模式雷达数据转换为ADS-B 数据,以丰富当前ADS-B 中小机场显示系统的监视源,为中小型机场的空管运行保障提供支持。系统在周期同步方面采用了随机森林内插法,完成了雷达数据与ADS-B 数据的实时同步显示,软件实现上通过C#和Python 结合编程的方式,兼顾开发效率和算法运行性能,在实际工作中表现良好。