Main Content

adsbTransponder

Automatic Dependent Surveillance-Broadcast (ADS-B) transponder

Since R2021a

Description

The adsbTransponder System object™ models an Automatic Dependent Surveillance-Broadcast (ADS-B) transponder. You can use the object to generate ADS-B messages and receive the messages using an adsbReceiver System object.

To generate ADS-B messages:

  1. Create the adsbTransponder object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

transponder = adsbTransponder(ICAO) creates an ADS-B transponder with a unique International Civil Aviation Organization (ICAO) address that generates ADS-B messages. You must specify ICAO as a six-element character vector or string scalar.

example

transponder = adsbTransponder(ICAO,Name,Value) sets properties for the transponder using one or more name-value pairs. For example, adsbTransponder('ABC123','UpdateRate',10) creates an ADS-B transponder that has an ICAO address of ABC123 and an update rate of 10 Hz.

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Unique International Civil Aviation Organization address, specified as a six-element character vector or a six-character string scalar.

Example: 'abc123', "abc123"

Category of the transponder platform, specified as an adsbCategory enumeration object. The default value adsbCategory(0) represents no category information.

Call sign of the transponder platform, specified as an eight-element character vector or an eight-character string scalar. The default value is an eight-element empty character vector.

Example: "abddekcf", 'abddekcf'

Transponder update rate, specified as a positive scalar in Hz.

GPS sensor providing location information for the transponder, specified as a gpsSensor object. The gpsSensor object must specify its PositionInputFormat property as 'Geodetic'. The SampleRate of the gpsSensor object is automatically synchronized with the UpdateRate property of the adsbTransponder. If you set the SampleRate of the gpsSensor object to a specific value, then the UpdateRate property of the adsbTransponder object is set to the same value, and vice versa.

Usage

Description

example

message = transponder(position,velocity) generates ADS-B messages based on the position and velocity input arguments using a created ADS-B transponder object.

Input Arguments

expand all

Position of the platform, specified as a three-element vector [latitude longitude altitude]. Specify latitude and longitude in degrees. altitude is the height above the WGS84 ellipsoid in meters.

Example: [10,10,2000]

Velocity of the platform, specified as a three-element vector of scalars in meters per second. The velocity is with respect to the local North-East-Down (NED) frame corresponding to the platform position.

Example: [10,-10,20]

Output Arguments

expand all

ADS-B message, returned as a structure. The structure contains these fields:

ADS-B Message Structure

Field NameDescriptionDefault Value
ICAOInternational Civil Aviation Organization address, specified as a six-element character vector or a six-character string scalar. six-element empty character vector
TimeThe ADS-B transponder broadcasting time, specified as a scalar. If the transponder is not synchronized with a reliable time source, use NaN as the value of Time so that the reception time will be used in the receiver for the message.NaN
CategoryCategory of the transponder platform, specified as an adsbCategory enumeration object. adsbCategory(0)
CallsignCall sign of the transponder platform, specified as an eight-element character vector or an eight-character string.eight-element empty character vector
LatitudeReported latitude of the broadcasting transponder, specified as a scalar between -90 and 90 in degrees. Use NaN when no information is available.NaN
LongitudeReported longitude of the broadcasting transponder, specified as a scalar between -180 and 180 in degrees. Use NaN when no information is available.NaN
AltitudeReported altitude of the broadcasting transponder, specified as a scalar in meters. It represents the height above the WG84 ellipsoid. Use NaN when no information is available.NaN
VeastReported velocity component in the east direction, specified as a scalar in meters per second. The positive direction for this component is the east direction. Use NaN when no information is available.NaN
VnorthReported velocity component in the north direction, specified as a scalar in meters per second. The positive direction for this component is the north direction. Use NaN when no information is available.NaN
ClimbRateReported climb rate, specified as a scalar in meters per second. The positive direction for this component is the upward direction. Use NaN when no information is available. NaN
HeadingReported heading direction, specified as a scalar between 0 and 360 in degrees. The heading direction angle is north at 0 and is clockwise-positive. Use NaN when no information is available.NaN
NACPosition

Navigation Accuracy Category of position, specified as an integer from 0 to 11. Each integer value defines an Estimated Position Uncertainty (EPU) bound. EPU bound is a 95% accuracy bound for the horizontal position. The bound defines a circle centered on the reported position so that the probability of the actual position lying inside the circle is 0.95. The list shows the relation between the integer and the bound:

  • 0: EPU ≥ 18.52 km (10 NM) or unknown

  • 1: EPU < 18.52 km (10 NM)

  • 2: EPU < 7.408 (4 NM)

  • 3: EPU < 3.704 (2 NM)

  • 4: EPU < 1852 m (1 NM)

  • 5: EPU < 926 m (0.5 NM)

  • 6: EPU < 555.6 m (0.3 NM)

  • 7: EPU < 185.2 m (0.1 NM)

  • 8: EPU < 92.6 m (0.05 NM)

  • 9: EPU < 30 m

  • 10: EPU < 10 m

  • 11: EPU < 3 m

where NM represents nautical miles.

0
GeometricVerticalAccuracy

Geometric Vertical Accuracy (GVA) of altitude, specified as an integer from 0 to 2. Each integer value represents a 95% accuracy bound on the reported altitude. The list shows the relation between the integer and the bound:

  • 0: GVA > 150 m or unknown

  • 1: GVA ≤ 150 m

  • 2: GVA < 45 m

0
NACVelocity

Navigation Accuracy Category of velocity, specified as an integer from 0 to 4. Each integer represents a 95% accuracy bound on the reported Horizontal Velocity Error (HVE). The list shows the relation between the integer and the bound:

  • 0: HVE ≥ 10 m/s or unknown

  • 1: HVE < 10 m/s

  • 2: HVE < 3 m/s

  • 3: HVE < 1 m/s

  • 4: HVE < 0.3 m/s

0

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
isLockedDetermine if System object is in use
cloneCreate duplicate System object
resetReset internal states of System object

Examples

collapse all

Create a gpsSensor object.

gps = gpsSensor('PositionInputFormat','Geodetic','HorizontalPositionAccuracy',100);

Create an adsbTransponder object based on the gpsSensor object.

transponder = adsbTransponder('ABC123', ...
    'Category',adsbCategory(12), ...
    'Callsign','X2347568', ...
    'GPS',gps);

Define the position and velocity of the platform.

truePos = [42.753 31.896 10000]; % deg deg m
trueVel = [250 0 0]; % m/s

Generate the ADS-B message.

adsbMessage = transponder(truePos,trueVel)
adsbMessage = struct with fields:
                         ICAO: 'ABC123'
                         Time: 0
                     Category: Unmanned_Aerial_Vehicle
                     Callsign: 'X2347568'
                     Latitude: 42.7530
                    Longitude: 31.8961
                     Altitude: 1.0000e+04
                        Veast: -7.5704e-04
                       Vnorth: 250.0919
                    ClimbRate: -0.1308
                      Heading: 359.9998
                  NACPosition: 6
    GeometricVerticalAccuracy: 2
                  NACVelocity: 4

Extended Capabilities

Version History

Introduced in R2021a