DLT645通信规约

DLT645通信规约

DL/T645规约是针对电表通信而制定的通信协议,目前分两个版本,一个为1997年制定的称为97规约,还有就是2007年制定的07规约。目前二者并存于市场中,要弄清楚二者的差异。

数据帧格式

这里需要注意的点有:

  1. 地址域长度不足时有用00H补齐的,也有用AA补齐的(在高位补齐),这里可以自己测试一下。
  2. 数据域中的数据接受和发送的时候都是需要处理的,主站发送时加0x33,接收从站数据时减0x33
  3. 所有的数据项(地址域、数据域)都需要按着低字节在前,高字节在后的远程传输。
  4. 一般需要在每一帧数据前加上前导字节:FE FE FE FE即可(用在需要唤醒的设备上)。
  5. FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16可以读出准确地址,AA AA AA AA AA AA算是读表地址专用地址,13控制码,根据协议,就是读地址控制码,DF为校验,16是结尾。
  6. 校验码从第一个起始符算起,包含第一个起始符
  7. 数据域的结构随控制码的功能而改变,可以是:数据标识、密码、操作者代码、数据、帧序号等等。

控制码

常见数据标识

举例说明

发送查表数据: 68 25 04 03 02 01 00 68 11 04 33 33 34 33 E1 16

数据 含义
68 起始帧
25 04 03 02 01 00 地址域,实际地址为0102030425
68 起始帧
11 控制码,在07规约中就是读数据
04 数据域数据长度
33 33 34 33 数据域,减去33H00 00 01 00,再高低位反转得到实际数据为 00 01 00 00,表示读正向有功总
E1 校验码
16 结束符

返回数据: 68 25 04 03 02 01 00 68 91 08 33 33 34 33 75 39 45 33 8B 16

数据 含义
68 起始帧
25 04 03 02 01 00 地址域,实际地址为0102030425
68 起始帧
91 控制码:10010001,第一位1代表从站发给主站,后面的10001=11H读数据
08 数据长度
33 33 34 33 75 39 45 33 同上解析,00010000 表示正向有功总;75 39 45 33 → 42 06 12 00,将其高低位发转,00120642,再根据规约中对于正向有功总的数据格式(xxxxxx.xx)得到的数值为1206.42
8B CS校验
16 结束符

本文来源:

DL645通信协议97/07规约(附上下行例子) - CodeAntenna

DLT645协议解析(二)---07协议数据帧结构解析_Simba X的博客-CSDN博客