IEC 60870-5-104 Type IDs Explained: Complete Reference Guide

By | April 14, 2026

Every ASDU (Application Service Data Unit) in IEC 60870-5-104 contains a Type ID — a single byte that defines what kind of data the message carries. It tells the receiving station whether the message contains a single-point indication, a measured value, a command, a counter, or a system message.

The Type ID is the first byte of every ASDU. If you misidentify it, you misinterpret the entire message.

IEC 104 shares the same Type IDs as IEC 60870-5-101 (defined in IEC 60870-5-101:2003, Section 7.2.1). This guide covers every Type ID used in IEC 104 — organized by category, with the ASDU name, numeric code, data format, and practical use case for each one.

1. How Type IDs Work

The Type ID is the first field in the ASDU header:

FieldSizeDescription
Type ID1 byteIdentifies the ASDU type (1–127)
Variable Structure Qualifier1 byteNumber of information objects + SQ bit
Cause of Transmission1 or 2 bytesWhy this ASDU was sent
Common Address of ASDU1 or 2 bytesStation address
Information Object(s)VariableThe actual data

The Type ID determines:

  • What kind of data the ASDU carries (single-point, double-point, measured value, command)
  • What information elements are inside each information object (value, quality, timestamp)
  • What direction the message travels (monitor = outstation → master, control = master → outstation)

2. Type ID Naming Convention

Every Type ID has a symbolic name following the pattern:

X_YY_ZZ_1
PartMeaningValues
XDirectionM = Monitor (outstation → master), C = Control (master → outstation), P = Parameter, F = File
YYData typeSP = Single-Point, DP = Double-Point, ST = Step Position, BO = Bitstring, ME = Measured, IT = Integrated Totals, EP = Event Protection, SC = Single Command, DC = Double Command, SE = Set-point, IC = Interrogation, CI = Counter Interrogation, CS = Clock Sync
ZZQualifierNA = No time tag, TA = Time tag (3 bytes, CP24Time2a), TB = Time tag CP56Time2a, NC = Short float, ND = Normalized without quality
1Always 1Indicates companion standard 101/104

Example: M_ME_TF_1 = Monitor direction, Measured value, short floating point with Time tag CP56Time2a.

3. Process Information in Monitor Direction (Type 1–40)

These ASDUs carry data from the outstation (RTU/IED) to the controlling station (SCADA master).

Single-Point and Double-Point Information

Type IDNameDescriptionTime Tag
1M_SP_NA_1Single-point informationNone
2M_SP_TA_1Single-point informationCP24Time2a (3 bytes)
3M_DP_NA_1Double-point informationNone
4M_DP_TA_1Double-point informationCP24Time2a
30M_SP_TB_1Single-point informationCP56Time2a (7 bytes)
31M_DP_TB_1Double-point informationCP56Time2a

Single-point = ON/OFF (1 bit). Used for: circuit breaker status, alarm state, digital input.

Double-point = four states: OFF (01), ON (10), Indeterminate (00), Indeterminate (11). Used for: circuit breaker position where intermediate and faulty states must be detected.

Step Position Information

Type IDNameDescriptionTime Tag
5M_ST_NA_1Step position informationNone
6M_ST_TA_1Step position informationCP24Time2a
32M_ST_TB_1Step position informationCP56Time2a

Used for: transformer tap changer position (-64 to +63).

Bitstring of 32 Bits

Type IDNameDescriptionTime Tag
7M_BO_NA_1Bitstring of 32 bitsNone
8M_BO_TA_1Bitstring of 32 bitsCP24Time2a
33M_BO_TB_1Bitstring of 32 bitsCP56Time2a

Used for: packed status bits, generic binary data where no other type applies.

Measured Values — Normalized

Type IDNameDescriptionTime Tag
9M_ME_NA_1Measured value, normalizedNone
10M_ME_TA_1Measured value, normalizedCP24Time2a
21M_ME_ND_1Measured value, normalized without qualityNone
34M_ME_TD_1Measured value, normalizedCP56Time2a

Normalized values are 16-bit signed integers representing a fraction of a full-scale range (-1.0 to +1.0, encoded as -32768 to +32767). Used for: percentage values, positions.

Measured Values — Scaled

Type IDNameDescriptionTime Tag
11M_ME_NB_1Measured value, scaledNone
12M_ME_TB_1Measured value, scaledCP24Time2a
35M_ME_TE_1Measured value, scaledCP56Time2a

Scaled values are 16-bit signed integers with a scaling factor defined by the project. Used for: temperature, pressure, level — when integer representation is sufficient.

Measured Values — Short Floating Point

Type IDNameDescriptionTime Tag
13M_ME_NC_1Measured value, short floating pointNone
14M_ME_TC_1Measured value, short floating pointCP24Time2a
36M_ME_TF_1Measured value, short floating pointCP56Time2a

IEEE 754 single-precision float (4 bytes). Used for: voltage, current, power, frequency, energy — the most common measured value type in modern IEC 104 systems.

Integrated Totals (Counters)

Type IDNameDescriptionTime Tag
15M_IT_NA_1Integrated totalsNone
16M_IT_TA_1Integrated totalsCP24Time2a
37M_IT_TB_1Integrated totalsCP56Time2a

Used for: energy counters (kWh, kVarh), pulse counters.

Protection Equipment Events

Type IDNameDescriptionTime Tag
17M_EP_TA_1Event of protection equipmentCP24Time2a
18M_EP_TB_1Packed start events of protection equipmentCP24Time2a
19M_EP_TC_1Packed output circuit info of protection equipmentCP24Time2a
38M_EP_TD_1Event of protection equipmentCP56Time2a
39M_EP_TE_1Packed start events of protection equipmentCP56Time2a
40M_EP_TF_1Packed output circuit info of protection equipmentCP56Time2a

Used for: protection relay trip events, fault start detection, output circuit status.

Other Monitor Types

Type IDNameDescription
20M_PS_NA_1Packed single-point information with status change detection

4. Process Information in Control Direction (Type 45–69)

These ASDUs carry commands from the controlling station (SCADA master) to the outstation (RTU/IED).

Commands Without Time Tag

Type IDNameDescription
45C_SC_NA_1Single command (ON/OFF)
46C_DC_NA_1Double command (ON/OFF with intermediate states)
47C_RC_NA_1Regulating step command (HIGHER/LOWER)
48C_SE_NA_1Set-point command, normalized value
49C_SE_NB_1Set-point command, scaled value
50C_SE_NC_1Set-point command, short floating point
51C_BO_NA_1Bitstring of 32 bits command

Commands With CP56Time2a Time Tag

Type IDNameDescription
58C_SC_TA_1Single command with time tag
59C_DC_TA_1Double command with time tag
60C_RC_TA_1Regulating step command with time tag
61C_SE_TA_1Set-point command, normalized with time tag
62C_SE_TB_1Set-point command, scaled with time tag
63C_SE_TC_1Set-point command, short float with time tag
64C_BO_TA_1Bitstring of 32 bits command with time tag

Practical Use

  • C_SC_NA_1 (45) — the most common command. Opens/closes a circuit breaker, starts/stops a pump.
  • C_DC_NA_1 (46) — used when the target device uses double-point representation (breakers, disconnectors).
  • C_RC_NA_1 (47) — raises/lowers a transformer tap changer one step.
  • C_SE_NC_1 (50) — sends a floating-point set-point (e.g., voltage set-point to an AVR).

5. System Information in Monitor Direction (Type 70)

Type IDNameDescription
70M_EI_NA_1End of initialization

Sent by the outstation after it completes startup. The SCADA master uses this as a trigger to perform a general interrogation.

6. System Information in Control Direction (Type 100–107)

Type IDNameDescription
100C_IC_NA_1Interrogation command (general interrogation or group)
101C_CI_NA_1Counter interrogation command
102C_RD_NA_1Read command (read a single information object)
103C_CS_NA_1Clock synchronization command
104C_TS_NA_1Test command
105C_RP_NA_1Reset process command
106C_CD_NA_1Delay acquisition command
107C_TS_TA_1Test command with CP56Time2a

Practical Use

  • C_IC_NA_1 (100) — General Interrogation (GI). The master sends this after startup or reconnection. The outstation responds with all current data.
  • C_CI_NA_1 (101) — Counter Interrogation. Requests current counter values.
  • C_CS_NA_1 (103) — Clock Synchronization. Aligns the outstation’s clock with the master. Often replaced by NTP/PTP in modern systems.

7. Parameter in Control Direction (Type 110–113)

Type IDNameDescription
110P_ME_NA_1Parameter of measured values, normalized
111P_ME_NB_1Parameter of measured values, scaled
112P_ME_NC_1Parameter of measured values, short floating point
113P_AC_NA_1Parameter activation

Used for: sending deadband and threshold settings to outstations. Less common in modern systems — most parameters are configured via engineering tools.

8. File Transfer (Type 120–127)

Type IDNameDescription
120F_FR_NA_1File ready
121F_SR_NA_1Section ready
122F_SC_NA_1Call directory, select file, call file, call section
123F_LS_NA_1Last section, last segment
124F_AF_NA_1ACK file, ACK section
125F_SG_NA_1Segment
126F_DR_TA_1Directory

Used for: retrieving disturbance records, fault logs, and event files from protection relays and RTUs.

9. The 10 Most Used Type IDs in IEC 104

In a typical power system SCADA installation, these 10 Type IDs account for over 95% of all traffic:

RankType IDNameUse
136M_ME_TF_1Measured values with timestamp (voltage, current, power)
230M_SP_TB_1Single-point indications with timestamp (breaker status, alarms)
331M_DP_TB_1Double-point indications with timestamp (breaker position)
4100C_IC_NA_1General Interrogation
513M_ME_NC_1Measured values without timestamp (cyclic polling)
61M_SP_NA_1Single-point indications without timestamp (background scan)
745C_SC_NA_1Single command (open/close breaker)
837M_IT_TB_1Counter values with timestamp (energy metering)
9103C_CS_NA_1Clock synchronization
1070M_EI_NA_1End of initialization

10. Type IDs with CP56Time2a Timestamps

In IEC 104, the CP56Time2a variant is strongly preferred over CP24Time2a for event reporting. CP56Time2a provides millisecond resolution with full date information (7 bytes).

Without TimestampWith CP24Time2aWith CP56Time2aData Type
1 (M_SP_NA_1)2 (M_SP_TA_1)30 (M_SP_TB_1)Single-point
3 (M_DP_NA_1)4 (M_DP_TA_1)31 (M_DP_TB_1)Double-point
5 (M_ST_NA_1)6 (M_ST_TA_1)32 (M_ST_TB_1)Step position
7 (M_BO_NA_1)8 (M_BO_TA_1)33 (M_BO_TB_1)Bitstring
9 (M_ME_NA_1)10 (M_ME_TA_1)34 (M_ME_TD_1)Measured, normalized
11 (M_ME_NB_1)12 (M_ME_TB_1)35 (M_ME_TE_1)Measured, scaled
13 (M_ME_NC_1)14 (M_ME_TC_1)36 (M_ME_TF_1)Measured, short float
15 (M_IT_NA_1)16 (M_IT_TA_1)37 (M_IT_TB_1)Integrated totals

💡 Best practice: Use CP56Time2a types (30–40) for spontaneous event reporting. Use types without timestamp (1, 3, 9, 11, 13) for cyclic/background scan and general interrogation responses.

11. Quality Descriptors in Monitored Type IDs

Most monitored Type IDs include a quality descriptor byte. The quality bits are:

BitNameMeaning
0OVOverflow — measured value exceeded range
4BLBlocked — value is frozen/blocked by local operation
5SBSubstituted — value has been replaced by an operator or system
6NTNot Topical — value is not current (e.g., communication lost)
7IVInvalid — value is not valid

If bit 7 (IV) = 1, the value should not be trusted. SCADA systems typically show these points with a “bad quality” indicator.

Type 21 (M_ME_ND_1) is the exception — it has no quality descriptor. It is used for fast cyclic transmission where quality is assumed to be good.

12. Cause of Transmission and Type ID Relationships

The Cause of Transmission (COT) in the ASDU header tells the receiving station why the message was sent. Different Type IDs use different COT values:

COT ValueNameTypical Type IDs
1Periodic/cyclic9, 11, 13 (measured values without timestamp)
2Background scan1, 3, 9, 11, 13 (all without timestamp)
3Spontaneous30, 31, 36 (events with CP56Time2a)
5Requested (by GI)1, 3, 9, 11, 13, 30, 31, 36 (GI response)
6Activation45, 46, 100 (commands, GI)
7Activation confirmation45, 46, 100 (confirmation of command)
10Activation termination45, 46, 100 (command execution complete)
20Interrogated by station1, 3, 9, 11, 13 (GI group response)
37Interrogated by group 1Group-specific interrogation response
44Unknown Type IDASDU rejected by receiving station
45Unknown COTASDU rejected — unknown cause
46Unknown Common AddressASDU rejected — wrong station address
47Unknown IOAASDU rejected — unknown information object address

13. Quick Lookup Table: All Type IDs

Monitor Direction (Outstation → Master)

IDNameDescription
1M_SP_NA_1Single-point information
2M_SP_TA_1Single-point with time tag CP24
3M_DP_NA_1Double-point information
4M_DP_TA_1Double-point with time tag CP24
5M_ST_NA_1Step position information
6M_ST_TA_1Step position with time tag CP24
7M_BO_NA_1Bitstring of 32 bits
8M_BO_TA_1Bitstring with time tag CP24
9M_ME_NA_1Measured value, normalized
10M_ME_TA_1Measured normalized with time tag CP24
11M_ME_NB_1Measured value, scaled
12M_ME_TB_1Measured scaled with time tag CP24
13M_ME_NC_1Measured value, short float
14M_ME_TC_1Measured short float with time tag CP24
15M_IT_NA_1Integrated totals
16M_IT_TA_1Integrated totals with time tag CP24
17M_EP_TA_1Protection equipment event with time tag CP24
18M_EP_TB_1Packed protection start events with time tag CP24
19M_EP_TC_1Packed protection output circuit with time tag CP24
20M_PS_NA_1Packed single-point with status change detection
21M_ME_ND_1Measured normalized without quality
30M_SP_TB_1Single-point with time tag CP56
31M_DP_TB_1Double-point with time tag CP56
32M_ST_TB_1Step position with time tag CP56
33M_BO_TB_1Bitstring with time tag CP56
34M_ME_TD_1Measured normalized with time tag CP56
35M_ME_TE_1Measured scaled with time tag CP56
36M_ME_TF_1Measured short float with time tag CP56
37M_IT_TB_1Integrated totals with time tag CP56
38M_EP_TD_1Protection equipment event with time tag CP56
39M_EP_TE_1Packed protection start events with time tag CP56
40M_EP_TF_1Packed protection output circuit with time tag CP56

Control Direction (Master → Outstation)

IDNameDescription
45C_SC_NA_1Single command
46C_DC_NA_1Double command
47C_RC_NA_1Regulating step command
48C_SE_NA_1Set-point, normalized
49C_SE_NB_1Set-point, scaled
50C_SE_NC_1Set-point, short float
51C_BO_NA_1Bitstring of 32 bits command
58C_SC_TA_1Single command with time tag CP56
59C_DC_TA_1Double command with time tag CP56
60C_RC_TA_1Regulating step command with time tag CP56
61C_SE_TA_1Set-point normalized with time tag CP56
62C_SE_TB_1Set-point scaled with time tag CP56
63C_SE_TC_1Set-point short float with time tag CP56
64C_BO_TA_1Bitstring command with time tag CP56

System Information

IDNameDescription
70M_EI_NA_1End of initialization
100C_IC_NA_1Interrogation command
101C_CI_NA_1Counter interrogation command
102C_RD_NA_1Read command
103C_CS_NA_1Clock synchronization command
104C_TS_NA_1Test command
105C_RP_NA_1Reset process command
106C_CD_NA_1Delay acquisition command
107C_TS_TA_1Test command with time tag CP56

Parameter

IDNameDescription
110P_ME_NA_1Parameter, normalized
111P_ME_NB_1Parameter, scaled
112P_ME_NC_1Parameter, short float
113P_AC_NA_1Parameter activation

File Transfer

IDNameDescription
120F_FR_NA_1File ready
121F_SR_NA_1Section ready
122F_SC_NA_1Call directory / select file
123F_LS_NA_1Last section, last segment
124F_AF_NA_1ACK file, ACK section
125F_SG_NA_1Segment
126F_DR_TA_1Directory

Summary

The Type ID is the first byte of every IEC 104 ASDU. It defines what kind of data the message carries and how to decode the rest of the frame.

The key things to remember:

  • Types 1–40 = monitor direction (outstation → master). Types 30–40 use CP56Time2a timestamps.
  • Types 45–64 = control direction (master → outstation). Types 58–64 use CP56Time2a timestamps.
  • Type 100 (C_IC_NA_1) = General Interrogation — the most important system command.
  • Type 36 (M_ME_TF_1) = the most common measured value type in modern IEC 104 systems.
  • Type 30 (M_SP_TB_1) and 31 (M_DP_TB_1) = the most common status indications with timestamps.
  • Always check the quality descriptor — bit 7 (IV = Invalid) means the value should not be trusted.
  • Use CP56Time2a types (30–40) for spontaneous events. Use types without timestamp for GI responses.

💡 Tip: Use the free IEC 104 Frame Decoder Tool to decode any IEC 104 frame byte by byte — including Type ID, Cause of Transmission, IOA, and data values.

For ASDU structure details, see: IEC 60870-5-104 ASDU Structure

For Wireshark analysis, see: Wireshark IEC 60870-5-104 Decoding Guide

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/103/104, and IEC 61850 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 *