Skip to content

DNP 3.0

DNP 3.0 (Distributed Network Protocol 3.0) is a communication protocol primarily used in the industrial automation field, especially in power systems for supervisory control and data acquisition (SCADA) systems. It enables reliable data exchange between remote terminal units (RTUs) and master station systems.

Device Settings

FieldDescription
hostDevice IP address
portDevice port number, default 20000
masteridMaster station ID, default 1
slaveidSlave station ID, default 2
class0123_intervalClass0123 pull interval, default 20000 ms
class123_intervalClass123 pull interval, default 1000 ms
time_syncTime synchronization, default No

Supported Data Types

  • uint8
  • uint16
  • int16
  • uint32
  • int32
  • float
  • bit

Address Format

obj.var.index(.attribute)

CROB.index:counter:on-time:off-time

obj and var

In the DNP 3.0 protocol, obj and var are used to define an object type, and index specifies a specific object within a group of objects. The attribute currently only supports value. If not specified, the default is value.

Currently supported objects are as follows:

objvarObjectr/wType
11binary inputrbit
12binary input with statusrbit
21binary input change without timerbit
22binary input change with absolute timerbit
23binary input change without relative timerbit
101binary outputrbit
102binary output with statusrbit
103binary output change with timerbit
20132-bit binary counter with flagruint32/int32
20216-bit binary counter with flagruint16/uint16
20532-bit binary counter without flagruint32/int32
20616-bit binary counter without flagruint16/int16
21132-bit frozen binary counterruint32/int32
21216-bit frozen binary counterruint16/int16
30132-bit analog inputruint32/int32
30216-bit analog inputruint16/int16
30332-bit analog input without flagruint32/int32
30532-bit float analog inputrfloat
32132-bit analog input change without timeruint32/int32
32216-bit analog input change without timeruint16/int16
32332-bit analog input change with timeruint32/int32
32416-bit analog input change with timeruint16/int16
32732-bit float analog input change with timerfloat
40132-bit analog outputruint32/int32
40216-bit analog outputruint16/int16
40332-bit float analog outputrflaot
41132-bit analog output blockwuint32/int32
41216-bit analog output blockwuint16/int16
41332-bit float analog output blockwfloat
42732-bit float analog output event with timerfloat

CROB (Control Relay Output Block) is a special object associated with actuating on/off type output devices, write-only, type uint8, because it requires setting counter, on-time, and off-time in addition to Control Code.

Control Code values are as follows:

Control CodeAction
1output pluse on
2output pluse off
3output latch on
4output latch off
65output pluse on + close
66output pluse off + close
67output latch on + close
68output latch off + close
129output pluse on + trip
130output pluse off + trip
131output latch on + trip
132output latch off + trip
+16+ queue
+32+ clear

Address Examples

AddressData TypeDescription
1.2.0bitValue of binary input index 0
1.2.1bitValue of binary input index 1
2.2.1bitValue of binary input index 1 with absolute timestamp
CROB.0:0:0:0bitControl binary output index 0 output
40.1.0bitValue of 32-bit binary output index 0