[宝典]DNP3简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[宝典]DNP3简介
DNP3.0规约简介
1 综述
DNP3.0规约采用异步方式,一个起始位,一个结束位,8个数据位,无奇偶校验位。

信号电平符合EIA—RS232标准。

DNP3.0规约采用EPA模型,分为三层结构:数据链路层,伪传输层和应用层。

数据链路层负责通信链路的建立、数据的接收、发送和初步处理;伪传输层负责应用数据的分包和组包;应用层实现真正的信息处理。

DNP3.0规约多采用问询—应答方式,但也允许从站主动上送信息。

一个典型的DNP应答处理过程一般为:
主站:
a) 应用层组织好信息后交给伪传输层;
b) 传输层把应用层报文分帧,每帧前加上一个报头TH,然后交给链路层;
c) 链路层则把每帧报文分块,每块最多16字节,每个块后加一个16位的
CRC校验码,同时链路层有一个固定长度的报头,包含有地址、长度等
信息;主站链路层发送报文,并且在规定时间内没有收到对方确认时进
行重发(如果要求);
从站:
a') 链路层接收完一帧报文后,进行CRC、地址、长度等合法性检查,如
对方链路层要求确认,则回答ACK或NACK报文,然后把接收正确的
报文去掉报头和每块的CRC后交给传输层;
b') 传输层检查TH报头,并在多帧报文时按顺序把报文组成一个完整的应用层数据包,然后交给应用层;
c') 应用层收到报文后,如对方应用层要求确认,先回答一个Confirm 报文,然后对信息进行处理,再组织回答报文(回答过程类似主站)。

2 数据链路层
DNP3.0的数据链路层采用一种可变帧长格式:FT3。

2.1 FT3帧长格式:
一个FT3帧被定义为一个固定长度的报头,随后是可选的数据块,每个数据块附有一个16位的CRC校验码。

固定的报头含有2个字节的起始字,一个字节的长度(LENGH),一个字节的链路层控制字(CONTROL),一个16位的
目的地址,一个16位的源地址和一个16位的CRC校验码。

块0 块1 块N
CRCCRC CRC起始起始长度链路目的源地用户用户
校验校验校验字节字节层控地址址数据数据……. 码码码 0x05 0x64 制字
定长的报头主体
, 起始字:2字节,0x05,0x64;
, 长度:1字节,是控制字、目的地址、源地址和用户数据之和(不含CRC)。

5?长度?255;
, 目的地址:2个字节,低字节在前;0xFFFF为广播地址;
, 源地址:2个字节,低字节在前;
, 用户数据:跟在报头之后的数据块,每16个字节一块,最后一个块包含剩下的字节,可以是1到16个字节。

每个数据块都有一CRC循环冗余码挂
在后面。

, CRC循环冗余码:2个字节。

在一个帧内,挂在每个数据块之后。

CRC生成多项式:G(x)=x16+x13+x12+x11+x10+x8+x6+x5+x2+1 (0x3d65);
CRC按字节反向排列;
2.2 控制字与功能码:
链路层通信控制字包含有本帧的传输方向,帧的类型以及数据流控制信息。

7 6 5 4 3 2 1 0
DIR PRM FCB FCV 功能码
RES DFC
, DIR:方向位(direction),表示此帧是由主站发出(1)还是从站发向主站(0)。

, PRM:源发标志位(primary),表示此帧是来自源发方还是来自响应方。

DNP 允许从站主动上送报文,因此源发方既可以是主站,也可以是从站。

, FCB:(源发站报文PRM=1)帧的计数位,0、1交替变化,设计此位的目的是进行简单的纠错。

, FCV:(源发站报文PRM=1)帧的计数位的有效标志,为1时,FCB位有效。

, DFC:(响应站报文PRM=0)数据链路层数据缓冲区溢出;当主站收到此位
后,应该停止发送,改为询问对方的链路层状态,直到对方回答链路层可用后再发送报文;
, RES:(响应站报文PRM=0)保留(0);
, 功能码:
主站(Primary) 从站(Secondary)
FCV 功能码帧类别功能帧类别功能
0 0 CONFIRM SEND-要求复位远方链路 ACK-确认回答
CONFIRM
1 0 CONFIRM SEND-要求复位用户进程 NACK-否定回答:链路忙,
CONFIRM 消息未接收 2 1 - SEND-要求测试链路功能未使用
CONFIRM
3 1 - SEND-要求用户数据User Data 未使用
CONFIRM
4 0 - SEND-不要求回不需确认数据报文未使用

5-8 - - - 未使用未使用 9 0 - REQUEST-要求请求链路状态未使用
RESPONSE
10 - - - 未使用未使用 11 - - RESPOND 未使用链路状态(DFC=0/1) 12-15 - - - 未使用未使用
A. RESET命令(0):
Primary(主):在上电或通信失败后,不断向SECONDARY下发(FCV=0,
FCB=x, PRM=1, DIR=x)并等待,直到有ACK回答;
Secondary(从):在上电或通信失败后,一直等待RESET命令;然后回
PRM=0, DIR=x),将FCB设为1(即接收到的下答ACK响应(DFC=x,
一帧应该其FCB=1)。

B. Reset of user process(1):
用于复位链路使用者(指传输层)进程,主要是复位链路状态;回答
ACK/NACK;
C. Test(2):
从站收到后,将FCB与预期的FCB比较,如相符,回答ACK(FCB翻
转),否则,重复送上次发送的最后一帧; D. User Data(3):
从站收到后,如果链路使用者(指传输层)可以接收数据,回答ACK,
否则回答NACK;
E. Unconfirmed User Data(4):
从站收到后交给链路使用者(指传输层),不做回答;
F. Request Link Status(9):
从站收到后,回答链路状态,如果链路使用者(指传输层)可以接收数
据,DFC=0,否则DFC=1。

*注:FCV/FCB: 主站在上电或通信失败后,不断向从站下发RESET命令,FCV=0, FCB=x(即不进行FCB校验);从站回答ACK,完成握手,并保存主站FCB状态(设为FCB’=1);接着主站下发其他命令,如果主站需要进行FCB校验,其下发命令中
FCB=1,FCV=1;从站收到命令后,如FCV=1,则将主站命令中的FCB与保存的FCB’比较,如相等,FCB校验OK,把FCB’翻转为0,否则丢弃本帧报文。

当FCV=0时,不进行FCB校验。

3 传输层
DNP的传输层是一个伪传输层。

伪传输层功能专门设计用于在源站和从站之间
传送超出链路规约数据单元(LPDU)定义长度的信息。

其格式如下:
TH(传输层报头) 数据块
其中:
传输层报头TH:传输控制字,1个字节
数据块:应用层用户数据1-249个字节
由于数据链路层的FT3帧格式中长度字的最大限制为255,因此传输层数据块
的最大长度为:255-5(链路层控制字+源地址+目的地址)-1(TH)=249。

当应用层用户数据长度大于249字节时,传输层将以多帧报文方式传送,并每帧前加TH控制
字。

如1234=249+249+249+249+238,分5帧传送。

传输层报头(TH)格式:
7 6 5 4 3 2 1 0
FIN FIR 序号
, FIN:此位置“1”,表示本用户数据是整个用户信息的最后一帧
”,表示本用户数据是整个用户信息的第一帧, FIR:此位置“1
, 序号:表示这一数据帧是用户信息的第几帧,帧号范围为0~63,每个开
始帧可以是0~63中的任何一个数字,下一帧自然增加,63以后接0。

当用户数据只有一帧时,FIR和FIN都为1。

传输层收到一帧报文后,如果FIR等于1,则记下帧序号,等待下一帧,直到收到有FIN标志的帧为止。

如果接收帧系列的序号都正确,则把所有帧组成一个完整的包,否则认为报文出错。

4 应用层
DNP的应用层负责真正的信息处理。

其报文分为请求报文和响应报文两类。

在DNP中,只有指定的主站能够发送应用层的请求报文,而从站则只能发送应用层的响应报文。

4.1 应用报文格式:
, 应用请求报文
Data Data Request Header请求Object Header对Object Header对
数据数据报头象标题象标题
, 应用响应报文:
Data Data Response Header响Object Header对Object Header对
数据数据应报头象标题象标题
其中:
, 请求(响应)报头:标识报文的目的,包含应用规约控制信息(ACPI);
, 对象标题:标识随后的数据对象;
, 数据:在对象标题内指定的数据对象;
4.2 应用报文报头字段的定义:
请求报头有两个字段。

每个字段为8位的字节,说明如下:
Application Control Function Code
应用控制(8bit) 功能码(8bit)
响应报头有三个字段。

前两个字段为8位的字节,第三个字段为两个字节,说明如下:
Application Control Function Code Internal Indications
应用控制(8bit) 功能码(8bit) 内部状态字(16bit)
其中:
, 应用控制:一个字节的长度,格式如下:
7 6 5 5 4 3 2 1 0
FIN FIR CON 序号
, FIR:此位置“1”,表示本报文分段是整个应用报文的第一个分段;
, FIN:此位置“1”,表示本报文分段是整个应用报文的最后一个分段;
, CON:此位置“1”,表示接受到本报文时,对方须要给予确认;
, 序号:表示分段的序号,0-15(RESPONSE响应报文)或16-31
(UNSOLICITED非请求报文);
响应报文的序号应等于请求报文的序号(如是多分段请求报文,则
响应序号等于末分段的序号),多分段响应报文的首段序号等于请求
报文的序号,后续段顺序增加。

注:规约推荐每个分段的缓冲区长度为2048字节(约9个链路帧)。

当应用层数据超过本层的缓冲区长度时,就把数据分成几段。

但每
段都应该是一个完整的应用层报文。

同一个对象标题的数据不应该
跨段。

* “段、帧”的有关说明:
DNP规约中,报文以帧(FRAME)为单位发送,链路层每次最多收/发一帧,除去报头等控制信息外,最多只能有249字符用于应用数据。

但应用数据一般都超过249个字节,因此,需要在传输层把一个完整的应用层回答数据分成几帧发送,每帧前加一个TH头。

假设需要3帧,第一帧TH头中FIR位,1,表示是第一帧,记录初始帧序号THSEQ,帧序号SQ0(值可以是0,63中任意数),第二帧TH头中
FIR,FIN=0,帧序号THSEQ,SQ0+1;第三帧TH头中FIR位,0,FIN=1,表示是最后一帧,帧序号THSEQ,SQ0+2。

这样,就形成“一问多答”,如主站发“读全遥测数据”命令,从站连续回答3帧,主站根据FIR/FIN和THSEQ,把3帧报文拼成一个完整的应用数据段,再交给应用层处理。

在分帧时,不考虑应用数据的具体含义。

“段”的使用与“帧”类似,但一般很少有多段数据。

, 功能码:标识报文的目的,一个字节的长度;
功能功能描述

0 传输Confirm(确认) 报文确认。

无需回答。

功能1 Read(读) 请从站送所指定的数据对象;要求响应码 2 Write(写) 向从站存入指定的对象;要求回答操作结果
3 控制Select(选择) 选择操作输出对象但不进行操作;要求回答所选点功能的状态
码 4 Operate(执行) 对已选择的输出对象进行操作;要求回答操作结果
5 Direct Operate 直接对输出对象进行操作;要求回答操作结果
(直接控制)
6 Direct Operate-No Ack 直接对输出对象进行操作;但不要求回答 .(直接控制-无须回答)
7 Immediate Freeze 冻结将指定数据对象拷贝到冻结缓冲区;要求回答操作
(立即冻结) 功能结果
码 8 Immediate Freeze –No Ack. 将指定数据对象拷贝到冻结缓冲区;不要求回答
(立即冻结-无须确认)
9 Freeze&Clear 将指定数据对象拷贝到冻结缓冲区,清除原数据; (冻结并清除) 要求回答操作结果
10 Freeze&Clear-No Ack 将指定数据对象拷贝到冻结缓冲区,清除原数据;
.(冻结并清除-无须回答) 不要求回答
11 Freeze with Time 在指定时刻及期间将指定数据对象拷贝到冻结缓冲
(带时间冻结) 区;要求回答操作结果
12 Freeze with Time-No Ack. 在指定时刻及期间将指定数据对象拷贝到冻结缓冲
(带时间冻结-无须回答) 区;不要求回答
13 应用Cold Restart(冷启动) 执行指定重启系列;待从站可用后回答时间对象控制14 Warm Restart(热启动) 执行部分重启系列;待从站可用后回答时间对象功能15 Initialize Data to Defaults 将指定时间对象恢复为上电缺省值;回答操作结果码 (数据恢复缺省值)
16 InitializeApplication 初始化指定应用;回答操作结果
(应用初始化)
17 Start Application(应用启动) 启动指定应用;回答操作结果
18 Stop Application(应用停止) 停止指定应用;回答操作结果
19 配置Save Configuration(保存配置) 将指定配置保存到不可变存储区;待从站可用后回功能答时间对象
20 码 Enable Unsolicited Messages(自允许自发上送指定数据对象;回答操作结果
发报文使能)
21 Disable Unsolicited Messages 禁止自发上送指定数据对象;回答操作结果
(自发报文禁止)
22 Assign Class (类别分配) 将指定数据对象设为某一类别
23 Delay Measurement 对时让应用计算某一从站的传输路径延迟
(时间延迟测量) 功能

24-120 - 保留保留
功能121-12- 保留(用于测试) 8 码
0 响应Confirm(确认) 报文确认。

无需回答。

功能129 Response(响应) 回答Request请求码 130 Unsolicited Message 主动上送没有请求的消息(自发上送消息)
, 内部状态IIN:
共两个字节,16位,每一位分别表示从站的当前的各种状态。

字节位说明
0 字节1 广播报文收到;响应后清除
1 一类数据可用
2 二类数据可用
3 三类数据可用
4 主站要求对时;对时后清除或由主站显式清除
5 从站的部分或全部数字输出点处于“当地”状态时置位,
此时这些点无法遥控;处于“遥控”状态时清除
6 设备故障
7 设备重启;主站显式清除(直接写从站的IIN)
0 字节2 功能码未实现
1 被请求对象未知(从站没有或类别不对)
2 限定词或变程非法
3 事故或其它应用缓冲区溢出
4 所请求的操作已经执行
5 当前配置受到破坏
6 保留(保持0)
7 保留(保持0)
, 对象标题(Object Header):
报文的对象标题指定包含在报文中的数据对象或是被用来响应此报文的数据对象。

格式如下:
Object对象 Qualifier限定词 Range变程(范围)
(2 BYTE) (1 BYTE) (由限定词确定)
, 对象(Object):
两个字节,指定对象组以及跟在标题后面的对象的变化。

对象段的格式如下: Group 对象组 Variation 变体
对象段规定一个对象组和在该组内的对象变体。

对象的组别与变体结合起来可以唯一的规定报文所指定的对象。

对象组指定数据的基本形式(如:模拟输入),对象变体指定数据的形式(如16位模拟输入或32位模拟输入)。

当请求报文的变体,0时,意味着请求所有该对象组的数据。

DNP3.0规定的对象见4.3。

, 限定词(Qualifier)、变程(范围,Range)
限定词为1个8位的字节段,规定变程段的意义。

变程说明数据对象的数量、起点和终点的索引或所讨论的对象的标识符。

限定词段的格式如下:
R Index Size Qualifier Code
索引规模 4位限定词码
其中:
R:保留位,置为零。

, 索引规模(Index Size):3个Bits,规定前置于每个数据对象的索引规模或对象的规模。

报文索引规模说明
0 请求报文且无效
Qualifier 1 数据对象标志符为8位 Code=11 2 数据对象标志符为16位
3 数据对象标志符为32位
4-7 保留
0 响应报文数据对象前没有前缀索引
或 1 数据对象前有一个1字节的前缀索引
有数据的请2 数据对象前有一个2字节的前缀索引
求报文 3 数据对象前有一个4字节的前缀索引
4 数据对象前有一个1字节的前缀,说明对象长度
5 数据对象前有一个2字节的前缀,说明对象长度
6 数据对象前有一个4字节的前缀,说明对象长度
7 保留
, 限定词码(Qualifier Code):4个Bits,用以规定变程(Range)意义。

限定词码说明
0 变程段由一个8位起始索引和一个8位停止索引组成
1 变程段由一个16位起始索引和一个16位停止索引组成
2 变程段由一个32位起始索引和一个32位停止索引组成
3 变程段由一个8位实际起始地址和一个8位实际停止地址组成
4 变程段由一个16位实际起始地址和一个16位实际停止地址组成
5 变程段由一个32位实际起始地址和一个32位实际停止地址组成
6 没有变程段(此时指所有该类数据对象);要求Index Size=0
7 变程段包含一个 8位的对象(可能(变程段值=n)
包括索引)数目 Index Size=0:变程段后跟的是数据对象
8 0—n-1的值; 变程段包含一个16位的对象(可能
Index Size=1,2,3:变程段后跟的是n个数包括索引)数目
据对象的(索引+值); 9 变程段包含一个32位的对象(可能
包括索引)数目
11 自由限定词码(见详细说明)
10, 12-15 保留
, 变程段(Range)
(a) 当限定词码取值0~5时,变程段包含1个开始范围(Start Range)和1 个结束范围(Stop Range)。

(b) 当限定词码取值6时,表示所指定的是所要求的数据类型的全部数据对象,因此Range段的长为零(即无变程段)。

(c) 当限定词码取值为7~9时,则变程段由一个计数值所组成,它指明所讨论的数据对象的数目。

常用的限定词段组合如0x01,0x17,0x28等,举例说明如下:
(1) 0x01:
01 02 01 00 00 05 00 01 01 01 81 81 01
Q对象变起始索引停止索引数据数据数据数据数据数据
C 0 1 2 3 4 5 组号体变程
QC=0x01中,索引规模为0,表示数据项前没有索引(即数据的序号);限定词码=1,表示有变程段,变程段由一个16位起始索引(0)和一个16位停止索引(5)组成。

变程段后为数据项,每项数据为一个字节(大小由数据对象组01和变体02确定),依次为遥信点0到5。

(2) 0x17
20 02 17 02 08 03 ff 10 00 7f
Q对象变变程:索引号值索引号值
C 组号体数目数据项一数据项二
QC=0x17中,索引规模为1,表示数据项有一个8位的索引(即数据的序号);限定词码=7,表示有变程段,变程段由一个8位的数据项数目(2)组成,表示有2个数据项。

变程段后为数据项,每项数据由一个8位索引和一个16位的值(值的位数数据对象组20和变体02确定)组成,例子中是遥测点8和16。

(3) 0x28:类似0x17,只是索引号部分为16位。

4.3 DNP数据对象定义
类别组号变体对象定义备注
01 01 * 数字1bit数字输入
位输01 02 * 带状态数字输入
入 02 01 * 不带时间数字输入变位
02 02 * 带时间的数字输入变位
02 03 带相对时间的数字输入变位
10 01 数字1bit数字输出(1位)
输出 10 02 带状态*数字输出(8位)
12 01 * 控制继电器输出块
12 02 方式(pattern)控制块
20 01/02 * 计数32/16位计数器值
器输20 03/04 32/16位计数器差值
入 20 05/06 32/16位不带状态计数器值
20 07/08 32/16位不带状态计数器差值
21 01/02 32/16位计数器冻结值
21 03/04 32/16位计数器冻结差值
21 05/06 32/16位计数器带时间冻结值
21 09/10 32/16位计数器不带状态冻结值
21 11/12 32/16位计数器不带状态冻结差值
22 01/02 不带时间的32/16位计数器值越限事件 22 03/04 不带时间的32/16位计数器差值越限事件 22 05/06 带时间的32/16位计数器值越限事件 22 07/08 带时间的32/16位计数器冻结差值越限事件 23 01/02 不带时间的32/16位计数器冻结值越限事件 23 03/04 不带时间的32/16位计数器冻结差值越限事件 23
05/06 带时间的32/16位计数器值越限事件 23 07/08 带时间的32/16位计数器冻结差值越限事件 30 01/02 * 模拟32/16位模拟输入值
量输30 03/04 * 不带状态的32/16位模拟输入值
入 31 01/02 32/16位模拟输入冻结值
31 03/04 32/16位模拟输入带时间冻结值
31 05/06 32/16位模拟输入不带状态冻结值
32 01/02 不带时间的32/16位模拟输入值越限事件 32 03/04 带时间的32/16位模拟输入值越限事件 33 01/02 不带时间的32/16位模拟输入冻结值越限事件
33 03/04 带时间的32/16位模拟输入冻结值越限事件 40 01/02 模拟32/16位模拟输出
输出 41 01/02 32/16位模拟输出块(BLOCK)
50 01 * 时间日期和时间
50 02 带持续时间的日期和时间
52 01 近似延时(16位:秒)
52 02 精细延时(16位:毫秒)
60 01 类 CLASS 0类数据(所有非1,2,3类数据) 60 02 CLASS 1类数据(通常为某组信息对象的变化) 60 03 CLASS 2类数据(通常为某组信息对象的变化) 60 04 CLASS 3类数据(通常为某组信息对象的事件)
下面简单描述以下几种常用对象的编码格式:
, 一位数字量输入(01/01)
1/0
说明:该对象常常是由多个一起组成位串,形成完整的字节(空闲的位为0),如:
7 6 5 4 3 2 1 0
null(0) Null(0) B5 B4 B3 B2 B1 B0
, 带状态数字量输入(01/02)
7 6 5 4 3 2 1 0
State Reserved Chatter Loca1 Remote forced CommunicatiRestart
On_line Filter forced data data on lost
其中:
On_line:该测点在线且读数有效;
Restart :该测点的设备目前正在重启;
Communication lost:报文源发方设备与上报该测点的设备通信中断;
Remote forced data:该测点被其它设备强制置成当前值;
Local forced data:该测点被当地设备强制置成当前值;
Chatter Filter:该测点已经经过滤波以滤除不必要的中间变化状态;
Reserved:保留,恒=0;
State:该测点当前状态(0/1)
, 不带时间的数字量输入变位(02/01) 7 6 5 4 3 2 1 0 State Reserved Chatter Loca1 Remote CommunicRestart On_line Filter forced data forced data ation lost
说明:该对象类似普通遥信变位;
, 带时间的数字量输入变位(02/01)
Flag(0-7)
Time (0-48)
其中:
Flag同上(01/02和02/01)所述的状态字节 ; Time为48位的无符号整数,低字节在先,其值为自1970年1月1日0:0:0
起的毫秒数;
说明:该对象即普通所谓SOE;
, 控制继电器输出块(12/01)
Control Code (0-7)
Count(0-7)
On Time (0-31)
Off Time(0-31)
Status(0-7)
其中:
, Control Code
7 6 5 4 3 2 1 0 Trip/Close Clear Queue Code
各部分含义为:
, Code:
码值说明
0 NULL;不进行任何操作。

1 脉冲式合上,即先在指定的on_time时间内合上(on),然后在指定
的off_time时间内断开(off),最后保持在断开状态(off)。

2 脉冲式断开,即先在指定的off_time时间内断开(off),然后在指定的on_time时间内合上(on),最后保持在断开状态(on)。

3 锁定式(Latch)合上——合上该点并保持
4 锁定式(Latch)断开——断开该点并保持
5-15 未定义
, Queue:当操作完成后把操作指令放到队列的尾部;
, Clear:立即取消当前正在执行的操作并把受影响的操作序列从队列
中移走;
, Trip/Close<00:NUL;01:Close; 10:Trip>:
, 对于有Trip/Close继电器组的系统,指定要操作的继电器;NUL值
则指定选择继电器;
, 对于没有Trip/Close继电器组的系统,该字段应该总是NUL,具体操作由控制点确定;
, Count:指定连续执行几次控制操作,=0时,不进行操作,控制完成;
, On_Time:指定输出为On状态的时间(毫秒); , Off_Time:指定输出为Off状态的时间(毫秒); , Status:
7 6 5 4 3 2 1 0
Reserved Status
Status返回操作的结果,具体含义如下:
值说明
0 操作请求被接受,启动,或排入队列
1 超时,
2 没有收到过与本命令对应的Select消息
3 控制命令格式有错
4 该点不支持这种控制操作
5 操作请求不被接受(控制队列溢出或该点已经进入该状态)
6 操作请求不被接受(硬件错误)
7-127 未定义
, 32/16位计数器值(20/01,20/02)
FLAG(0-7)
Value(0-31)/(0-15)无符号整数
其中,FLAG含义为:
7 6 5 4 3 2 1 0
Reserved Reserved Roll_over Loca1 Remote CommunicRestart On_line forced data forced data ation lost
Roll_over:计数器值已经溢出;
其它位含义同上;
, 32/16位模拟输入(30/01,30/02)
FLAG(0-7)
Value(0-31)/(0-15)有符号整数
其中,FLAG含义为:
7 6 5 4 3 2 1 0
Reserved Reference Over-rangLoca1 Remote CommunicRestart On_line check e forced data forced data ation lost
Over-range:值越限;
Reference check:参考信号不稳定,模入值可能不正确; 其它位含义同上;
, 日期和时间(50/01)
绝对时间(ms)
48位无符号整数
低字节在先
绝对时间为48位的无符号整数,低字节在先,其值为自1970年1月1
日0:0:0起的毫秒数;
5 几个典型过程说明
下面列出几个典型的应答过程,其中当链路层不需要确认时,相应过程中的ACK就没有,若应用层也不需要确认,则Confirm也没有。

A. 上电握手过程 ( 主站上电呼叫)
(主站) (从站)
--------------------------------------------------- --------------------------------------------------------------
应用层链路层链路层应用层
Reset --->
(fcv = 0 ,fcb=x)
<----- ACK
(destfcv=1,destfcb=1) WriteIIN ( bit7=0) --->
( FUNC = 2 , OBJECT = 80,1 )
(fcb = 1 ,fcv = 1)
<----- ACK
<----- Response
(writeiin.bit7 = 0 )
( fcv=1,fcb = 1 ,con=1)
ACK --->
(fcv=1,fcb=1,con=0)
Confirm ----->
<----- ACK
B. 读数过程(包括遥测、遥信、SOE和电度,依据数据对象来区别)
(主站) (从站)
------------------------------------------------ ------------------------------------------------------------
应用层链路层链路层应用层
Read all data ------>
( FUNC=1, OBJ= 0X3C, XX, QC= 6 )
<----- ACK
<------ Response (con =1 )
ACK ------->
Confirm ---->
<----- ACK
C. 对时过程
(主站) (从站)
------------------------------------------------ -------------------------------------------------------------
应用层链路层链路层应用层
Time DELAY -->
( func = 23)
<-- ACK
<--- response
( 通道时延)
ACK --->
CONFIRM --->
<--- ACK
WRITE TIME --->
( FUNC =2 ,OBJECT= 50,1)
<--- ACK
<--- RESPONSE
ACK --->
CONFIRM --->
<--- ACK
D. YK 过程
预选,执行
(主站) (从站)
------------------------------------------------ -----------------------------------------------------
应用层链路层链路层应用层
SELCECT --->
( FUNC = 3,OBJECT = 0C,01)
<--- ACK
---> 向LON网发选择令
….等待装置回答
<--- RESPONSE
(返回状态 status)
ACK--->
CONFIRM --->
<--- ACK
OPERATE --->
( FUNC = 4, OBJECT = SELECT OBJECT)
<--- ACK
--->向LON网发执行令
<----- RESPONSE
(返回状态 status)
ACK--->
CONFIRM --->
<--- ACK
实际报文分析:
例如:
(1)05 64 05 c0 01 00 03 00 3a 48 :
这帧报文是复位报文,第一和第二个字节是固定的起始字节;
第三个字节(05)是报文的长度;
第四个字节是链路层控制字,c0表示是主站发往从站,而且此帧是原发帧,功
能码=0,表示复位;
第五个和第六个字节01 00是目的地址,该地址排列是低字节在前高字节在
后,换为十进制是 1;
第七和第八字节03 00 是源地址,排列方式与目的地址相同,换为十进制是 3;
最后两个字节是CRC 校验码。

(2)再如:
主站的请求报文为:05 64 0b c4 02 00 01 00 83 24 c0 c1 01 3c 03 06 1c
68
其中:
05 64 是固定的起始字节;
0b是报文长度,为11个字节,c4是链路层控制字,表示是主站发往从站,而
且此帧是原发帧,功能码=4,表示有用户数据,但对方链路层无需回答ACK或NACK;
02 00是目的地址,即RTU地址;
01 00是调度地址;
83 24是CRC校验码,
c0 是传输层控制字,表示本报文既是第一帧又是最后一帧,帧序号是 0。

c1是应用层控制字,表示本报文既是第一段又是最后一段,段序号是1,本报
文不需要应用层确认。

01是应用层功能码,意义为读取从站数据, 3c 03是Group 和Variation,在本例中解释为变化遥测数据,06是限定词,表示全部数据。

1c 68 是CRC校验码。

应答报文为:05 64 0f 44 01 00 02 00 fa 4a d2 c1 81 02 00 1e 02 28 00 00 0f dd
其中:
05 64 意义同上;
0f 表示长度;
44 表示是从站发往主站,是源发帧,后随数据是不需要对方链路层确认的用户数据;
01 00 表示目的地址;
02 00 表示源地址;
fa 4a为CRC校验码;
d2是传输层报头TH,表示本报文既是第一帧又是最后一帧,帧序号是18;
c1是应用层控制字,表示本报文既是第一段又是最后一段,段序号是1,本报文不需要确认;
81(十进制是129)表示是响应报文;
02 00是内部状态指示字,这里表明一类数据有变化; 1e 02 表示数据对象为16位遥测;
28是QC,表示有变程段,变程段是一个16位的数据项数目,而且在每个数据项中,有一个16位的索引;
00 00 是变程,表示变化遥测数目=0;
0f dd是CRC校验码。

相关文档
最新文档