DL/T645規約是針對電表通信而制定的通信協議,主要有兩個版本,分別是DL/T645-1997和DL/T645-2007,2007版是要替代97版的通信協議的,但是目前很多廠家的電表是支持這兩種通信協議的,目前新表主流還是07版的,下面就解析這種通信協議:

DL/T645-07:

注意事項:
(1)前導字節-一般在傳輸幀信息前,都要有0~4個FE不等,所以這里要注意,對于主站來說,直接發送4個FE作為前導字節即可。而從站回復,就不一定了,根據廠家不同而不同,有沒有FE的,也有4個FE的。
(2)傳輸次序-所有的數據項都是先傳低字節,再傳高字節,這里的數據項,主要涉及到地址域和數據域,因為其他都是1個字節。
(3)差錯控制-通信偶校驗。
(4)數據與傳輸運算方式:主站加0x33,從站減0x33。

電表的數據參數有很多,而我們經常使用的就兩種,讀表地址和讀當前正向有功總電量(耗電量)

1、讀表地址
   雖然電表出廠的地址已經在標牌上了,8位數,而且,他們都是 BCD碼,不是十進制。


這個表的出廠地址為:8866126775,雖然在協議里,表是6個字節,補0即可。
但是有些表是被改過地址的,為了讀準確的地址,讀表地址命令為:
FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16
其中FE 為前導地址,AA AA AA AA AA AA算是讀表地址專用地址,13控制碼,根據協議,就是讀地址控制碼,DF為校驗,16是結尾。

2、讀當前正向有功總電量
命令:FE FE FE FE 68 75 67 12 66 88 00 68 11 04 33 33 34 33 C6 16
其中: 75 67 12 66 88 00 是表地址,傳輸次序是低在前,高在后,而且是十六進制。
11-控制碼(讀數據命令)。


04-數據域長度為4
33 33 34 33-這里真實的含義應該是想讀 00 00 01 00,因為加了0x33 ,而


         所以,傳輸次序-低在前,高在后,然后再加0x33,就是33 33 34 33了。
返回數據:68 75 67 12 66 88 00 68 91 08 33 33 34 33 A4 56 79 38 F5 16 
   注意,這里面沒有前導字節FE,并不代表所有的電表廠家都沒有,而且還是不固定的,所以一定小心寫程序,因為不同廠家電表回的前導字節個數不一樣。
其中:75 67 12 66 88 00 是表地址,傳輸次序是低在前,高在后,而且是十六進制。
91-為從返回命令
08-共8個字節
33 33 34 33-數據塊,可以理解成寄存器地址。
A4 56 79 38-具體數據,分析時,應減33,所以為:
A4-33=71
56-33=23
79-33=46
38-33=5
實際的電表數為:54623.71度