DNP 3.0
DNP 3.0 (Distributed Network Protocol 3.0)是一种通信协议,主要用于工业自动化领域,特别是在电力系统中,用于监控和数据采集(SCADA)系统。它允许远程终端单元(RTU)和主站系统之间进行可靠的数据交换。
设备设置
字段 | 说明 |
---|---|
host | 设备 IP 地址 |
port | 设备端口号, 默认20000 |
masterid | 主站 ID, 默认1 |
slaveid | 从站 ID, 默认2 |
class0123_interval | Class0123 拉取间隔, 默认20000毫秒 |
class123_interval | Class123 拉取间隔, 默认1000毫秒 |
time_sync | 时间同步, 默认 No |
支持的数据类型
- uint8
- uint16
- int16
- uint32
- int32
- float
- bit
地址格式
obj.var.index(.attribute)
CROB.index:counter:on-time:off-time
obj 和 var
在 DNP 3.0 协议中,使用 obj 和 var 来定义一个对象类型,index 指定一组对象实体的具体的对象,下表索引从0开始。attribute 目前只支持 value,如果不填写,默认为value。
目前支持下列对象:
obj | var | 对象 | r/w | 类型 |
---|---|---|---|---|
1 | 1 | binary input | r | bit |
1 | 2 | binary input with status | r | bit |
2 | 1 | binary input change without time | r | bit |
2 | 2 | binary input change with absolute time | r | bit |
2 | 3 | binary input change without relative time | r | bit |
10 | 1 | binary output | r | bit |
10 | 2 | binary output with status | r | bit |
10 | 3 | binary output change with time | r | bit |
20 | 1 | 32-bit binary counter with flag | r | uint32/int32 |
20 | 2 | 16-bit binary counter with flag | r | uint16/uint16 |
20 | 5 | 32-bit binary counter without flag | r | uint32/int32 |
20 | 6 | 16-bit binary counter without flag | r | uint16/int16 |
21 | 1 | 32-bit frozen binary counter | r | uint32/int32 |
21 | 2 | 16-bit frozen binary counter | r | uint16/int16 |
30 | 1 | 32-bit analog input | r | uint32/int32 |
30 | 2 | 16-bit analog input | r | uint16/int16 |
30 | 3 | 32-bit analog input without flag | r | uint32/int32 |
30 | 5 | 32-bit float analog input | r | float |
32 | 1 | 32-bit analog input change without time | r | uint32/int32 |
32 | 2 | 16-bit analog input change without time | r | uint16/int16 |
32 | 3 | 32-bit analog input change with time | r | uint32/int32 |
32 | 4 | 16-bit analog input change with time | r | uint16/int16 |
32 | 7 | 32-bit float analog input change with time | r | float |
40 | 1 | 32-bit analog output | r | uint32/int32 |
40 | 2 | 16-bit analog output | r | uint16/int16 |
40 | 3 | 32-bit float analog output | r | flaot |
41 | 1 | 32-bit analog output block | w | uint32/int32 |
41 | 2 | 16-bit analog output block | w | uint16/int16 |
41 | 3 | 32-bit float analog output block | w | float |
42 | 7 | 32-bit float analog output event with time | r | float |
CROB(Control Relay Output Block)是一个特殊的对象,用于驱动开关型输出设备 (binary output),只写,类型为 uint8
, 因为其除了 Control Code 之外,还需要设置 counter,on-time 和 off-time。 Control Code 取值如下:
Control Code | Action |
---|---|
1 | output pluse on |
2 | output pluse off |
3 | output latch on |
4 | output latch off |
65 | output pluse on + close |
66 | output pluse off + close |
67 | output latch on + close |
68 | output latch off + close |
129 | output pluse on + trip |
130 | output pluse off + trip |
131 | output latch on + trip |
132 | output latch off + trip |
+16 | + queue |
+32 | + clear |
地址示例
地址 | 数据类型 | 说明 |
---|---|---|
1.2.0 | bit | binary input 下标0的值 |
1.2.1 | bit | binary input 下标1的值 |
2.2.1 | bit | binary input 下标1的值,带绝对时间戳 |
CROB.0:0:0:0 | bit | 控制 biary output 下标0输出 |
40.1.0 | bit | 32-bit binary output 下标0的值 |