ADS-B接收机监视与测试软件的设计实现

2022-09-24 00:33胡铁乔毕子文
中国民航大学学报 2022年4期
关键词:接收机报文解析

胡铁乔,毕子文

(中国民航大学天津市智能信号与图像处理重点实验室,天津 300300)

广播式自动相关监视(ADS-B,automatic dependent surveillance-broadcast)是新航行系统的主要监视手段[1]。由于ADS-B 技术的突出优点,中国民航正加紧推进监视系统技术发展,努力构建一体化的ADS-B运行体系[2]。众所周知,监视精度的提高需要ADS-B接收机具备稳定、可靠的接收性能,而对接收机性能进行测试,需要配套控制、显示和统计分析的上位机软件。目前,针对ADS-B 接收机的研究主要集中于接收机的实现[3-4]和对接收的ADS-B 信号进行信息处理[5-6]等方面。而对ADS-B 接收机进行测试的相关研究有:钟伦珑等[7]设计的ADS-B 接收机自动测试系统实现了其功能需求,但软件的可视化显示和功能方面还可以进一步优化;易凡[8]基于C#设计一种ADS-B 测试平台并进行了一定分析,但缺少必要的结果验证。

综上,本文设计了一种ADS-B 接收机监视与测试软件,在软件可视化方面做了一定的增强设计,并进行了详细的结果验证。该软件一方面可以用于测试接收机设备性能,大大缩短接收机的研发周期,为接收机的自主研发奠定基础;另一方面可以用于对已有ADSB 信号源的验证。此外,由于软件接口的通用性,可以与抗干扰接收机、普通接收机等配套使用,拓展软件功能。接收机监视软件还可以用于课堂教学,通过软件数据处理功能对ADS-B 信息进行解析和分类存储,验证各类ADS-B 信息的广播频率和课堂理论学习中存在的一些疑问。因此,该软件具有较高的实用价值。

1 软件的设计基础与模块描述

设计的ADS-B 接收机监视与测试软件,采用Microsoft Visual Studio 2015 集成开发环境实现。在发送端,通过现场可编程门阵列(FPGA,field programmable gate array)实时接收天津滨海国际机场的ADS-B信息,然后使用ARM(advanced RISC machine)处理器对ADS-B 信息进行解析和重新打包,产生一条符合Asterix Category 021(简称CAT021)edition 2.1 标准的ADS-B报文[9],之后打包发送。在接收端,ADS-B 接收机监视软件界面采用微软基础类库(MFC,microsoft foundation classes)实现,可实现人机交互操作。通过网络端口接收下位机的ADS-B 信号,按照CAT021 协议标准解析报文数据,然后存入接收缓冲区进行数据解码,用于数据可视化。软件使用两种地图进行显示,一是二维地图,使用传统的地理信息处理平台MapInfo 的内存初始文件(MIF,memory initialization file),将MIF地图数据文件导入获得地图背景,然后利用解码后的数据进行显示;二是谷歌地球(Google Earth),先通过Google Earth COM API(application programming interface)将Google Earth 嵌入软件,然后生成Keyhole 标记语言(KML,Keyhole markup language)文件,之后加载到Google Earth 里进行显示,实现接收机的监视。为实现接收机的性能测试功能,软件设计总体框架如图1所示。ADS-B 接收机监视与测试软件包括:通信模块、数据处理模块和监视数据显示模块3 大部分。

图1 ADS-B 接收机监视与测试软件总体框架Fig.1 Overall framework of ADS-B receiver monitoring and testing software

1.1 通信模块

采用TCP/IP 协议来实现上位机软件和ARM 之间的信息传输。由于各协议有不同特点,传输控制协议(TCP,transmission control protocol)提供面向连接的传输,对系统资源要求多,侧重于可靠性传输;用户数据报协议(UDP,user datagram protocol)提供无连接传输,通信前不需要建立连接,对系统资源要求少,传输速度较快。为满足实时动态显示的要求,软件需要快速处理CAT021 协议报文,因而,使用了传输速度快的UDP 协议完成显示模块与下位机间的通讯。

1.2 数据处理模块

数据处理模块包括数据接收和数据解码。软件使用的ADS-B 报文采用的是由欧洲管制(EUROCONTROL)1999年制定的CAT021 协议。目前,主流的ADS-B 接收机使用的是2011年发布的2.1 版本,也是国际民航最通用的版本。软件首先创建接收和解析线程,通过UDP 端口接收来自接收机高速发送的ADS-B 报文,之后按照CAT021 协议的各数据项格式,解析出经纬度、高度、航速、航向角等信息,存入解码后的数据结构体中,用于下一步的实时显示。

1.3 监视数据显示模块

ADS-B 接收机监视与测试软件界面包括菜单栏、功能控制栏和主窗口。菜单栏包括查看、工具等主要功能菜单;功能控制栏包括运行、飞行信息、目标显示控制、地图缩放按钮等使用频率较高的一些功能控件;主窗口用来显示地图背景、飞行器目标、历史航迹、解码信息等内容。使用MFC 的按钮、编辑框、组合框等控件类为各参数添加相应控件,实现在参数设置界面调整各参数的功能。参数设置模块分为基本参数设置、网络端口设置、显示设置3 部分,包括UDP 端口号、航迹参数、报文详细参数、有效周期、目标属性、接收机位置等设置。

监视数据显示模块使用了两种方式。首先,使用二维地图进行显示,分为二维地图绘图和飞行显示两部分,二维地图绘图使用MFC 的绘画类库,飞行显示使用MFC 的定时器对飞机显示数据进行更新。然后,使用Google Earth 显示,Google Earth 是谷歌公司旗下的一款虚拟地球软件,使用Google Earth 作为地理信息系统,可免去底层建模过程。Google Earth 提供了对地图相关操作的功能模块,通过其提供的免费API,系统可以实现基本的地图处理,包括飞行目标显示、添加标签、地图缩放、距离测量及鼠标相关操作等,具体模块分为谷歌地图加载、数据保存和数据可视化。

1.4 总体流程

ADS-B 接收机监视与测试软件系统流程如图2所示,该软件能够实时接收、解析接收机的ADS-B CAT021 格式报文,分类存储数据,实现飞行目标显示、飞行信息显示以及GoogleEarth显示,通过更新KML文件实现Google Earth 显示,完成空域监视及对接收机性能的测试。

图2 ADS-B 接收机监视与测试软件流程图Fig.2 Flow chart of ADS-B receiver monitoring and testing software

2 关键模块实现

2.1 数据处理模块

为了实现监视数据显示和对ADS-B 接收机的测试,首先需要对ADS-B 报文进行接收和解析。数据处理模块是前提条件,实时高速地接收和正确地解析报文是航迹显示的基础。

2.1.1 报文接收

由于飞行的实时显示要求,软件系统需要处理大量数据,包括CAT021 格式报文的接收和解析,使用单线程无法满足系统设计要求。为保证数据的实时处理和可靠显示,采用多线程并发来实现[10],其中,一个线程用来接收CAT021 报文数据,一个线程用来对报文数据实时解析。上位机软件通过UDP 协议实时接收报文数据,首先设定UDP 端口号,然后不断监听数据接收端口,将数据存入接收缓冲区,之后记录ADS-B 报文接收时的准确时间。报文接收流程如图3 所示。

图3 CAT021 报文接收流程图Fig.3 CAT021 message receiving flow chart

2.1.2 报文解析

报文解析系统需要处理接收机高速发出的CAT021报文,为实现实时精准显示,需要对CAT021 报文所有字段进行准确全面解析。CAT021 数据帧每帧由数据类别、长度、字段描述符和若干数据项组成,每个数据项里存放一类信息的原始代码,如数据源标识、目标报告描述、位置适用性时间、高精度位置坐标等飞机飞行关键信息,CAT021 协议edition 2.1 版本与CAT021 协议edition 0.26 相比,对经纬度、接收到信号时间和质量等方面有更详细的描述,更有利于飞机高精度监视。

通过分析CAT021 协议标准和数据帧格式,设计了报文结构解析流程,首先获得数据类别和数据长度,参照数据字段描述符将每个字段的数据项按照协议进行解析,将报文信息转换为可读信息,获得飞行目标位置、24 位飞行目标地址、大气压高度、地速、航向角等信息,并将解析数据分类放入缓冲区结构体。具体的报文解析流程如图4 所示。

图4 报文解析流程图Fig.4 Flow chart of message analysis

2.2 二维地图显示模块

2.2.1 二维地图绘图

二维地图绘图首先应加载MIF 文件。由于存储的解码数据是用WGS-84 大地坐标系记录的,应先将大地坐标系转换到直角坐标系,然后再由直角坐标系转换到客户区坐标系。大地坐标系到直角坐标系的转换应用了墨卡托投影原理[11-13],墨卡托投影绘制的地图保持了方向和相对位置的正确性,提高了设计和计算效率,地图使用更方便。

程序中各功能由封装好的各类完成,其中CTranslateData 类用于坐标转换。完成坐标转换后,通过MFC提供的图形设备接口(GDI,graphics device interface)实现图形绘制。绘图功能实现软件中所有二维对象的绘制,包括飞机目标、显示标牌、飞行尾迹及地图上大中小城市标识等。由MFC 自定义消息触发绘制事件,并在其对应的消息响应函数中实现不同功能。当接收到来自其他函数的绘图刷新消息后,如拖动屏幕、拖动标牌等,则直接重绘绘图对象,这些显示元素均由CDraw 类中的绘图函数来实现。

2.2.2 飞行显示

飞行显示是本软件系统最主要的功能。为了实现更好的人机交互,需要将信息进行可视化,在数据解析的基础下实现飞行的实时显示。飞行显示内容主要分为飞行目标和飞行信息两部分。

飞行目标是使用MFC 自带类绘制的,包括飞机目标、标牌及连接线、飞行尾迹、飞机航向等内容。飞行信息是使用MFC 的列表控件以列表形式显示,包括经纬度、24 位目标地址、当前速度、当前高度、二次雷达代码、航班号、导航完整性等各项详细数据。此外,定时对飞机显示数据进行更新,包括飞机添加、更新和超时删除等。飞行显示流程如图5 所示。

图5 飞行显示流程图Fig.5 Flow chart of flight display

2.3 Google Earth 显示模块

2.3.1 Google Earth 加载与数据保存

上位机软件的三维地图使用了Google Earth。首先,Google Earth 具有丰富的海量数据,逼真的三维可视化和良好的交互性为飞机姿态信息的显示提供了良好的基础;其次,Google Earth 上的地理、山川数据能够得到及时更新,实时性较强;最后,Google Earth 拥有开放的API,接口简单,方便开发人员尽快上手,极大地减少了系统开发的工作量。使用CApplicationGE 类的Get-MainHwn 函数获取Google Earth 的主窗口句柄,GetRenderHwnd 函数获取地图窗口句柄。在获取两个窗口句柄后,将Google Earth 地图窗口的父容器改变为本软件的主窗口,并将Google Earth 的主窗口隐藏掉,实现了将Google Earth 载入到本软件平台[14-15]。

KML 文件可以在Google Earth 上加载并显示,实现个性化的操作。MSXML 是微软自带的XML 语言解析器,文档对象模型(DOM,document object model)是MSXML 里的应用程序接口,主要对XML 文档进行应用开发和编程。在Microsoft Visual C++中,可以用C++实现各种操作。调用该模型的函数进行KML 文件的生成,利用DOM 可动态创建KML 文档,遍历程序,进行添加、修改、删除元素内容等操作。软件平台周期性地将飞机的位置、速度、高度等信息进行更新并写到KML 文件中,用于飞机的显示。KML 文件生成流程如图6 所示。

图6 KML 文件生成流程图Fig.6 Flow chart of KML file generation

2.3.2 飞行目标显示

飞行目标显示是Google Earth 显示模块设计的核心部分,通过界面显示获得当前接收机接收范围内的飞行目标数量,监测空中飞行目标的姿态信息,对接收机数据处理性能进行验证,实现对空域的监视。通过标牌以及目标列表信息获知飞机高度、速度、发射器类别、信号幅度等信息。飞行目标显示流程中,首先加载谷歌地球客户端,然后调用MFC 内部定时器周期性地对航迹KML 文件进行加载,绘制飞行目标,显示标牌,实现了飞行目标的实时更新。为保证数据的实时有效,定时对显示的飞机进行更新,包括飞机添加、更新和超时删除。飞行目标显示流程如图7 所示。

图7 飞行目标显示流程Fig.7 Flight target display process

3 实验结果分析

ADS-B 接收机监视与测试软件实验平台是DELL PRECISION 3630 工作站,操作系统Windows 10,开发环境是Microsoft Visual Studio 2015,使用MFC 开发人机交互界面,接收机和信号源分别是课题组研制的抗干扰接收机和ADS-B 信号生成器,测试设备是南京莱斯电子的ADS-B 地面站系统。

为测试上位机软件在实际数据环境下的性能,接收机实时接收了天津滨海国际机场2020年7月16日中午的飞行数据,实时显示飞机架数为22 架,系统实时显示界面如图8(a)所示,其中绿色方块即为实际飞行目标,标签显示了经纬度、24 位目标地址等重要参数,蓝色线是飞机航向,黄点是历史尾迹点,标签和飞机之前用短虚线连接。飞行信息显示列表如图8(b)所示,列表分两栏,左栏是固定显示,显示的是飞机的重要信息,包括经纬度、24 位目标地址、时间、高度、速度、二次雷达代码等重要参数,为了方便查找,支持顺序和逆序排列;右栏可显示每架飞机飞行信息的所有解码结果,从中可以获得每架飞机的相关飞行信息。点击切换谷歌地球按钮后,显示界面如图8(c)所示,其中黄色图标即是实际飞行目标,以航班号命名每一架飞机。通过结果分析,初步满足实时监视的设计要求。

图8 接收机监视与测试软件实时界面图Fig.8 Real time interface diagram of receiver monitoring and testing software

为进一步验证软件解码及显示航迹的准确性,使用南京莱斯电子的ADS-B 地面站系统与本软件系统进行交叉验证,两套软件同时接收南京莱斯地面站接收机的实时航班数据,图9 为两套软件显示界面对比图,图9(a)是本软件的显示界面,图9(b)是南京莱斯电子上位机软件的显示界面。与南京莱斯电子的ADS-B 地面站系统显示结果进行对比,在一定误差范围内,本软件解码准确,显示无误。

图9 两种软件显示界面对比图Fig.9 Comparison of two software display interfaces

为了对接收机的性能进行测试,使用实验室的信号源模拟生成60 架飞机,飞机采用圆形绕圈飞行方式,外圈50 架,内圈10 架。将信号源生成的ADS-B 模拟信号经过物理线路直接接入ADS-B 接收机进行处理,软件系统通过UDP 端口接收数据,使用MFC 界面进行显示。图10 为信号源与监视软件显示界面对比图,信号源上位机软件显示如图10(a)所示,本软件显示界面如图10(b)所示。通过两图对比可看出,接收机性能满足设计要求,可以准确地接收处理ADS-B数据。测试结果表明,ADS-B 接收机监视与测试软件达到了对接收机性能进行定性测试的要求。

图10 信号源与监视软件显示界面对比图Fig.10 Comparison of display interface between signal source and monitoring software

DO-260B 标准[16]将接收机灵敏度定义为:信号接收率在90%以上接收机接收信号的最小功率。利用实验室开发的ADS-B 接收机监视与测试系统,对ADS-B接收机进行测试,测试的物理链路使用射频线连接,利用本软件对ADS-B 报文接收正确率进行统计。用ADS-B 接收机测试系统发送ADS-B 信号,功率从-90 ~-81 dBm,发送信号数目为1 000 条。在补偿射频线的损耗后,ADS-B 接收机灵敏度测试结果如表1 所示。

从表1 中可以看出:当ADS-B 接收机测试系统的信号功率为-86 ~-81 dBm 时,ADS-B 接收机的接收率在91%以上;当信号功率为-86 dBm 时,信号接收率为91.2%,得出接收机的灵敏度为-86 dBm,满足设计指标接收机灵敏度-85 dBm 要求。实验结果表明,本软件实现了对ADS-B 接收机性能指标的测试。

表1 接收机灵敏度测试结果Tab.1 Receiver sensitivity test results

4 结语

为实现ADS-B 接收机性能测试,设计了ADS-B接收机的监视与测试软件。使用本软件及配套设备对接收的天津滨海国际机场飞行数据进行实时显示,对ADS-B 接收机性能进行定性测试,对实验室信号源进行验证。测试结果表明,该上位机监视软件能够长时间运行,较好地解决了设计需求,具有可灵活扩展、多样性的功能,即可实时监视机场周围空域,可用于对接收机的性能测试,也可应用到日常的高校教学中,具有一定实用价值。

猜你喜欢
接收机报文解析
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
功率放大器技术结构及在雷达接收机中的应用
GNSS接收机FLASHADC中比较器的设计
三角函数解析式中ω的几种求法
基于频率引导的ESM/ELINT接收机的设计与实现
浅析反驳类报文要点
一种基于FPGA的网络串口管理系统的设计
一种宽带低功耗四合一接收机设计
睡梦解析仪