APP下载

应用Qt的ADS-B报文解析研究与实现

2018-04-19王尔申翟秋刚李玉峰曲萍萍

电光与控制 2018年4期
关键词:经度纬度字段

王尔申, 翟秋刚, 李玉峰, 庞 涛, 曲萍萍

(沈阳航空航天大学,a.电子信息工程学院,b.辽宁省通用航空重点实验室,沈阳 110136)

0 引言

国际民航组织在20世纪80年代初提出了“自由飞行”的概念,旨在推进全球空管一体化。广播式自动相关监视技术(Automatic Dependent Surveillance Broadcast,ADS-B)是一种协作相关的监视技术,它采用机载导航系统获得飞机精确的位置和速度等信息,利用机载ADS-B设备广播飞机的位置信息和其他一些参数,

是实现航空飞机“自由飞行”重要的技术基础[1]。当前,世界各地广泛发展ADS-B系统:澳大利亚实施了“高空空域计划”,其核心是ADS-B技术;美国制定了ADS-B各个阶段的规划;欧洲提出了“欧洲一体化空管计划”,其核心也是发展ADS-B技术;近年来,我国也正在积极开展ADS-B技术及其应用研究[2-3]。目前,国内有关ADS-B的防撞算法、避撞算法以及在空中交通服务中的应用研究较多。但对ADS-B报文解析过程的详细介绍较少,而且实现步骤阐述得不易理解,在实现上有一定难度。

本文通过对1090ES ADS-B报文进行分析总结,提出一种思路简单、易于实现的解析方法。将报文接收后转化为01字符串,根据01字符串的下标进行数据位判断。这种方法对协议的理解更加深入,易于查找错误,可以快速实现ADS-B报文解析。

1 ADS-B系统工作原理

ADS-B系统由机载设备、数据链传输和终端设备组成。该系统以先进的导航系统及其他机载设备产生的信息为数据源,采用地-空、空-空广播数据链进行相互通信[4],其系统工作原理如图1所示。

图1 ADS-B系统工作原理框图Fig.1 Schematic diagram of ADS-B system

ADS-B系统通过机载设备获取信息,并通过数据链发送给地面信号基站和其他飞行设备,地面基站将接收的报文进行处理并通过数据链发送给终端设备和监控中心,进行信息的全面监视。

机载设备的信息类型主要有CDTI(Cockpit Display of Traffic Information)、飞行员输入信息、GNSS(Global Navigation Satellite System)导航信息和飞行设备的状态信息。ADS-B的主要广播数据链类型有:S模式超长电文(1090 MHz Extended Squitter,1090ES)、通用访问收发机(Universal Access Transceiver,UAT)和模式4甚高频数据链(VHF/UHF Digital Link-Model4,VDL- 4)[5]。

2 ADS-B报文

2.1 ADS-B基础报文

ADS-B报文的长度共 112 位,是按位进行格式设计的结构。表1为1090ES 的报文结构定义,ADS-B的报文基本结构包含在其中。

表1 1090ES 报文的基本结构

从表1中可以看出,报文结构采用按位定义的方式,位的计数从1开始,而不是0。ADS-B报文可以分为5个字段。1~5 位是DF字段,6~8位是CA,CF或AF字段,33~88位是ME字段,89~112是PI字段。

其中,DF字段表明报文类型,DF=17时,用于S模式应答机发出ADS-B报文。DF=18时,用于非S模式应答机发出ADS-B报文或TIS-B报文。DF=19时,用于军事用途,非军事应用不会涉及到该类型报文。CA/CF字段的长度是3位,DF=17 时,该字段是CA字段,含义是S模式应答机的能力。

AA字段包含了发射装置的地址信息,地址的类型有ICAO地址和非ICAO地址两类。ICAO地址是飞机的地址,非ICAO地址是匿名地址、地面车辆地址或表面障碍物地址。

ME字段包含了ADS-B报文的业务数据,称之为ADS-B业务报文。关于ME字段的格式将在ADS-B 业务报文中进一步说明。

PI字段是一个下行链路字段,含义是奇偶性(Parity)和一致性(Identity)。在ADS-B报文中,CL和IC的值都是0,也就是说PI字段的内容填充了24个0[6-8]。

根据SBS-3设备发送的报文接收情况,设计的应用程序主要是以DF=17一类报文为主。

2.2 ADS-B业务报文

一个ME字段包含一个ADS-B的业务报文,具体的定义如表2所示,其具体的类型由ME字段的前8位的值来确定,选取了几个关键的报文格式,报文格式如表2所示。

表2 ADS-B的业务报文

根据ME字段的前5位的10进制数值查找表2中的信息,可确定接收到的业务报文是属于地面位置信息还是属于空中位置信息或者其他信息。

空中位置报文的格式为:第1~5位表示报文的类型;第6~7位表示设备的监视状态;第8位为天线位,1为单天线,0为双天线;第9~20位为飞机的大气压高度;第21位是指有效时间点是否是准确的0.2 s UTC时间点,该位为1则同步,为0则不同步;第22位为CPR算法的奇偶位;第23~39位为CPR纬度的编码数据位;第40~56位为CPR经度的编码数据位。

地面位置报文与空中位置报文的格式相似,第6~21位为各自状态信息,经、纬度信息在第22~56位,需通过CPR算法进行相对的解码,才可以得到经、纬度数据[9]。

地面位置报文的格式为:第1~5位表示报文的类型;第6~12位为ADS-B发射子系统运行状况;第13位为航迹/地面航迹状况标志位;第14~20位为报告航向以及ADS-B发射子系统的运动状态;第21位是指有效时间点是否是准确的0.2 s UTC时间点,该位为1则同步,为0则不同步;第22位为CPR算法的奇偶位;第23~39位为CPR纬度的编码数据位;第40~56位为CPR经度的编码数据位。

2.3CPR算法

目前以1090ES数据链为通信手段的ADS-B系统应用较为广泛。为了更好地提高数据传输效率,对于飞机的经度和纬度消息,其信源编码采用简洁的位置报告(Compact Position Reporting,CPR)的形式。下面介绍CPR的基本原理及算法的实现。

2.3.1CPR基本原理

对于空中飞行的飞机来说,地球近似为一个标准的圆形球体。为了确定飞机的准确位置,首先将地球划分为许多不同编号的区域(Zone),然后再将每个Zone细分为许多分箱(Bin)。CPR编解码技术通过采用两种稍微不同的编码来实现确定飞机的正确位置。这两种编码被称为奇形式编码和偶形式编码(简称奇编码和偶编码),分别占用发送时间的50%。经纬度的奇偶编码与经纬度符号正负相关。如果在一个很短的时间间隔内接收到两种编码形式的位置消息,接收系统就可以确定飞机的位置[10]。

2.3.2CPR算法实现

CPR解码分为全球解码和本地解码两种情况。若同时接收到奇编码和偶编码消息,则进行全球解码。若只接收到一个奇编码或偶编码消息,则进行本地解码。无论是本地解码还是全球解码,都包含空中位置和地面位置两类情况。本地的空中位置和地面位置的解码步骤[11]如下所述。

1) 计算纬度Zone的位置Di。

空中位置为

Di=360°/(4NL-i)i=0,1

(1)

式中,i=0为偶编码,i=1为奇编码,NL为在赤道和南极或北极之间的纬度Zone的数量。

地面位置为

Di=90°/(4NL-i)i=0,1。

(2)

2) 采用参考点的纬度ls,Di和坐标纬度Yi计算纬度索引

(3)

纬度索引j的值与参考点的纬度ls的取值有关。

3) 解码纬度位置为

Ri=Di×(j+Yi/217)

(4)

本地解码后的纬度位置Ri与参考点的纬度ls的取值有关。

4) 由Ri确定东、西经度Zone的DLi。

经度Zone的DLi依赖于NL的取值,如式(5)和式(6)所示。

地面位置为

(5)

空中位置为

(6)

5) 采用参考点的经度Ls,DLi和CPR坐标经度Xi计算经度索引

(7)

经度索引m的值与参考点的经度Ls的取值有关。

6) 解码经度位置

RLi=DLi×(m+Xi/217)

(8)

本地解码后的经度位置RLi与参考点的经度Ls的取值有关。

在CPR算法中,采用经度和纬度的角度加权二进制编码的最低有效位(Least Significant Bit, LSB)来判断是否发生编码出错[12]。不管是空中位置编码还是地面位置编码,也不论是偶编码还是奇编码,如果经过解码后的经纬度值与编码前的经纬度值的LSB的差别小于或者等于1,那么编解码结果就是正确的。否则,编解码结果就是错误的。

3 报文解析软件的设计

软件的开发环境采用可跨平台的Qt开发环境。Qt的程序可以在Windows系统或者Linux系统下运行,只需重新编译,便可以支持多平台使用,为后续的研究提供基础。本文设计的软件以Windows平台为主,软件的设计主要分为用户登录、网络设置、报文处理及结果查询4个部分。图2为报文解析软件的总体框图。

首先,用户输入正确的信息后登录,进入功能界面,选择Setting图标,进行网络设置。输入设备的IP地址和端口号,进行网络连接。在网络连接稳定的基础上,进行报文信息的接收与解析工作。

其次,报文的处理有2步:1)将接收的报文信息进行筛选;2) 进行报文分类存储并将其进行01字符串转换处理。字符串转换后运行CPR算法计算报文中的位置数据,每步处理的数据都会进行相应的界面显示。

最后,建立本地数据库表格用来存储解析结果,解析的结果不仅可以实时更新显示,还可以通过输入ICAO数据,进行结果的查询。

图2 报文解析软件的总体框图Fig.2 The block diagram of message parsing software

3.1 报文接收

实现TCP网口通信的具体流程如图3所示。

图3 TCP客户端设计流程图Fig.3 The design flow chart of TCP client

TCP客户端设计步骤如下:1) 客户端建立一个套接字,用来与服务器进行连接;2) 设置目标服务器的IP地址和端口号;3) 向目标服务器发出连接申请;4) 连接成功,等待接收数据,连接不成功,重新连接;5) 断开套接字连接。

3.2 报文处理

报文处理模块设计流程如图4所示。

首先,接收服务器发送过来的16进制ADS-B原始报文数据。进行一次筛选,将数据长度小于40 Byte或大于60 Byte的数据排除,只留下长度为40~60 Byte之间的数据,因为标准的1090ES ADS-B报文长度为54 Byte。还有排除不是DF=17的报文,因为只有DF=17的报文才是民航或通航的信息。

其次,将接收到的1090ES ADS-B报文进行分类存

储,一部分用于显示接收的原始报文,另一部分用于协议解析。

然后,将接收到的原始报文按照协议进行字段保存,分为DF字段、ICAO字段、ME字段、PI字段。其中,只有ME字段包含内容较多,需进行01字符转换,并根据协议判断每位代表的含义。报文中包含经、纬度信息,速度信息及状态信息等,其中,较为重要的内容包括经、纬度位置解析的CPR算法,其他的信息解析较为简单。

图4 报文处理模块设计流程图Fig.4 The flow chart of message processing module

4 实验测试与结果分析

用户输入登录信息后进入功能界面,点击“Setting”图标,进行网络设置。

首先填写目标地址的IP地址和端口号,然后点击“连接”按钮,得到“Connect”按钮状态发生变化,表示连接成功等待接收报文数据,接下来筛选报文,等待指定报文数据发送过来并显示。解析的结果如图5所示,点击“断开”,网络就会停止连接,数据也不会接收。

为了验证所设计算法的有效性,实验测试中采用的ADS-B数据是由实际设备SBS-3通过网口发送获得。

ADS-B报文,以10 02为报头,10 03为结束标识。报文均为DF=17一类报文,为了验证本文研究算法的有效性和正确性,利用介绍的CPR算法对采集的数据进行处理和分段解析。程序运行结果如图5所示。

图5 ADS-B报文解析程序运行的结果Fig.5 Running results of ADS-B message parsing program

从图5的结果可以看出,解析获得的结果主要有飞机的编号ICAO信息(name)、接收信息的时间(time)、飞行器的纬度(lat)、飞行器的经度信息(lng)以及飞行高度(heigh)等信息。

点击图中的“Finder”按钮可以看到解析后的数据,并且可以进行ICAO结果查询,如图6所示。

图6 ADS-B报文的结果查询Fig.6 Result query of ADS-B message

图6所示内容为根据ICAO为780eed条件,查询当时数据库所得到的结果。

表3所示内容为通过网络助手接收SBS-3设备解析后的结果,经过Excel筛选处理,只留下ICAO数据、报文接收时间和经、纬度数据用于验证软件结果准确性和实时性。

表3 设备解析结果

从图6、表3的内容对比中得出:1)每秒接收同一架飞机的位置报文有1~2条;2)解析结果与本地位置(41.800 0,123.383 33)相近;3)报文解析结果与设备提供结果相同。表明本文所研究的算法和设计的程序对报文解析的结果是正确、有效的,并且具有实时性,而且,设计的程序可以通过查找时间和飞行器的编号,来查看飞行器的位置信息和高度信息。

5 结论

本文通过对ADS-B报文数据编解码协议的分析,对ADS-B报文数据的整体框架和各个状态数据的解析方法进行了深入分析,给出了解析流程,重点针对DF=17一类报文进行了解析设计,并通过Qt实现了对ADS-B报文的解析,获得了ADS-B报文中速度、高度、经纬度等状态参数信息。将本文解析结果与SBS-3设备解析的结果进行比较,验证了本文研究的解析方法的有效性和正确性,本文研究结果对ADS-B报文的解析和算法的软件实现具有一定的参考价值。

[1]康南,刘永刚.ADS-B技术在我国的应用和发展[J].中国民用航空,2011,131(11):36-38.

[2]王尔申,佟刚,庞涛.低空空域通用航空飞机机载导航监视终端设计[J].电讯技术,2015,55(5):522-526.

[3]MCCALLIE D,BUTTS J,MILLS R.Security analysis of the ADS-B implementation in the next generation air transportation system[J].International Journal of Critical Infrastructure Protection,2011,4(2):78-87.

[4]陈欢欢,陶建锋,周峰,等.基于EPF-IMM算法的高机动目标跟踪研究[J].电光与控制,2010,17(10):17-19.

[5]彭良福,林云松,黄勤珍. 基于SSR和ADS-B混合监视的机载编队防撞系统设计[J].电讯技术,2012,52(5):609-614.

[6]何桂萍,徐亚军.基于TCAS II和ADS-B的组合监视防撞系统研究[J].电光与控制,2011,18(4):61-64.

[7]倪育德,刘萍,马宇申.基于ADS-B意图信息的航迹预测改进算法[J].电讯技术,2014,54(2):156-162.

[8]彭良福,刘志刚,郑超,等.1090ES广播式自动相关监视系统的CPR算法[J].中国民航学院学报,2010,28(1):33-37.

[9]沈笑云,周波,曹博,等.基于概率的低空自由飞行冲突检测算法[J].电光与控制,2014,21(6):47-51.

[10]祁万龙,林云松,彭良福.基于CPR算法的精度精确传输研究[J].计算机工程与设计,2012,33(10):4015-4021.

[11]SEAH C E,ALIGAWESA A,HWANG I.Algorithm for conformance monitoring in air traffic control[J].Journal of Guidance,Control,and Dynamics,2010,33(2):500-509.

[12]周波,曹博,唐鹏,等. 基于ADS-B的新型跟踪监视算法[J].电光与控制,2014,21(7):45- 49.

猜你喜欢

经度纬度字段
图书馆中文图书编目外包数据质量控制分析
对时差计算方法的探讨
纬度
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
基于时空纬度的国内农民工创业研究
抗生素入选2014年“经度奖”研究课题
关于CNMARC的3--字段改革的必要性与可行性研究
常用纬度差异极值符号表达式
利用轨道升交点经度约束限制星座旋转误差分析