DLT645-1997通信规约解读

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

DL/T645-1997通信规约解读

该通信规约适用于本地系统中多功能表的费率装置与手持单元(HHU)或其它数据

终端设备进行点对点的或一主多从的数据交换方式,规定了它们之间的物理连接、通信链路及应用技术规范。该协议在做“电力监控”、“水监控”等“工控领域”,具有广泛的应用。协议具体内容可以从网上Google,下面主要介绍下协议的解析方法。

DL645协议需要先发送“前导字节”,用来唤醒从站,当然有些设备是不需要这样唤醒的。在发送帧信息之前,先发送1-4个字节FEH,以唤醒接收方("FEH",H表示16进制,是一个字节), “前导字节” + “取数据报文”=“整体报文”。

首先我们先整体了解一个发送报文“68 12 34 56 78 90 12 68 01 02 43 C3 cs 1 6”

在这之前呢,先看一下BCD码。

BCD码:二进制编码的十进制代码。

比如:

0=0000

1=0001

2=0010

3=0011

4=0100

5=0101

6=0110

7=0111

8=1000

9=1001

BCD码:ASCII表示(都是字符)

BCD码都是由0~9,10个字符构成。

也就是说,BCD码一个字节是两位,一位是0~9,一个字节能够表示00~99。

BCD码1位是2进制的4位。按16进制表示,没有ABCDEF。

帧格式(DL/T645-1997通讯规约标准文档中)

帧是传送信息的基本单元。帧格式如图所示。

说 明 代码 帧起始符 68H 地址域

A0

A1 A2 A3 A4 A5

帧起始符

68H 控制码 C 数据长度域 L 数据域 DATA 校验码 CS 结束符

16H 4.2.1 帧起始符68H :标识一帧信息的开始,其值为68H=01101000B 。 4.2.2地址域A0∽A5:地址域由6个字节构成,每字节2位BCD 码。地址长度为12位十进制数,可以为表号、资产号、用户号、设备号等。具体使用可由用户自行决定。当使用的地址码长度不足6字节时,用十六进制AAH 补足6字节。低地址位在先,高地址位在后。当地址为999999999999H 时,为广播地址。

4.2.3 控制码C :控制码的格式如下所示。

功能码

后续帧标志

从站异常标志

传送方向

D7=0:由主站发出的命令帧

D7=1:由从站发出的应答帧

D6=0:从站正确应答

D6=1:从站对异常信息的应答

D5=0:无后续数据帧

D5=1:有后续数据帧

D4∽D0:请求及应答功能码

00000:保留

00001:读数据

00010:读后续数据

00011:重读数据

00100:写数据

01000:广播校时

01010:写设备地址

01100:更改通信速率

01111:修改密码

10000:最大需量清零

4.2.4 数据长度L:L为数据域的字节数。读数据时L≤200,写数据时L≤50,L=0 表示无数据域。

4.2.5 数据域DATA:数据域包括数据标识和数据、密码等,其结构随控制码的功能而改变。传输时发送方按字节进行加33H处理,接收方按字节进行减3 3H处理。

4.2.6 校验码CS:从帧起始符开始到校验码之前的所有各字节的模256的和,即各字节二进制算术和,不计超过256的溢出值。

4.2.7结束符号16H:标识一帧信息的结束,其值为16H=00010110B。

发送报文:

68 12 34 56 78 90 12 68 01 02 43 C3 cs 16

说明如下:

68(帧起始符)

12 34 56 78 90 12 (6字节,没字节两位,共12位地址,BCD码表示。)

68(帧起始符)

01(控制码“包含功能码”= 01 = 读取数据)

02 (数据域长度,指“43,C3”一共是两字节。)

“43 c3” (“43 C3”是数据域,表示读取数据类型= “10 90”,发送报文中数据域需要做“+0x33处理”)

cs(加校验和,一个字节,根据前面的计算)

16(帧结束符)

下面详细的解释下:

帧起始符(645协议规定由68H开始,16进制。)

0x12(BCD数值码) --- 12(string) 转为字符串0x12.ToString("X2")

0x45(BCD数值码) --- 45(string)

如果表地址为:000021010203(电表上看到的地址串),里面就是12位(字符串来看)

通讯时,使用0x00,0x00 ,0x21 ,0x01 ,0x02 ,0x03, 6个字节表示地址,但发送的时候要先发低字节,再发高字节。发送时也是“0x03,0x02,0x01, 0x21,0 x00,0x00”

控制码:

从电脑到表具:0(主从站方向)+0(设备没问题)+0(有无后续帧)+00001(读)=1=0x1

数据域长度:表示数据域有多长

串口传输方式:所有数据项均先传送低位字节,后传送高位字节

数据域内容,也就是“数据类型+数据项”(比如电表):1001(电能量)+00(当前)+00(有功)+0001(正向电能)+0000(总点能)

02(数据域长度)

10

90(数据域内容,两个字节)拼接后的报文,要先发低字节(90),再发10. 发送报文要加上"33",最后数据域就是"10 + 33"和"90 + 33"最终就是“ 43 c3”。

02 10 90 == 02 (10 + 33) (90 + 33) = 02 43 c3

返回报文:

68 12 34 56 78 90 12 68 81 06 43 c3 33 44 55 66 cs 16

68(帧起始符)

12 34 56 78 90 12(地址域)

68(帧起始符)

81(控制码,返回有功总电能“10000001”,读取数据)

06(数据域长度)

43 C3(数据域)

33 44 55 66 (数据项,四字节)

数据项要减去“33H”,根据数据类型(附录)点小数点。

相关文档
最新文档