目录
文档资料
DL/T645-2007 协议文档:https://pan.baidu.com/s/1Um7HaMN-t1qij5W0Ac-usQ?pwd=p09i
帧格式
注意:在起始符前面会有0~4个FE不等,程序主站发送指令时,发送4个字节FE,以唤醒接收方,但是从站回复不一定带几个FE或不带FE。
帧起始符
固定为0x68,记住即可
地址域
地址域由 6 个字节构成,每字节 2 位 BCD 码,地址长度可达12位十进制数。每块表具有唯一的通信地址,且与物理层信道无关。当使用的地址码长度不足 6 字节时,高位用“0”补足。
通信地址999999999999H为广播地址,只针对特殊命令有效,如广播校时和广播冻结等。广播命令不要求从站应答。
地址域支持缩位寻址,即从若干低位起,剩余高位补AAH作为通配符进行读表操作,从站应答帧的地址域返回实际通信地址。
地址域传输时低字节在前,高字节在后。
例如:设备地址为112233445566,那么在指令中应为66 55 44 33 22 11
控制码C
以10001读数据为例:
主站请求:0001 0001 --> 0x11 --> 68 66 55 44 33 22 11 68 11 L DATA CS 16
从站回复:1001 0001 --> 0x91 --> 68 66 55 44 33 22 11 68 91 L DATA CS 16
数据域长度L
数据域中的数据DATA长度
数据域DATA
数据域包括数据标识、密码、操作者代码、数据、帧序号等,其结构随控制码的功能而改变。传输时发送方按字节进行加33H处理,接收方按字节进行减33H处理。
所有数据项均先传送低位字节,后传送高位字节。数据传输的举例:读取A相电压。
注意:发送方传输时,数据字节需+33H进行处理;接收方接收时,数据字节需-33H进行处理。
主机请求:
68 66 55 44 33 22 11 68 11 04 00 01 01 02 CS 16 --> 进行+33H处理
--> 68 66 55 44 33 22 11 68 11 04 33 34 34 35 CS 16
从机回复:
68 66 55 44 33 22 11 68 91 06 00 01 01 02 05 22 CS 16 --> 进行+33H处理
--> 68 66 55 44 33 22 11 68 91 06 33 34 34 35 38 55 CS 16
其中38 55(38低字节在前,55高字节在后)为从机回复的A相电压,转换为原始数据(-33H处理)为22 05(原始数据高低互换)。
所以A相电压为220.5V。
校验码CS
从第一个帧起始符开始到校验码之前的所有各字节的模 256 的和,即各字节二进制算术和,不计超过 256 的溢出值。
例如:68 66 55 44 33 22 11 68 11 04 33 34 34 35 CS 16 --> CS前的全部十六进制数相加
--> 68 66 55 44 33 22 11 68 11 04 33 34 34 35这些十六进制数相加 --> 0x31A,取低8位
--> CS = 1A
最后的主机请求为:68 66 55 44 33 22 11 68 11 04 33 34 34 35 1A 16
同理可得从机回复为:68 66 55 44 33 22 11 68 91 06 33 34 34 35 38 55 A9 16
总结
以上为作者在学习DL/T645-2007协议时的一些理解和经验,更多详细内容可阅读协议文档,如有遗漏,还请指出,万分感谢!
我是陈师傅,我们下章再见!