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 Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem Zeitpunkt veröffentlichte Dokumentation zu verwenden.

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.
Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern.
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®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®, TwinSAFE®, XFC®, XTS® und XPlanar® 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, EP1456722, EP2137893, DE102015105702
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert durch die Beckhoff Automation GmbH, Deutschland.

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_102Link.Lib implementiert eine Schnittstelle über die einzelne ASDUs (Dienstdateneinheiten der Anwendungsschicht ) über die seriellen Schnittstellen des PCs und die Beckhoff KL6xxx-/EL6xxx-Klemmen verschickt und empfangen werden können. Innerhalb der Protokollstruktur liegt diese Schnittstelle oberhalb der Verbindungsschicht und implementiert bereits die nötigen Prozeduren und Übertragungstelegrammformate. Anwendungsfunktionen wie z.B. Abruf der einzelnen Zählerstände oder der Produktidentifikation sind in der Schnittstelle nicht implementiert, der Anwender kann aber mit Hilfe der Schnittstelle diese Anwendungsfunktionen selber implementieren.

Die Endapplikation (Implementierung einer Zentralstation) wird auf der Software-Schnittstelle der SPS-Bibliothek aufgesetzt. Anders als bei den 101/104-TwinCAT Supplement Produkten steht dem SPS-Programmierer bei der IEC60870-5-102-Protokollimplementierung nur die sogenannte "Low level"-Schnittstelle zur Verfügung. Der Grund: Die meisten Unterstationen (Zählwerteinrichtungen) besitzen viele Herstellerspezifische oder Gerätespezifische Parameterdaten oder Informationen. Die "Low level"-Schnittstelle ermöglicht einen uneingeschränkten Zugriff auf all diese Daten. Im Folgenden werden die Eigenschaften dieser Schnittstelle kurz beschrieben.

"Low level"-Schnittstelle: IEC 60870-5-102 Serial Link 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. information object address, record address usw); Weil nur die benötigten Dienste (abhängig vom Gerät) implementiert werden kann eine hohe Performance erreicht werden; Hohe Performace bei vielen Daten bzw. Zählwerten;

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

Protokollstruktur des Endsystems:

Auswahl von Anwendungsfunktionen aus IEC 60870-5-5 | Anwenderprozess
 | Anwendungsschicht (7)
Auswahl von ASDU (Dienstdateneinheiten der Anwendungsschicht) aus IEC 60870-5-3, IEC 60870-5-4 und IEC 60870-5-102
TwinCAT PLC Library: IEC 60870-5-102 Serial Link (low level) Transport Interface
N/A | Darstellungsschicht (6)
 | Sitzungsschicht (5)
 | Transportschicht (4)
 | Vermittlungsschicht (3)
unbalanced IEC 60870-5-2 IEC 60870-5-1 (FT 1.2) | Verbindungsschicht (2)
EIA RS485, RS232 (V.24), Fibre Optics | Physikalische Schicht (1)

Anmerkung: Die Schichten 3 bis 6 werden nicht benutzt.


Kompatibilitätsliste

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

Kompatibilitätsliste nach IEC 60870-5-102

für TwinCAT SPS Bibliothek: IEC 60870-5-102 Zentralstation (master).

Version: 1.1
Datum: 29.03.2011

Hier können Sie die Kompatibilitätsliste öffnen/abspeichern (gezipptes PDF).

Inhaltsverzeichnis:

  • Allgemeine Informationen

    • Projektinformationen

  • Kompatibilität

    • System oder Gerät
    • Netzkonfiguration
    • Physikalische Schicht
    • Verbindungsschicht
    • Anwendungsschicht
    • Auswahl genormter ASDU's
      • Prozessinformation in Überwachungsrichtung (slave->master)
      • Systeminformation in Überwachungsrichtung (slave->master)
      • Systeminformation in Steuerungsrichtung (master->slave)
    • Grundlegende Anwendungsfunktionen
      • Übertragung von Zählwerten
      • Abruf von Listen
      • Übertragung von Einzelmeldungen

  • Anhang

    • Beckhoff Support und Service
      • Beckhoff Support
      • Beckhoff Service
      • Beckhoff Firmenzentrale

Allgemeine Informationen

In dieser Kompatibilitätsliste finden Sie die unterstützten Funktionen innerhalb der IEC 870-5-102.

Die Kompatibilität der einzelnen Komponenten muß von allen Beteiligten für das jeweilige Projekt vereinbart werden.

Projektinformationen

Projekt-Nr.: ______________________________________________________________________________

Projekt: ______________________________________________________________________________

Zuständig: ______________________________________________________________________________

Datum: ______________________________________________________________________________

Kompatibilität

Aus den vorstehend festgelegten Parametersätzen und Alternativen sind Untermengen auszuwählen, um bestimmte Systeme für die Übertragung von Zählerständen zu erstellen.
Bestimmte Parameter wie die Anzahl der Oktette in der GEMEINSAMEN ADRESSE DER ASDU, schließen sich gegenseitig aus. Das bedeutet, dass nur ein Wert des festgelegten Parameters je System zulässig ist. Andere Parameter, wie der aufgelistete Satz unterschiedlicher Information in Steuerungs- und Überwachungsrichtung, erlauben die Festlegung des Gesamtumfangs oder von Untermengen, die für die gegebene Anwendung geeignet sind.

Die ausgewählten Parameter sollten in den weißen Kontrollfeldern wie folgt markiert werden:

Funktion oder ASDU wird nicht benutzt
Funktion oder ASDU wird wie genormt benutzt (Vorzugswert)

System oder Gerät

Systemfestlegung
Festlegungen für die Zentralstation
Festlegungen für die Unterstation

Netzkonfiguration

End-End-Konfiguration [en: Point-to-point] | Linienkonfiguration [en: Multipoint-partyline]
Mehrfach-End-End-Konfiguration [en: Multiple point-to-point] | Sternkonfiguration [en: Multipoint-star]

Physikalische Schicht

Übertragungsgeschwindigkeit:

100 bit/s | 2400 bit/s | 56000 bit/s
200 bit/s | 4800 bit/s | 64000 bit/s
300 bit/s | 9600 bit/s |
600 bit/s | 19200 bit/s |
1200 bit/s | 38400 bit/s |

Verbindungsschicht

Nach dieser anwendungsbezogenen Norm werden ausschließlich Telegrammformat FT 1.2, Einzelzeichen 1

und das feste Zeitüberwachungsintervall benutzt.

Adressfeld der Verbindungsschicht:

Nicht vorhanden (nur symmetrische Übertragung)
Ein Oktett
Zwei Oktette
Strukturiert
Unstrukturiert

Übertragungsprozedur der Verbindungsschicht:

Symmetrische Übertragung
Unsymmetrische Übertragung

Telegrammlänge:

Maximale Länge L: 255

Dienstfunktionen der Verbindungsschicht:

Rücksetzen des Anwendungsprozesses nicht vorhanden

Anwendungsschicht

Übertragungsbetriebsart für Anwendungsdaten

Nach dieser Anwendungsbezogenen Norm wird ausschließlich Betriebsart 1 (niedrigstwertiges Oktett zuerst) nach 4.10 von IEC 60870-5-4 benutzt.

Herstellerkodierung

(Herstellerbezogener Parameter)

Systemspezifische Kodierungen für verschiedene Hersteller

Nummer | Hersteller
1 |
2 |
... |
255 |

Adresse der Zähler-DEE (gemeinsame ASDU adresse)

(Systembezogener Paramter)

Ein Oktett Zwei Oktette

Signatur

(Systembezogener Paramter)

Signatur Keine Signatur

Listenadresse

(Systembezogener Parameter)

Grundwerte |  |
Periode 1 | Periodenzeit: |
Periode 2 | Periodenzeit: |
Periode 3 | Periodenzeit: |
Tageswerte | Monatswerte | Jahreswerte
Periode 1 | Periode 1 | Periode 1
Periode 2 | Periode 2 | Periode 2
Periode 3 | Periode 3 | Periode 3
Zählerstände vom Beginn der Abrechnungsperiode
Monatliche Abrechnungsperiode
Jährliche Abrechnungsperiode
Vierteljährliche Abrechnungsperiode (alle Drei Monate)
Älteste Einzelmeldung
Gesamtliste mit Einzelmeldungen
Teilliste 1 mit Einzelmeldungen
Teilliste 2 mit Einzelmeldungen
Teilliste 3 mit Einzelmeldungen
Teilliste 4 mit Einzelmeldungen

Tarifinformation

(Systembezogener Parameter)

Tarifinformation Keine Tarifinformation

Auswahl genormter ASDU

Prozessinformation in Überwachungsrichtung

<1> := Einzelmeldung mit Zeitmarke | M_SP_TA_2
<2> := Abrechnungszählerstände, je vier Oktette | M_IT_TA_2
<3> := Abrechnungszählerstände, je drei Oktette | M_IT_TB_2
<4> := Abrechnungszählerstände, je zwei Oktette | M_IT_TC_2
<5> := Periodisch rückgesetzte Abrechnungszählerstände, je vier Oktette | M_IT_TD_2
<6> := Periodisch rückgesetzte Abrechnungszählerstände, je drei Oktette | M_IT_TE_2
<7> := Periodisch rückgesetzte Abrechnungszählerstände, je zwei Oktette | M_IT_TF_2
<8> := Betriebszählerstände, je vier Oktette | M_IT_TG_2
<9> := Betriebszählerstände, je drei Oktette | M_IT_TH_2
<10> := Betriebszählerstände, je zwei Oktette | M_IT_TI_2
<11> := Periodisch rückgesetzte Betriebszählerstände, je vier Oktette | M_IT_TK_2
<12> := Periodisch rückgesetzte Betriebszählerstände, je drei Oktette | M_IT_TL_2
<13> := Periodisch rückgesetzte Betriebszählerstände, je zwei Oktette | M_IT_TM_2

Systeminformation in Überwachungsrichtung

<70> := Initialisierungsende | M_EI_NA_2
<71> := Hersteller- und Produktspezifikation der Zähler-DEE | P_MP_NA_2
<72> := Aktuelle Systemzeit der Zähler-DEE | M_TI_TA_2

Systeminformation in Steuerungsrichtung

<100>:= Abruf der Hersteller- und Produktspezifikation | C_RD_NA_2
<101>:= Abruf einer Liste von Einzelmeldungen mit Zeitmarke | C_SP_NA_2
<102>:= Abruf einer Liste von Einzelmeldungen mit Zeitmarke eines ausgewählten Zeitbereichs | C_SP_NB_2
<103>:= Abruf der aktuellen Systemzeit der Zähler-DEE | C_TI_NA_2
<104>:= Abruf der Abrechnungszählerstände der ältesten Messperiode | C_CI_NA_2
<105>:= Abruf der Abrechnungszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs | C_CI_NB_2
<106>:= Abruf der Abrechnungszählerstände einer bestimmten vergangenen Messperdiode | C_CI_NC_2
<107>:= Abruf der Abrechnungszählerstände einer bestimmten vergangenen Messperdiode und eines ausgewählten Adressbereichs | C_CI_ND_2
<108>:= Abruf periodisch rückgesetzter Abrechnungszählerstände der ältesten Messperiode | C_CI_NE_2
<109>:= Abruf periodisch rückgesetzter Abrechnungszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs | C_CI_NF_2
<110>:= Abruf periodisch rückgesetzter Abrechnungszählerstände einer bestimmten vergangenen Messperiode | C_CI_NG_2
<111>:= Abruf periodisch rückgesetzter Abrechnungszählerstände bestimmten vergangenen Messperiode und eines ausgewählten Adressbereichs | C_CI_NH_2
<112>:= Abruf der Betriebszählerstände der ältesten Messperiode | C_CI_NI_2
<113>:= Abruf der Betriebszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs | C_CI_NK_2
<114>:= Abruf der Betriebszählerstände einer bestimmten vergangenen Messperiode | C_CI_NL_2
<115>:= Abruf der Betriebszählerstände einer bestimmten vergangenen Messperiode und eines ausgewählten Adressbereichs | C_CI_NM_2
<116>:= Abruf priodisch rückgesetzter Betriebszählerstände der ältesten Messperiode | C_CI_NN_2
<117>:= Abruf priodisch rückgesetzter Betriebszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs | C_CI_NO_2
<118>:= Abruf priodisch rückgesetzter Betriebszählerstände einer bestimmten vergangenen Messperiode | C_CI_NP_2
<119>:= Abruf priodisch rückgesetzter Betriebszählerstände einer bestimmten vergangenen Messperiode und eines ausgewählten Adressbereichs | C_CI_NQ_2
<120>:= Abruf der Abrechnungszählerstände eines ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs | C_CI_NR_2
<121>:= Abruf periodisch rückgesetzter Abrechnungszählerstände eines ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs | C_CI_NS_2
<122>:= Abruf der Betriebszählerstände eines ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs | C_CI_NT_2
<123>:= Abruf periodisch rückgesetzter Betriebszählerstände eine ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs | C_CI_NU_2

Grundlegende Anwendungsfunktionen

Übertragung von Zählwerten

(Stationsbezogener Parameter)

Anzahl der Abrechungszählerstände:
Anzahl der periodisch rückgesetzten Abrechnungszählerstände:
Anzahl der Betriebszählerstände:
Anzahl der periodisch rückgesetzten Betriebszählerstände:
Zählerstände werden nur durch Abruffunktion übertragen (einschließlich der jüngsten Periode)

Abruf von Listen

(Stationsbezogener Parameter)

Listenumfang:
Gesamtliste | Anzahl der Einzelmeldungen:
Teilliste 1 | Anzahl der Einzelmeldungen:
Teilliste 2 | Anzahl der Einzelmeldungen:
Teilliste 3 | Anzahl der Einzelmeldungen:
Teilliste 4 | Anzahl der Einzelmeldungen:
Keine Liste, Einzelmeldungen werden spontan übertragen

Übertragung von Einzelmeldungen

(Stationsbezogener Parameter)

Übertragung örtlich quittierter Einzelmeldungen
Keine Übertragung örtlich quittierter Einzelmeldungen

Anhang

Beckhoff Support und Service

Beckhoff und seine weltweiten Partnerfirmen bieten einen umfassenden Support und Service,
der eine schnelle und kompetente Unterstützung bei allen Fragen zu Beckhoff Produkten und Systemlösungen zur Verfügung stellt.

Der Beckhoff Support und Service steht ihnen weltweit zur Verfügung und ist über Telefon, Fax oder E-Mail erreichbar.
Die Kontaktadressen ihres Landes entnehmen Sie bitte der Liste der Beckhoff Niederlassungen und Partnerfirmen.

Beckhoff Support

Der Support bietet Ihnen einen umfangreichen technischen Support, der Sie nicht nur bei dem Einsatz einzelner Beckhoff Produkte,
sondern auch bei weiteren umfassenden Dienstleistungen unterstützt:

  • Weltweiter Support;
  • Planung, Programmierung und Inbetriebnahme komplexer Automatisierungssysteme;
  • Umfangreiches Schulungsprogramm für Beckhoff Systemkomponenten;

Hotline: + 49 (0) 5246/963-157
Fax: + 49 (0) 5246/963-9157
E-Mail: support@beckhoff.com

Beckhoff Service

Das Beckhoff Service Center unterstützt Sie rund um den After-Sales-Service:

  • Vor-Ort-Service;
  • Reparaturservice;
  • Ersatzteilservice;
  • Hotline-Service

Hotline: + 49 (0) 5246/963-460
Fax: + 49 (0) 5246/963-479
E-Mail: service@beckhoff.com

Weitere Support- und Service-Adressen entnehmen Sie bitte unseren Internetseiten, unter http://www.beckhoff.de.
Dort finden Sie auch Dokumentation zu Beckhoff Komponenten.

Beckhoff Firmenzentrale

Beckhoff Automation
Eiserstr. 5
33415 Verl
Germany

Telefon: + 49 (0) 5246/963-0
Fax: + 49 (0) 5246/963-198
E-Mail: info@beckhoff.de
Web: www.beckhoff.de


Einführung

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

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

  • Eine Instanz des Kommunikationsbausteins: FB_IEC870_5_102TProtocol;
  • Eine Instanz des TX/RX-Datenpuffers: ST_IEC870_5_102TBuffer;
  • Eine Instanz des Funktionsbausteins zur Manipulation des TX/RX-Datenpuffers: FB_IEC870_5_102TBufferCtrl;


Einführung: Übersicht

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

Einführung (Tutorial)

Die Einführung ist eine Anleitung wie Sie in der TwinCAT SPS eine IEC60870-5-102 Zentralstation (master) implementieren und konfigurieren können.

Weitere Themen in Vorbereitung...


Einführung: Glossar

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

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)
Primärstation | Die Primärstation sendet Befehle (Anfragen) an die Sekundärstation und steuert/kontrolliert so die Datenübertragung der Sekundärstation.
Sekundärstation | Die Sekundärstation antwortet auf die Anfragen der Primärstation.
Kombinierte Station | Kombinierte Stationen können die Rolle der Primärstation und Sekundärstation annehmen (symetrische Übertragung, balanced mode).
Symetrische Übertragung (balanced mode) | Beide Stationen können als Primärstation oder Sekundärstation agieren und die Datenübertragung initialisieren.
Unsymetrische Übertragung (unbalanced mode) | Die Datenübetragung wird immer durch die Primärstation initiert und gesteuert. Die Zentralstation agiert immer als Primärstation und die Unterstation als Sekundärstation.


Einführung: Fehlersuche und Diagnose

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

Fehlersuche und Diagnose

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

  1. Hexadezimale Ausgabe der ASDU's (Telegramme 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_102TBuffer -Membervariable eDbg aktiviert die Debugausgabe;
  2. Hexadezimale Ausgabe der APDU's (Serial-Port-Telegramme). Pro Zeile werden 32-APDU-Datenbytes als hexadezimale Zahlen ausgegeben. Ähnlich wie bei 1. werden längere APDU's auf mehrere Zeilen verteilt. Die FB_IEC870_5_102TProtocol-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 zwei unterschiedlichen Typen der Meldungen wurden mit entsprechenden Zahlen markiert.

Weitere Diagnosetools:

  • Portmon for Windows (v3.02, Windows Sysinternals);
  • Diverse Protokoll-Test-Suit-Produkte;


Einführung: Konfiguration der seriellen Schnittstelle

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

Konfiguration der seriellen Schnittstellen

  • Konfiguration der standard PC COMx-Schnittstellen
  • Konfiguration der seriellen Busklemmen KL6xxx
  • Konfiguration der seriellen Busklemmen EL6xxx

1. Konfiguration der standard PC COMx-Schnittstellen

Die serielle Schnittstelle kann nur in PC/CX-Systemen eingefügt werden.

Mit der rechten Maustaste "E/A Geräte" anklicken. "Gerät anfügen" auswählen. Unter "Verschiedenes" die "Serielle Schnittstelle" auswählen. Anschließend nachfolgende Einstellungen vornehmen.

1.1. Karteireiter Serial Port

Serielle Schnittstelle COM1

1.2. Karteireiter Eigenschaften

Die Option KL6xxx1 Mode (Emulation) anwählen und dann die Kommunikationsparameter einstellen:

Baudrate, hier 19200 Baud, 8 Datenbits, Parity=even, 1 Stoppbit

2. Konfiguration der seriellen Busklemmen KL6xxx

Die Schnittstelle wird in der TwinCAT SPS durch die Instanz des FB_IEC870_SerialLineCtrl-Funktionsbausteins konfiguriert. Die Kommunikationsparameter wie Baudrate, Parity usw. sind an diesem Baustein einzustellen.

2.1 RS485 Betriebsmodus

Bei der RS485 Betriebsart (z.B. KL6041) werden die Daten in halbduplex Übertragung ausgetauscht. Im RS485 Betriebsmodus werden die Sende- und Empfangsleitungen miteinander verbunden. Dadurch empfängt die Klemme nicht nur die Daten anderer Teilnehmer, sondern auch ihre eigenen Sendedaten. Diese Daten können die Kommunikation stören. Für den Halbduplex-Modus muss der Handshake-Eingang des FB_IEC870_SerialLineCtrl-Funktionsbausteins auf den Wert: RS485_HALFDUPLEX gesetzt werden.

3. Konfiguration der seriellen Busklemmen EL6xxx

Die serielle Schnittstelle wird im TwinCAT System Manager Karteireiter CoE-Online (CoE=CanOpen over EtherCAT) eingestellt. Der Karteireiter steht nur bei Online-Zugriff auf die Klemme zur Verfügung, d.h., ist der System Manger nicht mit der Hardware verbunden, können keine Einstellungen verändert werden. Die Einstellungen werden in der Klemme Spannungsausfallsicher abgespeichert. Nach einem Scannen der Klemmen müssen diese Daten nicht neu eingegeben werden. Bei einem Tausch der Klemme werden die Daten aus der neuen Klemme aktiv und müssen demzufolge wieder angepasst werden. Um das zu Verhindern, müssen im Karteireiter Startup die geänderten Daten eingetragen werden. Beim Systemstart werden die Daten aus dem Reiter Startup in die Klemme übertragen. Ein Tausch der Klemme ist somit Problemlos möglich. Nach einem Scannen der Klemmen müssen die Daten im Reiter Startup neu eingegeben werden.

3.1. Karteireiter CoE

(1) Baudrate, hier 19200 Baud

(2) Date frame, 8E1 entspricht 8 Datenbits, Parity=even, 1 Stoppbit

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

Mit einem Doppelklick auf die entsprechende Zeile wird ein Menü geöffnet, in dem die Einstellungen geändert werden können.

3.1.1 RS485 Betriebsmodus

Bei der RS485 Betriebsart werden die Daten in halbduplex Übertragung ausgetauscht. Im RS485 Betriebsmodus werden die Sende- und Empfangsleitungen miteinander verbunden. Dadurch empfängt die Klemme nicht nur die Daten anderer Teilnehmer, sondern auch ihre eigenen Sendedaten. Diese Daten können die Kommunikation stören. Mit der Option "Enable half duplex" im "COM Settings"-Objekt kann dies unterdrückt werden (Index 8000:06).

3.2. Karteireiter Startup

Alle vom Standard abweichende Einstellungen müssen in die Startup Liste eingetragen werden. Beim Systemstart werden die Daten aus dem Reiter Startup in die Klemme übertragen. Ein Tausch der Klemme ist somit Problemlos möglich. Nach einem Scannen der Klemmen müssen die Daten im Reiter Startup neu eingegeben werden.

Baudrate, hier 19200 Baud

Date frame, 8E1 entspricht 8 Datenbits, Parity=even, 1 Stoppbit

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


Telegram structure

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

IEC 60870-5-102 telegram structure

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

Frame with variable length

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

byte\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |  |  |
0 | Start byte 1 (0x68) |  |  |  |  |  |  |  | Header | LPCI | LPDU
1 | Block length |  |  |  |  |  |  |  |
2 | Block length (copy) |  |  |  |  |  |  |  |
3 | Start byte 2 (0x68) |  |  |  |  |  |  |  |
4 | RES | PRM | FCB / ACD | FCV / DFC | Function code |  |  |  | Control field
5 | Link address fields |  |  |  |  |  |  |  |
 | (0, 1 or 2 octets) |  |  |  |  |  |  |  |
 | Type identification |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER | ASDU
 | SQ | Number of object |  |  |  |  |  |  |
 | T | P/N | Cause of transmission |  |  |  |  |  |
 | ASDU address fields |  |  |  |  |  |  |  |
 | (1 or 2 octets) |  |  |  |  |  |  |  |
 | Record address |  |  |  |  |  |  |  |
 | Information object address |  |  |  |  |  |  |  | Info-object
 | Information elements |  |  |  |  |  |  |  |
n-1 | Checksum |  |  |  |  |  |  |  | Tail | LPCI
n | Stop byte (0x16) |  |  |  |  |  |  |  |

Frame with fixed length

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

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

Single character data

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

  • 0xE5 (positive acknowledge);


ASDU-Referenz

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

Standard IEC 60870-5-102 Datentypen

Type | Dez | Hex | Beschreibung
ASDU_TYPEUNDEF_2 | 0 | 0x00 | Wird nicht verwendet
M_SP_TA_2 | 1 | 0x01 | Einzelmeldung mit Zeitstempel
M_IT_TA_2 | 2 | 0x02 | Abrechnungszählerstände, je 4 Oktette
M_IT_TB_2 | 3 | 0x03 | Abrechnungszählerstände, je 3 Oktette
M_IT_TC_2 | 4 | 0x04 | Abrechnungszählerstände, je 2 Oktette
M_IT_TD_2 | 5 | 0x05 | Periodisch rückgesetzte Abrechnungszählerstände, je 4 Oktette
M_IT_TE_2 | 6 | 0x06 | Periodisch rückgesetzte Abrechnungszählerstände, je 3 Oktette
M_IT_TF_2 | 7 | 0x07 | Periodisch rückgesetzte Abrechnungszählerstände, je 2 Oktette
M_IT_TG_2 | 8 | 0x08 | Betriebszählerstände, je 4 Oktette
M_IT_TH_2 | 9 | 0x09 | Betriebszählerstände, je 3 Oktette
M_IT_TI_2 | 10 | 0x0A | Betriebszählerstände, je 2 Oktette
M_IT_TK_2 | 11 | 0x0B | Periodisch rückgesetzte Betriebszählerstände, je 4 Oktette
M_IT_TL_2 | 12 | 0x0C | Periodisch rückgesetzte Betriebszählerstände, je 3 Oktette
M_IT_TM_2 | 13 | 0x0D | Periodisch rückgesetzte Betriebszählerstände, je 2 Oktette
 | 14..69 | 0x0E,,0x45 | Reserviert (Standardbereich)
M_EI_NA_2 | 70 | 0x46 | Initialisierungsende
P_MP_NA_2 | 71 | 0x47 | Hersteller- und Produktspezifikation der Zähler-DEE
M_TI_TA_2 | 72 | 0x48 | Aktuelle Systemzeit der Zähler-DEE
 | 73..99 | 0x49..0x63 | Reserviert (Standardbereich)
C_RD_NA_2 | 100 | 0x64 | Abruf der Hersteller und Produktspezifikation
C_SP_NA_2 | 101 | 0x65 | Abruf einer Liste von Einzelmeldungen mit Zeitstempel
C_SP_NB_2 | 102 | 0x66 | Abruf einer Liste von Einzelmeldungen mit Zeitstempel eines ausgewählten Zeitbereichs
C_TI_NA_2 | 103 | 0x67 | Abruf der aktuellen Systemzeit der Zähler-DEE
C_CI_NA_2 | 104 | 0x68 | Abruf der Abrechnungszählerstände der ältesten Messperiode
C_CI_NB_2 | 105 | 0x69 | Abruf der Abrechnungszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs
C_CI_NC_2 | 106 | 0x6A | Abruf der Abrechnungszählerstände einer bestimmten vergangenen Messperiode
C_CI_ND_2 | 107 | 0x6B | Abruf der Abrechnungszählerstände einer bestimmten vergangenen Messperiode und eines ausgewählten Adressbereichs
C_CI_NE_2 | 108 | 0x6C | Abruf periodisch rückgesetzter Abrechnungszählerstände der ältesten Messperiode
C_CI_NF_2 | 109 | 0x6D | Abruf periodisch rückgesetzter Abrechnungszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs
C_CI_NG_2 | 110 | 0x6E | Abruf periodisch rückgesetzter Abrechnungszählerstände einer bestimmten vergangenen Messperiode
C_CI_NH_2 | 111 | 0x6F | Abruf periodisch rückgesetzter Abrechnungszählerstände einer bestimmten vergangenen Messperiode und eines ausgewählten Adressbereichs
C_CI_NI_2 | 112 | 0x70 | Abruf der Betriebszählerstände der ältesten Messperiode
C_CI_NK_2 | 113 | 0x71 | Abruf der Betriebszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs
C_CI_NL_2 | 114 | 0x72 | Abruf der Betriebszählerstände einer bestimmten vergangenen Messperiode
C_CI_NM_2 | 115 | 0x73 | Abruf der Betriebszählerstände einer bestimmten vergangenen Messperiode und eines ausgewählten Adressbereichs
C_CI_NN_2 | 116 | 0x74 | Abruf periodisch rückgesetzter Betriebszählerstände der ältesten Messperiode
C_CI_NO_2 | 117 | 0x75 | Abruf periodisch rückgesetzter Betriebszählerstände der ältesten Messperiode und eines ausgewählten Adressbereichs
C_CI_NP_2 | 118 | 0x76 | Abruf periodisch rückgesetzter Betriebszählerstände einer bestimmten vergangenen Messperiode
C_CI_NQ_2 | 119 | 0x77 | Abruf periodisch rückgesetzter Betriebszählerstände einer bestimmten vergangenen Messperiode und eines ausgewählten Adressbereichs
C_CI_NR_2 | 120 | 0x78 | Abruf der Abrechnungszählerstände eines ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs
C_CI_NS_2 | 121 | 0x79 | Abruf periodisch rückgesetzter Abrechnungszählerstände eines ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs
C_CI_NT_2 | 122 | 0x7A | Abruf der Betriebszählerstände eines ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs
C_CI_NU_2 | 123 | 0x7B | Abruf periodisch rückgesetzter Betriebszählerstände eines ausgewählten Zeitbereichs und eines ausgewählten Adressbereichs
 | 124..127 | 0x7C..0x7F | Reserviert (Standardbereich)
M_DS_TA_2 | 128 | 0x80 | -
P_ME_NA_2 | 129 | 0x81 | Parameters of the measuring point
M_DS_TB_2 | 130 | 0x82 | -
M_CH_TA_2 | 131 | 0x83 | -
C_PK_2 | 132 | 0x84 | Load private key
C_TA_VC_2 | 133 | 0x85 | Read tariff information ( current values )
C_TA_VM_2 | 134 | 0x86 | Read tariff information ( stored values )
M_TA_VC_2 | 135 | 0x87 | Tariff information ( current values )
M_TA_VM_2 | 136 | 0x88 | Tariff information ( stored values )
C_TA_CP_2 | 137 | 0x89 | Close accounting period
M_IB_TG_2 | 139 | 0x8B | Block of operational integrated totals ( absolute values )
M_IB_TK_2 | 140 | 0x8C | Block of periodical reset operational integrated totals ( increment values )
C_RM_NA_2 | 141 | 0x8D | Read configuration data of the meter device
M_RM_NA_2 | 142 | 0x8E | Configuration of the meter device
C_MR_NA_2 | 143 | 0x8F | Change configuration data of the meter device
C_PC_NA_2 | 144 | 0x90 | -
M_PC_NA_2 | 145 | 0x91 | -
C_MC_NA_2 | 146 | 0x92 | -
C_DF_NA_2 | 147 | 0x93 | -
M_DF_NA_2 | 148 | 0x94 | -
C_MF_NA_2 | 149 | 0x95 | -
 | 150..179 | 0x96..0xB3 | Reserviert
C_DS_TA_2 | 180 | 0xB4 | -
C_CS_TA_2 | 181 | 0xB5 | Change date and time ( Time syncronization )
C_PI_NA_2 | 182 | 0xB6 | Read parameters of the measuring point
C_AC_NA_2 | 183 | 0xB7 | Start session and send access key
C_DS_TB_2 | 184 | 0xB8 | -
C_CH_TA_2 | 185 | 0xB9 | -
C_MH_TA_2 | 186 | 0xBA | -
C_FS_NA_2 | 187 | 0xBB | Finish session
C_MP_NA_2 | 188 | 0xBC | -
C_CB_NT_2 | 189 | 0xBD | Read a block of operational integrated totals of a time period and a selected address
C_CB_UN_2 | 190 | 0xBE | Read a block of periodical reset operational integrated totals of a time period and a selected address
 | 191..255 | 0xBF..0xFF | Reserviert


M_SP_TA_2

Single-point information with time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x1 (1) | = M_SP_TA_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * 9 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | SPA |  |  |  |  |  |  |  | Single-point address | Information object 1
 |  |  | |--- | data[1] = | SPQ |  |  |  |  |  |  | SPI | SPQ = Single-point qualifier SPI = Single-point information
 |  |  | |--- | data[2..8] = | CP56Time2b |  |  |  |  |  |  |  | Seven octets binary time tag
 |  |  | |--- | data[9..length - 1] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TA_2

Accounting integrated totals, 4 octets each

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x2 (2) | = M_IT_TA_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 6 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..4] = | CR4 |  |  |  |  |  |  |  | Counter reading, 4 octets
 |  |  | |--- | data[5] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[6] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[7..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TB_2

Accounting integrated totals, 3 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x3 (3) | = M_IT_TB_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 5 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..3] = | CR3 |  |  |  |  |  |  |  | Counter reading, 3 octets
 |  |  | |--- | data[4] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[5] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[6..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TC_2

Accounting integrated totals, 2 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x4 (4) | = M_IT_TC_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 4 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..2] = | CR2 |  |  |  |  |  |  |  | Counter reading, 2 octets
 |  |  | |--- | data[3] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[4] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[5..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TD_2

Periodical reset accounting integrated totals, 4 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x5 (5) | = M_IT_TD_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 6 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..4] = | CR4 |  |  |  |  |  |  |  | Counter reading, 4 octets
 |  |  | |--- | data[5] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[6] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[7..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TE_2

Periodical reset accounting integrated totals, 3 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x6 (6) | = M_IT_TE_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 5 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..3] = | CR3 |  |  |  |  |  |  |  | Counter reading, 3 octets
 |  |  | |--- | data[4] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[5] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[6..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TF_2

Periodical reset accounting integrated totals, 2 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x7 (7) | = M_IT_TF_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 4 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..2] = | CR2 |  |  |  |  |  |  |  | Counter reading, 2 octets
 |  |  | |--- | data[3] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[4] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[5..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TG_2

Operational integrated totals, 4 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x8 (8) | = M_IT_TG_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 6 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..4] = | CR4 |  |  |  |  |  |  |  | Counter reading, 4 octets
 |  |  | |--- | data[5] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[6] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[7..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TH_2

Operational integrated totals, 3 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x9 (9) | = M_IT_TH_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 5 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..3] = | CR3 |  |  |  |  |  |  |  | Counter reading, 3 octets
 |  |  | |--- | data[4] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[5] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[6..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TI_2

Operational integrated totals, 2 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0xA (10) | = M_IT_TI_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 4 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..2] = | CR2 |  |  |  |  |  |  |  | Counter reading, 2 octets
 |  |  | |--- | data[3] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[4] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[5..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TK_2

Periodical reset operational integrated totals, 4 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0xB (11) | = M_IT_TK_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 6 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..4] = | CR4 |  |  |  |  |  |  |  | Counter reading, 4 octets
 |  |  | |--- | data[5] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[6] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[7..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TL_2

Periodical reset operational integrated totals, 3 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0xC (12) | = M_IT_TL_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 5 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..3] = | CR3 |  |  |  |  |  |  |  | Counter reading, 3 octets
 |  |  | |--- | data[4] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[5] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[6..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_IT_TM_2

Periodical reset operational integrated totals, 2 octets each.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0xD (13) | = M_IT_TM_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = i |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = i * ( 4 + [ 1 (signature) ] ) + 5 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | IOA |  |  |  |  |  |  |  | Information object address | Information object 1
 |  |  | |--- | data[1..2] = | CR2 |  |  |  |  |  |  |  | Counter reading, 2 octets
 |  |  | |--- | data[3] = | IV | CA | CY | Sequence |  |  |  |  | Quality descriptor
 |  |  | |--- | data[4] = | Signature |  |  |  |  |  |  |  | Signature (optional)
 |  |  | |--- | data[5..length - 6] = |  |  |  |  |  |  |  |  |  | Information object 2..i
 |  |  | |--- | data[length - 5..length - 1] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[length..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_EI_NA_2

End of initialization.

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


P_MP_NA_2

Manufacturer and product specification of integrated total DTE.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x47 (71) | = P_MP_NA_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  | = 0 |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 6 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = | YEAR |  |  |  | MONTH |  |  |  | Date of standard
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Manufacturer code
 |  |  | |--- | data[2..5] = |  |  |  |  |  |  |  |  | Product code
 |  |  | |--- | data[6..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


M_TI_TA_2

Current system time of integrated total DTE.

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


C_RD_NA_2

Read manufacturer and product specification.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x64 (100) | = C_RD_NA_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 0 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  | = 0 |  |  |  |  |  |  |  |  | Record 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


C_SP_NA_2

Read record of single-point information with time tag.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x65 (101) | = C_SP_NA_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 0 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record 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


C_SP_NB_2

Read record of single-point information with time tag of selected time range.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x66 (102) | = C_SP_NB_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 10 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0..4] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (from)
 |  |  | |--- | data[5..9] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (until)
 |  |  | |--- | data[10..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_TI_NA_2

Read current system time of integrated total data terminal equipment.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x67 (103) | = C_TI_NA_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 0 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  | = 0 |  |  |  |  |  |  |  |  | Record 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


C_CI_NA_2

Read accounting integrated totals of the oldest integration period.

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


C_CI_NB_2

Read accounting integrated totals of the oldest integration period and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x69 (105) | = C_CI_NB_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 2 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NC_2

Read accounting integrated totals of a specific past integration period.

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


C_CI_ND_2

Read accounting integrated totals of a specific past integration period and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x6B (107) | = C_CI_ND_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 7 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[7..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NE_2

Read periodically reset accounting integrated totals of the oldest integration period.

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


C_CI_NF_2

Read periodically reset accounting integrated totals of the oldest integration period and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x6D (109) | = C_CI_NF_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 2 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NG_2

Read periodically reset accounting integrated totals of a specific past integration period.

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


C_CI_NH_2

Read periodically reset accounting integrated totals of a specific past integration period and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x6F (111) | = C_CI_NH_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 7 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[7..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NI_2

Read operational integrated totals of the oldest integration period.

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


C_CI_NK_2

Read operational integrated totals of the oldest integration period and of selected range of addresses.

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


C_CI_NL_2

Read operational integrated totals of a specific past integration period.

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


C_CI_NM_2

Read operational integrated totals of a specific past integration period and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x73 (115) | = C_CI_NM_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 7 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[7..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NN_2

Read periodically reset operational integrated totals of the oldest integration period.

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


C_CI_NO_2

Read periodically reset operational integrated totals of the oldest integration period and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x75 (117) | = C_CI_NO_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 2 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NP_2

Read periodically reset operational integrated totals of a specific past integration period.

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


C_CI_NQ_2

Read periodically reset operational integrated totals of a specific past integration period and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x77 (119) | = C_CI_NQ_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 7 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag
 |  |  | |--- | data[7..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NR_2

Read accounting integrated totals of selected time and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x78 (120) | = C_CI_NR_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (from)
 |  |  | |--- | data[7..11] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (to)
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NS_2

Read periodically reset accounting integrated totals of selected time and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x79 (121) | = C_CI_NS_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (from)
 |  |  | |--- | data[7..11] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (to)
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NT_2

Read operational integrated totals of selected time and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x7A (122) | = C_CI_NT_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (from)
 |  |  | |--- | data[7..11] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (to)
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


C_CI_NU_2

Read periodically reset operational integrated totals of selected time and of selected range of addresses.

- obj |  |  |  |  |  |  |  |  |  |  |  |  | ASDU object
|--- | + head |  |  |  |  |  |  |  |  |  |  |  | Reserved
|--- | - ident |  |  |  |  |  |  |  |  |  |  |  | DATA UNIT IDENTIFIER
| | |--- | eType | = 0x7B (123) | = C_CI_NU_2 |  |  |  |  |  |  |  |  | Type identification
| | |--- | bSQ |  | = FALSE |  |  |  |  |  |  |  |  | Sequence of information objects
| | |--- | nObj |  | = 1 |  |  |  |  |  |  |  |  | Number of objects
| | |--- | bT |  |  |  |  |  |  |  |  |  |  | Test
| | |--- | bPN |  |  |  |  |  |  |  |  |  |  | Positive/negative confirmation/activation
| | |--- | eCOT |  |  |  |  |  |  |  |  |  |  | Cause of transmission
| | |--- | asduAddr |  |  |  |  |  |  |  |  |  |  | Common address of asdu
| | |--- | eClass |  |  |  |  |  |  |  |  |  |  | Fifo priority class
|--- | - info |  |  |  |  |  |  |  |  |  |  |  | INFORMATION OBJECT
 | |--- | rcdAddr |  |  |  |  |  |  |  |  |  |  | Record address of accounting period
 | |--- | stream |  |  |  |  |  |  |  |  |  |  | Information element/object data
 |  | |--- | length | = 12 |  |  |  |  |  |  |  |  |
 |  | |--- | data |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 |  |  | |--- | data[0] = |  |  |  |  |  |  |  |  | Integrated total address (from)
 |  |  | |--- | data[1] = |  |  |  |  |  |  |  |  | Integrated total address (to)
 |  |  | |--- | data[2..6] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (from)
 |  |  | |--- | data[7..11] = | CP40Time2a |  |  |  |  |  |  |  | Five octets binary time tag (to)
 |  |  | |--- | data[12..IEC870_MAX_ASDU_DATA_BYTE] = |  |  |  |  |  |  |  |  | Reserved


SPA

Single-point address: <0..255>

  • <0..127> compatible range
  • <128..255> private range


SPQ

Single-point qualifier: <0..127>

  • <0> not specified
  • <1..127> vendor specific


FB_IEC870_5_102TProtocol

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

FUNCTION_BLOCK FB_IEC870_5_102TProtocol

Der Kommunikationsbaustein FB_IEC870_5_102TProtocol implementiert die Übertragungsprozeduren der Verbindungsschicht nach der IEC 60870-5-1 und IEC 60870-5-2-Norm.
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. 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). In der Default-Konfiguration werden die TX/RX-Datenpuffer zurückgesetzt. Das Löschen der Puffer kann aber durch das Setzen der bRetainBuffer-Variablen in der Protokolparameterstruktur unterbunden werden.

Protokollkonfiguration

Der Kommunikationsbaustein besitzt eine protPara-Variable vom strukturierten Typ. Über diese Variable können Protokollparameter z.B. RX/TX-Timeoutzeiten usw. konfiguriert werden.

VAR_IN_OUT

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

hSerial: Verbindungs-Handle zum FB_IEC870_SerialLineCtrl-Funktionsbaustein. Über diese Variable werden mit dem FB_IEC870_SerialLineCtrl-Funktionsbaustein die zu sendenden und empfangenen Daten ausgetauscht.

buffer: TX/RX Datenpuffer.

VAR_INPUT

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

protPara: IEC60870-5-101/102-Protokollparameter.

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

VAR_OUTPUT

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

eState: Verbindungsstatus.

Beispiel:

Beispielprojekte: IEC60870-5-102 Serial Link Interface

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


FB_IEC870_5_102TBufferCtrl

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

FUNCTION_BLOCK FB_IEC870_5_102TBufferCtrl

Mit diesem Funktionsbaustein kann der Inhalt des TX/RX-Datenpuffers manipuliert werden, der bei der Kommunikation über das IEC60870-5-102 Serial Link Interface benutzt wird.

Der Funktionsbaustein besitzt folgende Aktionen:

  • RxRemoveObj (entfernt den ältesten Fifoeintrag aus dem RX-Fifo);
  • RxReset (löscht alle RX-Fifoeinträge, setzt den RX-Fifo zurück);
  • TxAddObj (fügt einen neuen Fifoeintrag in den TX-Fifo);
  • TxReset (löscht alle TX-Fifoeinträge, setzt den TX-Fifo zurück)

Durch den Aufruf der oben aufgelisteten Aktionen kann der Inhalt des TX/RX-Datenpuffers verändert werden.

VAR_IN_OUT

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

buffer: TX/RX-Datenpuffer. Die TX/RX-Pufferparameter (wie z.B. asduSize ) müssen vor der Benutzung konfiguriert werden.

VAR_INPUT

VAR_INPUT
        putObj  : ST_IEC870_5_102AOGen; (* ASDU to send *)
END_VAR

putObj: Dateneinheit (ASDU), die gesendet werden soll.

VAR_OUTPUT

VAR_OUTPUT
        getObj  : ST_IEC870_5_102AOGen; (* received ASDU *)
 bOk     : BOOL; (* TRUE = action succesfully, FALSE=Fifo overflow or fifo empty *)
END_VAR

getObj: Empfangene Dateneinheit (ASDU).

bOk: Diese Variable wird TRUE, wenn ein neuer Eintrag erfolgreich hinzugefügt oder aus dem Fifo entfernt wurde. Diese Variable wird FALSE beim Pufferüberlauf und wenn kein Eintrag entfernt werden konnte weil der Fifo bereits leer ist.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build >= 1319 | PC oder CX (x86, ARM) | TcIEC870_5_102Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMlibV2.Lib; werden automatisch eingebunden )


F_GetVersionTcIEC870_5_102Link

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

FUNCTION F_GetVersionTcIEC870_5_102Link

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

FUNCTION F_GetVersionTcIEC870_5_102Link: 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.10 Build >= 1319 | PC or CX (x86, ARM) | TcIEC870_5_102Link.Lib, ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMlibV2.Lib; werden automatisch eingebunden )


F_iecApdu102ToAsduLen

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

FUNCTION F_iecApdu102ToAsduLen

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

FUNCTION F_iecApdu102ToAsduLen: BYTE

VAR_INPUT
        FRAMELength     : BYTE;
        eLinkAddrSize   : E_IEC870_5_101LinkAddrSize;
END_VAR

FRAMELength : Die max. verfügbare APDU-Telegrammlänge (siehe Kompatibilitätsliste).

eLinkAddrSize: Adressfeldlänge der Verbindungsschicht.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build >= 1319 | PC or CX (x86, ARM) | TcIEC870_5_102Link.Lib, ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMlibV2.Lib; werden automatisch eingebunden)


IEC870_5_102_DEFAULT_ASDUFMTPARAMS

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

FUNCTION IEC870_5_102_DEFAULT_ASDUFMTPARAMS

Diese Funktion setzt die durch die 102 Norm vorgegebenen Frame-Formatparameter: COT, ASDUADDR, IOA-Länge.

FUNCTION IEC870_5_102_DEFAULT_ASDUFMTPARAMS: ST_IEC870_5_101AsduFmtParams

VAR_INPUT
        eAsduAddrSize : E_IEC870_5_101AsduAddrSize;
END_VAR

eAsduAddrSize : Oktetlänge der gemeinsamen ASDU-Addresse.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build >= 1319 | PC or CX (x86, ARM) | TcIEC870_5_102Link.Lib, ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMlibV2.Lib; werden automatisch eingebunden )


ST_IEC870_5_102TBuffer

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE ST_IEC870_5_102TBuffer

Diese Datenstruktur wird beim Datenaustausch (TX/RX-Datenpuffer) über das IEC60870-5-102 Serial Link Interface benutzt.

TYPE ST_IEC870_5_102TBuffer :
STRUCT
        eDbg            : E_IEC870_5_101FifoDbgFlags :=eIEC870_FIFO_DBG_OFF; (* enable/disable log view hex output *)
 eAsduAddrSize   : E_IEC870_5_101AsduAddrSize;(* Common ASDU address field size (1..2 octets) *)
 asduSize        : BYTE := 253; (* max. length of ASDU data ( IEC 60870-5-101/102/103 = 253 octets, IEC 60870-5-104 = 249 octets )*)
 mode            : DWORD := 0;

        dataLink        : ST_IEC870_5_101DataLink; (* internal tx/rx buffer *)
ND_STRUCT
END_TYPE

eDbg: Debug-Ausgabe-Parameter.

eAsduAddrSize: Oktetlänge der gemeinsamen ASDU addresse.

asduSize: Maximale Bytelänge der ASDU.

mode: Reserviert, wird zur Zeit nicht benutzt. Dieser Wert sollte Null sein.

dataLink: Auf die Elemente dieser Datenstruktur sollte nicht direkt, sondern nur mit einer Instanz des FB_IEC870_5_102TBufferCtrl-Funktionsbausteins zugegriffen werden.

Der TX/RX-Datenpuffer verwendet intern zwei Sende-Fifos und einen Empfangs-Fifo:

  1. Class 1 Sende-Fifo mit (hochprioren) Daten;
  2. Class 2 Sende-Fifo mit (niederprioren) Daten;
  3. Receive-Fifo (für Class 1 und Class 2 Daten);

Die unteren Transportfunktionen der Bibliothek leeren zuerst den Class 1-Fifo und dann den Class 2-Fifo. Die Class 2 Daten werden nur dann versendet wenn der Class 1-Fifo keine zu versendenden Daten enthält.

Jeder der internen Fifos hat eine feste Größe von 10000 Bytes. Erfahrungsgemäß können in jedem Fifo ca. 200 ASDUs mit einem Informations-Element (Objekt) mit der maximalen Grösse oder ca. 20 ASDUs mit einer Sequence von 100 Informations-Elementen (Objekten) abgelegt werden.

Wenn eine größere Anzahl der zu versendenden oder zu empfangenen Frames zwischengespeichert werden soll (z.B. ~20000), so können diese in externen, vom SPS-Programmierer festgelegten Puffern/Fifos zwischengehalten werden. Die SPS-Applikation kann dann zur Laufzeit die TwinCAT-Sende-Fifos mit den eigenen Fifo-Einträgen nachfüllen oder bei vielen empfangenen Frames den TwinCAT-Receive-Fifo leeren. Eine andere Möglichkeit ist z.B. zwei Puffer zu benutzen und diese abwechselnd zu füllen/lesen und an den Kommunikationsbaustein übergeben.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build >= 1319 | PC oder CX (x86, ARM) | TcIEC870_5_102Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMLibV2.Lib werden automatisch eingebunden )


ST_IEC870_5_102AOGen

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE ST_IEC870_5_102AOGen

Variablen von diesem Typ repräsentieren ein ASDU-Objekt.

TYPE ST_IEC870_5_102AOGen:
STRUCT
        head : ST_IEC870_5_101FifoHead :=(      source := ( link := 0, addr := 0 ),
                                        target := ( link := 0, addr := 0 ),
                                        ctrl := 0 ); (* Header *)

        ident   : ST_IEC870_5_102DataUnit_Ident := ( eType := ASDU_TYPEUNDEF_2,
                                                nObj := 0,
                                                bSQ := FALSE,
                                                bT := FALSE,
                                                bPN := FALSE,
                                                eCOT := 0,
                                                asduAddr := 0,
                                                eClass := eIEC870_Class_None ); (* Data unit identifier *)

 info    : ST_IEC870_5_102AOInfoObj  := (    rcdAddr         := 0,
                                                n       := 0,
                                                stream  := ( length := 0 ) ); (* information object *)
END_STRUCT
END_TYPE

head: Header (reserviert).

ident:Identifikationsfelder der Dateneinheit (ASDU).

info: Informationsobjekt-/Informationselement-Datenfeld.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build >= 1319 | PC oder CX (x86, ARM) | TcIEC870_5_102Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMLibV2.Lib werden automatisch eingebunden )


ST_IEC870_5_102AOInfoObj

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE ST_IEC870_5_102AOInfoObj

Informationsobjektbeschreibung.

TYPE ST_IEC870_5_102AOInfoObj :
STRUCT
        rcdAddr : BYTE; (* Record address <0..255> *)
 stream  : ST_IEC870_5_101Stream; (* Information element of max. length *)
END_STRUCT
END_TYPE

rcdAddr: Listenadresse einer Messperiode oder Listenadresse einer Einzelmeldung.

stream: Informationselemente oder Informationsobjekte (Byte->Array-Puffer).

Die Listenadressen sind wie folgt festgelegt: <0..255>

  • <0> Default, wenn kein anderer Wert festgelegt ist
  • <1> Listenadresse für Zählerstände vom Beginn der Abrechnungsperiode
  • <2..10> Reserviert für weitere kompatible Festlegungen
  • <11> Listenadresse für Zählerstände der Messperiode 1
  • <12> Listenadresse für Zählerstände der Messperiode 2
  • <13> Listenadresse für Zählerstände der Messperiode 3
  • <14..20> Reserviert für weitere kompatible Festlegungen
  • <21> Listenadresse für Zählerstände (Tageswerte) der Messperiode 1
  • <22> Listenadresse für Zählerstände (Tageswerte) der Messperiode 2
  • <23> Listenadresse für Zählerstände (Tageswerte) der Messperiode 3
  • <24..30> Reserviert für weitere kompatible Festlegungen
  • <31> Listenadresse für Zählerstände (Monatswerte) der Messperiode 1
  • <32> Listenadresse für Zählerstände (Monatswerte) der Messperiode 2
  • <33> Listenadresse für Zählerstände (Monatswerte) der Messperiode 3
  • <34..40> Reserviert für weitere kompatible Festlegungen
  • <41> Listenadresse für Zählerstände (Jahreswerte) der Messperiode 1
  • <42> Listenadresse für Zählerstände (Jahreswerte) der Messperiode 2
  • <43> Listenadresse für Zählerstände (Jahreswerte) der Messperiode 3
  • <44..49> Reserviert für weitere kompatible Festlegungen
  • <50> Älteste Einzelmeldung
  • <51> Vollständige Liste mit Einzelmeldungen
  • <52> Teilliste 1 mit Einzelmeldungen
  • <53> Teilliste 2 mit Einzelmeldungen
  • <54> Teilliste 3 mit Einzelmeldungen
  • <55> Teilliste 4 mit Einzelmeldungen
  • <56..127> Reserviert für weitere kompatible Festlegungen
  • <128..255> Für besondere Anwendungen (privater Bereich)

Die Größe einer Teilliste ist ein Systemparameter.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build >= 1319 | PC oder CX (x86, ARM) | TcIEC870_5_102Link.Lib (Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMLibV2.Lib werden automatisch eingebunden)


ST_IEC870_5_102DataUnit_Ident

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE ST_IEC870_5_102DataUnit_Ident

Identifikationsfeld der Dateneinheit (ASDU).

TYPE ST_IEC870_5_102DataUnit_Ident:
STRUCT
        eType   : E_IEC870_5_102TypeID; (* ASDU type identifier <0..255> *)
 bSQ     : BOOL; (* Single/Sequence *)
        nObj    : BYTE(0..127); (* Number of information objects or elements <0..127> *)
        bT      : BOOL; (* Test bit *)
        bPN     : BOOL; (* Positive/Negative confirmation, FALSE = positive, TRUE = negative *)
        eCOT    : E_IEC870_5_102COTType; (* Cause of transmission <0..63> *)
        asduAddr : DWORD; (* Common address of ASDU (1..2 octets) *)
        eClass  : E_IEC870_5_101ClassType; (* Object class *)
END_STRUCT
END_TYPE

eType: ASDU-Typ. Zulässiger Bereich: <0..255>.

bSQ: Sequence-Flag.

nObj: Anzahl der Informationsobjekte oder Informationselemente. Zulässiger Bereich: <0..127>.

bT: Test-Bit.

bPN: FALSE = Positive, TRUE = Negative Bestätigung.

eCOT: Übertragungsursache. Zulässiger Bereich: <0..63>.

asduAddr: Gemeinsame ASDU-Adresse (one or two octets).

eClass: Prioritätsklasse.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build >= 1319 | PC oder CX (x86, ARM) | TcIEC870_5_102Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMLibV2.Lib werden automatisch eingebunden )


E_IEC870_5_102TypeID

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE E_IEC870_5_102TypeID

TYPE E_IEC870_5_102TypeID:
(
        ASDU_TYPEUNDEF_2 := 0, (* (000) not allowed *)(* Process inormation in monitor direction *)
 M_SP_TA_2 := 1, (* (001) Single-point information with time tag *)
 M_IT_TA_2 := 2, (* (002) Accounting integrated totals, 4 octets each *)
        M_IT_TB_2 := 3, (* (003) Accounting integrated totals, 3 octets each *)
        M_IT_TC_2 := 4, (* (004) Accounting integrated totals, 2 octets each *)
        M_IT_TD_2 := 5, (* (005) Periodical reset accounting integrated totals, 4 octets each *)
        M_IT_TE_2 := 6, (* (006) Periodical reset accounting integrated totals, 3 octets each *)
        M_IT_TF_2 := 7, (* (007) Periodical reset accounting integrated totals, 2 octets each *)
        M_IT_TG_2 := 8, (* (008) Operational integrated totals, 4 octets each *)
        M_IT_TH_2 := 9, (* (009) Operational integrated totals, 3 octets each *)
        M_IT_TI_2 := 10, (* (010) Operational integrated totals, 2 octets each *)
        M_IT_TK_2 := 11, (* (011) Periodical reset operational integrated totals, 4 octets each *)
        M_IT_TL_2 := 12, (* (012) Periodical reset operational integrated totals, 3 octets each *)
        M_IT_TM_2 := 13, (* (013) Periodical reset operational integrated totals, 2 octets each *)
        (* System information in monitor direction *)
 M_EI_NA_2 := 70, (* (070) End of initialization *)
 P_MP_NA_2 := 71, (* (071) Manufacturer and product specification of integrated total DTE *)
 M_TI_TA_2 := 72, (* (072) Current system time of integrated total DTE *)
        (* System information in control direction *)
 C_RD_NA_2 := 100, (* (100) Read manufacturer and product specification *)
 C_SP_NA_2 := 101, (* (101) Read record of single-point information with time tag *)
 C_SP_NB_2 := 102, (* (102) Read record of single-point information with time tag of a selected time range *)
 C_TI_NA_2 := 103, (* (103) Read current system time of integrated total DTE *)
 C_CI_NA_2 := 104, (* (104) Read accounting integrated totals of the oldest integration period *)
 C_CI_NB_2 := 105, (* (105) Read accounting integrated totals of the oldest integration period and of a selected range of addresses *)
 C_CI_NC_2 := 106, (* (106) Read accounting integrated totals of a specific past integration period *)
 C_CI_ND_2 := 107, (* (107) Read accounting integrated totals of a specific past integration period and of a selected range of addresses *)
 C_CI_NE_2 := 108, (* (108) Read periodical reset accounting integrated totals of the oldest integration period *)
 C_CI_NF_2 := 109, (* (109) Read periodical reset accounting integrated totals of the oldest integration period and of a selected range of addresses *)
 C_CI_NG_2 := 110, (* (110) Read periodical reset accounting integrated totals of a specific past integration period *)
 C_CI_NH_2 := 111, (* (111) Read periodical reset accounting integrated totals of a specific past integration period and of a selected range of addresses *)
 C_CI_NI_2 := 112, (* (112) Read operational integrated totals of the oldest integration period *)
 C_CI_NK_2 := 113, (* (113) Read operational integrated totals of the oldest integration period and of a selected range of addresses *)
 C_CI_NL_2 := 114, (* (114) Read operational integrated totals of a specific past integration period *)
 C_CI_NM_2 := 115, (* (115) Read operational integrated totals of a specific past integration period and of a selected range of addresses *)
 C_CI_NN_2 := 116, (* (116) Read periodical reset operational integrated totals of the oldest integration period *)
 C_CI_NO_2 := 117, (* (117) Read periodical reset operational integrated totals of the oldest integration period and of a selected range of addresses *)
 C_CI_NP_2 := 118, (* (118) Read periodical reset operational integrated totals of a specific past integration period *)
 C_CI_NQ_2 := 119, (* (119) Read periodical reset operational integrated totals of a specific past integration period and of a selected range of addresses *)
 C_CI_NR_2 := 120, (* (120) Read accounting integrated totals of a specific past integration period of a selected time range and of a selected range of addresses *)
 C_CI_NS_2 := 121, (* (121) Read periodical reset accounting integrated totals of a specific past integration period of a selected time range and of a selected range of addresses *)
 C_CI_NT_2 := 122, (* (122) Read operational integrated totals of a specific past integration period of a selected time range and of a selected range of addresses *)
 C_CI_NU_2 := 123, (* (123) Read periodical reset operational integrated totals of a specific past integration period of a selected time range and of a selected range of addresses *)

        M_DS_TA_2 := 128, (* (128) *)
        P_ME_NA_2 := 129, (* Parameters of the measuring point *)
 M_DS_TB_2 := 130, (**)
        M_CH_TA_2 := 131, (**)
        C_PK_2 := 132, (* Load private key *)
        C_TA_VC_2 := 133, (* Read tariff information ( current values ) *)
        C_TA_VM_2 := 134, (* Read tariff information ( stored values ) *)
        M_TA_VC_2 := 135, (* Tariff information ( current values ) *)
        M_TA_VM_2 := 136, (* Tariff information ( stored values ) *)
        C_TA_CP_2 := 137, (* Close accounting period *)
        M_IB_TG_2 := 139, (* Block of operational integrated totals ( absolute values ) *)
        M_IB_TK_2 := 140, (* Block of periodical reset operational integrated totals ( increment values ) *)
        C_RM_NA_2 := 141, (* Read configuration data of the meter device *)
        M_RM_NA_2 := 142, (* Configuration of the meter device *)
        C_MR_NA_2 := 143, (* Change configuration data of the meter device *)
        C_PC_NA_2 := 144, (* (144) *)
        M_PC_NA_2 := 145, (* (145) *)
        C_MC_NA_2 := 146, (* (146) *)
        C_DF_NA_2 := 147, (* (147) *)
        M_DF_NA_2 := 148, (* (148) *)
        C_MF_NA_2 := 149, (* (149) *)

        C_DS_TA_2 := 180, (* (180) *)
        C_CS_TA_2 := 181, (* (181) Change date and time ( Time syncronization ) *)
        C_PI_NA_2 := 182, (* (182) Read parameters of the measuring point *)
        C_AC_NA_2 := 183, (* (183) Start session and send access key *)

        C_DS_TB_2 := 184, (* (184) *)
        C_CH_TA_2 := 185, (* (185) *)
        C_MH_TA_2 := 186, (* (186) *)
        C_FS_NA_2 := 187, (* (187) Finish session *)
        C_MP_NA_2 := 188, (* (188) *)
        C_CB_NT_2 := 189, (* (189) Read a block of operational integrated totals of a time period and a selected address *)
        C_CB_UN_2 := 190 (* (190) Read a block of periodical reset operational integrated totals of a time period and a selected address *)
);
END_TYPE

ASDU-Typkennungen.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10.0 Build >= 1319 | PC or CX (x86, ARM) | TcIEC870_5_102Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMlibV2.Lib; werden automatisch eingebunden )


E_IEC870_5_102COTType

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE E_IEC870_5_102COTType

TYPE E_IEC870_5_102COTType:
(
        eIEC870_2COT_0          := 0,
        eIEC870_2COT_1          := 1,
        eIEC870_2COT_2          := 2,
        eIEC870_2COT_SPONTAN    := 3, (* spontanous *)
 eIEC870_2COT_INIT       := 4, (* initialization *)
 eIEC870_2COT_REQ                := 5, (* request or requested *)
 eIEC870_2COT_ACT                := 6, (* command activation *)
 eIEC870_2COT_ACT_CON    := 7, (* command activation confirmation *)
 eIEC870_2COT_DEACT      := 8, (* command deactivation *)
 eIEC870_2COT_DEACT_CON  := 9, (* command deactivation confirmation *)
 eIEC870_2COT_ACT_TERM   := 10, (* command activation termination *)
 eIEC870_2COT_11                 := 11,
        eIEC870_2COT_12                 := 12,
        eIEC870_2COT_RECORD_NOT_FOUND := 13, (* requested record list is not available *)
 eIEC870_2COT_UNKNOWN_ASDU_TYPE := 14, (* unknown ASDU type idetifier *)
 eIEC870_2COT_UNKNOWN_RECORD_NUMBER := 15, (* uknown record number *)
 eIEC870_2COT_UNKNOWN_RECORD_ADDRESS := 16, (* unknown record address *)
 eIEC870_2COT_OBJECT_NOT_FOUND := 17, (* information object not available *)
 eIEC870_2COT_PERIOD_NOT_AVAILABLE := 18, (* requested measurement period not available *)
 eIEC870_2COT_19 := 19,
        eIEC870_2COT_20 := 20,
        eIEC870_2COT_21 := 21,
        eIEC870_2COT_22 := 22,
        eIEC870_2COT_23 := 23,
        eIEC870_2COT_24 := 24,
        eIEC870_2COT_25 := 25,
        eIEC870_2COT_26 := 26,
        eIEC870_2COT_27 := 27,
        eIEC870_2COT_28 := 28,
        eIEC870_2COT_29 := 29,
        eIEC870_2COT_30 := 30,
        eIEC870_2COT_31 := 31,
        eIEC870_2COT_32 := 32,
        eIEC870_2COT_33 := 33,
        eIEC870_2COT_34 := 34,
        eIEC870_2COT_35 := 35,
        eIEC870_2COT_36 := 36,
        eIEC870_2COT_37 := 37,
        eIEC870_2COT_38 := 38,
        eIEC870_2COT_39 := 39,
        eIEC870_2COT_40 := 40,
        eIEC870_2COT_41 := 41,
        eIEC870_2COT_42 := 42,
        eIEC870_2COT_43 := 43,
        eIEC870_2COT_44 := 44,
        eIEC870_2COT_45 := 45,
        eIEC870_2COT_46 := 46,
        eIEC870_2COT_47 := 47,
        eIEC870_2COT_48 := 48,
        eIEC870_2COT_49 := 49,
        eIEC870_2COT_50 := 50,
        eIEC870_2COT_51 := 51,
        eIEC870_2COT_52 := 52,
        eIEC870_2COT_53 := 53,
        eIEC870_2COT_54 := 54,
        eIEC870_2COT_55 := 55,
        eIEC870_2COT_56 := 56,
        eIEC870_2COT_57 := 57,
        eIEC870_2COT_58 := 58,
        eIEC870_2COT_59 := 59,
        eIEC870_2COT_60 := 60,
        eIEC870_2COT_61 := 61,
        eIEC870_2COT_62 := 62,
        eIEC870_2COT_63 := 63
);
END_TYPE

Übertragungsursachen nach der IEC 60870-5-102 Norm.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10.0 Build >= 1319 | PC or CX (x86, ARM) | TcIEC870_5_102Link.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib; TcIEC870_5_101.Lib; TcIEC870_5_101Link.Lib; COMlibV2.Lib; werden automatisch eingebunden )


T_CP40Time2a

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE T_CP40Time2a

Binäres (5 Byte) Zeitformat .

TYPE T_CP40Time2a :
STRUCT
        IVTisMinute     : BYTE := 16#00; (* Bit 7 = IV (1=invalid time, 0=valid time), Bit 6 = Tarif information, Bit 0..5 = Minutes <0..59> *)
 SURes1Hour      : BYTE := 16#00; (* Bit 7 = SU (1=summer time, 0=normal time), Bits 5..6 = spare bits <0>, Bits 0..4 = Hours <0..23> *)
 DOWDay          : BYTE := 16#01; (* Bits 5..7 = Day of week <0 = not used, 1..7>, Bits 0..4 = Day of month <1..31>*)
 PtiEtiMonth     : BYTE := 16#01; (* Bits 6..7 = Power tarif information <0..3>, Bits 4..5 Energie tarif info <0..3>, Bits 0..3 = Month <1..12> *)
 Res2Year        : BYTE := IEC870_DEFAULT_CP56TIME2A_YEAR; (* Bit 7 = spare bit <0>, Bits 0..6 = Year <0..99> *)
END_STRUCT
END_TYPE

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


T_CP56Time2b

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

TYPE T_CP56Time2b

Binäres (7 Byte) Zeitformat.

TYPE T_CP56Time2b :
STRUCT
        MsSecond        : WORD := 16#00; (* Bits 11.15 Seconds <0..59>, Bits 0..9 Milliseconds <0..999> *)
 IVTisMinute     : BYTE := 16#00; (* Bit 7 = IV (1=invalid time, 0=valid time), Bit 6 = Tarif information, Bit 0..5 = Minutes <0..59> *)
 SURes1Hour      : BYTE := 16#00; (* Bit 7 = SU (1=summer time, 0=normal time), Bits 5..6 = spare bits <0>, Bits 0..4 = Hours <0..23> *)
 DOWDay          : BYTE := 16#01; (* Bits 5..7 = Day of week <0 = not used, 1..7>, Bits 0..4 = Day of month <1..31>*)
 PtiEtiMonth     : BYTE := 16#01; (* Bits 6..7 = Power tarif information <0..3>, Bits 4..5 Energie tarif info <0..3>, Bits 0..3 = Month <1..12> *)
 Res2Year        : BYTE := IEC870_DEFAULT_CP56TIME2A_YEAR; (* Bit 7 = spare bit <0>, Bits 0..6 = Year <0..99> *)
END_STRUCT
END_TYPE

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


Fehlercodes Übersicht

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

IEC 60870-5-102 Serial Link Interface Fehlercodes

Fehlercodes (Hex) | Fehlercodes (Dez) | Fehlerquelle | Beschreibung
0x00000000-0x00002000 | 0-8192 | Serial communication errors | Serielle Kommunikation Fehler (aber nur wenn die Fehlerquelle = eIEC870_ESRC_IEC60870_5_101LINK ).
0x00000000-0x00007800 | 0-30720 | TwinCAT System Fehler | TwinCAT System Fehler (ADS-Fehlercodes inklusive wenn Fehlerquelle <> eIEC870_ESRC_IEC60870_5_101LINK ).
0x00008100-0x000081FF | 32768-33023 | IEC60870-5-10x Fehler | IEC60870-5-10x Fehler


Fehlersuche

TS6502 | TwinCAT PLC Lib: IEC 60870-5-102 Serial Link Interface (master)

Fehlersuche/Diagnose

  1. Überprüfen Sie die in dieser Dokumentation beschriebenen Hardware- und Softwareanforderungen (TwinCAT-Version, CE Image-Version usw.);
  2. Vergleichen/überprüfen Sie die Kompatibilitätsliste der Leitstation mit der Kompatibilitätsliste der Unterstation;
  3. Überprüfen Sie die IO-Konfiguration und das Mapping der SPS-Variablen in TwinCAT System Manager (Konfiguration der seriellen Schnittstellen, Baudrate, Parity, Stopbits usw.). Vergleichen Sie die Parameter mit Parametern der Unterstation;
  4. Überprüfen Sie ob der FB_IEC870_5_102TProtocol() Funktionsbaustein einen Fehlercode ausgibt. Die Dokumentation zu den Fehlercodes finden Sie hier: Übersicht der Fehlercodes;
  5. Überprüfen Sie die am Funktionsbaustein eingestellten Protokolparameter (Link-Adresse, FRAMELength, usw.). Vergleichen Sie die Protokolparameter mit den Parametern der Unterstation;
  6. Überprüfen Sie die am TX/RX-Datenpuffer (instanz von ST_IEC870_5_102TBuffer) konfigurierten Adresslängen: Länge der ASDU-Adresse, max. ASDU-Länge. Vergleichen Sie die Adresslängen mit der Konfiguration der Unterstation;
  7. Überprüfen Sie die Konfiguration der Datenpunkte (Typ, Adresse des Informationsobjektes usw.);
  8. Überprüfen Sie ob die Unterstation einen Fehlercode ausgibt;
  9. 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;


Beispiele

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

  • Standard PC interface: COM1
  • 19200 Baud
  • Link address: 1
  • Link address size: 2 octets
  • Common ASDU address: 1
  • Common ASDU address size: 2 octets
SPS Project | TwinCAT System Manager Konfiguration | Beschreibung
LowLevelMasterSample.zip | LowLevelMasterSample.zip | Einfache Master-Applikation die das TwinCAT IEC60870-5-102 Serial Link Interface nutzt.