Zum Hauptinhalt springen

DNP3 (Strom / Utility)

DNP3 (Distributed Network Protocol v3) ist das am weitesten verbreitete Protokoll in Utility-SCADA-Systemen für Strom / Wasser / Gas. Es ist der Kommunikationsstandard zwischen RTU / IED und SCADA-Master, wobei zeitgestempelte Ereignisse (time-stamped events) und zuverlässige Meldungen (unsolicited responses) die Kernmerkmale sind.


Eingabewerte des Registrierungsformulars​

EingabefeldWas wird eingetragenBeispiel
IP-AdresseIP der RTU / IED192.168.0.120
PortDNP3 TCP-Port20000 (Standard)
Master-Adresse (master-address)Eigene Adresse des Gateways (Master)1
Outstation-Adresse (outstation-address)DNP-Adresse des Gegenübers (Slave)10
Antwort-Timeout (request-timeout)Wartezeit auf Antwort (ms)5000
Unsolicited (enable-unsolicited)Aktivierung der spontanen Übertragung (Push) der RTU — der Treiber cached und gibt sie bei read() zuerst zurückall / 1 / 2 / 3 / 1,2 (Standard: leer = nicht verwendet)
Beide Adressen müssen übereinstimmen

Bei DNP3 müssen Master-Adresse und Outstation-Adresse auf beiden Seiten übereinstimmen. Prüfen Sie in der RTU-Konfiguration (normalerweise mit den IED-Konfigurationstools von ABB / SEL / GE), ob „Source Address“ und „Destination Address“ mit den Master-/Outstation-Adressen des Gateways übereinstimmen.


PLC-Adressnotation für Tags​

DNP3 identifiziert Datenpunkte über Group / Variation / Index. Häufige Groups:

GroupTypAnmerkung
1Binary Input (BI)Schalter-/Kontaktstatus usw.
10Binary Output (BO)Ausgangsstatus
20CounterZählerstand
30Analog Input (AI)Strom·Spannung·Temperatur — am häufigsten
40Analog Output (AO)Ausgangs-Sollwert
41Analog Output Block (Schreibziel)Sollwert schreiben

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

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 (ereignisbezogene Änderungen)
Class 0 vs. g30v1.x

Wenn Sie in der frühen Projektphase „erstmal alles holen“ möchten, empfiehlt es sich, zunächst mit class0 alles auf einmal zu empfangen und anschließend nur die benötigten Punkte über g30v... präzise zu registrieren.


Datentyp-Zuordnung​

GroupDatentypFormat-Hilfsfeld
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

Schreibunterstützung (Write)​

Bei einer DNP3-Outstation gibt es normalerweise zwei Schreibziele.

NotationBedeutung
g41v1.5Analog Output Block 32-bit signed Sollwert, Index 5
g41v3.5Analog Output Block float Sollwert, Index 5
g12v1.0Control Relay Output Block (CROB) — z. B. Schalter Aus/Ein
CROB ist gefährlich

g12 (CROB) steuert Schalter / Relais direkt. In Betriebsumgebungen muss unbedingt das select-before-operate-Verfahren und die Berechtigungsprüfung vor der Verwendung durchgeführt werden.


Häufige Probleme und Lösungen​

SymptomMögliche UrsacheLösung
„No reply“Adress-MismatchMaster-/Outstation-Adresse auf beiden Seiten prüfen
Alle Werte 0 oder veraltetKeine Unsolicited-Meldungen, Link-Layer-ProblemExplizites Polling mit class0 versuchen
„Object not found“Falsche Group/VariationDNP-Point-Map-Dokument der RTU prüfen
Zeit deutlich verschobenDNP3-Zeitstempel UTC vs. lokalGateway empfängt in UTC. Umrechnung in der Anzeige

Detailliertere Tabelle zu Group / Variation​

Das Datenmodell von DNP3 ist so aufgebaut, dass eine „Group“ mehrere „Variationen“ enthält. Selbst bei derselben Group 30 (AI) gibt es mehrere Darstellungen (32-bit / 16-bit / float / double), sodass die Zuordnung davon abhängt, welche Variation die RTU bereitstellt.

GroupVarBedeutungGröße / Format
11Binary Input — gepacktes Format (ohne Flag)1 Bit
12Binary Input mit Status (Flag-Bit enthalten)1 Byte
21Binary Input Change — ohne ZeitEvent
22Binary Input Change — absolute ZeitEvent + 6-Byte-Zeit
102Binary Output Status (mit Flag)1 Byte
121CROB (Control Relay Output Block) — nur Schreiben11-Byte-Struktur
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, abs. ZeitEvent
401AO Status 32-bit signed (mit Flag)5 Byte
411AO Block 32-bit signed (Schreibziel)5 Byte
413AO Block float (Schreibziel)5 Byte

Häufig verwendete Betriebsmuster​

Muster 1. Grundmesswerte eines Umspannwerks-IED (Strom·Spannung·Leistung)​

IEDs wie ABB REC615 / SEL-451 / SEL-735-Messgeräte werden normalerweise wie folgt zugeordnet.

Tag-NameAdresseDatentypFormat-Hilfsfeld
A-Phasenstromg30v5.0FloatREAL
B-Phasenstromg30v5.1FloatREAL
C-Phasenstromg30v5.2FloatREAL
Gesamtwirkleistungg30v5.10FloatREAL
Frequenzg30v5.20FloatREAL
Schalter 1 Positiong1v2.0Boolean(leer)
Schalter 2 Positiong1v2.1Boolean(leer)

Muster 2. Zählerstände (kWh / m³ Gas usw.)​

Counter (Group 20) sind kumulierte Werte. Die Differenz wird in der Anzeige berechnet und in „Verbrauch pro Stunde“ umgewandelt.

Tag-NameAdresseDatentyp
Kumulierte Wirkenergie (kWh)g20v1.0Integer
Kumulierte Blindenergie (kvarh)g20v1.1Integer

Muster 3. Schaltersteuerung mit CROB (write)​

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

CROB 1-Byte-Steuercode:

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

Viele RTUs verlangen bei CROB zwingend die SBO-Prozedur (select → operate). Auch wenn PlantPulse einen einzelnen Write-Befehl sendet, kann die RTU diesen ablehnen. In solchen Umgebungen entweder den SBO-freien Modus auf der RTU-Seite aktivieren oder die beiden Schritte über ein separates Automatisierungsskript ausführen.


Referenz / Nächste Schritte​

  • Das „DNP3 device profile“-PDF des RTU-Herstellers (ABB, SEL, GE, Schneider) enthält die vollständige Group/Variation/Index-Zuordnung.
  • Das IEEE 1815-2012-Standarddokument (DNP3) ist die offizielle Spezifikation.
  • Siehe auch das DNP3-Automatisierungsbeispiel unter Fortgeschritten — REST API.