DLT645通信规约
DL/T645规约是针对电表通信而制定的通信协议,目前分两个版本,一个为1997年制定的称为97规约,还有就是2007年制定的07规约。目前二者并存于市场中,要弄清楚二者的差异。
数据帧格式
这里需要注意的点有:
- 地址域长度不足时有用00H补齐的,也有用AA补齐的(在高位补齐),这里可以自己测试一下。
- 数据域中的数据接受和发送的时候都是需要处理的,主站发送时加
0x33
,接收从站数据时减0x33
。 - 所有的数据项(地址域、数据域)都需要按着低字节在前,高字节在后的远程传输。
- 一般需要在每一帧数据前加上前导字节:
FE FE FE FE
即可(用在需要唤醒的设备上)。 FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16
可以读出准确地址,AA AA AA AA AA AA
算是读表地址专用地址,13
控制码,根据协议,就是读地址控制码,DF
为校验,16
是结尾。- 校验码从第一个起始符算起,包含第一个起始符
- 数据域的结构随控制码的功能而改变,可以是:数据标识、密码、操作者代码、数据、帧序号等等。
控制码
常见数据标识
举例说明
发送查表数据: 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 | 数据域,减去33H 为00 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 | 结束符 |
本文来源: