参考DL/T645-2007
读电表地址
send: FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16
recv: FE FE FE FE 68 94 35 21 90 88 55 68 93 06 C7 68 54 C3 BB 88 49 16
读当前正向有功总电能
DI0 DI1 DI2 DI3 : 0 0 1 0
即 33 33 34 33
send: FE FE FE FE 68 94 35 21 90 88 55 68 11 04 33 33 34 33 09 16
recv: FE FE FE FE 68 94 35 21 90 88 55 68 91 08 33 33 34 33 59 35 33 33 81 16
读电压
33 34 34 35
send: FE FE FE FE 68 94 35 21 90 88 55 68 11 04 33 34 34 35 0C 16
recv: FE FE FE FE 68 94 35 21 90 88 55 68 91 06 33 34 34 35 7B 55 5E 16
读电流
33 34 35 35
send: FE FE FE FE 68 94 35 21 90 88 55 68 11 04 33 34 35 35 0D 16
recv: FE FE FE FE 68 94 35 21 90 88 55 68 91 07 33 34 35 35 6B 35 33 63 16
读功率
35 36 33 33
send: FE FE FE FE 68 94 35 21 90 88 55 68 11 04 35 36 33 33 0D 16
recv: FE FE FE FE 68 94 35 21 90 88 55 68 91 08 35 36 33 33 33 33 33 33 5D 16
CS校验码的计算:
从帧起始符开始到校验码之前的所有各字节的模256的和, 即各字节二进制算术和,不计超过256的溢出值。
也就是最后相加的结果只保留最后一个字节,如果是16进制相加,则最后得到的数与FF相与。
unsigned char cal_cs(unsigned char *data,unsigned char len)
{
unsigned char sum=0;
for(int i=0;i<len;i++)
{
sum+=data[i];
}
sum=sum&0xFF;
printf("cs is: %02x\n",sum);
return sum;
}
拉闸与合闸,协议见下图

例:
/*
密码权限 02
这里的密码为 00 00 00
N3-N8为时间,如果设为昨天的时间则命令会报错 02 40 18 07 07 21 即2021-07-07 18:40:02
拉闸 C L PA P0 P1 P2 C0 C1 C2 C3 N1 N2 N3 N4 N5 N6 N7 N8 CS END
FE FE FE FE 68 94 35 21 90 88 55 68 1C 10 35 33 33 33 33 33 33 33 4D 33 35 73 4B 3A 3A 54 28 16
合闸
FE FE FE FE 68 94 35 21 90 88 55 68 1C 10 35 33 33 33 33 33 33 33 4F 33 35 73 4B 3A 3A 54 2a 16
*/
拉闸
send: FE FE FE FE 68 94 35 21 90 88 55 68 1C 10 35 33 33 33 33 33 33 33 4D 33 8C 8C 56 3C 3A 54 A5 16
recv: FE FE FE FE 68 94 35 21 90 88 55 68 9C 00 C3 16
合闸
send: FE FE FE FE 68 94 35 21 90 88 55 68 1C 10 35 33 33 33 33 33 33 33 4F 33 8C 8C 56 3C 3A 54 A7 16
recv: FE FE FE FE 68 94 35 21 90 88 55 68 9C 00 C3 16
本文详细介绍了DL/T645-2007协议中的电表数据读取方法,包括电表地址、正向有功总电能、电压、电流及功率等参数的读取过程,并提供了具体的十六进制命令实例,同时讲解了校验码的计算方法及拉闸合闸的操作命令。
1万+

被折叠的 条评论
为什么被折叠?



