发表于:2003-09-05 16:41:00
楼主
DNP3.0规约简介
DNP3.0 规约的文本共分为四个部分,数据链路层、传输层、应用层规约及数据对象库。
一、数据链路层规约
数据链路层规约文件规定了DNP3.0版的数据链路层,链路规约数据单元 (LPDU) 以及数据链路服务和传输规程。数据采用一种可变帧长格式:FT3。
FT3 帧长格式:
一个FT3帧被定义为一个固定长度的报头,随后是可以选用的数据块,每个数据块附有一个 l6 位的 CRC 校验码。固定的报头含有2个字节的起始字,一个字节的长度(LENGH),一个字节的链路层控制字 (CONTROL),一个l6位的目的地址,一个16位的源地址和一个l6位的CRC校验码。
块0 块1 块N
-------
起始 起始 长度 链路 目的 源地 CRC 用户 CRC 用户 CRC
字 字 层控 地址 址 校验 数据 校验 …… 数据 校验
0*05 0*64 制字 码 码 码
-------
定长的报头 主体
起始字:2字节,0x0564
长度:1字节,是控制字、目的地址、源地址和用户数据之和。255≥长度≥5
目的地址:2个字节,低字节在前
源地址:2个字节,低字节在前
用户数据:跟在报头之后的数据块,每I6个字节一块,最后一个块包含剩下的字节,可以
是 l 到16个字节。每个数据块都有一CRC循环冗余码挂在后面。
CRC循环冗余码:2个字节。在一个帧内,挂在每个数据块之后。
控制字与功能码:
通信控制字包含有本帧的传输方向,帧的类型以及数据流的控制信息。
7 6 5 4 3 2 1 0
DIR:方向位(direction),表示此帧是由主站发出还是从站发向主站。
FRM:源发标志位(primary),表示此帧是来自原发站还是来自响应站。
FCB:帧的计数位,0、1交替变化,设计此位的目的是进行简单的纠错。
FCV:帧的计数位的有效标志,为1时,FCB位有效。
功能码:
对于原发送方的帧:
0:使远方链路复位
1:使远方进程复位 (Reset of user process)
3:发送用户数据,须对方确认
4:发送用户数据,不须对方确认
9:询问链路状态
对于从方发送帧:
0:肯定确认
1:否定确认
11:回答链路状态
二、传输层规约
这部分定义对于 DNP 数据链路层充当伪传输层的传输层功能。伪传输层功能专门设计用于在原方站和从方站之间传送超出链路规约数据单元 (LPDU) 定义长度的信息。其格式如下:
其中:
传输层报头:传输控制字,l个字节
数据块:应用用户数据 l-249 个字节
由于数据链路层的 FT3 帧格式中的长度字的最大限制为255,因此传输层数据块的最大长度为 255-5 (链路层 control + source + destination )-1(TH) =249。当应用用户数据长度大于 249 字 节时,传输层将以多帧报文方式传送,并每帧前加 TH 控制字。
如 l234=249+249+249+249+238,分5帧传送。
传输层报头 (TH) 格式:
7 6 5 4 3 2 1 0
FIN:此位置“1”,表示本用户数据是整个用户信息的最后一帧
FIR:此位置“1”,表示本用户数据是整个用户信息的第一帧
序号:表示这一数据帧是用户信息的第几帧,帧号范围为 0~63,每个开始帧可以是 0~63
中的任何一个数字,下一帧自然增加,63 以后接0
三、应用层规约
本文本定义了应用层报文 (APDU) 的格式。这里,主站被定义为发送请求报文的站,而从站则为从属设备。被请求回送报文的 RTU 或智能终端 (IEDS) 是事先规定了的。在 DNP中,只有被指定的主站能够发送应用层的请求报文,而从站则只能发送应用层的响应报文。
1.应用报文格式:
应用请求报文的格式:
Request Header 请求报文 Object Header 对象标题 Data 数据 Object Header 对象标题 Data 数据
应用响应报文格式:
Response Header 响应报文 Object Header 对象标题 Data 数据 Object Header 对象标题 Data 数据
其中:
请求 (响应) 报头:标识报文的目的,包含应用规约控制信息 (ACPI)
对象标题:标识随后的数据对象
数据:在对象标题内的指定的数据对象
2.应用报文报头字段的定义:
请求报头有两个字段。每个字段为8位的字节,说明如下:
Application Control 应用控制 Function Code 功能码
响应报头有三个字段。 前两个字段为8位的字节,第三个字段为两个字节,说明如下:
Application Control 应用控制 Function Code 功能码 Internal Indication 内部信号字
这里:
A. 应用控制:一个字节的长度,格式如下:
7 6 5 4 3 2 1 0
FIN FIR CON 序号
FIR:此位置“1”, 表示本报文分段是整个应用报文的第一个分段
FIN:此位置“l”, 表示本报文分段是整个应用报文的最后一个分段
CON:此位置“l”, 表示接受到本报文时,对方须要给予确认
序号:表示分段的序号,1-15
B.功能码:标识报文的目的,一个字节的长度,例如:
请求报文:
1一读,请从站送所指定的数据对象
2一写,向从站存入指定的对象
……..
响应报文:
0一确认
129一响应
130—主动上送
C.内部信号:
共两个字节,l6位,每一位分别表示从站的当前的各种状态。
3.对象标题 (Object Header):
报文的对象标题指定包含在报文中的数据对象或是被用来响应此报文的数据对象。格式如下:
Object对象 Qualifier限定词 Range变程(范围)
A.对象(Object):
两个字节,指定对象组以及跟在标题后面的对象的变化。对象段的格式如下:
Group对象组 Variation变体
对象段规定一个对象组和在该组内的对象变体。对象的组别与变体结合起来可以唯一的规定报文所指定的对象。对象组指定数据的基本形式(如:模拟输入),对象变体指定数据的形式 (如16位模拟输入或32位模拟输入)。
B.限定词(Qualifier)、变程 (范围,Range)
限定词为一个8位的字节段,规定交程段的意义。变程说明数据对象的数量,起点和终点的索引成所讨论的对象的标识符。
限定词段的格式如下:
R Index Size索引规模 Qualifier Code4位限定词码
其中:
R:保留位,置为零。
索引规模(Index Size):
3个Bits,,规定前置于每个数据对象的索引规模或对象的规模。
在请话求报文中,当限定词码 (Qualifier Code) 等于11时,1、2、3分别代表数据对象前的索引是l、2、4个字节。0无效。4、5、6、7保留。
在响应报文中,或包含数据对象的请求报文的对象标题中:
0:对象没有前缀的索引
1:对象有一个字节的前缀索引
2:对象有两个字节的前缀索引
3:对象有四个字节的前缀索引
4:对象前有一个字节标识对象的大小
5:对象前有两个字节标识对象的大小
6:对象前有四个字节标识对象的大小
7:保留
限定词码 (Qualifier Code):
4个Bits,用以规定变程 (Range) 意义。
当限定词码取值0~5时,变程段包含1个开始范围 (Start Range) 和1个结束范围 (Stop range)。当限定词