前段时间也对于ADS-B有一个简单的入门,下面也简单介绍一下
一、ADS-B信号简介
ADS-B是自动相关监视广播(Automatic Dependent Surveillance-Broadcast)的缩写,是一种航空领域中的无线通信技术,用于飞机的航迹监测和通信。它是航空交通管理系统(ATM)中一项重要的技术,用于提高飞机的位置确定性、航空交通的安全性和效率。
ADSB信号可以通过飞机上的ADS-B设备发送和接收。这些设备包括GPS接收器和ADS-B发射器。GPS接收器用于确定飞机的准确位置和速度,而ADS-B发射器则将这些信息广播给附近的其他飞机和地面控制站。这些广播信息包括飞机的识别代码、位置、高度、速度和方向等。
二、ADS-B信号特点
-
实时性:相比传统的雷达系统,ADS-B信号的更新速度更快,可以以每秒钟几次的频率发送位置信息。
-
精确性:由于ADS-B使用GPS技术确定飞机的位置,因此其位置和速度信息更加准确和精确。
-
数据丰富:除了基本的位置和速度信息外,ADS-B信号还可以携带其他附加信息,如航班号、目的地、飞行器类型等。
-
范围限制:ADS-B信号的发送和接收范围通常是几百英里,因此需要有足够的ADS-B接收设备覆盖所需的区域。
-
合作式监视:ADS-B信号是一种合作式监视系统,要求其它飞机和地面控制站都配备了ADS-B设备才能实现全面的监视和通信。
通过接收ADS-B信号,地面控制站和其他飞机可以实时了解飞机的位置和状态,从而更好地进行飞行管制和决策。此外,ADS-B还可以用于提供空中交通的实时信息给飞行员和地面用户,以及提供更好的空中交通流量管理和冲突避免。因此,ADS-B技术在航空交通管理中发挥了重要作用,为航空安全和效率提供了更好的解决方案。
三、ADS-B的调制解调原理
ADS-B(广播式自动相关监视)的调制解调原理主要基于脉冲位置调制(Pulse Position Modulation, PPM)。以下是ADS-B调制解调的具体过程:
调制过程
1. 频率与带宽:ADS-B信号的中心频率为1090 MHz,带宽约为1 MHz。
2. 调制方式:使用脉冲位置调制(PPM)。每个符号由两个脉冲组成,每个脉冲的宽度为1微秒。如果第一个脉冲为高电平,第二个为低电平,则表示符号为“1”;反之,如果第一个脉冲为低电平,第二个为高电平,则表示符号为“0”。
3. 数据速率:ADS-B的数据速率为1 Mbit/s。
4. 消息类型:ADS-B消息分为短脉冲(Short Squitter)和扩展脉冲(Extended Squitter)。短脉冲包含飞机的识别码和能力信息,而扩展脉冲则包含飞机的位置、高度、航向和速度等详细信息。
解调过程
1. 信号接收:接收机接收到ADS-B信号后,首先进行信号的解调。解调过程需要识别脉冲的位置,从而恢复出原始的二进制数据。
2. 数据解码:解调后的数据需要进一步解码以获取飞机的位置、速度、高度等信息。解码过程包括对数据帧结构的解析和错误检测与纠正。
3. 信息处理:解码后的信息会被进一步处理,以便在地面站或飞机的机载系统中显示和使用。
四、基于PPM编码的matlab代码
基于PPM编码,又加入了20的信噪比,模拟了有噪声和无噪声的ADS-B的信号。
% 此代码为模拟信号,没有输入
a = 1e6; %将微妙转化为秒
fs = 10e6; %信号采样频率
T = 1; %信号周期1us
pot = fs/1e6; %pot的物理意义是1us的数据需要采集pot个点来表示他
t = 1:1/pot:120; %采样时间序列
[r, c] = size(t); %采样点数C
snr = 20; %信噪比 20
y = zeros(r, c);
%存储ADS-B信号的数组
binaryCode = zeros(1,120);
binaryCode(1,1:2)=1,binaryCode(1,3:8)=0;
count = 9;
for i=1:8*fs/a
if ((i>0.1*fs/a&&i<=0.5*fs/a) || (i>1*fs/a && i<=1.5*fs/a) || (i>3.5*fs/a&&i<=4*fs/a) || (i>4.5*fs/a&&i<=5*fs/a))
y(i) = 1;
else
y(i) = 0;
end
end
for j=8*fs/a:fs/a:c-fs/a
fx = floor(rand * 2 + 1);
T = floor(j/(fs/a));
if(fx==2)
binaryCode(1,count) = 1;
count = count +1;
else if (fx==1)
binaryCode(1,count) = 0;
count = count +1;
end
end
for k=j+1:j+fs/a
if fx == 2
if k>(2*T)*(fs/a/2) && k<=(2*T+1)*(fs/a/2)
y(k) = 1;
elseif k>(2*T+1)*(fs/a/2) && k<=(2*T+2)*(fs/a/2)
y(k) = 0;
end
elseif fx ==1
if k>=(2*T)*(fs/a/2) && k<=(2*T+1)*(fs/a/2)
y(k) = 0;
elseif k>(2*T+1)*(fs/a/2) && k<=(2*T+2)*(fs/a/2)
y(k) = 1;
end
end
end
end
Signal = awgn(y, snr,'measured');
noise = Signal - y;
代码中加入了一些matlab自己的内置函数,比如(Signal = awgn(y, snr,'measured');),关于噪声的计算,我也是用已加入信噪比的图像减去没有信噪比的图像,可以得到模拟的噪声
(图1 引用自别芳宇,高勇. 一种单天线 ADS-B 交织信号分离算法[ J] . 电讯技术,2022,62( 2) :206- 212. [ BIE Fangyu,GAO Yong. A single antenna ADS-B interleaved signal separation algorithm[ J] . Telecommunication Engineering,2022,62(2) :206-212. ])