Zum Hauptinhalt springen

DNP3 — Standard für Energieversorgung / Utility

DNP3 (Distributed Network Protocol v3) ist das in Utility-SCADA-Umgebungen — Energieversorger, Wasser, Gas — am weitesten verbreitete Protokoll. Es ist der Kommunikationsstandard zwischen RTU / IED und SCADA-Master; seine Kernmerkmale sind Zeitsynchronisation (time-stamped events) und zuverlässige Meldung (unsolicited responses).


Eingabewerte im Registrierungsformular

EingabefeldWas wird eingetragenBeispiel
IP-AdresseIP der RTU / IED192.168.0.120
PortDNP3-TCP-Port20000 (Standard)
Master-Adresse (master-address)Eigene Adresse des Gateway (Master)1
Outstation-Adresse (outstation-address)DNP-Adresse der Gegenstelle (Slave)10
Antwort-Timeout (request-timeout)Wartezeit auf Antwort (ms)5000
Unsolicited (enable-unsolicited)Spontanes Senden der RTU (Push) aktivieren — der Treiber cached die Daten und liefert sie bei read() bevorzugt zurückall / 1 / 2 / 3 / 1,2 (Standard leer = nicht verwendet)
Beide Adressen müssen stimmen

Bei DNP3 müssen Master-Adresse und Outstation-Adresse auf beiden Seiten übereinstimmen. Prüfen Sie in der Konfiguration der RTU (üblicherweise das IED-Konfigurationswerkzeug von ABB / SEL / GE), ob „Source Address“ und „Destination Address“ mit Master/Outstation des Gateway zusammenpassen.


PLC-Adressnotation der Tags

DNP3 identifiziert Datenpunkte über Group / Variation / Index. Übliche Groups:

GroupArtHinweis
1Binary Input (BI)Leistungsschalter-/Kontaktstatus usw.
10Binary Output (BO)Ausgangsstatus
20CounterKumulierte Zähler
30Analog Input (AI)Strom, Spannung, Temperatur — am häufigsten
40Analog Output (AO)Ausgangs-Setpoint
41Analog Output Block (Ziel für Schreibzugriffe)Setpoint schreiben

Im Gateway erfolgt die Eingabe im Format g<group>v<variation>.<index> oder class<n>.

NotationBedeutung
g30v1.5Analog Input, var 1 (32-bit + Flag), Index 5
g30v5.5Analog Input, var 5 (Float), Index 5
g1v2.0Binary Input, var 2 (mit Flag), Index 0
g20v1.0Counter, 32-bit, Index 0
class0Class-0-Polling (vollständiger Scan der statischen Daten)
class1Class-1-Events (ereignisbasierte Änderungen)
Class 0 vs g30v1.x

Wenn Sie in der Anfangsphase des Projekts „erst einmal alles abholen“ wollen, ist es praktisch, zunächst alles mit class0 auf einmal zu lesen und anschließend nur die benötigten Punkte gezielt über g30v... zu registrieren.


Zuordnung der Datenformate

GroupDatenformatFormatzusatz
g1 (BI)Boolean(leer)
g30v1 (AI 32-bit signed)IntegerDW
g30v2 (AI 16-bit signed)Integer(leer)
g30v5 (AI float)FloatREAL
g30v6 (AI double)DoubleLREAL
g20v1 (Counter 32-bit)IntegerDW

Unterstützung für Schreibzugriffe (Write)

Beim Schreiben auf eine DNP3-Outstation gibt es üblicherweise zwei Ziele.

NotationBedeutung
g41v1.5Analog Output Block, 32-bit signed Setpoint, Index 5
g41v3.5Analog Output Block, Float-Setpoint, Index 5
g12v1.0Control Relay Output Block (CROB) — z. B. Trip/Close eines Leistungsschalters
CROB ist gefährlich

g12 (CROB) betätigt Leistungsschalter / Relais direkt. In Produktivumgebungen nur nach dem select-before-operate-Verfahren und nach Prüfung der Berechtigungen verwenden.


Häufige Probleme und Lösungen

SymptomMögliche UrsacheLösung
„No reply“Adress-MismatchMaster- und Outstation-Adresse auf beiden Seiten prüfen
Alle Werte 0 oder veraltetKeine Unsolicited-Nachrichten empfangen, Link-Layer-ProblemExplizites Polling mit class0 versuchen
„Object not found“Falsche Group/VariationDokument „DNP point map“ der RTU prüfen
Zeit weicht stark abDNP3-Timestamp UTC vs. lokale ZeitDas Gateway empfängt UTC. Umrechnung auf Anzeigeseite

Ausführlichere Tabelle Group / Variation

Das Datenmodell von DNP3 ist so aufgebaut, dass eine „Group“ mehrere „Variations“ enthält. Selbst bei Group 30 (AI) gibt es die Darstellungen 32-bit / 16-bit / float / double — die Konfiguration muss zu der von der RTU bereitgestellten Variation passen.

GroupVarBedeutungGröße / Format
11Binary Input — Packed Format (kein Flag)1 bit
12Binary Input with Status (inkl. Flag-Bit)1 byte
21Binary Input Change — ohne Zeitevent
22Binary Input Change — absolute Zeitevent + 6-byte time
102Binary Output Status (mit Flag)1 byte
121CROB (Control Relay Output Block) — nur Schreiben11 byte struct
201Counter — 32-bit4 byte
202Counter — 16-bit2 byte
301AI 32-bit signed (mit Flag)5 byte
302AI 16-bit signed (mit Flag)3 byte
303AI 32-bit signed (ohne Flag)4 byte
305AI single-precision float (mit Flag)5 byte
306AI double-precision float (mit Flag)9 byte
321AI Change — ohne Zeitevent
327AI Change — single float, absolute Zeitevent
401AO Status 32-bit signed (mit Flag)5 byte
411AO Block 32-bit signed (Ziel für Schreibzugriffe)5 byte
413AO Block float (Ziel für Schreibzugriffe)5 byte

Häufig genutzte Betriebsmuster

Muster 1. Basismesswerte eines Umspannwerk-IED (Strom, Spannung, Leistung)

IEDs wie ABB REC615 / SEL-451 / SEL-735-Zähler werden üblicherweise etwa so gemappt.

Tag-NameAdresseDatenformatFormatzusatz
Strom Phase Ag30v5.0FloatREAL
Strom Phase Bg30v5.1FloatREAL
Strom Phase Cg30v5.2FloatREAL
Gesamtwirkleistungg30v5.10FloatREAL
Frequenzg30v5.20FloatREAL
Position Leistungsschalter 1g1v2.0Boolean(leer)
Position Leistungsschalter 2g1v2.1Boolean(leer)

Muster 2. Kumulierte Zähler (kWh / Gas m³ usw.)

Counter (Group 20) sind kumulierte Werte. Auf der Anzeigeseite wird die Differenz gebildet und in „Verbrauch pro Stunde“ umgerechnet.

Tag-NameAdresseDatenformat
Wirkarbeit kumuliert (kWh)g20v1.0Integer
Blindarbeit kumuliert (kvarh)g20v1.1Integer

Muster 3. Leistungsschaltersteuerung über CROB (Write)

g12v1.0 = "Pulse-On / Trip / Close" 명령 코드

CROB 1-byte Control Code:

WertBedeutung
0x01Pulse-On
0x02Pulse-Off
0x03Latch-On
0x04Latch-Off
0x41Trip (Schutzauslösung)
0x81Close
select-before-operate

Bei vielen RTUs ist für CROB das SBO-Verfahren (select → operate) zwingend. Auch wenn PlantPulse den Befehl als einzelnen Write absetzt, kann die RTU ihn zurückweisen. In solchen Umgebungen entweder auf der RTU den Modus ohne SBO aktivieren oder die beiden Schritte über ein separates Automatisierungsskript ausführen.


Referenzen / Nächste Schritte

  • In den PDFs „DNP3 device profile“ der RTU-Hersteller (ABB, SEL, GE, Schneider) ist das gesamte Mapping von Group/Variation/Index enthalten.
  • Das Normdokument IEEE 1815-2012 (DNP3) ist die offizielle Spezifikation.
  • Siehe das DNP3-Automatisierungsbeispiel unter Erweitert — REST API.