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

news2024/9/20 18:45:18

一、DLT645-2007通讯协议

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

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

①、数据帧格式

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

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进制格式进行编码及解析的。如下是读取电表常用的数据示例:

①、读取电表的通信地址

发送数据[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

②、读取电表表号

发送数据[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 

③、读取正向有功总电量

发送数据[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 

④、读取反向有功总电量

发送数据[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

⑤、读取组合有功总电量

发送数据[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处理;

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

//实际电量计算转换思路
//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 的溢出值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot整合Liquibase

1、是什么? Liquibase官网 Liquibase是一个开源的数据库管理工具,可以帮助开发人员管理和跟踪数据库变更。它可以与各种关系型数据库和NoSQL数据库一起使用,并提供多种数据库任务自动化功能,例如数据库迁移、版本控制和监控。Li…

盲盒抽奖源码

介绍: 功能上还可以,商品和盲盒可以在你程序里添加,设置概率等!! 新盲盒星球抽奖商城手机网站源码 随机开箱抢购 代码有点大,三百多M。 教程搭建很简单,基本10分钟搭建一套,可一个服务器搭建多套,只要你…

【时时三省】(C语言基础)模拟实现字符串相关函数

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 模拟实现库函数:strcpy 示例: const修饰指针 示例: const 修饰变量,这个变量为常变量,不能被修改,但本质上还是变量 正常num=20是改不了它…

招聘管理型岗位,HR会考察候选人的哪些方面?

团队管理能力 团队管理能力可以说是管理型岗位最基本的要求,只有具备优秀的团队管理能力,才能够带领团队实现组织目标,提高团队凝聚力,而想要考察一个人是否具备团队管理能力,就要通过多方面来测试。可以先了解一下候…

CSS笔记总结:第五天(HTML+CSS笔记完结)

Xmind鸟瞰图: 简单文字总结: css知识总结: 元素的显示与隐藏: 1.通过display隐藏元素 不保留位置 2.通过visibility 隐藏元素 保留位置 3.overflow 溢出隐藏 鼠标样式cursor: 1.defauly小白 2.p…

走进 keepalived:解析高可用架构背后的关键技术

一、什么是keepalived Keepalived 是一个用于实现服务器高可用性(High Availability,简称 HA)的软件。 简单来说,它的主要作用是检测服务器的状态,并在主服务器出现故障时,自动将服务切换到备份服务器上&…

SVN权限控制解析

一、基础数据说明 1. 代码目录存在多级 2. 角色存在多级 二、规则说明 结合例子讲规则 1、多级文件夹 a. 继承与覆盖 【文件夹层级】: Repositories/BS_Projects/科顺 BS_Projects包含了多个项目,每个项目是一个文件夹,比如“科顺”是其…

分布式事务Seata保证审批状态一致性

文章目录 下载安装Seata创建对应数据库修改application.yml相应配置启动SeataPmHub 实战——添加任务事务管理业务库添加undo_log 表对应服务加上对应的seata依赖Nacos 配置文件 pmhub-project-dev.yml 添加 seata 配置:接口添加 GlobalTransactional 注解涉及数据表…

Centos7升级gitlab(17)

在 CentOS 7 中将 GitLab 从版本 17.1.1 升级到 17.2.2,涉及以下步骤。请务必在升级前备份数据,以防止升级过程中出现问题导致数据丢失。 升级步骤 1. 备份 GitLab 数据 在升级之前,确保已经备份了 GitLab 的数据,包括数据库、…

【windows安装gradle】

1.去官网下载自己需要的版本。 2.直接解压到指定目录 3.配置环境变量 3.1.新建 GRADLE_HOME 环境变量值指向你的 Gradle 的解压路径 3.2.将 %GRADLE_HOME%\bin 添加到 Path 环境变量中 4.打开cmd命令行输入gradle -v查看是否安装成功以及当前版本 下面显示说明已经安装完成了…

软件测试用例的编写(六)

软件测试用例 定义 测试用例(TestCase)是为项目需求而编制的一组测试输入,执行步骤,以及预期结果,以便测试某个程序是否满足客户需求 可以总结为:每一个测试点的数据设计和步骤设计 – 对测试点的细化 作…

CentOS 7虚拟机安装部署MongoDB

1.添加MongoDB的YUM仓库 打开终端,执行以下命令来添加MongoDB的YUM仓库: sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo 在打开的文件中,输入以下内容: [mongodb-org-4.4] nameMongoDB Repository baseurlhttps://repo.mon…

城V4系列版本开源前后端uniapp代码

本文来自:智慧同城V4系列版本开源前后端uniapp代码 - 源码1688 应用介绍 演示地址:https://tongchengsaas.88881111.icu/ 账号:ceshi 密码:12345678 前端演示: 测试环境 php7.2mysql5.6ningx 安装拓展 ioncube&#x…

AppScan——Web 应用安全扫描的得力工具

一、引言 在当今数字化时代,Web 应用成为企业业务的重要支撑,但同时也面临着各种安全威胁。AppScan 作为一款专业的 Web 应用安全扫描工具,为保障 Web 应用的安全性提供了有力的支持。本文将对 AppScan 进行详细介绍,包括其功能、…

CogVideoX环境搭建推理测试

引子 智谱AI版Sora开源,首个可商用,18G显存即可运行。前文写了Open-Sora1.2的博文,感兴趣的童鞋请移步(Open-Sora1.2环境搭建&推理测试_open sora 1.2-CSDN博客)。对于这种占用资源少,且效果不错的多模…

ThreeJs学习笔记--坐标系,光源,相机控件

坐标系 一、创建添加坐标系 给场景添加坐标系THREE.AxesHelper()的参数表示坐标系坐标轴线段尺寸大小,你可以根据需要改变尺寸 const axesHelper new THREE.AxesHelper(200)//数值是坐标的尺寸 scene.add(axesHelper)//添加到场景里 坐标系包含三个坐标轴&…

HarmonyOS NEXT - Toast和Loading使用

demo 地址: https://github.com/iotjin/JhHarmonyDemo 代码不定时更新,请前往github查看最新代码 HarmonyOS NEXT - Toast和Loading使用 效果图调用方式JhProgressHud.ets 完整代码 官方有个toast但是比较单一(官方toast promptAction)&#…

【TiDB】10-对 TiDB 进行 TPC-C 测试

目录 1、安装bench工具 2、插入数据 3、运行测试 4、测试结果分析 4.1、总体性能概览 4.2、事务类型详细性能 4.3、错误事务分析 4.4、结论与建议 5、清理测试数据 TPC-C 是一个对 OLTP(联机交易处理)系统进行测试的规范,使用一个商…

C语言学习笔记 Day13(复合类型/自定义类型)

Day13 内容梳理: 目录 Chapter 9 复合类型(自定义类型) 9.1 结构体 (1)结构体变量定义、初始化 (2)嵌套结构体 (3)结构体赋值 (4)结构体和…

C Primer Plus 第4章习题

你该逆袭了 红色标注的是:错误的答案 蓝色标注的是:正确的答案 绿色标注的是:做题时有疑问的地方 练习题 一、复习题1、我的答案:正确答案: 2、3、4、5、6、7、8、9、10、11、12、 二、编程练习1、2、第4问我不会a、b、…