背景
当前大数据时代,数据采集是数据分析与挖掘的基石。针对企业内部能耗监控数据价值挖掘不足的问题,采用内网数据采集与存储方案,构建数据分析平台,基于历史数据建立能耗消耗模型并进行预测。
方案设计
- 设备:德力西电表(支持 DL/T 645-2007 协议)
- 转换模块:USR-DR164(485 转无线网络),稳定便捷,适合现场改造
- 架构:内网数据采集 + 内网数据存储
改造步骤
1. 调试 USR-DR164
根据说明书选择 AP+STA 模式,方便后期调试。通过设备自带 AP 功能接入管理界面,配置 STA 及 SSID。串口设置需一一对应,485 连接遵循 A 对 A、B 对 B 原则。

配置完成后,使用串口调试工具测试通讯,配置对应 IP 地址,显示就绪表示连接成功。

2. 读取电表表号(地址)
发送获取地址代码:
SEND HEX>
68 99 99 99 99 99 99 68 11 04 33 33 34 33 48 16
接收返回:
RECV HEX>
FE FE FE FE 68 83 11 60 20 20 62 68 91 08 33 33
RECV HEX>
34 33 4A 4A A4 34 48 16
解析返回值可知 83 11 60 20 20 62 为表的地址。关于如何解析 16 位地址,可参考 DL/T 645-2007 协议。
3. 读取电能数据
发送有功总代码:
SEND HEX>
68 83 11 60 20 20 62 68 11 04 33 33 34 33 48 16
接收返回:
RECV HEX>
FE FE FE FE 68 83 11 60 20 20 62 68 91 08 33 33
RECV HEX>
34 33 53 4A A4 34 41 16
返回值中 53 4A A4 34 41 为有效数据。解析方法:减 33 后反转数据。
4. Python 自动化读取
测试通过后,使用 Python Socket 实现自动化读取。
import socket
import binascii
s = socket.socket()
host = '192.168.1.137'
port = 8899
data = b""
all_line = []
new_list = []
new_list2 = []
send_data = b"\x68\x83\x11\x60\x20\x20\x62\x68\x11\x04\x33\x33\x34\x33\x48\x16"
def ():
num1 = (hex_str1, )
num2 = (hex_str2, )
result = num1 - num2
result_hex = (result)[:].upper()
result_hex
():
source =
line sample:
source += line
source = source[:]
s_len = ((source) / )
(s_len)
i (, s_len):
new_list.append(source[ * i: * i + ])
(source)
(new_list)
indices = [i i, item (new_list) item == ]
(indices[-])
result = new_list[(indices[-] + ):-]
(result)
line result:
new_list2.append(calc_result(line, ))
new_list2.reverse()
e_value = (.join(new_list2)) /
(, e_value)
:
s.connect((host, port))
()
s.send(send_data)
s.settimeout()
n (, ):
response = s.recv()
hex_str = binascii.hexlify(response).decode()
all_line.append(hex_str)
get_e_value(all_line)
Exception e:
(, (e))



