“我正在参加「掘金·启航计划」”
DNP (Distributed Network Protocol,分布式网络规约) 是一种应用于自动化组件之间的通讯协议,常见于电力、水处理等行业。SCADA 可以使用 DNP 协议与主站、RTU、及 IED 进行通讯。 涉及.数据链路层.传输层.应用层
| 起始字 | 起始字 | 长度 | 链路层控制字 | 目的地址 | 源地址 | CRC校验码 | 用户数据 | CRC校验码 | ... | 用户数据 | CRC校验码 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x05 | 0x64 | 长度 | 链路层控制字 | 两个字节 | 两个字节 | CRC校验码 |
- 起始字(2字节)
2字节 0564
- 长度(1字节)
链路层控制字到用户数据 255>=长度>=5
- 功能码
对于原发送方的帧
0 使远方链路复位 1 使远方进程复位 3 发送用户数据,须对方确认 4 发送用户数据,不许对方确认 9 询问链路状态
对于从方发送帧
0 肯定确认 1 否定确认 11 回答链路状态
- 目的地址(2字节)
低字节在前
- 源地址(2字节)
低字节在前
-
CRC校验码(两个字节)
-
用户数据
跟在报头之后的数据块,每16个字节一块,最后一个块包含剩下的字节。每个数据块都有一个CRC循环冗余码挂在后面。
1 使用信道
1.1 点对点信道
使用一对一点对点通信方式。
1.2 广播信道
这种信道采用一对多的广播通信方式。
- 模型
电话网 局域网 广域网 局域网
主机H1 --------> 路由器 --------> 路由器 --------> 路由器 --------> 主机H2
H1 R1 R2 R3 H2
应用层 应用层
运输层 运输层
网络层 网络层 网络层 网络层 网络层
链路层 链路层 链路层 链路层 链路层
物理层 物理层 物理层 物理层 物理层
不同的链路层可能采用不同的数据链路层协议
3 数据链路和帧
3.1 链路
一条无源的点到点的物理线路段 没有其他交换结点 一条链路只是一条通路的一个组成部分
3.2 帧
4 重点
4.1 封装成帧
| SOH | 数据 | EOT |
|---|---|---|
| StartOfHeader | 数据 | EndOfTransmission |
| 帧开始符 | 数据 | 帧结束符 |
特殊的字符作为帧定界符,dnp中0564
4.2 透明传输
如果数据中的代码正好和SOH或EOT一样,数据链路层就会找到错误地"帧的 边界"
解决方案:【字节填充法】假如转义字符。在数据送往网络层之前删除转义字符。
【字符填充法】
【?】转义字符dnp3中没有定义
4.3 差错控制
传输过程中可能发生比特差错
解决方案:各种差错检测措施 【CRC循环冗余校验】
ps:在一段时间内,传输错误的比特占所传输总数的比率称为误码率BER(Bit Error Rate)。