Understanding ASDU Structure in IEC 60870-5-104

By | November 11, 2025

The Application Service Data Unit (ASDU) is the core of the IEC 60870-5-104 communication protocol. It defines how information is represented and exchanged between a controlling station (SCADA master) and controlled stations such as RTUs or IEDs.

If the Application Protocol Data Unit (APDU) is the message envelope, the ASDU is the payload — carrying the actual telemetry data, commands, and event details that keep power and industrial systems synchronized.

This article explains how the ASDU is structured, what each field represents, and how to interpret it when analyzing IEC 104 frames.

The Role of the ASDU in IEC 104

In IEC 104, data travels inside TCP/IP packets, but the application layer follows the same logic as the older IEC 101 serial standard. That means the ASDU structure in both is identical — ensuring backward compatibility between legacy serial systems and modern Ethernet-based networks.

Each ASDU conveys a specific message type, such as a measurement, a status change, or a control command, and always includes contextual information like why the data was sent (Cause of Transmission) and where it came from (Common Address of ASDU).

The Basic ASDU Format

Below is a visual representation of the ASDU (Application Service Data Unit) structure as defined in IEC 60870-5-104. It shows how the Data Unit Identifier fields (Type ID, VSQ, COT, Common Address) are followed by one or more Information Objects, each containing its own address, data elements, and optional timestamp.

IEC 60870-5-104 ASDU Structure Diagram
IEC 60870-5-104 ASDU Structure Diagram

Explanation:

  • The top portion, Data Unit Identifier, defines the context of the data.
  • Each Information Object below carries the actual data values and optional time tags (CP24Time2a or CP56Time2a).
  • Multiple information objects can be grouped within one ASDU if the Variable Structure Qualifier (VSQ) allows it.

Type Identification (Type ID)

The Type ID (1 byte) defines what kind of data the ASDU contains.

Type identification field
Type identification field

Common examples include:

Type IDMnemonicMeaning
1M_SP_NA_1Single-point information (no timestamp)
3M_DP_NA_1Double-point information
9M_ME_NA_1Measured value, normalized
11M_ME_NC_1Measured value, short floating point
45C_SC_NA_1Single command (control)
100C_IC_NA_1Interrogation command
103C_CS_NA_1Clock synchronization
120–124F_FR–F_AFFile transfer and archive control

The Type ID is the first clue Wireshark or any SCADA analyzer uses to decode the frame’s meaning.

Important Note:

The Type Identification (Type ID) applies to the entire ASDU — not to individual information objects. This means that if multiple information objects are contained in a single ASDU, they must all be of the same type. For example, an ASDU with Type ID = 9 (Measured Value, Normalized) can include several measurement objects, but not a mix of digital and analog data.

This ensures that the receiver interprets all data elements consistently and efficiently, reducing protocol overhead while maintaining integrity across grouped values.

Variable Structure Qualifier (VSQ)

The Variable Structure Qualifier (VSQ) is a single-octet field that determines how many information objects or elements are included in the ASDU and how they are addressed.

IEC 60870-5-104 Variable Structure Qualifier and SQ Bit Explanation
IEC 60870-5-104 Variable Structure Qualifier and SQ Bit Explanation

It consists of seven bits representing the number of objects or elements (N, range 1–127) and one bit (bit 7) that defines the structure type — whether multiple independent information objects are present, or a single information object contains several sequential elements.

Structure of the Variable Structure Qualifier

BitNameMeaning
7SQ (Sequence Bit)0 = Sequence of information objects (each has its own address)
1 = Sequence of information elements under one base address
6–0NNumber of information objects or elements (1–127)

Understanding the Two Information Structures

SQStructure TypeExplanation
SQ = 0Sequence of Information ObjectsEach information object has its own address (IOA). Used when multiple, non-sequential points are reported together.
SQ = 1Sequence of Information ElementsA single base IOA is given; subsequent elements are assumed to have consecutive addresses (IOA, IOA+1, IOA+2, …). Used for block data such as analog arrays or counters.

Cause of Transmission (COT)

Every ASDU (Application Service Data Unit) in IEC 60870-5-104 includes a field called the Cause of Transmission (COT). This field tells the receiving station why the message was generated — whether it was a spontaneous event, a response to a request, or a confirmation of a control command.

Understanding the COT is essential for correctly interpreting communication flows between controlling stations (masters) and controlled stations (RTUs/IEDs).

Structure of the Cause of Transmission Field

The COT field is a six-bit code, often extended to one or two octets, used to describe the reason for sending the ASDU.

In addition to the six main bits, there are two control flags and an optional originator address that further define message context.

Cause of transmission field
Cause of transmission field

Field Meaning

Bit / FieldDescription
Bits 0–5Six-bit COT code (0–63) that defines the cause or purpose of transmission.
Bit 6 (P/N)Positive/Negative confirmation bit — indicates success or failure of a control command.
Bit 7 (T)Test bit — set when the ASDU is generated for test purposes and not intended to change process state.
Originator AddressOptional (system-specific). Identifies the controlling station that generated the command, used in multi-master or dual-mode systems.

How Each Bit Works

1. PN Bit (Positive/Negative Confirmation)

Used mainly with control commands. When the SCADA master issues a control (for example, “switch breaker ON”), the RTU mirrors that command back in the monitoring direction. If the PN bit = 0, the command executed successfully. If PN = 1, it indicates a negative confirmation, meaning the command failed or was rejected.

2. T Bit (Test)

When set = 1, it means the ASDU is generated only for testing transmission or device integrity and does not affect the actual process. For example, during communication link testing, messages carry the test bit to avoid triggering real outputs.

3. Originator Address

This field is optional and only used when multiple controlling stations exist on the same system. It allows a response or confirmation to be routed back to the specific master that issued the command. If the originator address = 0, it functions as the default address and the message is broadcast to all controlling stations.

COT Codes and Their Meanings

The following table lists the standard Cause of Transmission codes defined in IEC 60870-5-104.

Each ASDU Type ID supports only a subset of these codes relevant to its purpose.

COT CodeMnemonicMeaning
0Not used
1PERPeriodic / Cyclic transmission
2BGSBackground scan
3SPSpontaneous event
4INITInitialization
5REQRequest / Requested
6ACTActivation
7ACTCONActivation confirmation
8DEACTDeactivation
9DEACTCONDeactivation confirmation
10ACTTERMActivation termination
11RETREMReturn info — remote command
12RETLOCReturn info — local command
13FILEFile transfer
14–19Reserved for future use
20INTInterrogated by station interrogation
21–36INT G1–G16Interrogated by group (1–16)
37CNT ALLRequested by general counter request
38–41CNT G1–G4Requested by group (1–4) counter request
42–43Reserved
44UNK-TIDUnknown Type Identification
45UNK-COTUnknown Cause of Transmission
46UNK-CAUnknown Common Address of ASDU
47UNK-IOAUnknown Information Object Address

How COT Works in Practice

When a status change occurs in a field device:

  1. The RTU creates an ASDU with COT = 3 (Spontaneous).
  2. It includes the Type ID corresponding to the signal (e.g., Type 1 = Single-Point Info).
  3. The SCADA master receives and logs the spontaneous event.

When the master sends a control command:

  1. It transmits an ASDU with COT = 6 (Activation).
  2. The RTU responds with COT = 7 (Activation Confirmation).
  3. Once the action completes, the RTU issues COT = 10 (Activation Termination).

This three-step handshake ensures the control loop is traceable and verifiable.

Information Object Address (IOA)

The IOA (1–3 bytes) locates the individual data point inside the device.

For example, IOA 100 might correspond to a digital input for “Breaker 1 Status,” while IOA 120 refers to “Busbar Voltage.”

Together with the Common Address, the IOA forms a globally unique tag for every signal in the system.

When the SQ bit = 0, each IOA is specified individually; when SQ = 1, a single base address is given and subsequent values are assumed to follow sequentially.

Common Address of ASDU (CA)

The Common Address of ASDU is a critical field within the IEC 60870-5-104 protocol that identifies which station or device the ASDU belongs to.

This address is common to all information objects inside the ASDU — meaning every data point in that ASDU originates from (or is intended for) the same station.

Field Definition

Common address of ASDU
Common address of ASDU

The Common Address (CA) field is either one or two octets (1–2 bytes) long, depending on the system configuration.

The choice of length is fixed on a per-system basis — all stations within the same network must use the same addressing length.

Purpose of the Common Address

The CA uniquely identifies the source or destination of the data. It allows the controlling station (master) to associate every ASDU with a specific remote terminal unit (RTU) or intelligent electronic device (IED).

In large substations or distributed systems, the CA may be divided into station + sector components, where each sector represents a logical sub-unit such as a bay, transformer, or feeder.

Address Range and Special Values

ValueMeaning
0x0000 (0)Not used — reserved and should not appear in communication.
1 – 0xFE (254) or 1 – 0xFFFE(65534)Normal station addresses used for individual RTUs / IEDs.
0x00FF(255) or 0xFFFF(65534)Global address — interpreted by all stations. Used only for special broadcast functions.

Note:

The global address (highest possible value) is reserved for a limited number of ASDU types, such as time synchronization, system interrogation, or broadcast activation.
Its use ensures that the same operation is initiated simultaneously across all devices in the system.

Information Object Address (IOA)

The Information Object Address (IOA) is one of the most important fields in an IEC 60870-5-104 ASDU. It uniquely identifies which data point or process variable within a specific station the ASDU refers to.

In essence, while the Common Address of ASDU (CA) identifies which station the data belongs to, the IOA specifies what data inside that station the message relates to.

Purpose of the Information Object Address

The IOA is the first field of every information object in the ASDU. It pinpoints the exact process variable — such as a switch position, analog measurement, or alarm — within the RTU or IED identified by the common address.

Information Object Address Structure (IEC 104)
Information Object Address Structure (IEC 104)

This structure ensures that each data point across a large SCADA network is uniquely addressable by combining two fields:

Unique Data Point = (Common Address) + (Information Object Address)

IOA Field Length

The Information Object Address can be 1, 2, or 3 octets (bytes) long, depending on system configuration.

However, in practice:

  • 1 octet (8 bits) – Used in small systems with fewer than 256 data points per device.
  • 2 octets (16 bits) – Most common; allows up to 65,536 unique addresses per station.
  • 3 octets (24 bits) – Optional; reserved for systems that use structured addressing, such as hierarchical device layouts or sectorized substations.

⚠️ Although 3-byte addressing is defined in the standard, each station is limited to 65,536 addresses in practical implementations — matching the 2-octet range.

When combined with the Common Address and Cause of Transmission, the IOA forms a clear and logical data model that supports accurate monitoring, control, and event reporting across complex automation networks.

Information Elements and Time Tags

Each information object contains one or more data elements, such as:

  • Binary status (ON/OFF)
  • Analog measurement (float or scaled)
  • Counter or integrated total
  • Command or set-point value

Some ASDUs include timestamps — either CP24Time2a (3 bytes, minutes + milliseconds) or CP56Time2a (7 bytes, full date and time).
These allow the master to reconstruct the exact event sequence across the entire SCADA network.

For detailed explanation of timestamp formats, see: IEC 104 Time Synchronization (CP56Time2a)

Conclusion

The ASDU is the beating heart of IEC 60870-5-104 — a compact yet powerful data unit that standardizes how measurements, commands, and events are exchanged in modern SCADA systems.
By understanding each field — from Type ID and COT to IOA and timestamp — engineers can confidently interpret traffic, diagnose communication issues, and ensure reliable automation.

Whether you’re building, maintaining, or securing a control network, mastering the ASDU structure is the first step toward mastering IEC 104 communication itself.

Author: Zakaria El Intissar

I'm an automation and industrial computing engineer with 12 years of experience in power system automation, SCADA communication protocols, and electrical protection. I build tools and write guides for Modbus, DNP3, IEC 101/104, and IEC 103 on ScadaProtocols.com to help engineers decode, analyze, and troubleshoot real industrial communication systems.

Leave a Reply

Your email address will not be published. Required fields are marked *