Reading Objects¶
The dnp3read.py script can be used to connect to a DNP3 outstation and request
data objects based on specified classes. The script offers several connection
and request options that allow you to customize your interaction with the
outstation.
Target Format¶
The format for specifyinf a remote address to connect to is a little bit different this time:
<link_addr>@<host>[:<port>]
The <link_addr> is the DNP3 link address, and the <host> is the IP address or hostname of the outstation. The default port is 20000.
Requesting Object Groups¶
The -G option specifies the DNP3 object group number to request. This is an
integer representing the group of data objects you want to retrieve. For
instance:
$ dnp3read.py -t 1024@127.0.0.1 -G 110
[I] Connecting to outstation (1024) at 127.0.0.1:20000...
Data Objects:
├── Object(s): Octet string (Obj: 110, Var: 1) [Range: 8-10]
│ ├── Octet string [0]:
│ │ 00000000: 00 .
│ │
│ ├── Octet string [1]:
│ │ 00000000: 00 .
│ │
...
│
└── Object(s): Octet string (Obj: 110, Var: 5) [Range: 7-8]
└── Octet string [7]:
00000000: 48 65 6c 6c 6f Hello
Requesting Objects from Data Classes¶
To read all objects from specific data classes, just specify the -class*
option:
dnp3read.py -t 1024@127.0.0.1 -class1
[I] Connecting to outstation (1024) at 127.0.0.1:20000...
Data Objects:
├── Object(s): Analog output event (Obj: 42, Var: 1) [Count: 1]
│ └── 32-bit without time [0]: (prefix: 7)
│ ├── comm_lost: False
│ ├── local_forced: False
│ ├── online: True
│ ├── over_range: False
│ ├── reference_err: False
│ ├── remote_forced: False
│ ├── reserved0: False
│ ├── restart: False
│ └── value: 1
└── Object(s): Octet string event (Obj: 111, Var: 5) [Count: 1]
└── Octet string event [0]: (prefix: 7)
00000000: 48 65 6c 6c 6f Hello
- -class0¶
Requests class 0 objects. The response will include objects from the following groups:
1: Binary Input
3: Double-bit Binary Input
10: Binary Output Status
20: Counter
21: Frozen Counter
30: Analog Input
31: Frozen Analog Input
40: Analog Output Status
87: Data Set
101: Binary-Coded Decimal Integer
102: Unsigned Integer—8-bit
110: Octet String
121: Security Statistics
- -class1¶
Requests class 1 objects. The response may include objects from the following groups:
2: Binary Input Event
4: Double-bit Binary Input Event
11: Binary Output Event
13: Binary Output Command Event
22: Counter Event
23: Frozen Counter Event
32: Analog Input Event
33: Frozen Analog Input Event
42: Analog Output Event
43: Analog Output Command Event
70: File Transfer
88: Data Set Event
111: Octet String Event
113: Virtual Terminal Event
120: Authentication
122: Security Statistics Event
Note
-class2and-class3request the same object groups as-class1