此示例显示了如何通过使用Matlab®和通信工具箱™处理自动依赖监视广播(ADS-B)信号来跟踪平面。您可以使用RTL-SDR无线电或Adalm-Pluto无线电实时使用捕获的信号或接收信号。该示例可以在地图上显示跟踪平面,如果您有映射工具箱™。
要使用捕获的信号运行此示例,需要以下软件:
通信工具箱™
为了实时接收信号,还需要以下SDR设备之一和相应的支持包Add-On:万博1manbetx
RTL-SDR无线电和相应的通信工具箱支持包RTL-SDR无线电软件附加组件万博1manbetx
ADALM-PLUTO无线电和相应的通信工具箱支持包ADALM-PLUTO无线电软件Add-On万博1manbetx
有关“通讯工具箱”支持的SDR平台的完整列表,请参阅“支持的硬件”一节万博1manbetx软件定义无线电(SDR)发现页面.
ADS-B是一种用于跟踪飞机的协同监视技术。该技术使飞机能够使用Mode-S信号方案定期广播其位置信息(高度、GPS坐标、航向等)。
s模式是一种航空应答器询问模式。当一架飞机收到询问请求时,它会发回应答器的请求故障代码.这被称为模式3A。模式s(选择)是另一种询问模式,旨在帮助避免过于频繁地询问应答器。有关模式s的详细资料,请参阅[1].这种模式在欧洲被广泛采用,并正在逐步推广到北美。
模式-S信令方案使用QUIDITTER消息,这些信息被定义为航空无线电系统中使用的非征集消息。MODE-S具有以下属性:
传输频率:1090 MHz
调制:脉冲位置调制
数据速率:1mbit /s
短Squitter长度:56微秒
扩展Squitter长度:112微秒
短消息包含以下信息:
下行格式(DF)
能力(CA)
飞机ID(唯一24位序列)
CRC校验和
扩展squitter (ADS-B)消息包含短squitter中的所有信息,其中一个是:
高度
位置
标题
水平和垂直速度
Mode-S的信号格式有一个8微秒长的同步脉冲,后面跟着56或112微秒的数据,如下图所示。
类型ADSBExample
在MATLAB命令窗口或点击链接来运行示例。运行示例时,需要输入如下信息:
接收持续时间(秒)
信号源(捕获数据或RTL-SDR无线电或Adalm-Pluto Radio),
可选的输出方法(map和/或文本文件)。
该示例以表格形式显示了探测到的飞机信息,如下图所示。
如果您拥有Mapping Toolbox的有效许可证,您还可以在地图上观察飞机。
下面的框图总结了接收器的代码结构。处理主要分为四个部分:信号源、物理层、消息解析器和数据查看器。
信号源
这个例子可以使用三个信号源:
“捕获信号”:以2.4 Msps的速率写入文件并从基带文件读取器对象中获取的无线信号
“RTL-SDR Radio”:2.4 Msps的RTL-SDR无线电
“ADALM-PLUTO Radio”:ADALM-PLUTO Radio at 12 Msps
如果您指定“RTL-SDR”或“ADALM-PLUTO”作为信号源,该示例搜索您的计算机为您指定的无线电,无论是一个RTL-SDR无线电在无线电地址'0'或ADALM-PLUTO无线电在无线电地址'usb:0',并使用它作为信号源。
这里扩展的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个样本。接收处理链使用复杂符号的大小。
分组同步器适用于等于两个扩展频率分组的数据子帧,即12 MHz或120微秒的1440个样本。该子帧长度可确保子帧中包含整个扩展频率分组。分组同步器首先将接收信号与8微秒前导码相关联,并找到峰值。然后,它通过检查它是否与前导序列匹配来验证同步点,其中[1 0 0 0 0 1 0 1 0 0 0 0 0 0],其中'1'表示高值和'0'表示a低价值。
模式-SPPM调制方案定义了两个符号。每个符号都有两个芯片,其中一个有高值,另一个具有低值。如果第一芯片高度是低芯片,则这对应于符号为1。或者,如果第一芯片低于高芯片,则符号为0.位解析器解调接收的芯片并创建二进制信息。使用CRC检查器验证二进制消息。位解析器的输出是包含以下字段的模式-s物理层报表报文的向量:
RawBits:原始消息位
CRCError: CRC校验时为FALSE, CRC校验失败时为TRUE
时间:接收时间,以秒为单位,从接收开始
DF:下行格式(报文类型)
CA:能力
消息解析器
消息解析器根据数据包类型从原始位中提取数据,如[2].该示例可以解析包含航空速度、识别和航空位置数据的短squitter包和长squitter包。
数据查看器
数据查看器在图形用户界面(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,〜,丢失] = sigsrc();lostflag =逻辑(丢失);结束其他的rcv = sigSrc ();lostFlag = false;结束%处理物理层信息(物理层)(pkt pktCnt] = helperAdsbRxPhy (rcv, radioTime adsbParam);%解析消息位(消息解析器)[味精,msgCnt] = msgParser (pkt pktCnt);%查看结果包内容(数据查看器)更新(观众、味精、msgCnt lostFlag);%更新无线电时间radioTime = radioTime + adsbparameter . frameeduration;结束停止查看器并释放信号源停止(观众)发布(sigSrc)
您可以使用ADSBExampleApp应用程序进一步探索ADS-B信号。这个应用程序允许您选择信号源和改变持续时间。要启动应用程序,输入DSBExampleApp
在MATLAB命令窗口或点击链接。
您可以浏览以下辅助功能,了解物理层实现的详细信息:
国际民用航空组织,附件10,第4卷。监视和避碰系统。
S型服务及延长喷痰器的技术规定(Doc 9871)