DL/T645电力数据通信协议,共1996和2007两个版本
https://www.cnblogs.com/CSSZBB/p/14062214.html
电能表与串口助手485通信基于DLT645-2007通讯协议 - 炽热的舞者 - 博客园 (cnblogs.com)
DLT645转TCP协议转换器通过ModbusTCP读取电能表数据传送到S7-1500 - 德嘉工控 工控网 工控论坛 http://bbs.gkong.com/
协议说明:https://blog.csdn.net/u013184273/article/details/98083050
我发送的地址为201512120120,控制命令11,即读数据,长度为04,命令为33 33 33 33,这个值要减去33H,即00 00 00 00,这个数据值,就是查电表总有功电量值,2b是cs校验码;
33 33 33 33 是组合有功总电量
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度
————————————————
版权声明:本文为CSDN博主「猪哥-嵌入式」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012351051/article/details/77869547
C#-DL/T 645—2007协议 - 7嗨嗨 - 博客园 (cnblogs.com)
校验码计算:
就是把校验码前面的所有byte求和即可
int x = 0x68 + 0x78 + 0x56 + 0x34 + 0x12 + 0x00 + 0x00 + 0x68 + 0x11 + 0x04 + 0x33 + 0x33 + 0x34 + 0x33;
byte bb = (byte)x;
string s=bb.ToString("X"); s就是校验码