该通信规约适用于本地系统中多功能表的费率装置与手持单元(HHU)或其它数据终端设备进行点对点的或一主多从的数据交换方式,规定了它们之间的物理连接、通信链路及应用技术规范。该协议在做“电力监控”、“水监控”等“工控领域”,具有广泛的应用。协议具体内容可以从网上Google,下面主要介绍下协议的解析方法。
DL645协议需要先发送“前导字节”,用来唤醒从站,当然有些设备是不需要这样唤醒的。在发送帧信息之前,先发送1-4个字节FEH,以唤醒接收方("FEH",H表示16进制,是一个字节), “前导字节” + “取数据报文”=“整体报文”。
首先我们先整体了解一个发送报文“68 12 34 56 78 90 12 68 01 02 43 C3 cs 16”
在这之前呢,先看一下BCD码。
BCD码:二进制编码的十进制代码。
比如:
0=00001=00012=00103=00114=01005=01016=01107=01118=10009=1001 BCD码:ASCII表示(都是字符)
BCD码都是由0~9,10个字符构成。
也就是说,BCD码一个字节是两位,一位是0~9,一个字节能够表示00~99。 BCD码1位是2进制的4位。按16进制表示,没有ABCDEF。 发送报文:
68 12 34 56 78 90 12 68 01 02 43 C3 cs 16
说明如下:
68(帧起始符)
12 34 56 78 90 12 (6字节,没字节两位,共12位地址,BCD码表示。)
68(帧起始符)
01(控制码“包含功能码”= 01 = 读取数据)
02 (数据域长度,指 “43,C3”一共是两字节。)
“43 c3” (“43 C3”是数据域,表示读取数据类型 = “10 90”, 发送报文中 数据域需要做“+0x33处理”)
cs(加校验和,一个字节,根据前面的计算)
16(帧结束符)
下面详细的解释下:
帧起始符(645协议规定由68H开始,16进制。)
0x12(BCD数值码) --- 12(string) 转为字符串0x12.ToString("X2")
0x45(BCD数值码) --- 45(string)
如果表地址为:000021010203(电表上看到的地址串),里面就是12位(字符串来看)
通讯时,使用 0x00, 0x00 , 0x21 ,0x01 , 0x02 , 0x03, 6个字节表示地址,但发送的时候要先发低字节,再发高字节。发送时也是“0x03,0x02,0x01, 0x21,0x00,0x00”
控制码:
从电脑到表具:0(主从站方向)+0(设备没问题)+0(有无后续帧)+00001(读)=1=0x1
数据域长度:表示数据域有多长
串口传输方式:所有数据项均先传送低位字节,后传送高位字节
数据域内容,也就是“数据类型+数据项”(比如电表): 1001(电能量)+00(当前)+00(有功)+0001(正向电能)+0000(总点能)
02(数据域长度)
10
90(数据域内容,两个字节) 拼接后的报文,要先发低字节(90) ,再发10. 发送报文要加上"33",最后数据域就是"10 + 33"和"90 + 33"最终就是“ 43 c3”。
02 10 90 == 02 (10 + 33) (90 + 33) = 02 43 c3
返回报文:
68 12 34 56 78 90 12 68 81 06 43 c3 33 44 55 66 cs 16
68(帧起始符)
12 34 56 78 90 12(地址域)
68(帧起始符)
81(控制码,返回有功总电能“10000001”,读取数据)
06(数据域长度)
43 C3(数据域)
33 44 55 66 (数据项,四字节)
数据项要减去“33H”,根据数据类型(附录)点小数点。
33 44 55 66 (数据域数据计算) = (33 - 33) (44 - 33) (55 - 33) (66 - 33) = 00112233 = 1122.33 kWh
最后我们来看一个电表实例,取地址为“694561”的电表的“反相有功电能(发电量)”。
实例如下:
一、发送报文
1、电表地址:694561(地址,6位BCD码,BCD码1位是2进制的4位。按16进制表示,没有ABCDEF。不足12位,需要在高位“补0”。)。
2、完善地址:000000694561(12位BCD码)
3、前导符字节:0xFE
4、帧起始符:0x68
5、地址域:0x614569000000(第字节在前,高字节在后。DL645协议,先发低字节再发高字节。)
6、帧起始符:0x68
7、控制码:0x01(读数据1,读后续数据2,其中还包含功能码等。)
8、数据域长度:0x02(2字节)
9、待发送数据类型(数据类型放在数据域中):9(1001,电能量)+0(0000,00当前,00有功)+ 2(0010,反向电能)+0(0000,总电能)
更多相关资料及645程序下载,请访问:http://17zhongwen.com/dashujupingtaishujucaiji/chapter.html