Hinweise zur Dokumentation

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Deshalb ist die Dokumentation nicht in jedem Fall vollständig auf die Übereinstimmung mit den beschriebenen Leistungsdaten, Normen oder sonstigen Merkmalen geprüft.
Falls sie technische oder redaktionelle Fehler enthält, behalten wir uns das Recht vor, Änderungen jederzeit und ohne Ankündigung vorzunehmen.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE®, XFC® und XTS® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP1590927, EP1789857, DE102004044764, DE102007017835
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


Übersicht

Die Bibliothek TcIEC870_5_104.Lib implementiert eine Schnittstelle über die einzelne ASDUs (Dienstdateneinheiten der Anwendungsschicht ) verschickt und empfangen werden können. Innerhalb der Protokollstruktur liegt diese Schnittstelle oberhalb der Transportschicht (4) und implementiert bereits die APCI-Funktionen (Protokollsteuerinformationen der Anwendungsschicht, siehe untere Tabelle). Anwendungsfunktionen wie z.B. Generalabfrage und Zählerabfrage sind in der Schnittstelle nicht implementiert, der Anwender kann aber mit Hilfe der Schnittstelle diese Anwendungsfunktionen selber implementieren.

"Low level"-Schnittstelle: IEC 60870-5-104 Transport Interface

Diese Schnittstelle setzt bei dem Protokollstack tiefer an und ermöglicht das Versenden und/oder Empfangen einzelner Frames (ASDU's).

Pro: Sehr flexibel; Alle Eigenschaften im ASDU-Frame können manipuliert werden (z.B. ein eigener Zeitstempel, Select/Execute oder eine besondere Befehlsausführung usw); Weil nur die benötigten Dienste implementiert werden kann eine hohe Performance erreicht werden; Hohe Performace bei vielen Datenpunkten;

Contra: Grösserer Programmieraufwand; Alle Dienste wie Generalabfrage, Zählerabfrage, Uhrzeitsynchronisation, Befehlsausführung, spontane Datenübertragung usw. müssen von dem SPS-Programmierer selbst implementiert (ausprogrammiert) werden; Der SPS-Programmierer muss mit der Protokollnorm vertraut sein.

Diese Schnittstelle empfielt sich wenn Sie:

  • Mit der Protokollnorm vertraut sind;
  • Eine Protokollkonverter-Applikation implementieren möchten;
  • In der Applikation die verfügbaren Norm-Funktionalitäten fast vollständig implementieren müssen;
  • Besondere Funktionalitäten wie z.B. das weiterleiten der Zeitstempel von einem Modbusgerät oder die Kontrolle über die Befehlsausführung haben möchten;
  • Funktionalitäten benötigen die laut Kompatibilitätsliste nicht unterstützt werden;
  • Viele Datenpunte haben (>1000) und eine hohe Performace benötigen;

Protokollstruktur des Endsystems:

Auswahl von Anwendungsfunktionen aus IEC 60870-5-5 nach IEC 60870-5-101 | Initialisierung | Anwenderprozess
Auswahl von ASDU (Dienstdateneinheiten der Anwendungsschicht) aus IEC 60870-5-101 und IEC 60870-5-104 |  | Anwendungsschicht (7)
TwinCAT PLC Library: IEC 60870-5-104 (low level) Transport Interface
APCI (Protokollsteuerinformation der Anwendungsschicht) Transportschnittstelle (Anwender zur TCP-Schnittstelle)
Auswahl aus der TCP/IP-Protokollsammlung (RFC 2200) |  | Transportschicht (4)
 |  | Vermittlungsschicht (3)
 |  | Verbindungsschicht (2)
 |  | Physikalische Schicht (1)

Anmerkung: Die Schichten 5 und 6 werden nicht benutzt.


Einführung

Einfache Projekte mit kompletten Sourcen finden Sie hier: Transport-Interface-Beispiele.

Eine SPS-Applikation, die über das Transport Interface mit einer Zentralstation oder Unterstation kommunizieren soll, benötigt folgende Resourcen:

  • Eine Instanz des Kommunikationsbausteins: FB_IEC870_5_104TProtocol;
  • Eine Instanz des Funktionsbausteins zur Herstellung der TCP/IP-Verbindung: FB_ServerClientConnection oder FB_ClientServerConnection;
  • Eine Instanz des TX/RX-Datenpuffers: ST_IEC870_5_101TBuffer;
  • Eine Instanz des Funktionsbausteins zur Manipulation des TX/RX-Datenpuffers: FB_IEC870_5_101TBufferCtrl;

........


Einführung: Übersicht

Tutorial: IEC 60870-5-104 Transport Interface

Einführung (Tutorial)

Die Einführung ist eine Anleitung wie Sie in der TwinCAT SPS eine IEC60870-5-104 Zentralstation oder Unterstation implementieren und konfigurieren können.

Weitere Themen in Vorbereitung...


Einführung: Glossar

Tutorial: IEC 60870-5-104 Transport Interface

Glossar

Begriff | Beschreibung
Unterstation, Slave, Server | Synonyme für eine untergeordnete Station (sie wird überwacht)
Zentralstation, Leitstation, Master, Client | Synonyme für eine übergeordnete Station (Leitstation, sie überwacht andere Stationen)
Steuerungsrichtung | Datenübertragungsrichtung von der Zentralstation zur Unterstation
Überwachungsrichtung | Datenübertragungsrichtung von der Unterstation zur Zentralstation
Applikationsobjekte | IEC-Informationsobjekte in der TwinCAT SPS-Applikation (Single Points, Double Points, Measured Values, Short Floating Point Values usw. )
APDU | Protokolldateneinheit der Anwendungsschicht (application protocol data unit)
APCI | Protokolsteuerinformation der Anwendungsschicht (application protocol control information)
ASDU | Dienstdateneinheit der Anwendungsschicht (application service data unit)
IOA, Addresse des Informationsobjekts | Adresse des Single Points, Double Points usw. (information object address)


Einführung: Fehlersuche und Diagnose

Tutorial: IEC 60870-5-104 Transport Interface

Fehlersuche und Diagnose

Debugmeldungen, die ins Application-Log geschrieben werden erleichtern eine Fehlersuche im System. Zur Zeit können drei Stufen der Debugmeldungen bei der Benutzung der "Low Level"-Schnittstelle aktiviert werden:

  1. Debugmeldungen, die beim Aufbauen oder Abbauen der TCP/IP-Verbindung geloggt werden (Meldungen der TcSocketHelper.Lib). Diese Meldungen können durch den nMode-Parameter: CONNECT_MODE_ENABLEDBG beim Aufruf der F_CreateServerHnd-Funktion (Unterstation) bzw. beim Aufruf des FB_ClientServerConnection (Leitstation) aktiviert werden;
  2. Hexadezimale Ausgabe der ASDU's (ohne Link-Layer-Control-Header). Pro Zeile werden 32-ASDU-Datenbytes als hexadezimale Zahlen ausgegeben. Längere ASDU's werden auf mehrere Zeilen verteilt. Die ST_IEC870_5_101TBuffer -Membervariable eDbg aktiviert die Debugausgabe;
  3. Hexadezimale Ausgabe der APDU's (TCP/IP Telegramme). Pro Zeile werden 32-APDU-Datenbytes als hexadezimale Zahlen ausgegeben. Ähnlich wie bei 2. werden längere APDU's auf mehrere Zeilen verteilt. Die FB_IEC870_5_104TProtocol-Eingangsvariable bOutDbg aktiviert die Debugausgabe;

Um die aktivierten Debugmeldungen zu sehen starten Sie TwinCAT System Manager und aktivieren Sie die Loggeransicht. Die nachfolgende Grafik zeigt eine Debugausgabe. Die drei unterschiedlichen Typen der Meldungen wurden mit entsprechenden Zahlen markiert.

Weitere Diagnosetools:

  • TwinCAT ADS Monitor;
  • Netzwerkmonitor;
  • Wireshark;
  • Ethereal;
  • Diverse Protokoll-Test-Suit-Produkte;


Telegram structure

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

IEC 60870-5-104 telegram structure

APCI = Application Protocol Control Information

ASDU = Application Service Data Unit

APDU = Application Protocol Data Unit

Telegram format with variable length

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

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

Telegram format with fixed length

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

Control field formats

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

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

I-Format

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

S-Format

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

U-Format

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

Simple samples and explanations

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

Sample 1

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

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

Sample 2

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

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

Sample 3

68 04 01 00 7E 14

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


ASDU-Referenz

IEC 60870-5-104 asdu object reference

Standard IEC 60870-5-104 Datentypen

Type | Dez | Hex | Beschreibung
ASDU_TYPEUNDEF | 0 | 0x00 | Wird nicht verwendet
M_SP_NA_1 | 1 | 0x01 | Einzelmeldung
M_SP_TA_1 | 2 | 0x02 | Einzelmeldung mit einem Zeitstempel
M_DP_NA_1 | 3 | 0x03 | Doppelmeldung
M_DP_TA_1 | 4 | 0x04 | Doppelmeldung mit einem Zeitstempel
M_ST_NA_1 | 5 | 0x05 | Stufenstellungsmeldung
M_ST_TA_1 | 6 | 0x06 | Stufenstellungsmeldung mit einem Zeitstempel
M_BO_NA_1 | 7 | 0x07 | Bitmuster von 32 bit
M_BO_TA_1 | 8 | 0x08 | Bitmuster von 32 bit mit einem Zeitstempel
M_ME_NA_1 | 9 | 0x09 | Messwert, normierter Wert
M_ME_TA_1 | 10 | 0x0A | Messwert, normierter Wert mit einem Zeitstempel
M_ME_NB_1 | 11 | 0x0B | Messwert, skalierter Wert
M_ME_TB_1 | 12 | 0x0C | Messwert, skalierter Wert mit einem Zeitstempel
M_ME_NC_1 | 13 | 0x0D | Messwert, Gleitkommazahl mit einfacher Genauigkeit
M_ME_TC_1 | 14 | 0x0E | Messwert, Gleitkommazahl mit einfacher Genauigkeit und einem Zeitstempel
M_IT_NA_1 | 15 | 0x0F | Zählwerte
M_IT_TA_1 | 16 | 0x10 | Zählwerte mit einem Zeitstempel
M_EP_TA_1 | 17 | 0x11 | Schutzereignis mit einem Zeitstempel
M_EP_TB_1 | 18 | 0x12 | Gepackte Anregungen des Schützes mit einem Zeitstempel
M_EP_TC_1 | 19 | 0x13 | Gepackte Auslösungen des Schutzes mit einem Zeitstempel
M_PS_NA_1 | 20 | 0x14 | Gepackte Einzelmeldungen mit Zustandsanzeige
M_ME_ND_1 | 21 | 0x15 | Messwert, normierter Wert ohne Qualitätskennung
ASDU_TYPE_22..29 | 22..29 | 0x16..0x1D | Reserviert (Standardbereich)
M_SP_TB_1 | 30 | 0x1E | Einzelmeldung mit einem Zeitstempel CP56Time2a
M_DP_TB_1 | 31 | 0x1F | Doppelmeldung mit einem Zeitstempel CP56Time2a
M_ST_TB_1 | 32 | 0x20 | Stufenstellungsmeldung mit einem Zeitstempel CP56Time2a
M_BO_TB_1 | 33 | 0x21 | Bitmuster von 32 bit mit einem Zeitstempel CP56Time2a
M_ME_TD_1 | 34 | 0x22 | Messwert, normierter Wert mit einem Zeitstempel CP56Time2a
M_ME_TE_1 | 35 | 0x23 | Messwert, skalierter Wert mit einem Zeitstempel CP56Time2a
M_ME_TF_1 | 36 | 0x24 | Messwert, Gleitkommazahl mit einfacher Genauigkeit und einem Zeitstempel CP56Time2a
M_IT_TB_1 | 37 | 0x25 | Zählwerte mit einem Zeitstempel CP56Time2a
M_EP_TD_1 | 38 | 0x26 | Schutzereignis mit einem Zeitstempel CP56Time2a
M_EP_TE_1 | 39 | 0x27 | Gepackte Anregungen des Schutzes mit einem Zeitstempel CP56Time2a
M_EP_TF_1 | 40 | 0x28 | Gepackte Auslösungen des Schutzes mit einem Zeitstempel CP56Time2a
ASDU_TYPE_41..44 | 41..44 | 0x29..0x2C | Reserviert (Standardbereich)
C_SC_NA_1 | 45 | 0x2D | Einzelbefehl
C_DC_NA_1 | 46 | 0x2E | Doppelbefehl
C_RC_NA_1 | 47 | 0x2F | Stufenstellbefehl
C_SE_NA_1 | 48 | 0x30 | Sollwert-Stellbefehl, normierter Wert
C_SE_NB_1 | 49 | 0x31 | Sollwert-Stellbefehl, skalierter Wert
C_SE_NC_1 | 50 | 0x32 | Sollwert-Stellbefehl, Gleitkommazahl mit einfacher Genauigkeit
C_BO_NA_1 | 51 | 0x33 | Bitmusterbefehl von 32 bit
ASDU_TYPE_52..57 | 52..57 | 0x34..0x39 | Reserviert (Standardbereich)
C_SC_TA_1 | 58 | 0x3A | Einzelbefehl mit einem Zeitstempel CP56Time2a
C_DC_TA_1 | 59 | 0x3B | Doppelbefehl mit einem Zeitstempel CP56Time2a
C_RC_TA_1 | 60 | 0x3C | Stufenstellbefehl mit einem Zeitstempel CP56Time2a
C_SE_TA_1 | 61 | 0x3D | Sollwert-Stellbefehl, normierter Wert mit einem Zeitstempel CP56Time2a
C_SE_TB_1 | 62 | 0x3E | Sollwert-Stellbefehl, skalierter Wert mit einem Zeitstempel CP56Time2a
C_SE_TC_1 | 63 | 0x3F | Sollwert-Stellbefehl, Gleitkommazahl mit einfacher Genauigkeit und einem Zeitstempel CP56Time2a
C_BO_TA_1 | 64 | 0x40 | Bitmusterbefehl von 32 bit mit einem Zeitstempel CP56Time2a
ASDU_TYPE_65..69 | 65..69 | 0x41..0x45 | Reserviert (Standardbereich)
M_EI_NA_1 | 70 | 0x46 | Initialisierungsende
ASDU_TYPE_71..99 | 71..99 | 0x47..0x63 | Reserviert (Standardbereich)
C_IC_NA_1 | 100 | 0x64 | (General-, Stations-) Abfragebefehl
C_CI_NA_1 | 101 | 0x65 | Zähler-Abfragebefehl
C_RD_NA_1 | 102 | 0x66 | Abfragebefehl
C_CS_NA_1 | 103 | 0x67 | Uhrzeit-Synchronisierungsbefehl
C_TS_NA_1 | 104 | 0x68 | Prüfbefehl
C_RP_NA_1 | 105 | 0x69 | Prozess-Rücksetzbefehl
C_CD_NA_1 | 106 | 0x6A | Befehl zur Telegrammlaufzeit-Erfassung
C_TS_TA_1 | 107 | 0x6B | Prüfbefehl mit einem Zeitstempel CP56Time2a
ASDU_TYPE_108..109 | 108..109 | 0x6C..0x6D | Reserviert (Standardbereich)
P_ME_NA_1 | 110 | 0x6E | Parameter für Messwerte, normierter Wert
P_ME_NB_1 | 111 | 0x6F | Parameter für Messwerte, skalierter Wert
P_ME_NC_1 | 112 | 0x70 | Parameter für messwerte, Gleitkommazahl mit einfacher Genauigkeit
P_AC_NA_1 | 113 | 0x71 | Parameter für Aktivierung
ASDU_TYPE_114..119 | 114..119 | 0x72..0x77 | Reserviert (Standardbereich)
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 | Verzeichniss
ASDU_TYPE_127..255 | 127..255 | 0x7F..0xFF | Reserviert (benutzerdefinierter Bereich)


M_SP_NA_1

Single-point information without time tag.

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


M_SP_TB_1

Single-point information with CP56Time2a time tag.

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


M_DP_NA_1

Double-point information without time tag.

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


M_DP_TB_1

Double-point information with CP56Time2a time tag.

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


M_ST_NA_1

Step position information without time tag.

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


M_ST_TB_1

Step position information with CP56Time2a time tag.

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


M_BO_NA_1

Bitstring of 32 bits without time tag.

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


M_BO_TB_1

Bitstring of 32 bits with CP56Time2a time tag.

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


M_ME_NA_1

Measured value, normalized value without time tag.

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


M_ME_TD_1

Measured value, normalized value with CP56Time2a time tag.

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


M_ME_ND_1

Measured value, normalized value without quality descriptor.

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


M_ME_NB_1

Measured value, scaled value without time tag.

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


M_ME_TE_1

Measured value, scaled value with CP56Time2a time tag.

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


M_ME_NC_1

Measured value, short floating point value without time tag.

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


M_ME_TF_1

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

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


M_IT_NA_1

Integrated total without time tag.

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


M_IT_TB_1

Integrated total with CP56Time2a time tag.

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


C_SC_NA_1

Single command without time tag.

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


C_SC_TA_1

Single command with CP56Time2a time tag.

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


C_DC_NA_1

Double command without time tag.

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


C_DC_TA_1

Double command with CP56Time2a time tag.

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


C_RC_NA_1

Regulating step command without time tag.

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


C_RC_TA_1

Regulating step command with CP56Time2a time tag.

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


C_SE_NA_1

Set-point command, normalized value without time tag.

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


C_SE_TA_1

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

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


C_SE_NB_1

Set-point command, scaled value without time tag.

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


C_SE_TB_1

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

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


C_SE_NC_1

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

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


C_SE_TC_1

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

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


C_BO_NA_1

Bitstring of 32 bits without time tag.

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


C_BO_TA_1

Bitstring of 32 bits with CP56Time2a time tag.

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


C_TS_TA_1

Test command with CP56Time2a time tag.

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


M_EI_NA_1

End of initialization.

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


C_CS_NA_1

Clock synchronisation command

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


C_IC_NA_1

Interrogation command.

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


C_CI_NA_1

Counter interrogation command.

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


C_RP_NA_1

Reset process command.

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


C_RD_NA_1

Read command.

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


M_EP_TD_1

Event of protection equipment with CP56Time2a time tag.

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


M_EP_TE_1

Packed start events of protection equipment with CP56Time2a time tag.

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


M_EP_TF_1

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

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


M_PS_NA_1

Packed single point information with status change detection.

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


P_ME_NA_1

Parameter of measured value, normalized value.

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


P_ME_NB_1

Parameter of measured value, scaled value.

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


P_ME_NC_1

Parameter of measured value, short floating point value.

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


P_AC_NA_1

Parameter activation.

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


FB_IEC870_5_104TProtocol

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

FUNCTION_BLOCK FB_IEC870_5_104TProtocol

Ab der Produktversion: TwinCAT PLC Library IEC870-5-104 Unterstation v2.0.6 und höher.

Der Kommunikationsbaustein FB_IEC870_5_104TProtocol implementiert die ACPI-Funktionen der IEC60870-5-104-Norm ( Start/Stop-Data Transfer, Test-Frames, Send/Receive Frame-Counter usw.). Beim Protokollfehler wird ein entsprechender Fehlercode am Ausgang des Funktionsbausteins ausgegeben und die Datenübertragung unterbrochen. Um den Datenaustausch erneut aktivieren zu können, muss die Aktion INIT aufgerufen werden. Es werden dabei z.B. die Framezähler, Sende- und der TX/RX-Datenpuffer zurückgesetzt. Der Kommunikationsbaustein erwartet eine TX/RX-Datenpuffervariable. Diese Variable muss per VAR_IN_OUT an den Baustein übergeben werden.

Der Funktionsbaustein besitzt folgende Aktionen:

  • INIT (Führt eine Initialisierung des Funktionsbausteins durch);
  • STARTDT (Sendet ein Start-Data-Transfer-Frame an den Kommunikationspartner);
  • STOPDT (Sendet Stop-Data-Transfer-Frame an den Kommunikationspartner);

Verbindungsaufbau

Mit einem gesonderten Baustein z.B. FB_ServerClientConnection muss die TCP/IP-Verbindung auf- und abgebaut werden. Die SPS-Applikation kann dadurch selber auf mögliche Protokollfehler reagieren und die Verbindung schließen oder z.B. den Dienst Process-Reset implementieren. Dieser Baustein liefert am Ausgang ein Verbindungshandle, den Verbindungsstatus und Informationen über Fehler die beim Verbindungsaufbau/-abbau aufgetreten sind.
Das Verbindungshandle wird von dem Kommunikationsbaustein benötigt.

Protokollkonfiguration

Der Kommunikationsbaustein besitzt eine protPara-Variable vom strukturierten Typ. Über diese Variable können Protokollparameter z.B. iK, iW, Start/Stop-Datentransfer-Verhalten usw. konfiguriert werden.

VAR_IN_OUT

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

buffer: TX/RX Datenpuffer.

VAR_INPUT

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

sSrvNetID: String mit der Netzwerkadresse des TwinCAT TCP/IP Connection Servers. Für den lokalen Rechner (default) kann auch ein Leerstring angegeben werden.

hSocket: Das TCP/IP-Verbindungshandle des Kommunikationspartners dessen Daten empfangen oder gesendet werden sollen.

protPara: IEC60870-5-104-Protokollparameter.

bOutDbg:: Aktiviert/deaktiviert die Debug-Ausgabe der TCP/IP-Frames in der TwinCAT System Manager-Loggeransicht.

VAR_OUTPUT

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

bError: Dieser Ausgang wird auf TRUE gesetzt, sobald ein Fehler bei der Datenübertragung aufgetreten ist.

nErrID: Liefert bei einem gesetzten bError-Ausgang einen Fehlercode;

eDTState: Status des IEC60870-5-104-Datenaustauschs (STARTDT, STOPDT).

Beispiel:

Beispielprojekte: IEC60870-5-104 Transport Interface

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10.0 Build >= 1301 | PC oder CX (x86) CX (ARM) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; werden automatisch eingebunden )


F_iecApdu104ToAsduLen

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

FUNCTION F_iecApdu104ToAsduLen

Ab der Produktversion: TwinCAT PLC Library IEC60870-5-104 Unterstation v2.0.6 und höher.

Die Funktion berechnet für das IEC 60870-5-104 Protokoll die maximal verfügbare ASDU-Octetlänge anhand der konfigurierten APDU-Länge. Die maximal verfügbare ASDU-Länge wird z.B. bei der Konfiguration der ST_IEC870_5_101TBuffer-Variablen benötigt. Diese Datenstruktur (TX/RX-Datenpuffer) wird beim Datenaustausch über das IEC60870-5-104 Transport Interface benutzt.

FUNCTION F_iecApdu104ToAsduLen: BYTE

VAR_INPUT
    APDULength : BYTE;
END_VAR

APDULength : Die verfügbare APDU-Länge (siehe Kompatibilitätsliste).

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9.0 Build >= 1030 | PC oder CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Lib werden automatisch eingebunden )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


F_GetVersionTcIEC870_5_104

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

FUNCTION F_GetVersionTcIEC870_5_104

Mit dieser Funktion können Versionsinformationen der SPS-Bibliothek ausgelesen werden.

FUNCTION F_GetVersionTcIEC870_5_104: UINT

VAR_INPUT
    nVersionElement : INT;
END_VAR

nVersionElement : Versionselement, das gelesen werden soll. Mögliche Parameter:

  • 1 : major number;
  • 2 : minor number;
  • 3 : revision number;
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9.0 Build >= 1030 | PC oder CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Lib werden automatisch eingebunden )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


ST_IEC870_5_104ProtocolParams

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

TYPE ST_IEC870_5_104ProtocolParams

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

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

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

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

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

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

t0 : Nicht benutzt, reserviert.

t1 : Max. Timeout-Zeit für eine Antwort auf ein STARTDTAct-, STOPDTAct- oder TESTFRAct-Frame.

t2 : Spätestens nach dieser Zeit wird ein S-Frame versendet.

t3 : Spätestens nach dieser Zeit wird ein Test-Frame versendet.

iK : Spätestens nach diesem gesendeten APDUs im I-Format, welches nicht quittiert wurde, wird die Verbindung geschlossen.

iW : Spätestens nach dem Empfang von w APDUs im I-Format quittiert der Empfänger den Empfang.

bSFrameACK : Sende S-Frames.

bTESTFRAct : Sende Test-Frames.

bDTControlled : Warte auf STARTDT-, STOPDT-Frame vom Master.

bControlDT : Nur bei der Masterkonfiguration: Sende STARTDT zum Slave.

bSTARTDTCon : Sende STARTDT Bestätigung

bSTOPDTCon : Sende STOPDT Bestätigung.

bTESTFRCon : Sende TESTFR Bestätigung.

eAcceptMode : Legt fest ob Verbindungen zu allen Remote-Clients, oder nur zu Clients mit bestimmter Host- und Port-Adresse zugelassen werden sollen. Default: Akzeptiere alle ankommenden Verbindungen.

sRemoteHost : Host-Adresse des Remote-Clients. Bei eAcceptMode = eACCEPT_ALL wird dieser Parameter ignoriert.

nRemotePort : Port-Adresse des Remote-Clients. Bei eAcceptMode = eACCEPT_ALL wird dieser Parameter ignoriert.

APDULength : Maximale Länge der APDU.

bThrottleMode: Implementiert ab IEC870-5-104 slave library v2.0.0 und höher. Die TCP/IP sockets werden pollend aus der SPS abgefragt. Mit diesem Parameter kann die Anzahl der pollenden Lesezugriffe und damit auch die Systemauslastung reduziert werden, besonders dann wenn nur selten Daten empfangen werden (z.B. Generalabfrage oder Uhrzeitsynchronisationsbefehle).

  • FALSE: Nach jedem Lesezugriff folgt der nächste auch wenn keine neuen Daten empfangen wurden (höhere Systemauslastung);
  • TRUE: Nach jedem Lesezugriff ,der keine neuen Daten liefert wird eine Verzögerung eingefügt. Der nächste Lesezugriff wird danach verzögert ausgeführt (kleinere Systemauslastung). Nach jedem Lesezugriff, der neue Daten liefert, wird der nächste ohne Verzögerung ausgeführt. Die max. Verzögerungszeit <= 2 Sekunden.

bPackFrames: Implementiert ab IEC870-5-104 slave library v2.0.4 und höher. Per Default wird mit einem TCP/IP-Send-Aufruf nur eine einzelne APDU verschickt. Wenn Sie diesen Parameter auf TRUE setzen, können Sie die Sende-Performance wesentlich erhöhen und so die Sende-Buffer-Überläufe verringern.

  • FALSE: Für eine APDU wird ein TCP/IP-Send-Aufruf benötigt. Ca. alle 3 SPS-Zyklen kann max. eine APDU verschickt werden;
  • TRUE: Mehrere APDUs werden zu einem größeren TCP/IP-Block (maximal aber iK-Frames) zusammengefasst und mit einem TCP/IP-Send-Aufruf verschickt;

bRetainBuffer: Implementiert ab IEC870-5-104 slave library v3.0.14 und höher. In der Standardeinstellung (FALSE) werden die internen Tc/Rx-Puffer beim Verbindungsabbruch gelöscht. Wenn dieses Flag auf TRUE gesetzt ist dann werden die noch nicht gesendeten ASDU's im internen Sendepuffer nicht gelöscht. Somit ist eine Offline-Pufferung von von ca. 100-200 Messwerten (abhängig von der ASDU-Größe) im RAM-Speicher möglich. Die Station entfernt immer dann die ASDUs aus dem Sendepuffer wenn deren Empfang bestätigt wurde. Bitte beachten Sie, dass die bereits gesendeten aber noch nicht bestätigten ASDUs auch im Puffer verbleiben und nächstes mal erneut gesendet werden. Möglicherweise empfängt die andere Station dann die Werte zwei Mal. Sie können dieses Verhalten über zwei weitere Parameter: bCOTFilter und cotFilter konfigurieren.

bCOTFilter: Implementiert ab IEC870-5-104 slave library v3.0.14 und höher. Aktiviert/deaktiviert die Filtermaske mit den Übertragungsursachen. Dieser Parameter ist nur dann gültig wenn auch der bRetainBuffer-Parameter auf TRUE gesetzt wurde. Bei jedem neuen Verbindungsaufbau wird intern eine SessionID hochgezählt. Diese SessionID wird immer an die empfangenen und gesendeten ASDUs angehängt. Dadurch können die ASDUs die noch nicht gesendet wurden und im Offline-Puffer verbleiben der alten Verbindung zugeordnet werden. Diese ASDUs können dann mit Hilfe der COT-Maske (cotFilter) gefiltert und verworfen werden (COT = cause of transfer). Dies ist manchmal notwendig wenn der andere Kommunikationspartner die wiederholten ASDUs nicht akzeptiert.

cotFilter: Implementiert ab IEC870-5-104 slave library v3.0.14 und höher. Filtermaske mit Übertragungsursachen (COT = Cause of transfer). Dieser Parameter ist nur dann gültig wenn auch der bRetainBuffer-Parameter und bCOTFilter-Parameter gesetzt wurde. Die Übertragungsursache der zu sendenden ASDUs wird nur dann geprüft wenn deren SessionID nicht zu der aktuellen SessionID passt (d.h. die ASDUs die aus der vorherigen Verbindung stammen). Jedes Bit entspricht einer Übertragungsursache. Die Übertragungsursache wird nur dann überprüft wenn das entsprechende Bit gesetzt wurde.

Die Übertragungsursachen sind auf folgende Weise in den Bits kodiert:

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

... usw.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9.0 Build >= 1030 | PC oder CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Lib werden automatisch eingebunden )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


E_IEC870_5_104DataTransferState

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

TYPE E_IEC870_5_104DataTransferState

TYPE E_IEC870_5_104DataTransferState :
(
    eIEC870_STOPDT, (* data exchange deactivated *)
    eIEC870_STARTDT, (* data exchange activated *)
    eIEC870_STOPDT_PENDING, (* waiting for STOPDT confirmation (master only)*)
    eIEC870_STARTDT_PENDING (* waiting for STARTDT confirmation (master only)*)
);
END_TYPE
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9.0 Build >= 1030 | PC oder CX (x86) | TcIEC870_5_104.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_101.Lib werden automatisch eingebunden )
TwinCAT v2.10.0 Build >= 1301 | CX (ARM)


Error codes overview

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

IEC 60870-5-104 Transport Interface Fehlercodes

Fehlercodes (Hex) | Fehlercodes (Dez) | Fehlerquelle | Beschreibung
0x00000000-0x00007800 | 0-30720 | TwinCAT System Fehler | TwinCAT System Fehler (ADS-Fehlercodes inklusive)
0x00008000-0x000080FF | 32768-33023 | Interner TwinCAT TCP/IP Connection Server Fehlercode | Interne Fehler des TwinCAT TCP/IP Connection Servers
0x00008100-0x000081FF | 33024-33279 | Interne IEC60870-5-10x Fehler | Interne IEC60870-5-10x Fehler
0x80070000-0x8007FFFF | 2147942400-2148007935 | Fehlerquelle = Fehlercode - 0x80070000 = Win32 system error code | Win32 Systemfehler (Windows Sockets Fehlercodes inklusive)


Fehlersuche

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

Fehlersuche/Diagnose

1. Überprüfen Sie die in dieser Dokumentation beschriebenen Hardware- und Softwareanforderungen (TwinCAT-Version, CE Image-Version usw.).

2. Überprüfen Sie die Installationshinweise (z.B. Installation der CAB-Files auf einem CE System).

3. Bei Verbindungsproblemen kann der PING-Befehl dazu benutzt werden, um festzustellen ob der Kommunikationspartner über die Netzwerkverbindung erreichbar ist. Wenn dies nicht der Fall ist überprüfen Sie die Netzwerkkonfiguration und die Firewall-Einstellungen.

4. Überprüfen Sie ob die Netzwerkadresse, Portnummer die Sie an die Funktion F_CreateServerHnd() bzw. an den Funktionsbaustein FB_ClientServerConnection()/FB_ServerClientConnection() übergeben richtig sind.

5. Überprüfen Sie ob der Funktionsbaustein einen Fehlercode ausgibt. Die Dokumentation zu den Fehlercodes finden Sie hier: Übersicht der Fehlercodes.

6. Überprüfen Sie die am Funktionsbaustein eingestellten Protokolparameter (iK, iW, t0, t1, t2, t3, APDULength, usw.). Vergleichen Sie die Protokolparameter mit den Parametern des Kommunikationspartners.

7. Überprüfen Sie die am TX/RX-Datenpuffer (instanz von ST_IEC870_5_101TBuffer) konfigurierten Adresslängen: Länge der ASDU-Adresse, Länge der Informationsobjekt-Adresse, Länge der Übertragungsursache, max. ASDU-Länge. Vergleichen Sie die Adresslängen mit der Konfiguration des Kommunikationspartners.

8. Überprüfen Sie die Konfiguration der Datenpunkte (Typ, Adresse des Informationsobjektes usw.).

9. Überprüfen Sie ob der andere Kommunikationspartner einen Fehlercode ausgibt.

10. Aktivieren Sie die Debugausgaben beim Aufbauen und Abbauen der Verbindung und/oder der ASDU Daten. Öffnen Sie den TwinCAT System Manager und aktivieren das LogView-Fenster. Prüfen Sie die Debugausgaben.

11. Überprüfen Sie die Verwendung des FB_SocketCloseAll()-Funktionsbausteins und des LISTEN_MODE_CLOSEALL-Parameters wenn Sie über mehrere TCP/IP Verbindungen (Server/Clients) in einem Laufzeitsystem kommunizieren.
Bei mehreren Verbindungen aktivieren Sie nur eine Instanz des FB_SocketCloseAll()-Funktionsbausteins einmalig im Initialisierungsschritt beim Programmstart. Der LISTEN_MODE_CLOSEALL-Parameter darf in diesem Fall nicht mehr verwendet werden.

12. Eine komplette Aufzeichnung der Netzwerkkommunikation kann mit Sniffer-Tools wie Wireshark durchgeführt werden. Die Aufnahme kann dann vom Beckhoff-Supportpersonal analysiert werden.


Beispiele: Transport Interface

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

Beispiele

In Beispielprojekten sind folgende Stationsparameter für die Unterstation oder Zentralstation eingestellt:

  • Server host address: 127.0.0.1 (Sie müssen mindestens diesen Parameter an Ihre Zielplattform anpassen!)
  • Server port addres: 2404
  • k: 12
  • w: 8
  • t0: 30s
  • t1: 15s
  • t2: 10s
  • t3: 20s
  • Cause of transfer size: 2 octets
  • Common ASDU address size: 2 octets
  • Information object address size: 3 octets
  • Originator address: 1
  • Common ASDU address: 7
  • Max. APDU length: 253

SPS Project Beschreibung
LowLevelSlaveSample.pro Einfache Slave-Applikation die das TwinCAT IEC60870-5-104 Transport Interface nutzt. MAIN implementiert den Verbindungsaufbau/-abbau und einen einfachen TX/RX-Datenaustausch:
  • Datenpunkte in Überwachungsrichtung: M_SP_NA_1(IOA:=100) und
            M_BO_TB_1(IOA:=400). Datenpunkte in Kontrollrichtung:
            C_SC_NA_1(IOA:=10);
  • Einfache Implementierung einer Uhrzeitsynchronisation: C_CS_NA_1(IOA:=0);
  • Einfache Implementierung einer Generalabfrage: C_IC_NA_1(IOA:=0);
  • Einfache Implementierung eines Einzehlbefehls: C_SC_NA_1(IOA:=10);
  • Einfache Implementierung einer Zählerabfrage: C_CI_NA_1(IOA:=0);
LowLevelMasterSample.pro Einfache Master-Applikation die das TwinCAT IEC60870-5-104 Transport Interface nutzt. MAIN implementiert den Verbindungsaufbau/-abbau und in einen einfachen TX/RX-Datenaustausch:
  • Die Beispielapplikation sendet alle 20 Sekunden eine Generalabfrage: C_IC_NA_1(IOA:=0);
  • Eine steigenden Flanke an der bSCmd-Variablen sendet ein einfaches Befehl: C_SC_NA_1(IOA:=10);
  • Eine steigenden Flanke an der bClockSyn-Variablen sendet ein Uhrzeitsynchronisationsbefehl: C_CS_NA_1(IOA:=0);


Firewall Einstellungen

Die TwinCAT SPS Bibliothek: IEC 60870-5-104 Unterstation (slave/server) verwendet während der Kommunikation das TCP/IP als Transportprotokoll. Es ist daher darauf zu achten, daß der entsprechende TCP-Port bei Benutzung einer Firewall frei geschaltet wird. Die untere Tabelle listet standard Ports auf, die bei der Benutzung einer Firewall zu berücksichtigen sind.

Beschreibung | Typ | Protokoll | Port
IEC 60870-5-104 telecontrol protocol | Protocol | TCP | 2404

Die Konfiguration der Windows Firewall wird über den entsprechenden Dialog in der Systemsteuerung vorgenommen. Weitere Informationen zur Konfiguration finden Sie in der Windows bzw. Firewall Dokumentation.

Wichtiger Hinweis:

Achten Sie bitte bei einem Embedded Controller ohne Monitoranschluss und USB darauf, dass Sie den Port für Remote Display (Windows CE) oder Remote Desktop (Windows XP / Windows Vista) in der Firewall frei schalten. Ansonsten haben Sie keine Möglichkeit mehr, den Rechner über das Netzwerk zu administrieren.