这是一篇来自于旧站的重置文章。

一连三篇待补全的,无敌了,2022年的我。

前言

好累,明天写

2022年4月5日 1:43 am

2025年8月19日 22:04 pm 开始写

正文

hmmm,该怎么写呢,这已经是3年前的东西了,在我做毕设时候的事情了。

思考一下吧。

1. 什么是ADS-B?

ADS-B(自动相关监视-广播,Automatic Dependent Surveillance – Broadcast)是一种基于卫星导航和数据链路的航空监视技术。当时的毕设内容主要就是做的飞机ADS-B报文,来判断,是否是同一架飞机,还是不同的飞机。其不同的字母分别对应着:

  • Automatic:自动,无需飞行员或地面管制员操作。

  • Dependent:依赖于飞机上的导航系统(主要是GNSS)提供的位置信息。

  • Surveillance:监视,提供给空管和其他飞机。

  • Broadcast:广播,周期性地通过无线电频率(主要是1090 MHz ES或978 MHz UAT)发送。

应用:空中交通管制(ATC)、防碰撞告警(ASAS)、态势感知(Situational Awareness)、轨迹预测等。

优势:比传统二次雷达(SSR)更精确、更低成本、可提供全球覆盖(尤其是海洋和偏远地区,通过卫星 ADS-B)。

2. ADS-B系统的组成

ADS-B 系统可以分为 飞机(ADS-B Out + ADS-B In) 和 地面接收网络:

  • ADS-B Out:飞机广播自身位置、高度、速度、航向、识别号等信息。

  • ADS-B In:飞机接收来自其他飞机或地面站的ADS-B信息,用于态势感知。

  • 地面接收网络:通过 ADS-B 接收机或卫星收集报文,供 ATC 或第三方平台(如 FlightRadar24)使用。

3. ADS-B 报文格式

我们主要参考 The 1090 Megahertz Riddle (second edition)(已经变成纯翻译了)

3.1 报文格式

ADS-B帧长112位,由五个主要部分组成,如下所示:

+----------+----------+-------------+------------------------+-----------+
|  DF (5)  |  CA (3)  |  ICAO (24)  |         ME (56)        |  PI (24)  |
+----------+----------+-------------+------------------------+-----------+

民用飞机ADS-B报文以下行链路格式17开头,前5位对应二进制10001。第6~8位表示应答器能力。之后是24位应答器代码(也称为ICAO代码)。最后两段是56位有效载荷和24位奇偶校验位。下表(Structure of ADS-B frame)列出了ADS-B报文的关键信息。

Bit

No. bits

Abbreviation

Information

1–5

5

DF

Downlink Format

6–8

3

CA

Transponder capability

9–32

24

ICAO

ICAO aircraft address

33–88

56

ME

Message, extended squitter

(33–37)

(5)

(TC)

(Type code)

89–112

24

PI

Parity/Interrogator ID

值得注意的是,Mode S应答器发送的ADS-B扩展电文使用下行链路格式17 (DF=17)。非基于应答器的ADS-B发射子系统和TIS-B发射设备使用下行链路格式18 (DF=18)。通过使用下行链路格式18(而非17),ADS-B/TIS-B接收子系统将能够识别该消息来自无法被询问的设备。

3.2 CA(Capability)

ADS-B 消息的第二个字段由三位组成,用于指示应答器级别。能力值可以是 0 到 7 之间的十进制值。这些值的定义如下表Mode S transponder capability (CA)。

CA

Definition

0

Level 1 transponder

1–3

Reserved

4

Level 2+ transponder, with ability to set CA to 7, on-ground

5

Level 2+ transponder, with ability to set CA to 7, airborne

6

Level 2+ transponder, with ability to set CA to 7, either on-ground or airborne

7

Signifies the Downlink Request value is 0, or the Flight Status is 2, 3, 4, or 5, either airborne or on the ground

3.3 ICAO 地址

在每条 ADS-B 消息中,可以使用根据 ICAO 规定分配的 S 模式应答器代码来识别发送方飞机 [Blythe 等人,2011]。S 模式应答器代码也常被称为 ICAO 地址或十六进制代码。

ICAO 地址以二进制形式表示为 9 至 32 位(或十六进制形式表示为 3 至 8 位)。飞机的每个 Mode S应答器都会分配一个唯一的 ICAO 地址,作为每架飞机的唯一标识符。

原则上,此代码在飞机的整个使用寿命期间不会更改。但是,可以对应答器进行重新编程,使消息包含不同的地址。一些军用飞机以及一些选择加入 FAA 隐私 ICAO 地址系统的私人飞机已经观察到了这种情况 [Gray and Barrett,2019]。

3.4 ADS-B 消息类型(TC)

要识别 ADS-B 消息中包含哪些信息,我们需要查看该消息的类型代码。类型代码位于第 33 至 37 位(即 ME 段的前 5 位)。下表 (ADS-B Type Code and content)列出了每个类型代码与其在 ME 段中包含的信息之间的关系。

Type Code

Data frame content

1–4

Aircraft identification

5–8

Surface position

9–18

Airborne position (w/Baro Altitude)

19

Airborne velocities

20–22

Airborne position (w/GNSS Height)

23–27

Reserved

28

Aircraft status

29

Target state and status information

31

Aircraft operation status

3.5 Parity / Interrogator ID

在 ADS-B(1090ES)帧里,PI 指最后的 24 比特字段,位置是 bits 89–112。我们这里虽然标为 “Parity / Interrogator ID”,但在 ADS-B(DF17/DF18) 的具体实现里,这 24 比特就是用来做差错检测的 CRC 余数(常被称作 parity / checksum),并不携带“询问机ID”。

4. ADS-B 例子

让我们用一个例子来说明解码过程。首先,接收一条原始消息,以十六进制格式表示:

8D4840D6202CC371C32CE0576098

可以方便的转换成二进制,二进制消息结构如下:

+-----+------------+--------------+----------------------+--------------+
| HEX | 8D         | 4840D6       | 202CC371C32CE0       | 576098       |
+-----+------------+--------------+----------------------+--------------+
| BIN | 10001  101 | 010010000100 | [00100]0000010110011 | 010101110110 |
|     |            | 000011010110 | 00001101110001110000 | 000010011000 |
|     |            |              | 110010110011100000   |              |
+-----+------------+--------------+----------------------+--------------+
| DEC |  17    5   |              | [4] ...............  |              |
+-----+------------+--------------+----------------------+--------------+
|     |  DF    CA  |   ICAO       |          ME          | PI           |
|     |            |              | [TC] ..............  |              |
+-----+------------+--------------+----------------------+--------------+
  1. 前五位表明下行链路格式为 17(二进制为 10001),表示该消息为 ADS-B 消息。

  2. ME 字段的前五位表明类型代码为 4(二进制为 00100),表示该消息为识别消息。

  3. ICAO 地址为 4840D6(二进制为 010010000100000011010110)。例如,使用前面的 ICAO 4840D6 示例,它将返回注册号为 PH-KZD 的福克 70 飞机的结果。

我们可以使用 pyModeS,我们可以发现

import pyModeS as pms
pms.tell("8D4840D6202CC371C32CE0576098")

输出为:

Message: 8D4840D6202CC371C32CE0576098 
ICAO address: 4840D6 
Downlink Format: 17 
Protocol: Mode~S Extended Squitter (ADS-B) 
Type: Identitification and category 
Callsign: KLM1023_ 

5. 可用性和传输速率

不同的 ADS-B 消息具有不同的传输速率。更新频率也因飞机是在地面还是在空中,以及飞机在地面时是静止还是移动而不同。下表 (ADS-B message transmission rates (ADS-B version 2))列出了这些消息的传输速率。

ADS-B message transmission rates (ADS-B version 2)

Messages

TC

Ground (still)

Ground (moving)

Airborne

Aircraft identification

1–4

0.1 Hz

0.2 Hz

0.2 Hz

Surface position

5–8

0.2 Hz

2 Hz

-

Airborne position

9–18, 20–22

-

-

2 Hz

Airborne velocity

19

-

-

2 Hz

Aircraft status

28

0.2 Hz (no TCAS RA and Squawk Code change)

1.25 Hz (change in TCAS RA or Squawk Code)

Target states and status

29

-

-

0.8 Hz

Operational status

31

0.2 Hz

0.4 Hz (no NIC/NAC/SIL change)

1.25 Hz (change in NIC/NAC/SIL)

值得注意的是,对于目标状态和操作状态消息,当某些关键参数发生变化时,传输会转变为更高的速率约 24 秒。

6. (额外)ADS-B 版本

自 ADS-B 首次推出以来,已有三个不同的实施版本。这些更新的主要原因是为了包含更多信息。关于这些版本及其差异的文档相当不方便用户理解。ICAO 9871 官方文件 [ICAO 2008] 阅读起来令人困惑。在本节中,我们将零散的信息差异整理在一起。

迄今为止,已实施了三个 ADS-B 版本,从版本 0(规范定义在 RTCA 文件 DO-260 中)开始。版本 1 于 2008 年左右推出(DO-260A),版本 2 于 2012 年左右推出(DO-260B)。版本 3 目前正在开发中。接下来,我们将总结版本 1 和版本 2 的主要变化。

6.1 从 version 0 到 version 1

版本 1 中最重要的变化是新增了消息类型,并用新的完整性指标取代了之前的不确定性指标。ADS-B 版本 1 中所有主要变化的详细信息如下:

  • 增加了类型代码 28 和 31 消息。

    • TC=28:飞机状态 - 紧急/优先状态和 ACAS RA 广播。

    • TC=31:运行状态。

  • 删除了导航不确定性类别 (NUC)。引入了新的导航完整性类别 (NIC) 和监视完整性等级 (SIL)。

    • 类型代码和 NIC 补充位 (NICs) 均用于定义 NIC。

    • NIC 补充位包含在运行状态消息 (TC=31) 中。

  • ADS-B 版本号现在显示在运行状态消息 (TC=31) 中。

6.2 从 version 1 到 version 2

与版本 1 相比,版本 2 中的完整性类别得到了改进。版本 2 的主要变更如下:

  • 重新定义了 TC=28 和 TC=31 消息的结构和内容。

  • 引入了两个额外的 NIC 补充位。

  • NICa 在运行状态消息中定义。(TC=31)

  • NICb 在空中位置消息中定义。(TC=9-18)

  • NICc 在运行状态消息中定义。(TC=31)

  • 在空中位置消息的 NIC=6 内引入了额外的水平遏制半径 (Rc) 级别 (TC=13)。

6.3 如何识别 ADS-B 版本?

由于版本 0 中的 ADS-B 版本信息不包含在任何消息中,因此检查 ADS-B 版本需要两个步骤。

  1. 步骤 1:检查飞机是否正在广播 TC=31 的 ADS-B 消息。如果未报告任何消息,则可以安全地假设版本为版本 0。

  2. 步骤 2:如果收到 TC=31 的消息,请检查位于 ME 中第 41-43 位(或消息中的第 73-75 位)的版本号。

确定飞机的正确 ADS-B 版本(该版本不经常更改)后,就可以相应地解码相关的 TC=28 和 TC=31 消息。

总结

其实本篇 也就 1和2 来自自己的总结查询,3、4、5、6基本都是对The 1090 Megahertz Riddle (second edition) 的百分百复制。

总而言之,也把这篇给完善了!

参考

[1] The 1090 Megahertz Riddle (second edition)
[2] Blythe, W., Anderson, H., and King, N. 2011. Ads-b implementation and operations guidance document. International Civil Aviation Organization.
[3] Gray, D.E. and Barrett, C.W. 2019. Privacy impact assessment (PIA) - federal aviation administration (FAA) privacy ICAO address system. U.S. Department of Transportation.

立志做一个有趣的碳水化合物。