645协议数据发送和接收精讲

本文主要讲解645电表协议读取用电量和电压数值,对协议数据结构进行展开讲解



前言

之前给移动楼宇做了一个645协议的电表数据上传到云服务,对645协议的数据解析研究了几天过程是比较曲折的,为此总结了快速解析协议的方法方便以后的小伙伴迅速完成数据解析


提示:645协议的电表我用的是485模块进行接收发送的

一、展示数据寄存器地址和电表图片

厂家提供的寄存器列表
在这里插入图片描述
电表样式
在这里插入图片描述
数据结构展示

fefefefe(帧起始符) 68 292507072120(地址域) 68 11(控制码) 04(数据长度) 33333333(寄存器地址) 4e16

二、获取用电量

1.发送咨询电量命令

发送咨询用电量命令:fefefefe 68 292507072120 68 11 04 33333333 4e16
格式讲解
fefefefe 数据头每条数据都要带
68 针起始符
292507072120 表号 解析为 202107072529 从右向左每一个16进制byte拼接在一起,就是电表贴的条码上的数字
68 针起始符
11 控制码 读取的意思
04 读取寄存器的数据长度
33333333 寄存器,解析为要读取00000000号寄存器,从右向左每一个16进制-33(16进制拼接) (33-33)+(33-33)+(33-33)+(33-33)=00000000
4e 校验位和后两位 68+29+25+07+07+21+20+68+11+04+33+33+33+33=24e 取后两位=4e
16 结束符

2.接收电表回传的电量数据

接收到数据fefefefe 68 292507072120 68 91 08 33333333 a94a3633 2e16
格式讲解
fefefefe 数据头每条数据都要带
68 针起始符
292507072120 表号 解析为 202107072529 从右向左每一个16进制byte拼接在一起
68 针起始符
91 控制码 读取的意思
08 返回寄存器加数据的长度为8个byte
33333333 寄存器,解析为要读取00000000号寄存器,从右向左每一个16进制-33(16进制拼接) (33-33)+(33-33)+(33-33)+(33-33)=00000000
a94a3633 返回的数据,代表电量, 从右向左每一个16进制-33(16进制拼接)(33-33)+(36-33)+(4a-33)+(a9-33)=31776*0.01=317.76 kw/h
2e 校验位和后两位,除去数据头对其它数据进行16进制相加68+29+25+07+07+21+20+68+11+04+33+33+33+33+a9+4a+36+33=42e 取后两位=2e
16 结束符

三、获取A相电压

1.发送咨询电压命令

发送咨询用电压命令:fefefefe 68 292507072120 68 11 04 33343435 4e16
格式讲解
fefefefe 数据头每条数据都要带
68 针起始符
292507072120 表号 解析为 202107072529 从右向左每一个16进制byte拼接在一起
68 针起始符
11 控制码 读取的意思
04 读取寄存器的数据长度
33343435 寄存器,解析为要读取02010100号寄存器,从右向左每一个16进制-33(16进制拼接) (35-33)+(34-33)+(34-33)+(33-33)=02010100
4e 校验位和后两位 68+29+25+07+07+21+20+68+11+04+33+34+34+35=252 取后两位=52
16 结束符

2.接收电表回传的电压数据

接收到数据fefefefe 68 292507072120 68 91 06 33343435 8a56 2e16
格式讲解
fefefefe 数据头每条数据都要带
68 针起始符
292507072120 表号 解析为 202107072529 从右向左每一个16进制byte拼接在一起
68 针起始符
91 控制码 读取的意思
06 返回寄存器加数据的长度为6个byte
33343435 寄存器,解析为要读取02010100号寄存器,从右向左每一个16进制-33(16进制拼接) (34-33)+(33-33)+(33-33)+(33-33)=02010100
8a56 返回的数据,代表电量, 从右向左每一个16进制-33(16进制拼接)(56-33)+(8a-33) =2357*0.1=235.7V
2e 校验位和后两位,除去数据头对其它数据进行16进制相加68+29+25+07+07+21+20+68+91+06+33+34+34+35+8a+56 取后两位=2e
16 结束符

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐