DL/T 645-2007

转载自作者:猪哥-嵌入式
原文链接:https://blog.csdn.net/u012351051/article/details/77869547

DL/T645-07:

数据帧格式:
图片:DL/T 645-2007_第1张图片

注意事项:

(1)前导字节-一般在传输帧信息前,都要有0~4个FE不等,所以这里要注意,对于主站来说,直接发送4个FE作为前导字节即可。而从站回复,就不一定了,根据厂家不同而不同,

我见过回复信息中,没有FE的,也有4个FE的,所以对于接受程序,一定要慎重。

(2)传输次序-所有的数据项都是先传低字节,再传高字节,这里的数据项,主要涉及到地址域和数据域,因为其他都是1个字节。

(3)差错控制-通信偶校验。

(4)数据与传输运算方式:主站加0x33,从站减0x33(为嘛这么定义,可能是考虑BCD码吧)

电表的数据参数有很多,而我们经常使用的就两种,读表地址和读当前正向有功总电量(耗电量)

1、读表地址

虽然电表出厂的地址已经在标牌上了,8位数,而且,他们都是 BCD码,不是十进制。
图片:DL/T 645-2007_第2张图片

这个表的出厂地址为:00613310,虽然在协议里,表是6个字节,补0即可。

但是有些表是被改过地址的,为了读准确的地址,读表地址命令为:

FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16

其中FE 为前导地址,AA AA AA AA AA AA算是读表地址专用地址,13控制码,根据协议,就是读地址控制码,DF为校验,16是结尾。

2、读当前正向有功总电量(假设表号为12345678)

命令:FE FE FE FE 68 78 56 34 12 00 00 68 11 04 33 33 34 33 C6 16

其中:78 56 34 12 00 00 是表地址,传输次序是低在前,高在后,而且是十六进制。

11-读数据命令
04-数据域长度为4

33 33 34 33-这里真实的含义应该是想读 00 00 01 00,因为加了0x33 ,而

所以,传输次序-低在前,高在后,然后再加0x33,就是33 33 34 33了,(这里面好绕)

返回数据:68 78 56 34 12 00 00 68 91 08 33 33 34 33 A4 56 79 38 F5 16

注意,这里面没有前导字节FE,并不代表所有的电表厂家都没有,而且还是不固定的,所以一定小心写程序,因为不同厂家电表回的前导字节个数不一样。

其中:78 56 34 12 00 00 是表地址,传输次序是低在前,高在后,而且是十六进制。

91-为从返回命令

08-共8个字节

33 33 34 33-数据块,可以理解成寄存器地址。

A4 56 79 38-具体数据,分析时,应减33,所以为:

A4-33=71
56-33=23
79-33=46
38-33=5

实际的电表数为:54623.71度

你可能感兴趣的:(dephi,dl/t645,07)