使用ADS-B信号跟踪飞机
本示例向您展示如何通过使用MATLAB®和Communications Toolbox™处理自动相关监视广播(ADS-B)信号来跟踪飞机。您可以使用捕获的信号,也可以使用RTL-SDR Radio或ADALM-PLUTO Radio实时接收信号。如果您有Mapping Toolbox™,该示例可以在地图上显示被跟踪的平面。
所需硬件和软件
要使用捕获的信号运行这个示例,您需要以下软件:
通信工具箱™
为了实时接收信号,您还需要以下SDR设备之一和相应的支持包Add-On:金宝app
RTL-SDR无线电和相应的RTL-SDR无线电软件Add-On的通信工具箱支持包金宝app
ADALM-PLUTO无线电和相应的模拟设备通信工具箱支持包ADALM-PLUTO无线电软件Add-On金宝app
的“通信工具箱”支持的SDR平台的完整列表,请参阅“受支持的硬件”部分金宝app软件定义无线电(SDR)发现页面.
背景
ADS-B是一种协同跟踪飞机的监视技术。该技术使飞机能够使用Mode-S信号方案定期广播其位置信息(高度、GPS坐标、航向等)。
s模式是一种航空应答机讯问模式。当一架飞机收到审讯请求时,它会传回故障代码应答器的。这被称为模式3A。模式- s(选择)是另一种类型的审问模式,旨在帮助避免审问应答器过于频繁。有关Mode-S的详情,请参阅[1].这种模式在欧洲被广泛采用,正在逐步向北美推广。
Mode-S信令方案使用squitter消息,它被定义为航空无线电系统中使用的一种非请求消息。Mode-S具有以下属性:
发射频率:1090mhz
调制:脉冲位置调制
数据速率:1mbit /s
短Squitter长度:56微秒
扩展的Squitter长度:112微秒
短消息包含以下信息:
下行格式(DF)
能力(CA)
飞机编号(唯一24位序列)
CRC校验和
扩展消息(ADS-B)包含一个短消息中的所有信息,其中一个是:
高度
位置
标题
水平和垂直速度
Mode-S的信号格式有一个8微秒长的同步脉冲,后面跟着56或112微秒的数据,如下图所示。
运行示例
默认配置使用捕获的数据运行。在后面的示例中,您可以设置cmdlineInput
来1
,然后运行示例可选地更改这些配置设置:
接收持续时间(秒),
信号源(捕获数据或RTL-SDR无线电或ADALM-PLUTO无线电),
可选输出方法(映射和/或文本文件)。
该示例以表格形式显示了检测到的飞机的信息,如下图所示。
如果您拥有Mapping Toolbox的有效许可证,还可以在地图上观察飞机。
接收机结构
下面的方框图总结了接收方代码结构。该处理过程有四个主要部分:信号源、物理层、消息解析器和数据查看器。
信号源
这个例子可以使用三个信号源:
“捕获信号”:从基带文件读取器对象以2.4 Msps写入文件的无线信号
“RTL-SDR无线电”:2.4 Msps的RTL-SDR无线电
“ADALM-PLUTO Radio”:ADALM-PLUTO无线电,频率为12msps
如果您指定“RTL-SDR”或“ADALM-PLUTO”作为信号源,示例将在计算机中搜索您指定的无线电,在无线电地址‘0’的RTL-SDR无线电或在无线电地址‘usb:0’的ADALM-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 MHz对输入进行采样。
数据速率为1mbit /s,实际采样速率为12mhz,每个符号有12个采样。接收处理链使用复杂符号的大小。
包同步器工作在相当于两个扩展的squitter包的数据子帧上,即在12 MHz或120微秒下进行1440个采样。这个子帧长度确保整个扩展的压缩包包含在子帧中。包同步器首先将接收到的信号与8微秒的前导相关联,并找到峰值。然后,它通过检查同步点是否与前导序列[1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0]匹配来验证同步点,其中'1'表示高值,'0'表示低值。
Mode-S PPM调制方案定义了两个符号。每个符号有两个芯片,其中一个有高值,另一个有低值。如果第一个芯片是高芯片,然后是低芯片,这对应的符号是1。或者,如果第一个芯片是低芯片,然后是高芯片,那么符号为0。位解析器解调接收到的芯片并创建一个二进制消息。使用CRC检查器对二进制消息进行验证。位解析器的输出是Mode-S物理层报头包的向量,包含以下字段:
RawBits:原始消息位
CRCError: CRC校验为FALSE, CRC校验失败为TRUE
时间:接收时间,以秒为单位,从接收开始
DF:下行格式(报文类型)
CA:能力
消息解析器
消息解析器根据[所描述的包类型从原始位中提取数据。2].本例可以解析包含机载速度、识别和机载位置数据的短压缩包和扩展压缩包。
数据查看器
数据查看器在图形用户界面(GUI)上显示接收到的消息。对于每种报文类型,会显示检测到的报文数、正确解码的报文数以及报文错误率(PER)。当数据被捕获时,应用程序以表格形式列出从这些消息解码的信息。
示例代码
接收端请求用户输入并初始化变量。然后循环调用信号源、物理层、消息解析器和数据查看器。循环使用帧持续时间跟踪无线电时间。
如果要更改默认设置,请将|cmdlineInput|设置为1。cmdlineInput = 0;如果cmdlineInput从命令行请求用户输入应用程序参数userInput = helperAdsbUserInput;其他的负载(“defaultinputsADSB.mat”);结束根据用户输入计算ADS-B系统参数[adsbParam,sigSrc] = helperAdsbConfig(userInput);创建数据查看器对象并根据用户输入进行配置查看器= helperAdsbViewer(“LogFileName”, userInput。LogFilename,...“SignalSourceType”, userInput.SignalSourceType);如果userInput。LogData startDataLog(观众);结束如果userInput。LaunchMap startMapUpdate(观众);结束创建消息解析器对象msgParser = helperAdsbRxMsgParser(adsbParam);启动查看器并初始化无线电时间start(viewer) radioTime = 0;%主循环而radioTime < userInput。持续时间如果adsbParam.isSourceRadio如果adsbParam。isSourcePlutoSDR [rcv,~,lostFlag] = sigSrc();其他的[rcv,~,lost] = sigSrc();lostFlag =逻辑(丢失);结束其他的rcv = sigSrc();lostFlag = false;结束%处理物理层信息(物理层)[pkt,pktCnt] = helperAdsbRxPhy(rcv,radioTime,adsbParam);解析消息位(消息解析器)[msg,msgCnt] = msgParser(pkt,pktCnt);查看结果包内容(数据查看器)更新(观众、味精、msgCnt lostFlag);%更新无线电时间radioTime = radioTime + adsbParam.FrameDuration;结束停止查看器,释放信号源。%停止(观众)发布(sigSrc)
进一步的探索
你可以使用ADSBExampleApp进一步探索ADS-B信号。这个应用程序允许你选择信号源和改变持续时间。要启动应用程序,键入DSBExampleApp
在MATLAB命令窗口或点击链接。
有关物理层实现的详细信息,您可以探索以下helper函数:
*helperAdsbRxPhy.m*helperAdsbRxPhySync.m*helperAdsbRxPhyBitParser.m*helperAdsbRxMsgParser.m
选定的参考书目
国际民用航空组织,附件10,第四卷。监控和防撞系统。
S型服务和扩展式喷管技术规定(Doc 9871)