Mode S Enhanced Surveillance (EHS) provides a set of advanced functionalities for the Mode S transponders. Three different types of reports are included in EHS. They are designed to report vertical intent, turning performance, and airspeeds. This chapter explains structures and decoding processes of these reports.
The selected vertical intention message is designed for air traffic control to obtain an aircraft’s current vertical intentions. For example, an aircraft controller can use this information to check whether an aircraft is complying with an altitude command. Table 1.1 shows the structure of the message.
FIELD | MSG | MB | BITS |
---|---|---|---|
Status (for MCP/FCU selected altitude) | 33 | 1 | 1 |
MCP/FCU selected altitude | 34–45 | 2–13 | 12 |
Range: [0, 65520] ft | |||
LSB: 16 ft | |||
Status (for FMS selected altitude) | 46 | 14 | 1 |
FMS selected altitude | 47–58 | 15–26 | 12 |
Range: [0, 65520] ft | |||
LSB: 16 ft | |||
Status (for barometric press setting) | 59 | 27 | 1 |
Barometric pressure setting | 60–71 | 28–39 | 12 |
Note: actual value minus 800 mb | |||
Range: [0, 410] mb | |||
LSB: 0.1 mb | |||
Reserved (all zeros) | 72–79 | 40–47 | 8 |
Status of MCP/FCU mode | 80 | 48 | 1 |
VNAV mode | 81 | 49 | 1 |
Alt hold mode | 82 | 50 | 1 |
Approach mode | 83 | 51 | 1 |
Reserved (all zeros) | 84–85 | 52–53 | 2 |
Status of target altitude source | 86 | 54 | 1 |
Target altitude source | 87–88 | 55–56 | 2 |
Two different types of selected altitude fields are included in the message. Values in the MCP/FCU selected altitude field are from the mode control panel or flight control unit. These are often inputs from the pilot. Values in FMS selected altitude field are derived from the flight management system controlling the vertical profile, which often does not come from manual input. In practice, FMS selected altitude values are often empty or unusable. When it is presented, the value is mostly the same as MCP/FCU selected altitude.
The barometric pressure setting value is the actual pressure in millibars (mb) subtracted by a constant of 800. If the actual value is below 800 mb (or above 1209 mb), the corresponding status bit (MB:27) is set to 0
.
The last two bits in the MB field show the source of the target altitude. They have the following meaning:
00: Unknown source
01: Aircraft altitude
10: FCU/MCP selected altitude
11: FMS selected altitude
Figure 1.1 illustrates an example of how to decode a BDS 4,0 message.
Try it out Using pyModeS, we can decode information of BDS 4,0 messages as:
import pyModeS as pms
msg = "A8001EBCAEE57730A80106DE1344"
pms.commb.selalt40fms(msg)
# 24000, FMS selected altitude (ft)
pms.commb.selalt40mcp(msg)
# 24000, MCP selected altitude (ft)
pms.commb.p40baro(msg)
# 1013.2, pressure (mb)
The track and turn report is designed to provide parameters to describe aircraft turns. In this type of message, roll angle, track angle, and track rate are provided. It also includes the ground speed and true airspeed (TAS) of the aircraft.
Table 1.2 shows the structure of the message.
FIELD | MSG | MB | BITS |
---|---|---|---|
Status (for roll angle) | 33 | 1 | 1 |
Sign | 34 | 2 | 1 |
Roll angle | 35–43 | 3–11 | 9 |
Range: [-90, +90] degrees | |||
LSB: 45/256 degrees | |||
Status (for track angle) | 44 | 12 | 1 |
Sign | 45 | 13 | 1 |
True track angle | 46–55 | 14–23 | 10 |
Range: [-180, 180] degrees | |||
LSB: 90/512 degrees | |||
Status (for ground speed) | 56 | 24 | 1 |
Ground speed | 57–66 | 25–34 | 10 |
Range: [0, 2046] kt | |||
LSB: 2 kt | |||
Status (for track angle rate) | 67 | 35 | 1 |
Sign | 68 | 36 | 1 |
Track angle rate | 69–77 | 37–45 | 9 |
Range: [-16, 16] degrees/second | |||
LSB: 8/256 degrees/second | |||
Status (for true airspeed) | 78 | 46 | 1 |
True airspeed | 79–88 | 47–56 | 10 |
Range: [0, 2046] kt | |||
LSB: 2 kt |
In this message, three signed values are shown, which are roll angle, track angle, and track angle rate. Two’s complement coding (see section [sec:two_complement]) should be used to calculate these values.
The following Figure 1.2 shows an example of decoding a BDS 5,0 message.
Try it out Using pyModeS, we can decode information of BDS 5,0 messages as:
import pyModeS as pms
msg = "A80006ACF9363D3BBF9CE98F1E1D"
pms.commb.roll50(msg) # -9.7, roll angle (deg)
pms.commb.trk50(msg) # 140.273, track angle (deg)
pms.commb.rtrk50(msg) # -0.406, track angle rate (deg/s)
pms.commb.gs50(msg) # 476, ground speed (kt)
pms.commb.tas50(msg) # 466, TAS (kt)
The heading and speed report is designed to downlink various airspeed and vertical rate to air traffic controllers. In this message, indicated airspeed (IAS), Mach number, barometric altitude rate, inertial vertical velocity, and the magnetic heading of the aircraft are provided. Table 1.3 shows the structure of the message.
FIELD | MSG | MB | BITS |
---|---|---|---|
Status (for magnetic heading) | 33 | 1 | 1 |
Sign | 34 | 2 | 1 |
Magnetic heading | 35–44 | 3–12 | 10 |
Range: [-180, +180] degrees | |||
LSB: 90/512 degrees | |||
Status (for indicated airspeed) | 45 | 13 | 1 |
Indicated airspeed | 46–55 | 14–23 | 10 |
Range: [0, 1023] kt | |||
LSB: 1 kt | |||
Status (for Mach number) | 56 | 24 | 1 |
Mach number | 57–66 | 25–34 | 10 |
Range: [0, 4.092] | |||
LSB: 0.004 | |||
Status (for barometric altitude rate) | 67 | 35 | 1 |
Sign | 68 | 36 | 1 |
Barometric altitude rate | 69–77 | 37–45 | 9 |
Range: [-16384, +16352] ft/min | |||
LSB: 32 ft/min | |||
Status (for inertial vertical velocity) | 78 | 46 | 1 |
Sign | 79 | 47 | 1 |
Inertial vertical velocity | 80–88 | 48–56 | 9 |
Range: [-16384, +16352] ft/min | |||
LSB: 32 ft/min |
In this message, there are a few signed values, such as heading and two vertical rates. Two’s complement coding (see section [sec:two_complement]) should be used to calculate these values.
The magnetic heading is the aircraft’s heading with respect to the magnetic North, which can be different from the true north (for example, used for the track angle from ADS-B and BDS 5,0). Often, an aircraft obtains the magnetic heading by adding its true North heading with the magnetic declination from a world magnetic model, such as [Chulliat et al. 2015]. It is worth noting that the true North heading is not necessarily the same as the track angle due to the influence of wind.
In the heading and speed report, two different kinds of vertical rates are reported. Barometric altitude rates are only derived from barometer measurements. Since the source data from air data system is not filtered, significant noise is contained in these values. In contrast, inertial vertical velocities are values provided by navigational equipment from different sources including the flight management computer. According to [ICAO 2004], data sources with different levels of priorities are defined for these two values, which are listed in Table 1.4.
Parameter | Input Data Source Priorities |
---|---|
Barometric altitude rate | 1. Air Data System |
2. Inertial Reference System/Flight Management System | |
Inertial vertical velocity | 1. Flight Management Computer / GNSS integrated |
2. Flight Management Computer (General) | |
3. Inertial Reference System/Flight Management System |
Figure 1.3 illustrates an example on how to decode a BDS 6,0 message.
Try it out Using pyModeS, we can decode information of BDS 6,0 messages as:
import pyModeS as pms
msg = "A80004AAA74A072BFDEFC1D5CB4F"
pms.commb.hdg60(msg) # 110.391, heading (deg)
pms.commb.ias60(msg) # 259, ISA (kt)
pms.commb.mach60(msg) # 0.7, Mach (-)
pms.commb.vr60baro(msg) # -2144, baro vertical rate (ft/min)
pms.commb.vr60ins(msg) # -2016, INS vertical rate (ft/min)