『7x24小时有问必答』
要读任意一个电表的数据,首先要关注的不是电表的地址,而是电表所支持的通信协议,验证电表所支持的通信协议只需要两步:
1. “485接口”或“红外接口"建立连接
使用RS485接口连接电表,默认波特率是2400bps或9600bps,偶校验,数据位8,停止位1。
使用红外接口,默认波特率是1200bps或9600bps,偶校验,数据位8,停止位1.
不管是485接口还是红外接口,在确定接口和模块没问题的情况下,如果两个波特率都无法读到数据,请查看电表说明书(应该不支持DLT645或DLT698协议)。

2. 发送广播指令(通配符指令)
DLT645协议广播指令:
FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16
FE FE FE(前缀唤醒电表)  
68(起始符)
  AA AA AA AA AA AA(电表地址编号通配符)  
68(起始符)  
13(控制码)  
00(数据域长度)  
DF(校验码)  
16(结束符)
返回指令:
FE FE FE FE 68 14 35 09 03 12 24 68 93 06 47 68 3C 36 45 57 B1 16
68(起始符)
14 35 09 03 12 24(电表地址)  
68(起始符)  
93(控制码)  
06(数据域长度)  
47 68 3C 36 45 57(电表地址,需减0x33)  
B1(校验码)  
16(结束符)
DLT698协议广播指令:
68 17 00 43 45 AA AA AA AA AA AA 10 DA 5F 05 01 03 40 01 02 00 00 90 0F 16
68(起始字符)
1700(长度域)
43(控制域)
45(服务器地址标志)
AAAAAAAAAAAA(服务器地址)
10(客户机地址)
DA5F(帧头校验)
0501(读取请求GetRequestNormal)
03(PIID)
40010200(OAD)
00(时间标签域)
900F(帧校验)
16(结束字符)
返回指令:
FE FE FE FE 68 2D 00 C3 05 14 35 09 03 12 24 10 5C 20 85 01 03 40 01 02 00 01 09 06 24 12 03 09 35 14 01 01 01 33 20 02 01 01 51 30 11 02 00 00 7F 21 16
68(起始字符)
2D00(长度域)
C3(控制域)
05(服务器地址标志)
143509031224(服务器地址)
10(客户机地址)
5C20(帧头校验)
8501(GetResponseNormal)
03(PIID)
40010200(OAD)
010906(响应结果octet_string长度6)
241203093514(字符串)
010101(跟随上报信息域长度1)
33200201(OAD)
015130110200(响应结果OAD)
00(时间标签域)
7F21(帧校验)
16(结束字符)
总结
使用RS485或红外正确连接电表,并打开串口,发送DLT645广播指令和DLT698广播指令,如果都无数据返回,切换波特率再次尝试,如果还是没有数据返回,说明电表不支持标准协议或者通信接口故障。
有些小厂家的非标准电表(可能是因为成本原因)只支持内部自己定义的Modbus协议,这种情况只能参考电表说明书。
推荐阅读:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码