Within the group of ADS-B messages, the Aircraft Identification and Category message is designed to broadcast the identification (also known as the ‘callsign’), and the wake vortex category of the aircraft.
In this message, the Type Code can be from 1 to 4. The 56-bit ME filed consists of 10 parts and is structured as follows:
+------+------+------+------+------+------+------+------+------+------+ | TC,5 | CA,3 | C1,6 | C2,6 | C3,6 | C4,6 | C5,6 | C6,6 | C7,6 | C8,6 | +------+------+------+------+------+------+------+------+------+------+ TC: Type code CA: Aircraft category C*: A character
Here, number 6 represents the number of bits used to encode each of the characters.
The aircraft identification included in the message is the callsign. Be aware that callsign is not a unique identifier of an aircraft, since different aircraft flying the same route at different times would share the same callsign.
The last eight fields in the previous structure diagram represent the callsign characters. In order to decode each character, a lookup table is needed to map the corresponding decimal number (represented in binary code) to each character.
The character mapping is shown as follows:
# symbols represent characters that are not used. In summary, characters and their decimal representations are as follows, where the
␣ symbol refers to a space character.
A - Z : 1 - 26 0 - 9 : 48 - 57 ␣ : 32
If you are familiar with the ASCII (American Standard Code for Information Interchange) code, it is easy to identify that a callsign character is encoded using the lower six bits of the same character in ASCII.
CA value in combination with
TC value defines the wake vortex category of the aircraft. Table 1.1 lists the definitions and related
|ANY||0||No category information|
|2||1||Surface emergency vehicle|
|2||3||Surface service vehicle|
|3||4||Ultralight, hang-glider, paraglider|
|3||6||Unmanned aerial vehicle|
|3||7||Space or transatmospheric vehicle|
|4||1||Light (less than 7000 kg)|
|4||2||Medium 1 (between 7000 kg and 34000 kg)|
|4||3||Medium 2 (between 34000 kg to 136000 kg)|
|4||4||High vortex aircraft|
|4||5||Heavy (larger than 136000 kg)|
|4||6||High performance (>5 g acceleration) and high speed (>400 kt)|
It is worth noting that ADS-B has its own definition of wake categories, which is different from the ICAO wake turbulence category definition commonly used in aviation. The relationships of ICAO wake turbulence category (WTC) and ADS-B wake vortex category are:
ICAO WTC L (Light) is equivalent to ADS-B (TC=4, CA=1).
ICAO WTC M (Medium) is equivalent to ADS-B (TC=4, CA=2 or CA=3).
ICAO WTC H (Heavy) or J (Super) is equivalent to ADS-B (TC=4, CA=5).
Let us use the following raw message as an example to demonstrate the decoding:
The ME field is:
HEX: 202CC371C32CE0 BIN: 00100000001011001100001101110001110000110010110011100000
The structure of the ME field can be decomposed as follows:
00100 000 001011 001100 001101 110001 110000 110010 110011 100000 TC CA 11 12 13 49 48 50 51 32 4 0 K L M 1 0 2 3 _
TC=4, we can confirm it is an identification and category message. The decoded identity (callsign) of the aircraft is
KLM1023 (with the trailing space ignored). With
CA=0, we can see that the aircraft did not transmit any information on the wake vortex category.
Try it out Using pyModeS, we can decode the callsign as follows:
import pyModeS as pms pms.adsb.category("8D4840D6202CC371C32CE0576098") # Output: 0 pms.adsb.callsign("8D4840D6202CC371C32CE0576098") # Output: KLM1023_