主要内容

利用ADS-B信号跟踪飞机

这个例子向您展示了如何使用MATLAB®和Communications Toolbox™处理自动依赖监视广播(ADS-B)信号来跟踪飞机。您既可以使用捕获的信号,也可以使用RTL-SDR Radio或ADALM-PLUTO Radio实时接收信号。如果您有Mapping Toolbox™,这个示例可以在地图上显示跟踪的飞机。

所需硬件和软件

要使用捕获的信号运行此示例,您需要以下软件:

  • 通信工具箱™

为了实时接收信号,还需要以下SDR设备之一和相应的支持包Add-On:万博1manbetx

  • RTL-SDR无线电和相应的通信工具箱支持包RTL-SDR无线电软件附加组件万博1manbetx

  • Adalm-Pluto收音机和Adalm-Pluto无线电软件加载项的相应通信工具箱支持包万博1manbetx

有关支持SDR平台的全部通信工具箱列表,请参阅支持的硬件部分万博1manbetx软件定义的无线电(SDR)发现页面

背景

ADS-B是一种用于跟踪飞机的协同监视技术。该技术使飞机能够使用Mode-S信号方案定期广播其位置信息(高度、GPS坐标、航向等)。

MODE-S是一种自动转发器询问模式。当飞机收到询问请求时,它会发出转发器故障代码。这被称为模式3a。MODE-S(SELECT)是另一种类型的询问模式,旨在帮助避免经常询问转发器。有关Mode-s的更多细节可以在[1].这种模式在欧洲被广泛采用,并正在逐步推广到北美。

s模式信令采用squitter报文,定义为航空无线电系统中使用的非请求报文。Mode-S有以下属性:

  • 发送频率:1090mhz

  • 调制:脉冲位置调制

  • 数据速率:1 Mbit / s

  • 短Squitter长度:56微秒

  • 延长漏斗长度:112微秒

短消息包含以下信息:

  • 下行格式(DF)

  • 能力(CA)

  • 飞机ID(唯一24位序列)

  • CRC校验和

扩展询用器(ADS-B)消息包含短频带中的所有信息,其中之一:

  • 高度

  • 位置

  • 标题

  • 水平和垂直速度

Mode-S的信号格式有一个8微秒长的同步脉冲,后面跟着56或112微秒的数据,如下图所示。

运行这个例子

类型ADSBExample在MATLAB命令窗口或点击链接来运行示例。运行示例时,需要输入如下信息:

  1. 接收持续时间(秒)

  2. 信号源(捕获数据或RTL-SDR无线电或ADALM-PLUTO无线电)

  3. 可选输出方法(地图和/或文本文件)。

该示例以表格形式示出了检测到的飞机上的信息,如下图所示。

如果您拥有Mapping Toolbox的有效许可证,您还可以在地图上观察飞机。

接收机结构

以下框图总结了接收器代码结构。处理有四个主要部分:信号源,物理层,消息解析器和数据查看器。

信号源

此示例可以使用三个信号源:

  1. “捕获信号”:以2.4 Msps的速率写入文件并从基带文件读取器对象中获取的无线信号

  2. “RTL-SDR Radio”:2.4 Msps的RTL-SDR无线电

  3. “ADALM-PLUTO Radio”:ADALM-PLUTO Radio at 12 Msps

如果将“RTL-SDR”'或''adalm-pluto''作为信号源分配,则示例搜索您在无线电地址'0'或adalm的RTL-SDR无线电的计算机中的计算机。在无线电地址'USB:0'并将其用作信号源的Pluto收音机。

这里扩展的squitter消息为120微秒长,因此信号源被配置为处理足够的样本以一次包含180个扩展的squitter消息,并设置SamplesPerFrame相应的信号属性。算法的其余部分在这一帧数据中搜索Mode-S包,并输出所有正确识别的包。这种类型的处理被定义为批处理。另一种方法是一次处理一个扩展squitter消息。这种单包处理方法产生的开销是批处理的180倍,而延迟却是批处理的180倍。由于ADS-B接收机具有时延容忍性,因此采用了批处理。

物理层

从信号源接收的基带采样由物理(PHY)层处理,以产生包含PHY层报头信息和原始消息比特的分组。下图显示了物理层结构。

RTL-SDR无线电能够使用范围为[200e3, 2.8e6] Hz的采样率。当RTL-SDR无线电是源时,示例使用2.4e6 Hz的采样率,并按5倍插值到实际的12e6 Hz的采样率。

ADALM-PLUTO无线电能够使用范围[520e3, 61.44e6] Hz的采样率。当ADALM-PLUTO无线电是源时,示例直接在12兆赫兹对输入进行采样。

数据速率为1 Mbit/s,实际采样速率为12 MHz,每个符号有12个样本。接收处理链使用复杂符号的大小。

包同步器工作于相当于两个扩展squitter包的数据子帧,即12mhz或120微秒的1440个样本。这个子帧长度保证了整个扩展的squitter包包含在这个子帧中。包同步器首先将接收到的信号与8微秒的前导相关联并找到峰值。然后,它通过检查同步点是否与前导序列[1 0 0 0 0 1 0 1 0 0 0 0]匹配来验证同步点,其中'1'表示高值,'0'表示低值。

Mode-S PPM调制方案定义了两个符号。每个符号有两个芯片,其中一个具有高值,另一个具有低值。如果第一个芯片是高的,后面跟着低的芯片,这对应的符号是1。或者,如果第一个芯片是低的,然后是高的芯片,那么符号是0。位解析器解调收到的芯片并创建一个二进制信息。使用CRC检查器验证二进制消息。位解析器的输出是Mode-S物理层报头包的向量,包含以下字段:

  • RawBits:原始消息位

  • CRCERROR:FALSE如果CRC检查,则如果CRC失败,则为TRUE

  • 时间:从接收器开始时接收的时间

  • DF:下行格式(报文类型)

  • CA:能力

消息解析器

消息解析器根据数据包类型从原始位中提取数据,如[2].该示例可以解析包含航空速度、识别和航空位置数据的短squitter包和长squitter包。

数据查看器

数据查看器显示图形用户界面(GUI)上的接收消息。对于每个分组类型,示出了检测到的分组的数量,正确解码的分组的数量和分组错误率(每个)。随着数据的捕获,应用程序列出了以表格形式从这些消息解码的信息。

示例代码

接收器要求用户输入并初始化变量。然后它调用循环中的信号源,物理层,消息解析器和数据查看器。循环跟踪使用帧持续时间的无线时间。

%若要更改默认设置,请将|cmdlineInput|设置为1。cmdlineInput = 0;如果cmdlineInput%从命令行请求用户输入应用程序参数userInput = helperAdsbUserInput;其他的加载('defaultinputsadsb.mat');结尾%基于用户输入计算ADS-B系统参数[adsbparam,sigsrc] = helperadsbconfig(UserInput);%创建数据查看器对象并根据用户输入配置观众= helperAdsbViewer ('logfilename',userInput.logfilename,......'singsourcetype', userInput.SignalSourceType);如果userInput。LogData startDataLog(观众);结尾如果userInput.LaunchMap StartMapUpdate(查看者);结尾创建消息解析器对象msgparser = helperadsbrxmsgparser(adsbparam);%启动查看器并初始化无线电时间start(viewer) radioTime = 0;%主循环ratiotime 如果adsbParam.isSourceRadio如果adsbParam。isSourcePlutoSDR [rcv,~,lostFlag] = sigSrc();其他的(rcv, ~,失去了)= sigSrc ();lostFlag =逻辑(损失);结尾其他的rcv = sigSrc ();lostFlag = false;结尾%处理物理层信息(物理层)[pkt,pktcnt] = Helperadbrxphy(RCV,RADIOTIME,ADSBPARAM);%解析消息比特(消息解析器)[msg,msgcnt] = msgparser(pkt,pktcnt);%查看结果数据包内容(数据查看器)更新(观众、味精、msgCnt lostFlag);%更新无线电时间radioTime = radioTime + adsbparameter . frameeduration;结尾%停止查看器并释放信号源停止(观众)发布(sigSrc)

进一步的探索

您可以使用ADSBExampleApp应用程序进一步探索ADS-B信号。这个应用程序允许您选择信号源和改变持续时间。要启动应用程序,输入DSBExampleApp在MATLAB命令窗口中或单击链接。

你可以通过下面的辅助函数来了解物理层实现的细节:

选定的参考书目

  1. 国际民航组织,附件10,第4卷。监控和碰撞避免系统。

  2. 模式S服务和扩展频率的技术规定(Doc 9871)