摘要
只要是支持DL/T645-2007通信协议的设备,在串口设置正确的情况下(2400、偶校验),可以通过下面字符读取A相电压
1)不知道地址
FE FE FE FE 68 AA AA AA AA AA AA 68 11 04 33 34 34 35 B1 16
2)地址:210507016998
FE FE FE FE 68 98 69 01 07 05 21 68 11 04 33 34 34 35 B1 16
接下来根据文档《DLT645-2007最新通信协议》,讲解原因
1、硬件连接
本次实验只连接了电表的电源(引脚1和引脚3)和RS485(引脚11和引脚12)
2、前导字节
在主站发送信息之前,先发送 4 个字节 FEH,以唤醒接收方。
3、数据帧格式
说明 | 代码 | 十六进制 |
帧起始符 | 68H | 68H |
地址域 | A0 | AAH |
A1 | AAH | |
A2 | AAH | |
A3 | AAH | |
A4 | AAH | |
A5 | AAH | |
帧起始符 | 68H | 68H |
控制码 | C | 11H |
数据域长度 | L | 04H |
数据域(数据标识) | DI0 | 00+33H=33H |
DI1 | 01+33H=34H | |
DI2 | 01+33H=34H | |
DI3 | 02+33H=35H | |
校验码 | CS | B1H |
帧结束符 | 16H | 16H |
1)地址域能写成AAH的原因
5.2.2 地址域 A0~A5
地址域由 6 个字节构成,每字节 2 位 BCD 码,地址长度可达 12 位十进制数。每块表具有唯一的通信地址,且与物理层信道无关。当使用的地址码长度不足 6 字节时,高位用“0”补足 6 字节。
通信地址 999999999999H 为广播地址,只针对特殊命令有效,如广播校时、广播冻结等。广播命令不要求从站应答。
地址域支持缩位寻址,即从若干低位起,剩余高位补 AAH 作为通配符进行读表操作,从站应答帧的地址域返回实际通信地址。
地址域传输时低字节在前,高字节在后。
2)数据域(数据标识)的来源
4、校验码CS的计算
1)校验码计算依据
5.2.6 校验码 CS
从第一个帧起始符开始到校验码之前的所有各字节的模 256 的和,即各字节二进制算术和,不计超过 256 的溢出值。
2)MATLAB代码
%% CSDN:地址全为AA——A 相电压——DI3:DI0=02 01 01 00
str='68 AA AA AA AA AA AA 68 11 04 33 34 34 35';
data_hex = sscanf(str,'%x');
result=dec2hex(sum(data_hex))
3)运行结果
取后两位,CS=B1H
5、串口设置
1)波特率:2400
2)校验位:偶校验(even)
3)数据位:8,停止位:1
6、实验
1)串口工具下载地址
UartAssist串口调试助手 V5.0.3-软件工具-野人家园http://www.cmsoft.cn/resource/101.html
7、返回数据分析
十六进制 | 说明 |
FE | 前导字节 |
68 | 帧起始符 |
98 | 地址域:A0 |
69 | 地址域:A1 |
01 | 地址域:A2 |
07 | 地址域:A3 |
05 | 地址域:A4 |
21 | 地址域:A5 |
68 | 帧起始符 |
91 | 控制码 |
06 | 数据域长度 |
33 | 数据域:数据标识:DI0 |
34 | 数据域:数据标识:DI1 |
34 | 数据域:数据标识:DI2 |
35 | 数据域:数据标识:DI3 |
66 | 数据域:A相电压:低位 |
54 | 数据域:A相电压:高位 |
F1 | 校验码 |
16 | 帧结束符 |
1)A相电压解读依据
2)MATLAB代码
%% A 相电压数据解读
str='66 54';
x33H='33';
data_hex = sscanf(str,'%x');%以16进制读入str,输出10进制
data_hex_x33H=sscanf(x33H,'%x');
tmp_dec =dec2hex(data_hex-data_hex_x33H);
tmp_hex = str2num(tmp_dec);
VA=(tmp_hex(1)+tmp_hex(2)*100)/10
3) 运行结果
附图-电表
1)地址域高位
2)地址域低位
3) 使用电量
4)功率
5) 电压UA
6)电流LA
7)功率因数
参考文献
DLT645-2007电能表通讯协议_Jason噗噗的博客-CSDN博客_dlt645-2007DLT645-2007通讯协议:1.发送的帧格式:1.1 帧起始符 0x68H 这个不多说,记住就好;1.2 地址域A0-A5地址域由 6 个字节构成,每字节 2 位 BCD 码,地址长度可达12位十进制数。每块表具有唯一的通信地址,且与物理层信道无关。当使用的地址码长度不足 6 字节时,高位用“0”补足。通信地址999...https://blog.csdn.net/u013184273/article/details/98083050
DL/T 645-2007多功能电表通信规约_纸短情长ZF的博客-CSDN博客_dlt6142007通讯协议中华人民共和国电力行业标准 DL/T 645-2007 多功能电表通信规约解析最近在给一家企业做能源管理系统(EMS),用C#做上位机采集用电、用水、用汽等信息,其中常用的接线方式为RS485,常用通信协议为MODBUS协议。在做电能表数据采集的时候,电表的协议是 DL/T 645-2007,之前花了好多时间寻找资料,解析协议,所以特此记录一下。整个EMS系统的通信方式为:主机发送请求——从机接收请求——从机返回数据——主机接收数据下图是实际在厂区中安装的一块电能表,我印象中这种表好像是https://blog.csdn.net/m0_49284219/article/details/112978577