上传者: qqii77
|
上传时间: 2025-10-11 10:01:47
|
文件大小: 114KB
|
文件类型: PDF
### DNP3通讯协议知识点详解
#### 一、概述
DNP3 (Distributed Network Protocol Version 3) 是一种广泛应用于工业自动化领域的开放式通信协议,主要用于监控与数据采集(SCADA)系统。它由四个主要部分组成:数据链路层、传输层、应用层以及数据对象库。
#### 二、数据链路层规约
数据链路层规约定义了DNP3通信的基本单元——链路规约数据单元(LPDU)及其传输规则。这一层采用了可变帧长格式FT3。
##### FT3帧结构
- **起始字**:2字节,固定值`0x0564`,用于标识帧的开始。
- **长度(LENGTH)**:1字节,表示控制字、目的地址、源地址和用户数据的总长度。长度范围为5至255字节。
- **链路层控制字(CONTROL)**:1字节,包含传输方向、帧类型等信息。
- **目的地址**:2字节,低位在前。
- **源地址**:2字节,低位在前。
- **CRC校验码**:2字节,用于错误检测。
- **用户数据**:位于报头之后,可以是1至16字节的数据块,每个数据块后跟随一个16位的CRC校验码。
##### 控制字与功能码
控制字包含了方向位(DIR)、源发标志位(FRM)、帧计数位(FCB)和帧计数位有效标志(FCV)。
- **DIR**:指示帧的方向,0为主站到从站,1为从站到主站。
- **FRM**:指示帧的来源,0表示原发站,1表示响应站。
- **FCB/FCV**:用于简单的错误检测和纠正。
功能码用于指示帧的功能,例如:
- 0:重置远程链路。
- 1:重置远程进程。
- 3:发送用户数据并等待确认。
- 4:发送用户数据但不需要确认。
- 9:查询链路状态。
从站响应帧的功能码包括:
- 0:肯定确认。
- 1:否定确认。
- 11:回应链路状态查询。
#### 三、传输层规约
传输层规约负责在主站和从站之间传输超过LPDU定义长度的信息。
##### 传输层报头格式
- **FIN**:标志当前帧是否为整个用户数据的最后一帧。
- **FIR**:标志当前帧是否为整个用户数据的第一帧。
- **序号**:表示数据帧在整个用户数据中的顺序编号,范围为0~63。
##### 数据块格式
- **传输层报头(TH)**:1字节,包含传输控制字。
- **数据块**:应用用户数据,长度为1~249字节。
如果应用用户数据长度超过249字节,则需分割成多个报文进行传输,每帧前面加上TH控制字。
#### 四、应用层规约
应用层规约定义了应用层报文(APDU)的格式和规则,用于处理具体的业务逻辑。
##### 应用报文格式
- **请求报文**:由主站发起,包含请求报头、对象标题和数据。
- **响应报文**:由从站响应,同样包含响应报头、对象标题和数据。
##### 报文报头字段定义
- **应用控制**:包含控制信息。
- **功能码**:指示报文的功能。
- **内部信号字**:仅存在于响应报文中,用于携带额外的状态信息。
#### 五、总结
DNP3协议通过定义清晰的数据链路层、传输层和应用层,实现了复杂工业环境下的可靠通信。其独特的FT3帧格式和传输层分割机制确保了即使在网络条件不佳的情况下也能保证数据的准确传输。同时,通过详细的控制字和功能码定义,使得主站和从站之间的交互更加灵活高效,满足了不同应用场景的需求。