DLT645-2007通信协议---读取解析智能电表数据

一、DLT645-2007通讯协议

DLT645-2007是中国电力行业规定的一种智能电表通信协议,主要用于电能表与数据采集设备之间的通信。DLT645-2007协议定义了电能表与数据采集设备之间的数据格式、通信方式、命令集等内容,用于实现电能表数据的采集、传输和管理。该协议支持多种物理通信方式,包括RS-485总线通信、红外通信和无线通信等。

在这次对智能电表开发时,主要是使用RS485串口通信读取智能电表数据。因此通信时的串口助手或程序代码中,都要设置成8位数据位,偶校验 和1个停止位。

①、数据帧格式

如下图所示的是智能电表要求的通信协议的数据帧格式,在使用DLT645-2007协议通信时,必须严格按照下面所示的格式发送数据,否则无法正常的获取智能电表的数据。在发送帧数据之前,需要发送数据起始标志:FE FE FE FE。

cpp 复制代码
FE FE FE FE        //数据起始
68                 //帧起始符
62 01 76 00 00 81  //地址域
68                 //帧起始符
11                 //控制码
04                 //数据域长度
35 37 33 37        //数据域
15                 //校验码
16                 //结束符

②、控制码格式

如下所示的是智能DLT645-2007通信时的控制码格式,通过不同的控制码,可以实现对电表进行写入或读取电表的数据信息。

下图是数据域编码表,详细的参考 DLT645-2007 通讯协议,数据域为 00 00 00 00 是读取总电量,发送数据时每位要加上 33。

智能电表实物图

二、智能电表数据读取

DLT645-2007与电表通信时,发送和接收的数据都是16进制格式进行编码及解析的。如下是读取电表常用的数据示例:

①、读取电表的通信地址

cpp 复制代码
发送数据[2023-07-29 11:13:28 864]:
FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16 
接收数据[2023-07-29 11:13:29 067]:
FE FE FE FE 68 62 01 76 00 00 81 68 93 06 95 34 A9 33 33 B4 4F 16

②、读取电表表号

cpp 复制代码
发送数据[2023-07-29 11:28:17 701]:
FE FE FE FE 68 62 01 76 00 00 81 68 11 04 35 37 33 37 15 16 
接收数据[2023-07-29 11:28:17 941]:
FE FE FE FE 68 62 01 76 00 00 81 68 91 0A 35 37 33 37 95 34 A9 33 33 B4 27 16 

③、读取正向有功总电量

cpp 复制代码
发送数据[2023-07-29 11:20:49 686]:
FE FE FE FE 68 62 01 76 00 00 81 68 11 04 33 33 34 33 0C 16 
接收数据[2023-07-29 11:20:49 917]:
FE FE FE FE 68 62 01 76 00 00 81 68 91 08 33 33 34 33 35 34 33 33 5F 16 

④、读取反向有功总电量

cpp 复制代码
发送数据[2023-07-29 11:23:08 245]:
FE FE FE FE 68 62 01 76 00 00 81 68 11 04 33 33 35 33 0D 16 
接收数据[2023-07-29 11:23:08 476]:
FE FE FE FE 68 62 01 76 00 00 81 68 91 08 33 33 35 33 33 33 33 33 5D 16

⑤、读取组合有功总电量

cpp 复制代码
发送数据[2023-07-29 11:27:10 846]:
FE FE FE FE 68 62 01 76 00 00 81 68 11 04 33 33 33 33 0B 16 
接收数据[2023-07-29 11:27:11 075]:
FE FE FE FE 68 62 01 76 00 00 81 68 91 08 33 33 33 33 35 34 33 33 5E 16 

三、智能电表数据解析

数据域包括数据标识、密码、操作者代码、数据、帧序号等,其结构随控制码的功能而改变

数据域传输时低字节在前,高字节在后;

传输时发送方按字节进行加33H处理,接收方按字节进行减33H处理;

智能电表读取到的电量数据解析示意图:

cpp 复制代码
//实际电量计算转换思路
//33 33 33 33 84 37 33 33
//33 33 37 84 33 33 33 33
//                    -33
//00 00 04 51 00 00 00 00
//4.51

四、智能电表数据校验

对于智能电表数据的发送和接收,均需要计算DLT645-2007 协议数据的校验位CS,以确保数据的准确性。

其中,数据序列的倒数第二位为校验位CS,即停止位的上一位数据。

数据校验计算方法:从第一个帧起始符开始到校验码之前的所有各字节的模 256 的和,即各字节二进制算术和,不计超过 256 的溢出值。

相关推荐
GIS数据转换器3 分钟前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
前进吧-程序员37 分钟前
C++20 协程入门实战:从 co_await 到一个 100 行的异步任务调度器
网络·c++·c++20
前进吧-程序员1 小时前
实战:C++20 协程 + io_uring 写一个 400 行的 echo server
网络·c++·c++20
云飞云共享云桌面2 小时前
机械制造研发部门:一台SolidWorks云主机替代 10 台传统图形工作站
运维·服务器·网络·3d·自动化·制造
山雀~2 小时前
CSP 安全漏洞修复
前端·网络协议
loulanyue_3 小时前
从碎片文档到工业知识网络:TDengine工业知识图谱架构设计与大模型落地破局——读涛思数据OpenDay实录
网络·知识图谱·tdengine
螺蛳粉 螺蛳粉3 小时前
CDH第七篇:CDH 集成 Kafka 实战:CSD + Parcel 组合拳,先装 ZooKeeper 是铁律
物联网·zookeeper·kafka·消息队列·parcel·cdh集成·csd
新晨单片机设计3 小时前
S033A-基于STM32单片机拼图游戏机【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·拼图游戏机
Silicore_Emma3 小时前
D2596HV:高压异步DC-DC降压芯片简介
嵌入式硬件·消费电子·dc-dc系列电路·电源管理电路·降压(buck)开关稳压器
东方佑3 小时前
去魅:工具调用、Agent 调用、A2A、MCP、Harness 到底都是什么
服务器·网络·数据库