-
Notifications
You must be signed in to change notification settings - Fork 152
Downlink Format 17 Messages
DF-17 messages transmit ADS-B Out information. This includes the aircraft's location, altitude, velocity, heading, and callsign.
The 1090MHz Riddle ADS-B message types
pyModeS pyModeS.typecode(msg)
The DF-17 message type code (TC) indicates the format of the message data. The message type code must be known before decoding the DF-17 message further.
The 1090MHz Riddle Aircraft Identification
pyModeS pyModeS.adsb.callsign(msg)
The aircraft callsign is used by air traffic control to address a specific aircraft. For commercial traffic, the callsign is typically a three letter airline code followed by the flight number. Private aircraft usually set the ADS-B callsign as the aircraft tail number.
The identification message format uses for seven characters for callsigns. Any unused characters are set to "_". Those placeholders can be discarded by calling pyModeS.adsb.callsign(msg).rstrip('_')
.
pyModeS pyModeS.adsb.category(msg)
The aircraft category associates the broadcasting aircraft to a classification. The classification is dependent on the message type code and category number.
Category | Description |
---|---|
0 | No aircraft category information |
1 | Light ( < 15,500 lbs ) |
2 | Medium 1 ( 15,500 lbs to 75,000 lbs ) |
3 | Medium 2 (75,000 lbs to 300,000 lbs ) |
4 | High vortex aircraft |
5 | Heavey ( > 300,000 lbs ) |
6 | High Performance ( > 5g acceleration) and high speed ( > 400 kt) |
7 | Rotorcraft |
Category | Description |
---|---|
0 | No aircraft category information |
1 | Glider / sailplane |
2 | Lighter-than-air |
3 | Parachutist / skydiver |
4 | Ultralight / hang-glider / paraglider |
5 | Reserved |
6 | Unmanned aerial vehicle |
7 | Space / transatmospheric vehicle |
Category | Description |
---|---|
0 | No aircraft category information |
1 | Surface vehicle - emergency vehicle |
2 | Surface vehicle - service vehicle |
3 | Fixed ground or tethered obstruction |
4-7 | Reserved |
Reserved
Position messages include the aircraft lattitude and longitude coordinates and altitude.
The 1090MHz Riddle
Compact Position Reporting
,
Globally unambiguous position
and
Locally unambiguous position
pyModeS pyModeS.adsb.oe_flag(msg)
Mode-S position messages use compact position reporting (CPR) to express the aircraft's coordinates using as few bits as posible. As a result, position messages are assigned an even or odd flag.
- An odd message and an even message are needed to decode an aircraft location without any prior knowledge of its location.
- Only one message is neded to decode an aircraft location if a previous position is known
In the following method signatures, msg0
refers to the even message and msg1
the odd. Likewise t0
is an integer representing the time the even message was recived and t1
the time of the odd message. The absolute value of t0
and t1
is irrelevant to decoding the mssage. Howver, the most recent message must have the greater timestamp. One recomendation is to use seconds since the UNIX epoch.
pyModeS
- Using even/odd messages
pyModeS.adsb.surface_position(msg0, msg1, t0, t1, lat_ref, lon_ref)
- With refrence positon
pyModeS.adsb.surface_position_with_ref(msg, lat_ref, lon_ref)
- Velocity
pyModeS.adsb.velocity(msg, rtn_sources=False)
Surface position messages transmit the aircraft coordinates while on the ground. This is accurate to 1.25m. When using even/odd messages, if no previous aircraft location is known, use the reciver antenna location.
The velocity aspect provides the ground speed (knots) and heading (relative to true north)
pyModeS
- Using even/odd messages
pyModeS.adsb.airborne_position(msg0, msg1, t0, t1)
- With refrence position
pyModeS.adsb.airborne_position_with_ref(msg, lat_ref, lon_ref)
- Altitude
pyModeS.adsb.altitude(msg)
Airborne position messages transmit the aircraft coordinates while airborne. This is accurate to 5m.
The altitude comes from diffrent sources depending on the type code.
TC | Source |
---|---|
9-18 | Barometer |
20-22 | GNSS (GPS, GLONASS, etc) |
The 1090MHz Riddle
Airborne Velocity
pyModeS pyModeS.adsb.velocity(msg, rtn_sources=False)
Airborne velocity messages contain the aircraft velocity, heading, and vertical speed.
Message data pretaining to aircraft position and velocity contains some inaccuracy. Here is the vocabulary used to define uncertainty.
-
Horizontal protection limit (HPL), Horizontal integrity limit (HIL) - A circle in a plane tangent to the Earth's surface (defined as the WGS-84 ellipsoid) centered at the reported coordinates where the true aircraft coordinates are effectivly garunteed to be contained.
-
95% Containment radius - A circle concentric with the HPL circle with a smaller radius where the true position is expected to fall outside with a probability lower than 1*10^-5.