ASTERIX协议数据解析算法研究与实现
2021-02-12冯超
冯 超
ASTERIX协议数据解析算法研究与实现
冯 超
(中国民用航空深圳空中交通管理站,深圳 518000)
近年来随着航班量与日俱增,应用各类航班监视设备数据进行本地化开发以提升航空管制安全和管制效率已成为必然发展趋势。ASTERIX作为各类航班监视设备数据交换标准涉及到的协议种类较多,解析这些协议是实现监视设备数据二次开发应用的关键。以CAT021数据为例,针对ASTERIX协议数据提供了一种通用的解析算法,并根据算法完成了一套通用的数据解析程序实现框架。
ASTERIX;监视设备;解析算法;UAP
0 引言
随着中国经济的不断增长,民航机场的航班量与日俱增,以深圳宝安国际机场为例,2019年的航班日均架次已经达到了1013架次,平均每1~2分钟就需要指挥一架飞机起降,同时机场场面还有很多车辆行驶,如遇特殊天气,情况更加复杂,以上这些状况为航空管制人员指挥航班带来很大压力。为解决这一问题,各大机场引入了各种类型的航空器监视设备。如监视航路上飞机信息的航管二次雷达和ADS-B设备;监控机场场面信息的多点定位和场面监视雷达设备等。利用各种航空器监视设备实时监控航班的位置和状态,并通过计算机软件终端为管制员实时提供航班相关信息,辅助管制人员指挥飞机,从而有效地提高了航班管制的安全性和效率。
而近年来随着大数据和人工智能技术的兴起和普及,使利用航班监视数据进行更加前瞻性、智能化的应用研究和开发成为可能,这就需要对各监视设备输出的数据进行深入和全面的研究。ASTERIX(All Purpose Structured Euro-control Surveillance Information Exchange)协议是各类监视设备进行数据交换的基本传输协议,当前的各类研究中,关于ASTERIX协议数据的解析只针对某种类型的数据进行了解析,如只解析了航管二次雷达数据的协议CAT001和CAT048,并未对所有ASTERIX协议中所有数据类型的标准提出解析的算法和实现方案。本文详细描述了ASTERIX协议数据的特点和解析规则,并以CAT021数据为例,提出了一种解析ASTERIX协议数据的通用算法,并根据该算法实现了一套通用的数据解析系统。
1 ASTERIX简介
ASTERIX,是欧洲航行安全组织制定的关于航班监视设备间用于数据交换的标准[2]。ASTERIX数据结构包括数据类型(CAT)、数据长度(LEN)、数据记录(Record)、字段描述(Field Specification,FSPEC)、数据项(Data Field)等字段[3]。
针对不同监视设备,ASTERIX制定了不同的协议标准。CAT001和CAT048,多用于航管二次雷达的数据传输;CAT010多用于多点定位系统的数据传输[3];CAT011是高级场面活动引导系统数据的输出格式,多用于场面自动化监视系统数据的输出格式[4];CAT021则多用于ADS-B设备的数据传输;CAT062多用于雷达综合航迹数据的传输。各硬件设备输出的数据格式不是固定的,可以根据需要对数据进行封装输出,但所有ASTERIX数据的解析规则都是相同的,下面针对解析方法进行论述。
2 ASTERIX解析
如图1所示,ASTERIX数据主要由CAT、LEN和若干Record组成。其中,一条记录由一个FSPEC和Data Field组成。其中,Data Field为数据项集合;FSPEC为字段说明,它决定了Data Field中包含哪些数据项。每条记录包含了一个航班在某一时刻的相关信息,例如航班的航班号、位置、时刻、航班计划等。每一类数据协议的每一条记录所包含的信息都是不同的,记录中包含哪些信息需要结合FSPEC和每类协议的UAP(User Application Profile)来确定。
图1 数据结构简图
CAT021数据类型的UAP[1]如表1所示,UAP中给出了FRN和数据项名称及数据项的字节长度。每一条记录中的Data Field包含哪些数据项,是由FRN决定的,FRN就是FSPEC的二进制表示形式,FRN从高位到低位,按照表1中对应关系,FRN是1的位所对应的数据项在Data Field中是存在的,0所对应的数据项在Data Field中则不存在。FRN中每个字节的第八位,即FX位是FRN的扩展位,若FX为“1”则表示下一个字节仍然属于FSPEC,若为“0”则下一个字节的数据属于Data Field。对于存在的数据项,需要按照具体的解析规则进行解析。
表1 CAT021 UAP
续表1 CAT021 UAP
CAT021数据包实例如图2所示。整个数据包是一个字节数组,图2中以空格作为间隔展示数组中所有字节,每个字节是0~255之间的十进制数字。
图2 CAT021数据实例
具体解析规则如下:
(1)第1个字节中的十进制数21,代表此数据包格式为CAT021数据;
(3)从第4个字节开始到最后,包含了一条或者多条航班信息的记录;
(4)图中实例只包含了一条记录,它的FSPEC为“245 31 251 107 211 160”。确定FSPEC的方法为,从本记录的第1个字节开始查找到第1个是偶数的字节为止所有的字节构成FSPEC。转换为二进制的FRN后,根据表1中的对应关系,按照顺序此条数据的Data Field中包含的数据项依次为“I021/010”、“I021/040”、……、“I021/132”;
(5)按照每个数据项具体解析规则对Data Field中数据进行逐项解析。
3 数据项类型
ASTERIX中包含三种类型的数据项:长度固定的数据项、有扩展项的数据项及组合定义的数据项。
3.1 长度固定的数据项
此类数据项所占的字节数在Data Field中是固定的,按照固定字节长度进行解析即可,如图2实例中“I021/010”,在表1中定义长度固定为2字节,那么在Data Field中“22 171”即为其值,再根据“I021/010”具体解析规则,如图3所示,第一个字节为SAC(系统区域码),第二个字节为SIC(系统标识码),则可以最终解析结果为SAC为“22”,SIC为“171”。
图3 I021/010数据项解析规则
3.2 有扩展项的数据项
此类数据项第1个字节的二进制表示形式的最后一位,若为“1”则表示此数据项还有一个扩展字节,以此类推,直到字节最后一位为“0”为止。如图2实例中“I021/040”,在表1中定义长度为“1+”,表示长度至少有1个字节,具体解析规则如图4所示。
图4 I021/040数据项解析规则
按照解析顺序,在Data Field中I021/040所对应的字节应为“0”,根据解析规则,将十进制“0”转换为二进制后为“00000000”,那么对应的ATP值为“000”,即十进制值为0,那么它所描述的含义为地址类型是24位地址码;ARC值为“00”,即十进制值为“0”,所描述的含义为目标高度报告能力为25英尺;依此类推。其中FX为扩展位,此位为“0”,那么I021/040就没有扩展字节;假设若FX位为“1”,则表示在Data Field中“0”的下一个字节“12”也属于I021/040,那么需要继续按照扩展字节的解析规则继续解析,扩展字节解析规则在此就不再赘述。
3.3 组合定义的数据项
此类数据项在Data Field中占有的字节长度是根据前几个字节的二进制位是“1”还是“0”来确定后面有哪些子数据项而确定的。例如I021/220数据项,其解析规则如图5所示。
图5 I021/220数据项解析规则
假设一段I021/220所属的字节数据为“192 0 106 0 255 234……”,如图6所示,第1个字节数值为“192”,转换为二进制数为“11000000”,那么其对应的风速(WS)和风向(WD)值为“1”,气温(TMP)和气流(TRB)的值为“0”[1]。代表字节数组中存在WS和WD的子数据项,需要按照子数据项的规则进行解析,WS和WD的子数据项根据协议均占有2字节固定长度[1],那么按照解析规则,WS的值为106节,WD的值为255度。
图6 I021/220数据项解析规则
4 解析算法
根据ASTERIX数据的特点,本文设计了算法用于解析所有类型的ASTERIX数据。ASTERIX数据解析流程如图7所示。
图7 解析算法流程图
(1)判断数据协议。当接收到相关字节数组时,首先判断第1个字节中的数值是否为对应的协议名称的数值,例如CAT021协议,则第1个字节为“21”;CAT011协议,第1个字节则为“11”;以此类推,若正确则继续进行,若不正确则直接将数据包舍弃;
(3)记录解析。从字节数组第4个字节开始到最后,包含了一条或多条记录。根据文章前面阐述的解析规则结合数据类型解析出每条记录包含的航班信息。当一条记录被解析完成后,若字节数组中还存在未被解析的数据,需要继续按照记录解析的规则循环解析数据,直到整个数据包中所有数据全部被解析为止。
5 实现框架
本文以ASP.net core为基础框架[5],结合UDP Client,MySQL及Redis和RabbitMQ等中间件,完成了ASTERIX数据解析的通用服务,程序框架如图8所示。
图8 ASTERIX数据解析程序框架
图9 CAT021数据解析结果示例
程序启动时通过加载配置文件中数据类型信息,将对应的数据项解析服务注册到ASP.net core框架的容器中;监视数据一般会以UDP组播的形式进行传输,所以程序可通过UDP Client接收数据,并传递给注册后的解析服务进行解析;最后将解析后的结果进行存储;对于新增的数据类型,只需要增加协议中各数据项内容的解析服务即可。以JSON格式编码的解析后数据如图9所示。
6 总结
本文以CAT021数据为例分析了数据项的类型并详细阐述了ASTERIX数据的解析规则,给出了通用的ASTERIX数据解析方法,同时利用ASP.net core等技术,成功实现了通用的ASTERIX数据解析程序框架。对利用航班监视设备数据进行航班空中和地面监视应用的开发具有重要的理论和现实意义。
[1] Euro-control. Euro-control Standard Document For Surveillance Data Exchange Part 12: Category 021 ADS-B Reports[Z]. 2.1 ed. Euro-control, 2011.
[2] 雷张华,李方军,邱天,等. 基于ASTERIX标准的终端数据交换[J]. 火控雷达技术,2020,49(2):41-45+65.
[3] Euro-control. Euro-control Standard Document For Surveillance Data Exchange Part 7: Category 010 Transmission of Mono-sensor Surface Movement Data[Z]. 1.1 ed. Euro-control, 2007.
[4] 王晖. 场面监视雷达数据处理方法研究[D]. 成都:电子科技大学,2017.
[5] 蒋金楠. ASP.NET Core 3框架揭秘[M]. 北京:北京电子工业出版社,2020.
Research and Implementation of Data Parsing Algorithm for ASTERIX Protocol
FENG Chao
With the increasing number of flights in recent years, it has become an inevitable development trend to apply all kinds of flight surveillance equipment data for localized development to improve aviation control safety and control efficiency. As a data exchange standard for various flight surveillance equipment, ASTERIX involves many kinds of protocols. Analyzing these protocols is the key to realize the secondary development and application of surveillance equipment data. Taking CAT021 data as an example, a general analysis algorithm for ASTERIX protocol data is provided, and a set of general data analysis program implementation framework is completes according to the algorithm.
ASTERIX; Surveillance Equipment; Analytical Algorithm; UAP
V355.1
A
1674-7976-(2021)-06-444-05
2021-10-11。
冯超(1986.10—),吉林白城人,硕士,工程师,主要研究方向为民用航空通信导航监视领域软件研发。