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

DL/T645-07:

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

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

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


這個表的出廠地址爲:8866126775,雖然在協議裏,表是6個字節,補0即可。
但是有些表是被改過地址的,爲了讀準确的地址,讀表地址命令爲:
FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16
其中(zhōng)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
其中(zhōng): 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,并不代表所有的電表廠家都沒有,而且還是不固定的,所以一(yī)定小(xiǎo)心寫程序,因爲不同廠家電表回的前導字節個數不一(yī)樣。
其中(zhōng):75 67 12 66 88 00 是表地址,傳輸次序是低在前,高在後,而且是十六進制。
91-爲從返回命令
08-共8個字節
33 33 34 33-數據塊,可以理解成寄存器地址。
A4 56 79 38-具體(tǐ)數據,分(fēn)析時,應減33,所以爲:
A4-33=71
56-33=23
79-33=46
38-33=5
實際的電表數爲:54623.71度