DL/T645规约是针对电表通信而制定的通信协议,目前分两个版本,一个为1997年制定的成为97规约,还有就是07年指定的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 | 数据域,剪掉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 | 数据长度 |
33333433 75394533 | 同上解析,00010000表示正向有功总;75394533->42061200,得到的数值为1206.42 |
8B | CS校验 |
16 | 结束符 |