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 TwinCAT PLC library TcIEC870_5_101Link.Lib implements the transmission preocedures for the transport of the ASDUs via the serial interfaces of the pc and the Beckhoff KL6xxx/EL6xxx bus terminals.

‘Low level’ interface: IEC 60870-5-101 Serial Link 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;

This interface is placed inside the protocol structure above the link layer (2) and implements necessary transport functions and frame formats. Application functions like for example the general interrogation, time synchronisation or counter interrogation are not implemented in the interface, but the user can implement them by himself.

Protocol structure of endsystem:

Selection of application functions from IEC 60870-5-5 | Application process
 | Application layer (7)
Selection of ASDU (service data unit of application layer) from IEC 60870-5-3, IEC 60870-5-4 and IEC 60870-5-101
TwinCAT PLC Library: IEC 60870-5-101 Serial Link (low level) Transport Interface
N/A | Presentation layer (6)
 | Session layer (5)
 | Transport layer (4)
 | Network layer (3)
unbalanced / balanced IEC 60870-5-2 IEC 60870-5-1 (FT 1.2) | Link layer (2)
EIA RS485, RS232 (V.24), Fibre Optics | Physical layer (1)

Remark: The layers 3..6 are not used.


Introduction

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

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

  • Instance of communication function block: FB_IEC870_5_101TProtocol;
  • 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-101 Serial Link Interface

Introduction (tutorial)

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

Further topics under construction...


Introduction: Glossary

Tutorial: IEC 60870-5-101 Serial Link 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.
primary station | Primary station sends commands/requests to the secondary station and controls the data transmission of the secondary station.
secondary station | Secondary station anwers to the requests of the primary station.
combined station | Combined stations are able to act as primary and secondary station (balanced mode).
balanced mode | In balanced mode both stations act as primary and secondary stations and are able to initialize the data transmission.
unbalanced mode | In unbalanced mode only the primary station is able to initialize the data transmissions. The central station acts as primary station and the substation acts as secondary station.


Introduction: Troubleshooting and debugging

Tutorial: IEC 60870-5-101 Serial Link Interface

Troubleshooting and debugging

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

  1. Hexadecimal output of the ASDUs (frames 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;
  2. Hexadecimal output of the APDUs (serial line 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_101TProtocol input variable: bOutDbg;

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

Further diagnostic tools:

  • Portmon for Windows (v3.02, Windows Sysinternals);
  • Diverse protocoll test suite products;


Introduction: Configuration of serial interface

Tutorial: IEC 60870-5-101 Serial Link Interface

Configuration of serial interface

  • Configuration of standard PC COMx port
  • Configuration of serial KL6xxx bus terminal
  • Configuration of serial EL6xxx bus terminal

1. Configuration of standard PC COMx port

The serial interface can only be added in PC/CX systems.

Right-click on "I/O devices". Select "Append Device". Select "Serial Interface" under "Miscellaneous". Then set the following settings.

1.1. Serial Port tab settings

Serial interface COM1

1.2. Communication Properties tab settings

Select the option KL6xxx1 Mode (Emulation) and set the communication parameter:

Baud rate, here 19200 Baud, 8 data bits, Parity = even, 1 stop bit

2. Configuration of serial KL6xxx bus terminal

The interface is configured within the TwinCAT PLC by the instance of the FB_IEC870_SerialLineCtrlfunction block. Communication parameters like baud rate, parity etc. have to be set via this function block.

3. Configuration of serial EL6xxx bus terminal

The settings for the serial interface can be found in the CoE Online tab (CoE=CanOpen over EtherCAT). The tab is only available for online access to the terminal, i.e. the settings cannot be modified if the System Manager is not linked to the hardware. The settings are stored in the terminal in a non-volatile manner, i.e. the settings are retained even if the voltage supply fails. These data do not have to be re-entered after a terminal scan. If the terminal is replaced, the data from the new terminal become active and have to be adjusted. To avoid this, the modified data can be entered in the Startup tab. During system startup, the data from the Startup tab are transferred to the terminal. Terminals can then be replaced without problem. After a terminal scan, the data have to be re-entered in the Startup tab.

3.1. CoE tab settings

(1) Baud rate, here 19200 Baud

(2) Date frame, 8E1 corresponds to 8 data bits, Parity = even, 1 stop bit

(3) Feature bits -> Enable RTS/CTS = FALSE for EL6001

Double-clicking on the corresponding row brings up a menu in which the settings can be modified.

3.1.1 RS485 operating mode

In the RS485 mode, the data is exchanged by means of half duplex transfer. The transmit and receive lines are connected to one another in RS485 operating mode. As a result, the terminal receives not only the data from other devices, but also its own transmitted data. The own data may disturb the communication. This can be suppressed with the option "Enable half duplex" in the "COM Settings" object (index 8000:06).

3.2. Startup tab settings

All non-standard settings should be entered in the Startup list. During system startup, the data from the Startup tab are transferred to the terminal. Terminals can then be replaced without problem. After a terminal scan, the data have to be re-entered in the Startup tab.

Baud rate, here 19200 Baud

Date frame, 8E1 corresponds to 8 data bits, Parity = even, 1 stop bit

Feature bits -> Enable RTS/CTS = FALSE for EL6001


Telegram structure

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

IEC 60870-5-101 telegram structure

  • FT 1.2 frame format is used;
  • Frames with fixed and variable block length and single control characters are used;
  • Hamming distance = 4;

Frame 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 1 (0x68) |  |  |  |  |  |  |  | Header | LPCI | LPDU
1 | Block length |  |  |  |  |  |  |  |
2 | Block length (copy) |  |  |  |  |  |  |  |
3 | Start byte 2 (0x68) |  |  |  |  |  |  |  |
4 | RES | PRM | FCB / ACD | FCV / DFC | Function code |  |  |  | Control field
5 | Link address fields |  |  |  |  |  |  |  |
 | (0, 1 or 2 octets) |  |  |  |  |  |  |  |
 | Type identification |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER | ASDU
 | SQ | Number of objects |  |  |  |  |  |  |
 | T | P/N | Cause of transmission (COT) |  |  |  |  |  |
 | Originator address (ORG, 0 or 1 octets) |  |  |  |  |  |  |  |
 | ASDU address fields |  |  |  |  |  |  |  |
 | (1 or 2 octets) |  |  |  |  |  |  |  |
 | Information object address fields (IOA) |  |  |  |  |  |  |  | Info-object
 | (1,2 or 3 octets) |  |  |  |  |  |  |  |
 | Object information |  |  |  |  |  |  |  |
n-1 | Checksum |  |  |  |  |  |  |  | Tail | LPCI
n | Stop byte (0x16) |  |  |  |  |  |  |  |

Frame with fixed length

This frame type is used for link layer services. Sometimes used as an confirmation.

byte\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |  |
0 | Start byte 1 (0x10) |  |  |  |  |  |  |  |  | LPCI
1 | RES | PRM | FCB / ACD | FCV / DFC | Function code |  |  |  | Control field
2 | Link address |  |  |  |  |  |  |  |
 | (0, 1 or 2 octets) |  |  |  |  |  |  |  |
n-1 | Checksum |  |  |  |  |  |  |  |
n | Stop byte (0x16) |  |  |  |  |  |  |  |

Single character data

Single characters are used to confirm link layer and user data transmissions.

  • 0xE5 (positive acknowledge);
  • 0xA2 (negative acknowledge);

Simple samples and explanations

101substation configuration: Link address = 2 octets, COT = 1 octet (ORG address not used), ASDU address = 2 octets, IOA address = 2 octets

Sample 1

10 49 0C 00 55 16

LPDU bytes | Explanation
10 | Start byte: frame with fixed length
49 | Control filed: PRM-bit set (frame from primary station), function code = 9 (link status)
0C 00 | Link address (2 octets) = 12 dec.
55 | Checksum
16 | Stop byte

Sample 2

10 0B 0C 00 17 16

LPDU bytes | Explanation
10 | Start byte: frame with fixed length
0B | Control field: PRM-bit not set (frame from secondary station), function code = 11 (status of link or access demand)
0C 00 | Link address (2 octets) = 12 dec.
17 | Checksum
16 | Stop byte

Sample 3

68 0B 0B 68 08 0C 00 65 01 0A 0C 00 00 00 05 95 16

LPDU bytes | Explanation
68 | Start byte 1: frame with variable length
0B 0B | Block length and block length copy
68 | Start byte 2
08 | Control field: PRM-bit not set (frame from secondary station), function code = 8 (user data)
0C 00 | Link address (2 octets) = 12 dec.
65 | Type identification: C_CI_NA_1 (counter interrogation)
01 | Number of objects = 1
0A | Cause of transmission = 10 (activation confirmation)
0C 00 | Common ASDU address (2 octets) = 12 dec.
00 00 | Object address (2 octets) = 0
05 | Counter interrogation request qualifier = 5 (general counter interrogation)
95 | Checksum
16 | Stop byte

Sample 4

68 0F 0F 68 08 0C 00 0F 01 03 0C 00 81 30 DA 16 00 00 07 DB 16

LPDU bytes | Explanation
68 | Start byte 1: frame with variable length
0F 0F | Block length and block length copy
68 | Start byte 2
08 | Control field: PRM-bit not set (frame from secondary station), function code = 8 (user data)
0C 00 | Link address (2 octets) = 12 dec.
0F | Type identification: M_IT_NA_1 (integrated total)
01 | Number of objects = 1
03 | Cause of transmission = 3 (spontanous)
0C 00 | Common ASDU address (2 octets) = 12 dec.
81 30 | Object address (2 octets)
DA 16 00 00 | BCR (binary counter value)
07 | Quality descriptor = 7 (sequence)
DB | Checksum
16 | Stop byte

Sample 4

68 2B 2B 68 08 0C 00 0B 07 03 0C 00 10 30 BE 09 00 11 30 90 09 00 0E 30 75 00 00 28 30 25 09 00 29 30 75 00 00 0F 30 0F 0A 00 2E 30 AE 05 00 85 16

LPDU bytes | Explanation
68 | Start byte 1: frame with variable length
2B 2B | Block length and block length copy
68 | Start byte 2
08 | Control field: PRM-bit not set (frame from secondary station), function code = 8 (user data)
0C 00 | Link address (2 octets) = 12 dec.
0B | Type identification: M_ME_NB_1(measured value, scaled value)
07 | Number of objects = 7
03 | Cause of transmission = 3 (spontanous)
0C 00 | Common ASDU address (2 octets) = 12 dec.
10 30 | Object address (2 octets) of first information object
BE 09 00 | Scaled value + QDS (quality descriptor) of first information object
11 30 | Object address (2 octets) of second information object
90 09 00 | Scaled value + QDS (quality descriptor) of second information object
0E 30 | Object address (2 octets) of third information object
75 00 00 | Scaled value + QDS (quality descriptor) of third information object
28 30 25 09 00 29 30 75 00 00 0F 30 0F 0A 00 2E 30 AE 05 00 | Object address + Scaled value + QDS (quality descriptor) of information object four to seven
85 | Checksum
16 | Stop byte


ASDU Reference

IEC 60870-5-101 asdu object reference

Standard IEC 60870-5-101 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_TA_1

Single-point information with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x02 (2) | = M_SP_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 | = 4 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..3] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[4..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_TA_1

Double-point information with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x04 (4) | = M_DP_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 | = 4 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..3] = | CP24Time2a |  |  |  |  |  |  |  | Three octet binary time tag
 |  |  | |--- | data[4..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_TA_1

Step position information with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x06 (6) | = M_ST_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 | = 5 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..4] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[5..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_TA_1

Bitstring of 32 bits with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x08 (8) | = M_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 | = 8 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..7] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[8..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_TA_1

Measured value, normalized value with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x0A (10) | = M_ME_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 | = 6 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..5] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[6..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_TB_1

Measured value, scaled value with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x0C (12) | = M_ME_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 | = 6 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..5] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[6..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_TC_1

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

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x0E (14) | = M_ME_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 | = 8 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..7] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[8..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_TA_1

Integrated total with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x10 (16) | = M_IT_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..3] = | BCR |  |  |  |  |  |  |  | Binary counter reading
 |  |  | |--- | data[4] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[5..7] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[8..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_NA_1

Test command without time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x68 (104) | = C_TS_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 | = 2 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = 0xAA | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | FBP = Fixed test pattern
 |  |  | |--- | data[1] = 0x55 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1
 |  |  | |--- | data[2..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_TA_1

Event of protection equipment with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x11 (17) | = M_EP_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 | = 6 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..5] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[6..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_EP_TB_1

Packed start events of protection equipment with CP24Time2a time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x12 (18) | = M_EP_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 | = 7 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..6] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[7..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_EP_TC_1

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

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x13 (19) | = M_EP_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 | = 7 |  |  |  |  |  |  |  |  |
 |  | |--- | 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..6] = | CP24Time2a |  |  |  |  |  |  |  | Three octets binary time tag
 |  |  | |--- | data[7..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_101TProtocol

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

FUNCTION_BLOCK FB_IEC870_5_101TProtocol

From product version: TwinCAT PLC Library IEC60870-5-101 Substation v2.0.2 and higher

The FB_IEC870_5_101TProtocol communication block implements the transmission procedures of the connection layer according to IEC 60870-5-1 and IEC 60870-5-2 standard. 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. E.g. the TX/RX data buffers are reset. The communication block expects a TX/RX data buffer variable and a connection handle to FB_IEC870_SerialLineCtrl. These variablen must be transferred to the block via VAR_IN_OUT.

The function block features the following tasks:

  • INIT (initialises the function block);

Protocol configuration

The communication block has a structured protPara variable. Protocol parameters such as timeout times or connection addresses etc. can be configured via this variable

VAR_IN_OUT

VAR_IN_OUT
    hSerial		: T_HSERIALCTRL;		(* Serial link control handle *)
    buffer 		: ST_IEC870_5_101TBuffer; (* TX/RX data buffer *)
END_VAR

hSerial: Connection handle to FB_IEC870_SerialLineCtrl.. The data to be sent and received are excahged with the FB_IEC870_SerialLineCtrl function block.

buffer: TX/RX data buffer.

VAR_INPUT

VAR_INPUT
    protPara 	: ST_IEC870_5_101ProtocolParams; (* IEC60870-5-101 protocol parameters *)
    bOutDbg 		: BOOL; 		(* Enable/disable debug output *)
END_VAR

protPara: IEC60870-5-101protocol parameters

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

VAR_OUTPUT

VAR_OUTPUT
    bError 		: BOOL;
    nErrID 		: UDINT;
    eDTState 	: E_IEC870_5_101SerialLinkState := eSERIALLINK_DISCONNECTED; (* 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;

eState: status of the data exchange to the master

Example:

Sample projects: IEC60870-5-101 Serial Link Interface

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


FB_IEC870_PartyLineCtrl

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

FUNCTION_BLOCK FB_IEC870_PartyLineCtrl

From product version: TwinCAT PLC Library IEC870-5-101 Substation v2.0.2 and higher.

The function block FB_IEC870_PartyLineCtrl handles the data exchange to the controlled station in partyline mode.

The function block has to be called cyclically in the PLC task. The eMode input activates/deactivates the partyline mode.Partyline mode is not used if you do not use the function block (default setting). The deviceID input variable must match the device ID from the TwinCAT System Manager IO configuration (general COM port tab). It is only required if you use the serial PC interface for communication in partyline mode.
The hSerial variable is a structure and is used for internal data exchange between the fast and slow communication task. Every time the IEC slave wants to transmit, the bRTS output (request to send) is first set to TRUE. Once transmit mode has been switched on the IEC slave is notified by setting the bCTS input (clear to send) to TRUE. The IEC slave then starts transmitting. Once the data have been sent (internal hardware buffers are empty) the IEC slave resets the bRTS output to FALSE. The send line can now be released for another device. Once this has occurred the IEC slave must be notified by setting the bCTS input to FALSE. In other words, the state of the bCTS input always follows the state of the bRTS output.
In the serial PC interface the bRTS output is only set to FALSE (data sent) when the ADS query of the internal hardware send buffer returns zero bytes in the buffer.

VAR_IN_OUT

VAR_IN_OUT
    hSerial 		: T_HSERIALCTRL;
ND_VAR

hSerial: Connection handle to FB_IEC870_SerialLineCtrl. Via this variable the data to be sent and received are exchanged with FB_IEC870_SerialLineCtrl.

VAR_INPUT

VAR_INPUT
    eMode 		: E_IEC870_5_101PartylineMode := eIEC870_PartylineMode_Off; (* Partyline modes (On/Off)*)
    deviceID 	: UDINT := 0; (*Used by SERIALLINEMODE_PC_COM_PORT only. DeviceId specifies the device on which the function is to be executed.
    The device Ids are specified by the TwinCAT System Manager during the hardware configuration.*)
    bCTS 		: BOOL := FALSE; (* Clear to send *)
END_VAR

eMode : Partyline activation mode.

deviceID : TwinCAT System Manager device ID. This parameter is only needed for communication via the serial PC interface. If activation mode is set to eIEC870_PartylineMode_Ext_On the deviceID parameter is not used.

bCTS : Clear to send (for link layer).

VAR_OUTPUT

VAR_IN_OUT
    bError 		: BOOL;
    nErrID 		: UDINT;
    bRTS 		: BOOL := FALSE; (* Request to send *)
ND_VAR

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

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

bRTS: Request to send (from link layer).

Example for TwinCAT v2.10 Build <1313 and older (CE image < v2.16 or older):

Implementation of partyline in the fast communication task: The connection for operation mode is switched ON / OFF via the RTS_SWITCH variable.

The tRTS_DEALY_ON delay time assures that the connection of the cord of IEC-Slave has been finished. The tRTS_DELAY_OFF delay time assures, that the last sent data byte was received by the controlled station.

PROGRAM P_SerialComm_HighSpeed
VAR
    fbSerialLineCtrl 	: FB_IEC870_SerialLineCtrl;
    Mode 		: ComSerialLineMode_t := SERIALLINEMODE_PC_COM_PORT; (* SERIALLINEMODE_KL6_5B_STANDARD *)

    serial_in AT%IB0 	: PcComInData;
    serial_out AT%QB0	: PcComOutData;
    KL6_in AT%IB100 	: KL6inData5B;
    KL6_out AT%QB100 	: KL6outData5B;

    hSerial 		: T_HSERIALCTRL;

    fbPartyLineCtrl 	: FB_IEC870_PartyLineCtrl;
    delay 		: TON;
    tRTS_DEALY_ON 	: TIME := T#100ms;
    tRTS_DELAY_OFF 	: TIME := T#100ms;
    RTS_SWITCH AT%QX200.0 : BOOL; (* RTS line switch *)

END_VAR

fbSerialLineCtrl( Mode := Mode,
        Baudrate := 19200,
        NoDatabits := 8,
        Parity := PARITY_EVEN,
        Stopbits := 1,
        Handshake := HANDSHAKE_NONE,
        ContinousMode := FALSE,
        pComIn := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, ADR( serial_in ), ADR( KL6_in ) ),
        pComOut := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, ADR( serial_out ), ADR( KL6_out ) ),
        SizeComIn := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, SIZEOF( serial_in ), SIZEOF( KL6_in ) ),
        hSerial := hSerial );

(* The deviceID may vary! *)
fbPartyLineCtrl( eMode:= eIEC870_PartylineMode_On, hSerial:= hSerial, deviceID := 1 );
IF fbPartyLineCtrl.bRTS <> fbPartyLineCtrl.bCTS THEN
    IF fbPartyLineCtrl.bRTS THEN
        RTS_SWITCH := TRUE; (* switch RTS line ON *)
        delay( in := TRUE, PT := tRTS_DEALY_ON ); (* wait until line enabled *)
        IF delay.Q THEN
            delay( in := FALSE );
            fbPartyLineCtrl.bCTS := TRUE; (* set clear to send *)
        END_IF
    ELSE
        delay( in := TRUE, PT := tRTS_DELAY_OFF ); (* wait until all data send *)
        IF delay.Q THEN
            delay( in := FALSE );
            RTS_SWITCH := FALSE; (* switch RTS line OFF *)
            fbPartyLineCtrl.bCTS := FALSE; (* reset clear to send *)
        END_IF
    END_IF
END_IF

Example for TwinCAT v2.10 Build >= 1313 or newer (CE image v2.16 or newer):

In an newer TwinCAT Version, the RTS line can be mapped directly as IO output in the PLC. To do this, you have to enable the Extended Ctrl/Status option in the TwinCAT System Manager. The eMode parameter at the functionsblock has to be set to eMode := eIEC870_PartylineMode_Ext_On . The deviceID parameter is not used in this modus and has not to be configurated.

The RTS_SWITCH variable has to be linked with Bit 1 in ExtCtrl (RTS output ) and TX_BUFFER_EMPTY variable has to be linked with Bit 15 in ExtStatus.

PROGRAM P_SerialComm_HighSpeed
VAR
    fbSerialLineCtrl 	: FB_IEC870_SerialLineCtrl;
    Mode 		: ComSerialLineMode_t := SERIALLINEMODE_PC_COM_PORT; (* SERIALLINEMODE_KL6_5B_STANDARD *)

    serial_in AT%IB0 	: PcComInData;
    serial_out AT%QB0	: PcComOutData;
    KL6_in AT%IB100 	: KL6inData5B;
    KL6_out AT%QB100 	: KL6outData5B;

    hSerial 		: T_HSERIALCTRL;
    fbPartyLineCtrl 	: FB_IEC870_PartyLineCtrl;
    delay 		: TON;
    tRTS_DEALY_ON 	: TIME := T#100ms;
    tRTS_DELAY_OFF 	: TIME := T#100ms;
    RTS_SWITCH AT%QX200.0 : BOOL; (* RTS line switch *)
    TX_BUFFER_EMPTY AT%IX200.0 : BOOL; (* UART's tx buffer is empty *)
END_VAR
fbSerialLineCtrl( Mode := Mode,
        Baudrate := 19200,
        NoDatabits := 8,
        Parity := PARITY_EVEN,
        Stopbits := 1,
        Handshake := HANDSHAKE_NONE,
        ContinousMode := FALSE,
        pComIn := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, ADR( serial_in ), ADR( KL6_in ) ),
        pComOut := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, ADR( serial_out ), ADR( KL6_out ) ),
        SizeComIn := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, SIZEOF( serial_in ), SIZEOF( KL6_in ) ),
        hSerial := hSerial );

fbPartyLineCtrl( hSerial:= hSerial, eMode := eIEC870_PartylineMode_Ext_On );
IF fbPartyLineCtrl.bRTS <> fbPartyLineCtrl.bCTS THEN
    IF fbPartyLineCtrl.bRTS THEN
        RTS_SWITCH := TRUE; (* switch RTS line ON *)
        delay( in := TRUE, PT := tRTS_DEALY_ON ); (* wait until line enabled *)
        IF delay.Q THEN
            delay( in := FALSE );
            fbPartyLineCtrl.bCTS := TRUE; (* set clear to send *)
        END_IF
    ELSE
        IF TX_BUFFER_EMPTY THEN
            delay( in := TRUE, PT := tRTS_DELAY_OFF ); (* wait until all data send *)
            IF delay.Q THEN
                delay( in := FALSE );
                RTS_SWITCH := FALSE; (* switch RTS line OFF *)
                fbPartyLineCtrl.bCTS := FALSE; (* reset clear to send *)
            END_IF
        END_IF
    END_IF
END_IF

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


FB_IEC870_SerialLineCtrl

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

FUNCTION_BLOCK FB_IEC870_SerialLineCtrl

The function block FB_IEC870_SerialLineCtrl handles communication between a serial interface (KL60xx, EL60xx or COM port) and the IEC60870-5-101 PLC blocks.
If a serial KL60xx bus terminal is used for the communication, the bus terminal is initialised and configured first (baud rate, parity etc). The PC COM port and the serial EL60xx bus terminal has to be configured in the TwinCAT System Manager. The data received and to be sent are held in the internal buffers of the hSerial variable. The function block has to be called cyclically in the PLC task.

VAR_IN_OUT

VAR_IN_OUT
    hSerial 		: T_HSERIALCTRL;
ND_VAR

hSerial :

VAR_INPUT

VAR_INPUT
    Mode 		: ComSerialLineMode_t 	:= SERIALLINEMODE_PC_COM_PORT; (* or SERIALLINEMODE_PC_COM_PORT *)
    Baudrate 	: UDINT 			:= 19200; 	(* KL60xx only: 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200 *)
    NoDatabits 	: BYTE 		:= 8; 		(* KL60xx only: 7 or 8 *)
    Parity 		: ComParity_t 	:= PARITY_EVEN; 	(* KL60xx only: PARITY_NONE=0, PARITY_EVEN=1, PARITY_ODD=2 *)
    Stopbits 	: BYTE 			:= 1; 		(* KL60xx only: 1 or 2 *)
    Handshake 	: ComHandshake_t 	:= HANDSHAKE_NONE; (* KL60xx only: HANDSHAKE_NONE=0, HANDSHAKE_RTSCTS=1, HANDSHAKE_XONXOFF=2 *)
    ContinousMode 	: BOOL; 				(* KL60xx only: Don't start transmission before transmit buffer is filled *)
    pComIn 		: POINTER TO BYTE;
    pComOut 		: POINTER TO BYTE;
    SizeComIn 	: UINT;
END_VAR

Mode : The Mode input specifies unambiguously which serial hardware is being used.

Baudrate: The baud rate, provided it is supported by the serial hardware.

NoDatabits: The number of user data bits in one data byte.

Parity: The type of the parity bit in a data byte.

Stopbits: The number of stop bits per data byte.

Handshake: The type of handshake used, provided it is supported by the serial hardware.

ContinousMode: Switches on continuous transmission, provided this is supported by the serial hardware.

If ContinousMode is TRUE, transmitted data is not sent out by the serial hardware until the hardware transmit buffer is full. This means that there are no time gaps in the transmission, provided the quantity of data is similar in size to the hardware transmit buffer. Continuous mode is only necessary in special cases in which the end device reacts to time gaps with a time-out.

pComIn: Universal pointer to the input variable of the process data for the serial hardware (data types KL6inData, KL6inData5b, PcComInData, EL6inData22B ). The pointer is assigned with the ADR() function.

pComOut: Universal pointer to the output variable of the process data for the serial hardware (data types KL6outData, KL6outData5b, PcComOutData, EL6outData22B ). The pointer is assigned with the ADR() function.

SizeComIn: Size of the input process image of the serial hardware being used. The size is determined and assigned with the SIZEOF() function.

Example 1:

The example shows an ST call. Switching between two communication routes can be affected by setting the mode variables.

For mode = SERIALLINEMODE_PC_COM_PORT communication is via a serial COM port of the PC, for mode = SERIALLINEMODE_KL6_5B_STANDARD via a KL6001 bus terminal (5-byte mode).

PROGRAM P_SerialComm_HighSpeed
VAR
    fbSerialLineCtrl 	: FB_IEC870_SerialLineCtrl;
    Mode 		: ComSerialLineMode_t := SERIALLINEMODE_KL6_5B_STANDARD; (* SERIALLINEMODE_PC_COM_PORT *)

    serial_in AT%IB0 	: PcComInData;
    serial_out AT%QB0	: PcComOutData;
    KL6_in AT%IB100 	: KL6inData5B;
    KL6_out AT%QB100 	: KL6outData5B;

    hSerial 		: T_HSERIALCTRL;
END_VAR

fbSerialLineCtrl( Mode := Mode,
        Baudrate := 19200,
        NoDatabits := 8,
        Parity := PARITY_EVEN,
        Stopbits := 1,
        Handshake := HANDSHAKE_NONE,
        ContinousMode := FALSE,
        pComIn := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, ADR( serial_in ), ADR( KL6_in ) ),
        pComOut := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, ADR( serial_out ), ADR( KL6_out ) ),
        SizeComIn := SEL( Mode = SERIALLINEMODE_KL6_5B_STANDARD, SIZEOF( serial_in ), SIZEOF( KL6_in ) ),
        hSerial := hSerial );

Example 2:

The example shows communication via a EL6001 bus terminal (22-byte mode). The serial EL6001 bus terminal has to be configured in the TwinCAT System Manager (baud rate, parity etc).

PROGRAM P_SerialComm_HighSpeed
VAR
    fbSerialLineCtrl	: FB_IEC870_SerialLineCtrl := ( Mode := SERIALLINEMODE_EL6_22B );
    EL6_in		AT%IB4100	: EL6inData22B;
    EL6_out		AT%QB4100	: EL6outData22B;
    hSerial		: T_HSERIALCTRL;
END_VAR

fbSerialLineCtrl( pComIn := ADR( EL6_in ),
        pComOut := ADR( EL6_out ),
        SizeComIn := SIZEOF( EL6_in ),
        hSerial := hSerial );

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


F_iecApdu101ToAsduLen

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

FUNCTION F_iecApdu101ToAsduLen

From product version: TwinCAT PLC Library IEC60870-5-101 Substation v2.0.2 and higher.

The function calculates for the IEC 60870-5-101 protocol the maximum available ASDU byte length with the configurated frame and link address field 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-101 Serial Link Interface.

FUNCTION F_iecApdu101ToAsduLen: BYTE

VAR_INPUT
    FRAMELength 	: BYTE;
    eLinkAddrSize 	: E_IEC870_5_101LinkAddrSize;
END_VAR

FRAMELength : Max. available frame length (see compatibility list).

eLinkAddrSize: Link address field octet length (see compatibility list).

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


F_GetVersionTcIEC870_5_101Link

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

FUNCTION F_GetVersionTcIEC870_5_101Link

This function reads version information from the PLC library.

FUNCTION F_GetVersionTcIEC870_5_101Link: 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_101Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; COMlibV2.Lib; are included automatically )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


ST_IEC870_5_101ProtocolParams

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE ST_IEC870_5_101ProtocolParams

Link layer protocol parameters. The meaning of every parameter depends on protocol or device type.

TYPE ST_IEC870_5_101ProtocolParams :
STRUCT
    eType 		: E_IEC870_DEVICE_TYPE := eIEC870_101_SLAVE;
    eLinkReset 	: E_IEC870_5_101LinkReset := eIEC870_LinkReset_CU;
    linkAddr 		: DWORD := 1;
    eLinkAddrSize 	: E_IEC870_5_101LinkAddrSize := eIEC870_LinkAddr_TwoOctets;
    eLinkMode 	: E_IEC870_5_101LinkMode := eIEC870_LinkMode_Unbalanced;
    eFrameType 	: E_IEC870_5_101FrameType := eIEC870_FrameType_FT1_2;
    tRxTimeout 	: TIME := T#5s;
    tTxTimeout 	: TIME := T#5s;
    bForceC1Res 	: BOOL := TRUE;
    bForceC2Res 	: BOOL := TRUE;
    tClass1Poll 	: TIME := T#200ms;
    tClass2Poll 	: TIME := T#200ms;
    nRetries 		: BYTE := 3;
    tRetry		: TIME := T#100ms;
    tResponse 	: TIME := T#1s;
    tTestLink 	: TIME := T#5s;
    tPollDFC 		: TIME := T#1s;
    FRAMELength 	: BYTE(MIN_IEC870_5_101Link_FRAMELEN..MAX_IEC870_5_101Link_FRAMELEN)
                := MAX_IEC870_5_101Link_FRAMELEN;
    bRetainBuffer	: BOOL := FALSE;
    tMaxPollDelay 	: TIME := T#0s;
    tLinkPollCycle 	: TIME := T#10s;
END_STRUCT
END_TYPE

The lower table shows the different device type parameter configuration. Fixed values can not be configured.

Legend:

  • X The parameter is used and can be configured;
  • N/A The parameter is not used and can not be configured;
Parameter name | Init/default value | IEC 60870-5-101 controlled station (slave, unbalanced mode) | IEC 60870-5-101 control station (master, unbalanced mode) | IEC 60870-5-103 control station (master, unbalanced mode) | IEC 60870-5-102 control station (master, unbalanced mode) | Description
eType | eIEC870_101_SLAVE | fixed value, eIEC870_101_SLAVE | fixed value, eIEC870_101_MASTER | fixed value, eIEC870_103_MASTER | fixed value, eIEC870_102_MASTER | Configures the protocol and device type.
eLinkReset | eIEC870_LinkReset_CU | N/A | X | X | fixed value, eIEC870_LinkReset_CU | Configures the link layer (initialization) reset type.
linkAddr | 1 | own address | address of remote communication unit | address of remote communication unit | address of remote communication unit | Link address.
eLinkAddrSize | eIEC870_LinkAddr_TwoOctets | X | X | X | X | Link adress octet size.
eLinkMode | eIEC870_LinkMode_Unbalanced | fixed value, eIEC870_LinkMode_Unbalanced | fixed value, eIEC870_LinkMode_Unbalanced | fixed value, eIEC870_LinkMode_Unbalanced | fixed value, eIEC870_LinkMode_Unbalanced | Link mode (balanced/unbalanced).
eFrameType | eIEC870_FrameType_FT1_2 | fixed value, eIEC870_FrameType_FT1_2 | fixed value, eIEC870_FrameType_FT1_2 | fixed value, eIEC870_FrameType_FT1_2 | fixed value, eIEC870_FrameType_FT1_2 | Telegramm frame format. Only F1.2 is supported.
tRxTimeout | T#5s | X | X | X | X | Max. frame receive timeout time. This parameter specifies the time to wait until frame is received before a timeout condition is set. If the timeout condition is set, all bytes in the frame received will be discarded.
tTxTimeout | T#5s | X | X | X | X | Max. frame send timeout time.This parameter specifies the time to wait until frame is send before a timeout condition is set.
bForceC1Res | TRUE | X | N/A | N/A | N/A | If set (TRUE), in response to a class 2 poll, a controlled station may respond with class 1 data when there is class 1 data available (optimized, higher class 1 data throughput). If not set (FALSE), in response to class 2 poll, a controlled station may respond with NOUSERDATA when there is class 1 data available (empty telegramms).
bForceC2Res | TRUE | X | N/A | N/A | N/A | If set (TRUE), in response to a class 2 poll, a controlled station may respond with class 2 data even tough class 1 data is available (optimized, higher class 2 data throughput). If not set (FALSE), in response to class 2 poll, a controlled station may respond with NOUSERDATA even tough class 1 data is available (empty telegramms).
tClass1Poll | T#200ms | N/A | X | X | X | How often to check for class 1 data (unbalanced mode only).
tClass2Poll | T#200ms | N/A | X | X | X | How often to check for class 2 data. If the RTU has class 1 data, this is shown in the response to the poll for class 2 data, in this case the device will automatically poll for class 1 data (unbalanced mode only).
nRetries | 3 | Not used in v3.0.6 and lower(error after first disturbed frame), configurable in v3.0.8 and higher | X | X | X | This parameter specifies the number of retries (0 to 255) if a response is not received.
tRetry | T#100ms | N/A | X | X | X | Repeated frames delay time.
tResponse | T#1s | N/A | X | X | X | This parameter specifies the time to wait for a response to a primary message. If the timeout is recognized, the message will be retransmitted up to the number of times specified in the nRetries parameter.
tTestLink | T#5s | N/A | N/A | N/A | N/A | How often to send test link messages. Note that this has effect only for balanced mode, because test link messages are undefined in unbalanced mode and will not be sent.
tPollDFC | T#1s | N/A | X | X | X | How often to read link status if DFC bit is set. Remote communication unit sets the DFC bit if further messages may cause data overflow.
FRAMELength | MAX_IEC870_5_101Link_FRAMELEN | X | X | X | X | Max. frame length L.
bRetainBuffer | FALSE | available from product version v3.0.2 and higher | X | X | X | The internal TX/RX buffer are reset (cleared) during the initialisation of the link layer if this parameter is set.
tMaxPollDelay | T#0s (= 0: not used, <> 0: used | available from product version v3.0.2 and higher | N/A | N/A | N/A | Max. time between link polls before station is declared OFFLINE.
tLinkPollCycle | T#10s | N/A | X | X | X | How often to read link status if the connection is offline.

Additional information for bForceC1Res and bForceC2Res parameters:

Irrespective whether you set both parameters, one of them or none of them, the ACD bit is set accordingly in order to notify the control station whether Class 1 or Class 2 data should be queried next. These parameters only influence the behaviour of the substation for Class 2 queries.

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


E_IEC870_5_101FrameType

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE E_IEC870_5_101FrameType

TYPE E_IEC870_5_101FrameType :
(
    eIEC870_FrameType_FT1_2
);
END_TYPE

IEC 60870-5-101 Frame Type. Only FT1.2 is supported.

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


E_IEC870_5_101LinkMode

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE E_IEC870_5_101LinkMode

Configures the data transfer mode.

TYPE E_IEC870_5_101LinkMode :
(
    eIEC870_LinkMode_Unbalanced,
    eIEC870_LinkMode_Balanced
);
END_TYPE

eIEC870_LinkMode_Unbalanced: Unbalanced transmission (asymmetric data transfer). The controlling station controls the data transfer by polling the controlled outstations sequentially. The controlling station initiates the message transfers while the controlled outstations can transmit only in response to the message from the controlling station.

eIEC870_LinkMode_Balanced: Balanced transmission (symmetric data transfer). Available only in newer product versions:

  • TwinCAT PLC Library IEC 60870-5-101 Master v2.0.1 and higher;
  • TwinCAT PLC Library IEC 60870-5-101 Slave v4.0.1 and higher;

When using balanced transmission, each station can initiate message transfer. The balanced transmission is restricted to point-to-point and to multiple point-to-point
configurations.

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


E_IEC870_5_101SerialLinkState

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE E_IEC870_5_101SerialLinkState

TYPE E_IEC870_5_101SerialLinkState :
(
    eSERIALLINK_DISCONNECTED,
    eSERIALLINK_ESTABLISHED,
    eSERIALLINK_SUSPENDED
);
END_TYPE

Connection status

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


E_IEC870_5_101PartyLineMode

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE E_IEC870_5_101PartyLineMode

From product version: TwinCAT PLC Library IEC60870-5-101 Substation v2.0.2 and higher

TYPE E_IEC870_5_101PartyLineMode :
(
    eIEC870_PartylineMode_Off := 0, (* Disabled *)
    eIEC870_PartylineMode_On (* Enabled *)
    eIEC870_PartylineMode_Ext_On := 2 (* Enabled, with extended serial state/control interface *)
 );
END_TYPE

Partyline communication mode. See in the description of function block: FB_IEC870_PartyLineCtrl.

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


E_IEC870_5_101LinkReset

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE E_IEC870_5_101LinkReset

TYPE E_IEC870_5_101LinkReset :
(
    eIEC870_LinkReset_None 	:= 0, 	(* Disabled *)
    eIEC870_LinkReset_CU 	:= 1, 	(* Reset communication unit *)
    eIEC870_LinkReset_UP 	:= 2, 	(* Reset user process *)
    eIEC870_LinkReset_FCB 	:= 3 	(* Reset FCB bit *)
);
END_TYPE

Configures the link layer (initialization) reset type.

Development Environment | Target System | PLC libraries to include
TwinCAT v2.10.0 Build >= 1307 | PC or CX (x86, ARM) | TcIEC870_5_101Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; COMlibV2.Lib; are included automatically )


E_IEC870_DEVICE_TYPE

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE E_IEC870_DEVICE_TYPE

TYPE E_IEC870_DEVICE_TYPE :
(
    eIEC870_101_SLAVE := 0, (* Secondary (responding) station *)
    eIEC870_101_MASTER := 1, (* Primary (initiating) station *)

    eIEC870_102_SLAVE := 2, (* Secondary (responding) station *)
    eIEC870_102_MASTER := 3, (* Primary (initiating) station *)

    eIEC870_103_SLAVE := 4, (* Secondary (responding) station *)
    eIEC870_103_MASTER := 5 (* Primary (initiating) station *)
);
END_TYPE

Protocol and device type.

Development Environment | Target System | PLC libraries to include
TwinCAT v2.10.0 Build >= 1307 | PC or CX (x86, ARM) | TcIEC870_5_101Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; COMlibV2.Lib; are included automatically)


T_HSERIALCTRL

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

TYPE T_HSERIALCTRL

A variable of this type represents a connection handle of the serial interface. The structural elements should not be written to or modified directly. Variables of this type are used for exchanging the data to be sent or received between the function block FB_IEC870_SerialLineCtrl and other IEC 60870-5-101 PLC blocks.

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


Error codes overview

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

IEC 60870-5-101 serial link interface error codes

Codes (hex) | Codes (dec) | Error source | Description
0x00000000-0x00002000 | 0-8192 | Serial communication errors | serial communication error (only if error source = eIEC870_ESRC_IEC60870_5_101LINK ).
0x00000000-0x00007800 | 0-30720 | TwinCAT System error | TwinCAT System error (ADS error codes inclusive only if error error source <> eIEC870_ESRC_IEC60870_5_101LINK ).
0x00008100-0x000081FF | 32768-33023 | IEC60870-5-10x error | IEC60870-5-10x errors


Troubleshooting

TwinCAT PLC Library: IEC 60870-5-101 Serial Link Interface

Troubleshooting/diagnostics

  1. Check the hardware and software requirements described in this documentation (TwinCAT version, CE image version etc.);
  2. Compare the interoperability check list of control station and controlled station;
  3. Check the IO configuration and mapping of PLC variables in TwinCAT System Manager (configuration of serial interface, baudrate, parity, stoppbits settings). Compare them to the parameters set in the communication partner;
  4. Check whether the FB_IEC870_5_101TProtocol() function block issues an error code. The documentation for the error codes can be found here: Overview of error codes;
  5. Check the protocol parameters that are transferred to the function block (link address, link address octet size, FRAMELength etc.). Compare them to the parameters set in the communication partner;
  6. 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;
  7. Check the configured data points (type, information object address etc.);
  8. Check if the other communication partner issues an error code;
  9. 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;


Examples

Used controlled or controlling station configuration parameters:

  • Standard PC interface: COM1
  • 19200 Baud
  • Link address: 1
  • Link address size: 1 octet
  • Cause of transfer size: 1 octet
  • Originator address: not used
  • Common ASDU address: 7
  • Common ASDU address size: 1 octet
  • Information object address size: 2 octets

To compile this sample code you need the TwinCAT Version 2.10 Build > 1328!

The example applications contain two program parts:
P_MAIN_LowSpeed() implements the protocoll and P_SerialComm_HighSpeed implements the TwinCAT communication over serial communication interface.

PLC Project TwinCAT System Manager Configuration Description
LowLevelSlaveSample.pro

(unbalanced mode)

LowLevelSlaveSampleBal.pro

(balanced mode)

LowLevelSlaveSample.tsm

(unbalanced mode)

LowLevelSlaveSampleBal.tsm
(balanced mode)

Simple Slave-Application which uses the TwinCAT IEC60870-5-101 Serial Link Interface.

The function block FB_IEC870_5_101SServices implements test command, clock synchronisation command, general interrogation command and counter interrogation command (mode C).

The bitstring datapoint (M_BO_TB_1, with time tag CP56Time2a, information object address: 100) is send every second to the controlling station with the cause of transfer: spontanous.

One counter value (M_IT_NA_1, without time tag, information object address: 400) is send as response to counter interrogation command (mode C) to the controlling station.

LowLevelMasterSample.pro

(unbalanced mode)

LowLevelMasterSampleBal.pro
(balanced mode)

LowLevelMasterSample.tsm
(unbalanced mode)

LowLevelMasterSampleBal.tsm
(balanced mode)

Simple Master-Application which uses the TwinCAT IEC60870-5-101 Serial Link Interface.

The function block FB_IEC870_5_101MServices implements test command, clock synchronisation command, general interrogation command and counter interrogation command.