Notes on the documentation

This description is only intended for the use of trained specialists in control and automation engineering who are familiar with the applicable national standards.
It is essential that the following notes and explanations are followed when installing and commissioning these components.

The responsible staff must ensure that the application or use of the products described satisfy all the requirements for safety, including all the relevant laws, regulations, guidelines and standards.

Disclaimer

The documentation has been prepared with care. The products described are, however, constantly under development.
For that reason the documentation is not in every case checked for consistency with performance data, standards or other characteristics.
In the event that it contains technical or editorial errors, we retain the right to make alterations at any time and without warning.
No claims for the modification of products that have already been supplied may be made on the basis of the data, diagrams and descriptions in this documentation.

Trademarks

Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE® and XFC® are registered trademarks of and licensed by Beckhoff Automation GmbH.
Other designations used in this publication may be trademarks whose use by third parties for their own purposes could violate the rights of the owners.

Patent Pending

The TwinCAT Technology is covered, including but not limited to the following patent applications and patents:
EP0851348, US6167425 with corresponding applications or registrations in various other countries.

Copyright

© Beckhoff Automation GmbH & Co. KG, Germany.
The reproduction, distribution and utilization of this document as well as the communication of its contents to others without express authorization are prohibited.
Offenders will be held liable for the payment of damages. All rights reserved in the event of the grant of a patent, utility model or design.


Overview

The library TcIEC870_5_104.Lib implements an interface. Via this interface single ASDUs ( service data unitof the application layer) can be sent and received. This interface is placed inside the protocol structure above the transport layer (4) and implements already the APCI functions (protocol control information of the application layer, see lower table ). Application functions like for example the general request and count request are not implemented in the interface, but the user can implement them by himself.

'Low level' interface: IEC 60870-5-104 Transport Interface

This interface starts lower down on the protocol stack and enables the sending and/or receipt of individual frames (ASDUs).

Pro: Very flexible; all properties in the ASDU frame can be changed (e.g. an own time stamp, Select/Execute or a special command execution etc.); high performance can be achieved because only the necessary services are implemented; high performance if there are many data points;

Contra: Larger amount of programming work; all services, such as general query, counter query, time synchronisation, command execution, spontaneous data transmission etc. must be implemented by the PLC programmer himself (programmed out); the PLC programmer must be familiar with the protocol standard.

This interface is recommended if you:

  • are familiar with the protocol standard;
  • are implementing a protocol converter application;
  • are implementing virtually all available standard functions in the application;
  • are using special functions, such as the relaying of the time stamp from a Modbus device or the gaining of control over the command execution;
  • require functions that are not supported according to the compatibility list;
  • have many data points (>1000) and need high performance;

Protocol structure of endsystem:

Selection of application functions from IEC 60870-5-5 to IEC 60870-5-101 | Initialisation | Application process
Selection of ASDU (service data unit of application layer) from IEC 60870-5-101 and IEC 60870-5-104 |  | Application layer (7)
TwinCAT PLC Library: IEC 60870-5-104 (low level) Transport Interface
APCI (Protocol control information of the application layer) Transport Interface (user to TCP interface)
Selection of TCP/IP protocol collection (RFC 2200) |  | Transport layer (4)
 |  | Relaying layer (3)
 |  | Connection layer (2)
 |  | Physical layer (1)

Remark: The layers 5 and 6 are not used.


Introduction

Simple projects with complete sources can be found under: Transport-Interface Examples.

A PLC application which should communicate with a control station or substation via the transport interface needs the following resources:

  • Instance of communication function block: FB_IEC870_5_104TProtocol;
  • Instance of function block to create a TCP/IP connection: FB_ServerClientConnection or FB_ClientServerConnection;
  • Instance of TX/RX data buffer: ST_IEC870_5_101TBuffer;
  • Instance of function block to manipulate the TX/RX data buffer: FB_IEC870_5_101TBufferCtrl;

........


Introduction: Overview

Tutorial: IEC 60870-5-104 Transport Interface

Introduction (tutorial)

This introduction explains how to implement and configure an IEC60870-5-104 control station or substation within the TwinCAT PLC.

Further topics under construction...


Introduction: Glossary

Tutorial: IEC 60870-5-104 Transport Interface

Glossary

Term | Description
substation, slave, server, controlled station | Synonyms for a subordinate station (which is monitored)
central station, master, client, controlling station | Synonyms for a higher-level station (control station, monitors others stations)
control direction | Data transfer direction from the central station to the substation
monitoring direction | Data transfer direction from the substation to the central station
application objects | IEC information objects in the TwinCAT PLC application (single points, double points, measured values, short floating point values etc.)
APDU | Application protocol data unit
APCI | Application protocol control information
ASDU | Application service data unit
IOA, information object address | Address of the single point, double point, measured value, short floating point value etc.


Introduction: Troubleshooting and debugging

Tutorial: IEC 60870-5-104 Transport Interface

Troubleshooting and debugging

Debugging messages written to the application log facilitate troubleshooting of the system. If the "Low level" interface is used then three stages of debugging messages can be activated in an PLC application:

  1. Debugging messages that are logged when the TCP/IP connection is established or released (TcSocketHelper.Lib messages). These messages can be activated via the nMode parameter when the F_CreateServerHnd() function (controlled station) or FB_ClientServerConnection() function block (controlling station) is called;
  2. Hexadecimal output of the ASDUs (without link layer control header). 32 ASDU data bytes per row are output as hexadecimal numbers. Bigger frames are split into multiple lines. These messages can be activated via the ST_IEC870_5_101TBuffer member variable: eDbg;
  3. Hexadecimal output of the APDUs (TCP/IP frames). 32 APDU data bytes per row are output as hexadecimal numbers. Bigger frames are split into multiple lines. These messages can be activated via the FB_IEC870_5_104TProtocol input variable: bOutDbg;

In order to view the activated debug messages start the TwinCAT System Manager and activate log view. A debug output is shown below. The three different message types are identified with the respective numbers.

Further diagnostic tools:

  • TwinCAT ADS monitor;
  • Network monitor;
  • Wireshark;
  • Ethereal;
  • Diverse protocoll test suite products;


Telegram structure

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

IEC 60870-5-104 telegram structure

APCI = Application Protocol Control Information

ASDU = Application Service Data Unit

APDU = Application Protocol Data Unit

Telegram format with variable length

This frame type is used to transmit user data between controlling and controlled station

byte\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |  |
0 | Start byte (0x68) |  |  |  |  |  |  |  | APCI | APDU
1 | Length of the APDU (max. 253)
2 | Control field 1
3 | Control field 2
4 | Control field 3
5 | Control field 4
6 | Type identification |  |  |  |  |  |  |  | ASDU
7 | SQ | Number of objects
8 | T | P/N | Cause of transmission (COT)
9 | Originator address (ORG)
10 | ASDU address fields
11 | (2 octets)
12 | Information object address fields (IOA)
13 | (3 octets)
14 |
15 | Object information
... |
... |
... |
n-1 |
n |

Telegram format with fixed length

byte\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | Start byte (0x68) |  |  |  |  |  |  |  | APCI
1 | 4 (Length of the APDU)
2 | Control field 1
3 | Control field 2
4 | Control field 3
5 | Control field 4

Control field formats

Two types of control field formats: I-Format, S-Format are used to perform numbered information transfer.

The third: U-Format control field is used to perform unnumbered link layer control functions.

I-Format

byte\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0 | Send sequence number N(S) LSB |  |  |  |  |  |  | 0
1 | Send sequence number N(S) MSB
2 | Receive sequence number N(R) LSB |  |  |  |  |  |  | 0
3 | Receive sequence number N(R) MSB

S-Format

byte\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0 | 0 |  |  |  |  |  | 0 | 1
1 | 0
2 | Receive sequence number N(R) LSB |  |  |  |  |  |  | 0
3 | Receive sequence number N(R) MSB

U-Format

byte\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
0 | TESTFR |  | STOPDT |  | STARTDT |  | 1 | 1
1 | 0
2 | 0
3 | 0

Simple samples and explanations

104 substation configuration: COT = 2 octets (includes originator address), ASDU address = 2 octets, IOA address = 3 octets

Sample 1

68 0E 4E 14 7C 00 65 01 0A 00 0C 00 00 00 00 05

LPDU bytes | Explanation
68 | Start byte
0E | Length of the APDU = 14
4E | Send sequence number N(S) LSB, bit 0 = 0 => I-Format
14 | Send sequence number N(S) MSB
7C | Receive sequence number N(R) LSB
00 | Receive sequence number N(R) MSB
65 | Type identification: C_CI_NA_1 (counter interrogation command)
01 | Number of objects = 1
0A | Cause of transmission = 10 (activation termination)
00 | Originator address = 0
0C 00 | Common ASDU address (2 octets) = 12 dec.
00 00 00 | Object address (3 octets)
05 | Counter interrogation request qualifier = 5 (general counter interrogation)

Sample 2

68 34 5A 14 7C 00 0B 07 03 00 0C 00 10 30 00 BE 09 00 11 30 00 90 09 00 0E 30 00 75 00 00 28 30 00 25 09 00 29 30 00 75 00 00 0F 30 00 0F 0A 00 2E 30 00 AE 05 00

LPDU bytes | Explanation
68 | Start byte
34 | Length of the APDU = 52
5A | Send sequence number N(S) LSB, bit 0 = 0 => I-Format
14 | Send sequence number N(S) MSB
7C | Receive sequence number N(R) LSB
00 | Receive sequence number N(R) MSB
0B | Type identification: M_ME_NB_1(measured value, scaled value)
07 | Number of objects = 7
03 | Cause of transmission = 3 (spontanous)
00 | Originator address = 0
0C 00 | Common ASDU address (2 octets) = 12 dec.
10 30 00 | Object address (3 octets) of first information object
BE 09 00 | Scaled value + QDS (quality descriptor) of first information object
11 30 00 | Object address (3 octets) of second information object
90 09 00 | Scaled value + QDS (quality descriptor) of second information object
0E 30 00 | Object address (3 octets) of third information object
75 00 00 | Scaled value + QDS (quality descriptor) of third information object
28 30 00 25 09 00 29 30 00 75 00 00 0F 30 00 0F 0A 00 2E 30 00 AE 05 00 | Object address + Scaled value + QDS (quality descriptor) of information object four to seven

Sample 3

68 04 01 00 7E 14

LPDU bytes | Explanation
68 | Start byte
04 | Length of the APDU = 4
01 | bits 2..7 reserved, bit 0 = 1 and bit 1 = 0 => S-Format
00 | reserved
7E | Receive sequence number N(R) LSB
14 | Receive sequence number N(R) MSB


ASDU Reference

IEC 60870-5-104 asdu object reference

Standard IEC 60870-5-104 data types

Type | Dec | Hex | Description
ASDU_TYPEUNDEF | 0 | 0x00 | Not used
M_SP_NA_1 | 1 | 0x01 | Single-point information
M_SP_TA_1 | 2 | 0x02 | Single-point information with time tag
M_DP_NA_1 | 3 | 0x03 | Double-point information
M_DP_TA_1 | 4 | 0x04 | Double-point information with time tag
M_ST_NA_1 | 5 | 0x05 | Step position information
M_ST_TA_1 | 6 | 0x06 | Step position information with time tag
M_BO_NA_1 | 7 | 0x07 | Bitstring of 32 bit
M_BO_TA_1 | 8 | 0x08 | Bitstring of 32 bit with time tag
M_ME_NA_1 | 9 | 0x09 | Measured value, normalised value
M_ME_TA_1 | 10 | 0x0A | Measured value, normalized value with time tag
M_ME_NB_1 | 11 | 0x0B | Measured value, scaled value
M_ME_TB_1 | 12 | 0x0C | Measured value, scaled value wit time tag
M_ME_NC_1 | 13 | 0x0D | Measured value, short floating point number
M_ME_TC_1 | 14 | 0x0E | Measured value, short floating point number with time tag
M_IT_NA_1 | 15 | 0x0F | Integrated totals
M_IT_TA_1 | 16 | 0x10 | Integrated totals with time tag
M_EP_TA_1 | 17 | 0x11 | Event of protection equipment with time tag
M_EP_TB_1 | 18 | 0x12 | Packed start events of protection equipment with time tag
M_EP_TC_1 | 19 | 0x13 | Packed output circuit information of protection equipment with time tag
M_PS_NA_1 | 20 | 0x14 | Packed single point information with status change detection
M_ME_ND_1 | 21 | 0x15 | Measured value, normalized value without quality descriptor
ASDU_TYPE_22..29 | 22..29 | 0x16..0x1D | Reserved (standard area)
M_SP_TB_1 | 30 | 0x1E | Single-point information with time tag CP56Time2a
M_DP_TB_1 | 31 | 0x1F | Double-point information with time tag CP56Time2a
M_ST_TB_1 | 32 | 0x20 | Step position information with time tag CP56Time2a
M_BO_TB_1 | 33 | 0x21 | Bitstring of 32 bit with time tag CP56Time2a
M_ME_TD_1 | 34 | 0x22 | Measured value, normalised value with time tag CP56Time2a
M_ME_TE_1 | 35 | 0x23 | Measured value, scaled value with time tag CP56Time2a
M_ME_TF_1 | 36 | 0x24 | Measured value, short floating point number with time tag CP56Time2a
M_IT_TB_1 | 37 | 0x25 | Integrated totals with time tag CP56Time2a
M_EP_TD_1 | 38 | 0x26 | Event of protection equipment with time tag CP56Time2a
M_EP_TE_1 | 39 | 0x27 | Packed start events of protection equipment with time tag CP56Time2a
M_EP_TF_1 | 40 | 0x28 | Packed output circuit information of protection equipment with time tag CP56Time2a
ASDU_TYPE_41..44 | 41..44 | 0x29..0x2C | Reserved (standard area)
C_SC_NA_1 | 45 | 0x2D | Single command
C_DC_NA_1 | 46 | 0x2E | Double command
C_RC_NA_1 | 47 | 0x2F | Regulating step command
C_SE_NA_1 | 48 | 0x30 | Set-point Command, normalised value
C_SE_NB_1 | 49 | 0x31 | Set-point Command, scaled value
C_SE_NC_1 | 50 | 0x32 | Set-point Command, short floating point number
C_BO_NA_1 | 51 | 0x33 | Bitstring 32 bit command
ASDU_TYPE_52..57 | 52..57 | 0x34..0x39 | Reserved (standard area)
C_SC_TA_1 | 58 | 0x3A | Single command with time tag CP56Time2a
C_DC_TA_1 | 59 | 0x3B | Double command with time tag CP56Time2a
C_RC_TA_1 | 60 | 0x3C | Regulating step command with time tag CP56Time2a
C_SE_TA_1 | 61 | 0x3D | Measured value, normalised value command with time tag CP56Time2a
C_SE_TB_1 | 62 | 0x3E | Measured value, scaled value command with time tag CP56Time2a
C_SE_TC_1 | 63 | 0x3F | Measured value, short floating point number command with time tag CP56Time2a
C_BO_TA_1 | 64 | 0x40 | Bitstring of 32 bit command with time tag CP56Time2a
ASDU_TYPE_65..69 | 65..69 | 0x41..0x45 | Reserved (standard area)
M_EI_NA_1 | 70 | 0x46 | End of Initialisation
ASDU_TYPE_71..99 | 71..99 | 0x47..0x63 | Reserved (standard area)
C_IC_NA_1 | 100 | 0x64 | Interrogation command
C_CI_NA_1 | 101 | 0x65 | Counter interrogation command
C_RD_NA_1 | 102 | 0x66 | Read command
C_CS_NA_1 | 103 | 0x67 | Clock synchronisation command
C_TS_NA_1 | 104 | 0x68 | Test command
C_RP_NA_1 | 105 | 0x69 | Reset process command
C_CD_NA_1 | 106 | 0x6A | Delay acquisition command
C_TS_TA_1 | 107 | 0x6B | Test command with time tag CP56Time2a
ASDU_TYPE_108..109 | 108..109 | 0x6C..0x6D | Reserved (standard area)
P_ME_NA_1 | 110 | 0x6E | Parameter of measured values, normalized value
P_ME_NB_1 | 111 | 0x6F | Parameter of measured values, scaled value
P_ME_NC_1 | 112 | 0x70 | Parameter of measured values, short floating point number
P_AC_NA_1 | 113 | 0x71 | Parameter activation
ASDU_TYPE_114..119 | 114..119 | 0x72..0x77 | Reserved (standard area)
F_FR_NA_1 | 120 | 0x78 | File ready
F_SR_NA_1 | 121 | 0x79 | Section ready
F_SC_NA_1 | 122 | 0x7A | Call directory, select file, call file, call section
F_LS_NA_1 | 123 | 0x7B | Last section, last segment
F_FA_NA_1 | 124 | 0x7C | ACK file, ACK section
F_SG_NA_1 | 125 | 0x7D | Segment
F_DR_TA_1 | 126 | 0x7E | Directory
ASDU_TYPE_127..255 | 127..255 | 0x7F..0xFF | Reserved (user area)


M_SP_NA_1

Single-point information without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x01 (1) | = M_SP_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IV | NT | SB | BL | 0 | 0 | 0 | SPI | SIQ = Single-point information with quality descriptor
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_SP_TB_1

Single-point information with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x1E (30) | = M_SP_TB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 8 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IV | NT | SB | BL | 0 | 0 | 0 | SPI | SIQ = Single-point information with quality descriptor
 |  |  | |--- | data[1..7] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[8..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_DP_NA_1

Double-point information without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x03 (3) | = M_DP_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IV | NT | SB | BL | 0 | 0 | DPI |  | DIQ = Double-point information with quality descriptor
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_DP_TB_1

Double-point information with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x1F (31) | = M_DP_TB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 8 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IV | NT | SB | BL | 0 | 0 | DPI |  | DIQ = Double-point information with quality descriptor
 |  |  | |--- | data[1..7] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[8..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ST_NA_1

Step position information without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x05 (5) | = M_ST_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 2 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | VTI |  |  |  |  |  |  |  | Value with transient state indication
 |  |  | |--- | data[1] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[2..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ST_TB_1

Step position information with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x20 (32) | = M_ST_TB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 9 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | VTI |  |  |  |  |  |  |  | Value with transient state indication
 |  |  | |--- | data[1] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[2..8] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[9..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_BO_NA_1

Bitstring of 32 bits without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x07 (7) | = M_BO_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | BSI |  |  |  |  |  |  |  | Binary state information
 |  |  | |--- | data[4] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[5..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_BO_TB_1

Bitstring of 32 bits with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x21 (33) | = M_BO_TB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | BSI |  |  |  |  |  |  |  | Binary state information
 |  |  | |--- | data[4] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[5..11] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ME_NA_1

Measured value, normalized value without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x09 (9) | = M_ME_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 3 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | NVA |  |  |  |  |  |  |  | Normalized value
 |  |  | |--- | data[2] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[3..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ME_TD_1

Measured value, normalized value with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x22 (34) | = M_ME_TD_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 10 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | NVA |  |  |  |  |  |  |  | Normalized value;
 |  |  | |--- | data[2] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[3..9] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[10..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ME_ND_1

Measured value, normalized value without quality descriptor.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x15 (21) | = M_ME_ND_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 2 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | NVA |  |  |  |  |  |  |  | Normalized value
 |  |  | |--- | data[2..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ME_NB_1

Measured value, scaled value without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x0B (11) | = M_ME_NB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 3 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | SVA |  |  |  |  |  |  |  | Scaled value
 |  |  | |--- | data[2] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[3..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ME_TE_1

Measured value, scaled value with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x23 (35) | = M_ME_TE_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 10 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | SVA |  |  |  |  |  |  |  | Scaled value
 |  |  | |--- | data[2] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[3..9] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[10..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ME_NC_1

Measured value, short floating point value without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x0D (13) | = M_ME_NC_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | R32 |  |  |  |  |  |  |  | Short floating point value
 |  |  | |--- | data[4] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[5..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_ME_TF_1

Measured value, short floating point value with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x24 (36) | = M_ME_TF_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | R32 |  |  |  |  |  |  |  | Short floating point value
 |  |  | |--- | data[4] = | IV | NT | SB | BL | 0 | 0 | 0 | OV | QDS = Quality descriptor
 |  |  | |--- | data[5..11] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_NA_1

Integrated total without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x0F (15) | = M_IT_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | BCR |  |  |  |  |  |  |  | Binary counter reading
 |  |  | |--- | data[4] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[5..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TB_1

Integrated total with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x25 (37) | = M_IT_TB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | BCR |  |  |  |  |  |  |  | Binary counter reading
 |  |  | |--- | data[4] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[5..11] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SC_NA_1

Single command without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x2D (45) | = C_SC_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | S/E | QU |  |  |  |  | 0 | SCS | SCO = Single command
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SC_TA_1

Single command with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x3A (58) | = C_SC_TA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 8 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | S/E | QU |  |  |  |  | 0 | SCS | SCO = Single command
 |  |  | |--- | data[1..7] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[8..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_DC_NA_1

Double command without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x2E (46) | = C_DC_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | S/E | QU |  |  |  |  | DCS |  | DCO = Double command
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_DC_TA_1

Double command with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x3B (59) | = C_DC_TA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 8 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | S/E | QU |  |  |  |  | DCS |  | DCO = Double command
 |  |  | |--- | data[1..7] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[8..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_RC_NA_1

Regulating step command without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x2F (47) | = C_RC_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | S/E | QU |  |  |  |  | RCS |  | RCO = Regulating step command
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_RC_TA_1

Regulating step command with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x3C (60) | = C_RC_TA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 8 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | S/E | QU |  |  |  |  | RCS |  | RCO = Regulating step command
 |  |  | |--- | data[1..7] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[8..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SE_NA_1

Set-point command, normalized value without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x30 (48) | = C_SE_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 3 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | NVA |  |  |  |  |  |  |  | Normalized value
 |  |  | |--- | data[2] = | S/E | QL |  |  |  |  |  |  | QOS = Qualifier of set-point command
 |  |  | |--- | data[3..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SE_TA_1

Set-point command, normalized value with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x3D (61) | = C_SE_TA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 10 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | NVA |  |  |  |  |  |  |  | Normalized value
 |  |  | |--- | data[2] = | S/E | QL |  |  |  |  |  |  | QOS = Qualifier of command
 |  |  | |--- | data[3..9] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[10..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SE_NB_1

Set-point command, scaled value without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x31 (49) | = C_SE_NB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 3 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | SVA |  |  |  |  |  |  |  | Scaled value
 |  |  | |--- | data[2] = | S/E | QL |  |  |  |  |  |  | QOS = Qualifier of set-point command
 |  |  | |--- | data[3..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SE_TB_1

Set-point command, scaled value with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x3E (62) | = C_SE_TB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 10 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | SVA |  |  |  |  |  |  |  | Scaled value
 |  |  | |--- | data[2] = | S/E | QL |  |  |  |  |  |  | QOS = Qualifier of command
 |  |  | |--- | data[3..9] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[10..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SE_NC_1

Set-point command, short floating point value without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x32 (50) | = C_SE_NC_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | R32 |  |  |  |  |  |  |  | Short floating point value
 |  |  | |--- | data[4] = | S/E | QL |  |  |  |  |  |  | QOS = Qualifier of set-point command
 |  |  | |--- | data[5..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_SE_TC_1

Set-point command, short floating point value with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x3F (63) | = C_SE_TC_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | R32 |  |  |  |  |  |  |  | Short floating point value
 |  |  | |--- | data[4] = | S/E | QL |  |  |  |  |  |  | QOS = Qualifier of command
 |  |  | |--- | data[5..11] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_BO_NA_1

Bitstring of 32 bits without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x33 (51) | = C_BO_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 4 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | BSI |  |  |  |  |  |  |  | Binary state information
 |  |  | |--- | data[4..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_BO_TA_1

Bitstring of 32 bits with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x40 (64) | = C_BO_TA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 11 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | BSI |  |  |  |  |  |  |  | Binary state information
 |  |  | |--- | data[4..10] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[11..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_TS_TA_1

Test command with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType |  | = C_TS_TA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 9 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | TSC |  |  |  |  |  |  |  | Test counter
 |  |  | |--- | data[2..8] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[9..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_EI_NA_1

End of initialization.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x46 (70) | = M_EI_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  | = 0 |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | LPC | COI |  |  |  |  |  |  | Cause of initialization
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CS_NA_1

Clock synchronisation command

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x67 (103) | = C_CS_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  | = 0 |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 7 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..6] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[7..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_IC_NA_1

Interrogation command.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x64 (100) | = C_IC_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  | = 0 |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | QOI |  |  |  |  |  |  |  | Qualifier of interrogation
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NA_1

Counter interrogation command.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x65 (101) | = C_CI_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  | = 0 |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | FRZ |  | RQT |  |  |  |  |  | QCC = Qualifier of counter interrogation
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_RP_NA_1

Reset process command.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x69 (105) | = C_RP_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  | = 0 |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | QRP |  |  |  |  |  |  |  | Qualifier of reset process
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_RD_NA_1

Read command.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x66 (102) | = C_RD_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 0 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_EP_TD_1

Event of protection equipment with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x26 (38) | = M_EP_TD_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 10 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IV | NT | SB | BL | EI | 0 | ES |  | SEP = Single event of protection equipment
 |  |  | |--- | data[1..2] = | CP16Time2a |  |  |  |  |  |  |  | Elapsed time, two octets binary time
 |  |  | |--- | data[3..9] = | CP56Time2a |  |  |  |  |  |  |  | Sevent octets binary time tag
 |  |  | |--- | data[10..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_EP_TE_1

Packed start events of protection equipment with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x27 (39) | = M_EP_TE_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 11 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | 0 | 0 | SRD | SIE | SL3 | SL2 | SL1 | GS | SEP = Start events of protection equipment
 |  |  | |--- | data[1] = | IV | NT | SB | BL | EI | 0 | 0 | 0 | QDP = Quality descriptor for events of protection equipment
 |  |  | |--- | data[2..3] = | CP16Time2a |  |  |  |  |  |  |  | Relay duration time, two octets binary time
 |  |  | |--- | data[4..10] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[11..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_EP_TF_1

Packed output circuit information of protection equipment with CP56Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x28 (40) | = M_EP_TF_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 11 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | 0 | 0 | 0 | 0 | CL3 | CL2 | CL1 | GC | OCI = Output cirquit information of protection equipment
 |  |  | |--- | data[1] = | IV | NT | SB | BL | EI | 0 | 0 | 0 | QDP = Quality descriptor for events of protection equipment
 |  |  | |--- | data[2..3] = | CP16Time2a |  |  |  |  |  |  |  | Relay operating time, two octets binary time
 |  |  | |--- | data[4..10] = | CP56Time2a |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[11..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_PS_NA_1

Packed single point information with status change detection.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x14 (20) | = M_PS_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | SCD |  |  |  |  |  |  |  | Status and status change detection (32 bit)
 |  |  | |--- | data[4] = | IV | NT | SB | BL |  |  |  | OV | QDS: Quality descriptor
 |  |  | |--- | data[5..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


P_ME_NA_1

Parameter of measured value, normalized value.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x6E (110) | = P_ME_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 3 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | NVA |  |  |  |  |  |  |  | Normalized value
 |  |  | |--- | data[2] = | LPC | POP | KPA |  |  |  |  |  | QPM: Qualifier of parameter of measured value
 |  |  | |--- | data[3..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


P_ME_NB_1

Parameter of measured value, scaled value.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x6F (111) | = P_ME_NB_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 3 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..1] = | SVA |  |  |  |  |  |  |  | Scaled value
 |  |  | |--- | data[2] = | LPC | POP | KPA |  |  |  |  |  | QPM: Qualifier of parameter of measured value
 |  |  | |--- | data[3..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


P_ME_NC_1

Parameter of measured value, short floating point value.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x70 (112) | = P_ME_NC_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  |  |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..3] = | R32 |  |  |  |  |  |  |  | Short floating point value
 |  |  | |--- | data[4] = | LPC | POP | KPA |  |  |  |  |  | QPM: Qualifier of parameter of measured value
 |  |  | |--- | data[5..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


P_AC_NA_1

Parameter activation.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x71 (113) | = P_AC_NA_1 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | nORG |  |  |  |  |  |  |  |  |  |  | Originator address
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | objAddr |  | = 0 |  |  |  |  |  |  |  |  | Information object address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 1 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | QPA |  |  |  |  |  |  |  | Qualifier of parameter activation
 |  |  | |--- | data[1..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


FB_IEC870_5_104TProtocol

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

FUNCTION_BLOCK FB_IEC870_5_104TProtocol

From product version TwinCAT PLC Library IEC870-5-104 Substation v2.0.6 and higher.

The FB_IEC870_5_104TProtocol communication block implements the ACPI functions of the IEC60870-5-104-standard (start/stop data transfer, test frames, send/receive frame counter etc.). In the event of a protocol error an associated error code is issued at the function block output and the data transfer is interrupted. The data exchange can be reactivated by calling the INIT task. The frame counters and the send and TX/RX data buffers are reset. The communication block expects a TX/RX data buffer variable. This variable must be transferred to the block via VAR_IN_OUT.

The function block features the following tasks:

  • INIT (initialises the function block);
  • STARTDT (sends a start data transfer frame to the communication partner);
  • STOPDT (sends a stop data transfer frame to the communication partner);

Establishing the connection

The TCP/IP connection has to be established and closed via a separate block, e.g. FB_ServerClientConnection. The PLC application can respond independently to possible protocol errors and close the connection or implement the process reset service, for example. At the output this block provides a connection handle, the connection status and information about errors that have occurred during establishment/closing of the connection.
The connection handle is required by the communication block.

Protocol configuration

The communication block has a structured protPara variable. Protocol parameters such as iK, iW, start/stop data transfer behaviour etc. can be configured via this variable.

VAR_IN_OUT

VAR_IN_OUT
    buffer 		: ST_IEC870_5_101TBuffer; (* TX/RX data buffer *)
END_VAR

buffer: TX/RX data buffer.

VAR_INPUT

VAR_INPUT
    sSrvNetID 	: T_AmsNetID; 	(* TwinCAT TCP/IP Connection Server netID *)
    hSocket 		: T_HSOCKET; 	(* TCP/IP socket connection handle *)
    protPara 	: ST_IEC870_5_104ProtocolParams; (* IEC60870-5-104 protocol parameters *)
    bOutDbg 		: BOOL; 		(* Enable/disable debug output *)
END_VAR

sSrvNetID: String containing the network address of the TwinCAT TCP/IP Connection Server. For the local computer (default) an empty string may be specified.

hSocket: TCP/IP connection handle of the communication partner for receiving or sending data.

protPara: IEC60870-5-104 protocol parameters

bOutDbg:: Activates/deactivates the debug output of the TCP/IP frames in the TwinCAT System Manager logger view.

VAR_OUTPUT

VAR_OUTPUT
    bError 		: BOOL;
    nErrID 		: UDINT;
    eDTState 	: E_IEC870_5_104DataTransferState := eIEC870_STOPDT; (* Data transfer state *)
ND_VAR

bError: This output is switched to TRUE if an error occurs during data transfer.

nErrID: Returns an error code if the bError output is set;

eDTState: status of the IEC60870-5-104 data exchange (STARTDT, STOPDT)

Example:

Sample projects: IEC60870-5-104 Transport Interface

Development environment | Target system type | PLC libraries to be linked
TwinCAT v2.10.0 Build >= 1301 | PC or CX (x86) CX (ARM) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib are included automatically )


F_iecApdu104ToAsduLen

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

FUNCTION F_iecApdu104ToAsduLen

From product version: TwinCAT PLC Library IEC60870-5-104 Substation v2.0.6 and higher.

The function calculates for the IEC 60870-5-104 protocol the maximum available ASDU byte length with the configurated APDU length. The maximum available ASDU length is for example required for the configuration of the ST_IEC870_5_101T buffer variable. This data structure (TX/RX data buffer) is used for the data exchange via the IEC60870-5-104 Transport Interface.

FUNCTION F_iecApdu104ToAsduLen: BYTE

VAR_INPUT
    APDULength : BYTE;
END_VAR

APDULength : Available APDU length (see compatibility list).

Development Environment | Target System Type | PLC Libraries to include
TwinCAT v2.9.0 Build >= 1030 | PC or CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Lib are included automatically )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


F_GetVersionTcIEC870_5_104

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

FUNCTION F_GetVersionTcIEC870_5_104

This function reads version information from the PLC library.

FUNCTION F_GetVersionTcIEC870_5_104: UINT

VAR_INPUT
    nVersionElement : INT;
END_VAR

nVersionElement : Version element, that is to be read. Possible parameters:

  • 1 : major number;
  • 2 : minor number;
  • 3 : revision number;
Development Environment | Target System | PLC libraries to include
TwinCAT v2.9.0 Build >= 1030 | PC or CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Libare included automatically )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


ST_IEC870_5_104ProtocolParams

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

TYPE ST_IEC870_5_104ProtocolParams

TYPE ST_IEC870_5_104ProtocolParams :
STRUCT
    t0 		: TIME := T#30s; (* MASTER only: Connection establishment *)
    t1 		: TIME := T#15s; (* Response Timeout (STARTDTAct, STOPDTAct, TESTFRAct only ) *)
    t2 		: TIME := T#10s; (* Send ACK in case of no data frames *)
    t3 		: TIME := T#20s; (* Time for sending test frames *)
    iK 		: INT := 12; (* Max. difference RSN to send ACK *)
    iW 		: INT := 8; (* Latest ACK after receiving I-frames *)

    bSFrameACK 	: BOOL := TRUE; (* Send S-Frame ACK *)
    bTESTFRAct 	: BOOL := TRUE; (* Send TESTFR *)
    bDTControlled 	: BOOL := TRUE; (* STARTDT, STOPDT controlled (wait for STARTDT, STOPDT) *)
    bControlDT 	: BOOL := FALSE; (* Send START, STOPDT frames *)

    bSTARTDTCon 	: BOOL := TRUE; (* Send STARTDT confirmations *)
    bSTOPDTCon 	: BOOL := TRUE; (* Send STOPDT confirmations *)
    bTESTFRCon 	: BOOL := TRUE; (* Send TESTFR confirmations *)

    eAcceptMode 	: E_SocketAcceptMode := eACCEPT_ALL; (* Connection accept flags *)
    sRemoteHost 	: STRING(15) := ''; (* Remote (server) address. String containing an (Ipv4) Internet Protocol dotted address. *)
    nRemotePort 	: UDINT := 0; (* Remote (server) Internet Protocol (IP) port. *)

    APDULength 	: BYTE(MIN_IEC870_5_104_APDULEN..MAX_IEC870_5_104_APDULEN) := MAX_IEC870_5_104_APDULEN;(* Defaults:
                  Max. length of APDU = 255 bytes - 1 start octet - 1 length octet = 253 octets,
                Max. length of ASDU = 253 - 4 control octets = 249 octets*)
    bThrottleMode 	: BOOL := FALSE; (* If set reduces the number of polling socket read requests *)
    bPackFrames 	: BOOL := FALSE; (* Binds more than one APDU frames to one big TCP/IP frame *)
    bRetainBuffer 	: BOOL := FALSE; (* TRUE => Don't reset the tx/rx buffer in offline mode, FALSE => reset tx/rx buffer in offline mode *)

    bCOTFilter 	: BOOL := TRUE; (* Only used if bRetainBuffer = TRUE. If TRUE = filter asdu by COT and session ID, FALSE = don't filter the asdu's *)
    cotFilter 	: T_IEC870_5_101COTBits := 2#10001111, 7(16#FF);(* COT (cause of transfer) filter, default: eIEC870_COT_CYCLIC or eIEC870_COT_BACKGROUND or eIEC870_COT_SPONTAN *)
END_STRUCT
END_TYPE

t0 : Not used, reserved.

t1 : Max. Timeout time for an answer to a STARTDTAct-, STOPDTAct- or TESTFRAct-Frame.

t2 : Latest time to send a S- Frame.

t3 : Latest time to send a Test- Frame.

iK : Latest after these sent APDU's in I-Format, without acknowledgement, the connection is to be closed.

iW : Latest acknowledgement after receiving of APDU's in I-Format.

bSFrameACK : Send S- Frame.

bTESTFRAct : Send Test-Frames.

bDTControlled : Wait for STARTDT-, STOPDT-Frame from master.

bControlDT : Not used, reserved.

bSTARTDTCon : Send STARTDT confirmation.

bSTOPDTCon : Send STOPDT confirmation.

bTESTFRCon : Send TESTFR confirmation.

eAcceptMode : Defines if connections to all Remote Clients, or only to clients with specified Host and Port address are allowed. Default: accept all arriving connections.

sRemoteHost : Host address of Remote-Client. If eAcceptMode = eACCEPT_ALL this parameter will be ignored.

nRemotePort : Port address of Remote-Client. If eAcceptMode = eACCEPT_ALL this parameter will be ignored.

APDULength : Max. length of APDU.

bThrottleMode: Implemented from IEC870-5-104 slave library v2.0.0 and higher. The TCP/IP sockets are polled by the PLC. This parameter reduces the number of polled read accesses and so the system load. This makes sense for infrequent data receiving ( e.g. General query or time synchronisation query).

  • FALSE: Each read accesss is followed by the next. Indenpendent from receiving new data (higher system load);
  • TRUE: After each read access without new data a delay is inserted. The following read access will be done delayed (smaller system load).
    After each read access with new data, the next read access will be done without delay.

bPackFrames: Implemented from IEC870-5-104 slave library v2.0.4 and higher. By default a TCP/IP send call only sends a single APDU. The send performance can be increased substantially (thereby reducing send buffer overflows) by setting this parameter to TRUE.

  • FALSE: For an APDU a TCP/IP send call is required. A maximum of 1 APDU can be sent about every 3 PLC cycles;
  • TRUE: Several APDUs are consolidated to form a larger TCP/IP block (no more than iK frames) and sent via a TCP/IP send call;

bRetainBuffer: Implemented from IEC870-5-104 slave library v3.0.14 and higher. In the standard setting (FALSE) the internal Tc/Rx buffers are deleted when the connection is severed. If this flag is set to TRUE, the ASDUs in the internal send buffer that have not yet been sent are not deleted. Hence, offline buffering of approx. 100-200 measured values (dependent on the ASDU size) in the RAM memory is possible. The station then always removes the ASDUs from the send buffer once their receipt has been confirmed. Please note that the ASDUs that have already been sent but not yet confirmed also remain in the buffer and are sent again the next time. The other station may then receive the values twice. You can configure this behaviour via two further parameters: bCOTFilter and cotFilter.

bCOTFilter: Implemented from IEC870-5-104 slave library v3.0.14 and higher. Activates/deactivates the filter mask with the causes of transfer. This parameter is only valid when the bRetainBuffer parameter is also set to TRUE. A SessionID is incremented internally with each establishment of a new connection. This SessionID is always attached to the received and sent ASDUs. Hence, the ASDUs that have not yet been sent and remain in the offline buffer are assigned to the old connection. These ASDUs can then be filtered and discarded with the aid of the COT mask (cotFilter) (COT = Cause Of Transfer). This is sometimes necessary if the other communication partner does not accept the repeated ASDUs.

cotFilter: Implemented from IEC870-5-104 slave library v3.0.14 and higher. Filter mask with causes of transfer (COT = Cause Of Transfer). This parameter is only valid when the bRetainBuffer and bCOTFilter parameters have also been set. The cause of transfer of the ASDUs to be sent is only checked if their SessionID does not correlate to the current SessionID (i.e. the ASDUs originating from the previous connection). Each bit corresponds to a cause of transfer. The cause of transfer is only checked if the appropriate bit has been set.

The causes of transfer are coded in the following way in the bits:

cotFilter[0].7 = eIEC870_COT_UNUSED
cotFilter[0].6 = eIEC870_COT_CYCLIC
cotFilter[0].5 = eIEC870_COT_BACKGROUND
cotFilter[0].4 = eIEC870_COT_SPONTAN
cotFilter[0].3 = eIEC870_COT_INIT
cotFilter[0].2 = eIEC870_COT_REQ
cotFilter[0].1 = eIEC870_COT_ACT
cotFilter[0].0 = eIEC870_COT_ACT_CON
cotFilter[1].7 = eIEC870_COT_DEACT
cotFilter[1].6 = eIEC870_COT_DEACT_CON
cotFilter[1].5 = eIEC870_COT_ACT_TERM

... and so on.

Development Environment | Target System | PLC libraries to include
TwinCAT v2.9.0 Build >= 1030 | PC or CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Lib are included automatically)
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


E_IEC870_5_104DataTransferState

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

TYPE E_IEC870_5_104DataTransferState

TYPE E_IEC870_5_104DataTransferState :
(
    eIEC870_STOPDT, (* data exchange deactivated *)
    eIEC870_STARTDT, (* data exchange activated *)
    eIEC870_STOPDT_PENDING, (* waiting for STOPDT confirmation (reserved)*)
    eIEC870_STARTDT_PENDING (* waiting for STARTDT confirmation (reserved)*)
);
END_TYPE
Development Environment | Target System | PLC libraries to include
TwinCAT v2.9.0 Build >= 1030 | PC or CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Lib are included automatically )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


Error codes overview

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

IEC 60870-5-104 Transport Interface error codes

Codes (hex) | Codes (dec) | Error source | Description
0x00000000-0x00007800 | 0-30720 | TwinCAT System error | TwinCAT System error (ADS- error code inclusive)
0x00008000-0x000080FF | 32768-33023 | Internal TwinCAT TCP/IP Connection Server error code | Internal error of TwinCAT TCP/IP Connection Server
0x00008100-0x000081FF | 33024-33279 | Internal IEC60870-5-10x error | Internal IEC60870-5-10x error
0x80070000-0x8007FFFF | 2147942400-2148007935 | Error source = Code - 0x80070000 = Win32 system error code | Win32 System error (Windows Sockets error codes inclusive)


Troubleshooting

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

Troubleshooting/diagnostics

1. Check the hardware and software requirements described in this documentation (TwinCAT version, CE image version etc.).

2. Check the software installation hints described in this documentation (e.g. installation of CAB files on CE plattform).

3. In the event of connection problems the PING command can be used to ascertain whether the external communication partner can be reached via the network connection. If this is not the case, check the network configuration and firewall settings.

4. Check the network address and port number parameter that are transferred to the function F_CreateServerHnd() or to the FB_ClientServerConnection()/FB_ServerClientConnection() function block for correctness.

5. Check whether the function block issues an error code. The documentation for the error codes can be found here: Overview of error codes.

6. Check the protocol parameters that are transferred to the function block (iK, iW, t0, t1, t2, t3, APDULength etc.). Compare them to the parameters set in the communication partner.

7. Check the configured address lengths (instance of ST_IEC870_5_101TBuffer, TX/RX data buffer): ASDU address octet size, information object address octet size, cause of transfer octet size, max ASDU size. Compare them to the parameters set in the communication partner.

8. Check the data point configuration (type, information object address etc.).

9. Check if the communication partner issues an error code.

10. Activate the debug output during connection establishment and/or of ASDU data. Open the TwinCAT System Manager and activate the LogView window. Analyze/check the debug output strings.

11. Check the usage of FB_SocketCloseAll() function block and the usage of the LISTEN_MODE_CLOSEALL parameter in your PLC application.
If your application is working with more than one TCP/IP connections (server/clients) than you have to use one instance of FB_SocketCloseAll() function block to close old/opened connections. Activate this function block instance only once at program start and don't use the LISTEN_MODE_CLOSEALL parameter.

12. Sniffer tools such as Wireshark enable logging of the entire network communication. The log can then be analysed by Beckhoff support staff.


Examples: Transport Interface

TwinCAT PLC Library: IEC 60870-5-104 Transport Interface

Examples

Used controlled or control station parameters:

  • Server host address: 127.0.0.1 (you have to adapt at least this parameter to your target system!!)
  • Server port addres: 2404
  • k: 12
  • w: 8
  • t0: 30s
  • t1: 15s
  • t2: 10s
  • t3: 20s
  • Cause of transfer size: 2 octets
  • Common ASDU address size: 2 octets
  • Information object address size: 3 octets
  • Originator address: 1
  • Common ASDU address: 7
  • Max. APDU length: 253
PLC project Documentation Description
LowLevelSlaveSample.pro Simple Slave-Application which uses the TwinCAT IEC60870-5-104 Transport Interface. MAIN implements the link connection/disconnection and simple TX/RX- data exchange:
  • Data points in monitoring direction: M_SP_NA_1(IOA:=100) and
            M_BO_TB_1(IOA:=400). Data points in control direction:
            C_SC_NA_1(IOA:=10);
  • Simple implementation of clock synchronisation command: C_CS_NA_1(IOA:=0);
  • Simple implementation of general interrogation command: C_IC_NA_1(IOA:=0);
  • Simple implementation of single command: C_SC_NA_1(IOA:=10);
  • Simple implementation of counter interrogation command: C_CI_NA_1(IOA:=0);
LowLevelMasterSample.pro Simple Master-Applikation which uses the TwinCAT IEC60870-5-104 Transport Interface. MAIN implements the link connection/disconnection and simple TX/RX- data exchange:
  • Simple general interrogation is send every 20 seconds: C_IC_NA_1(IOA:=0);
  • Rising edge at variable bSCmd starts simple single command execution: C_SC_NA_1(IOA:=10);
  • Rising edge at variable bClockSyn starts simple clock synchronisation command execution: C_CS_NA_1(IOA:=0);


Firewall settings

The TwinCAT PLC library IEC 60870-5-104 sub station (slave/server) uses the TCP/IP protocol for communication. It is therefore essential to make sure that the corresponding TCP port will be activated during the using of a firewall. The table below lists standard ports, that have to be considered by using a firewall.

D escription | Type | Protocol | Port
IEC 60870-5-104 telecontrol protocol | Protocol | TCP | 2404

The configuration of the Windows Firewall is done via the corresponding dialog in the control panel. For further information please see the Windows resp. Firewall documentation.

Important note:

Remember if you use a Embedded Controller without display and USB: Activate the port for Remote Display (Windows CE) or Remote Desktop (Windows XP / Windows Vista) in the firewall. Otherwise you have no way to manage the computer via the network.