• 正文
  • 相关推荐
申请入驻 产业图谱

分享一个DL/T654 2007规约测试工具

08/05 08:19
223
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

基于 PyQt5 开发的 DL/T 645-2007《多功能电能表通信协议》测试工具,用于电表通信协议调试、常规参数抄读与自定义报文收发。

功能特性

1. 通信方式

支持两种通信模式,可在界面顶部切换:

串口通信:自动枚举本机串口,可选波特率(600/1200/2400/4800/9600/19200)、数据位、校验位、停止位•

TCP 客户端:连接电表集中器串口服务器的 TCP 端口(需填入 IP 和端口)

2. 协议实现

严格遵循 DL/T 645-2007 规约:

• 帧格式:FE FE FE FE 68H A0~A5 68H C L DATA CS 16H

• 唤醒头 FE FE FE FE(发送时自动添加,接收时自动过滤)

• 地址域 6 字节,低字节在前,按十六进制打包

• 数据域所有字节 +33H 传输

• 校验码 CS:从第一个 68H 到 CS 前所有字节的模 256 和

• 控制码:读数据(11H)、读后继(12H)、读地址(13H)等

• 异常应答解析(D6=1,错误码:无数据/密码错/权限不足等)

3. 抄读参数

内置 30 项常用参数,按规约附录 A.2 数据标识编码表分类:

分类 参数示例
电能量 组合/正向/反向有功总电能、各费率电能、四象限无功电能
最大需量 正向有功最大需量、反向有功最大需量
变量数据 A/B/C 相电压电流、瞬时总有功/无功/视在功率、总功率因数、电网频率
参变量 日期及星期、时间、最大需量周期、滑差时间、通信口速率特征字
    • 数据格式自动按规约解析(BCD 码、小数位、单位)• 支持一次选择多个参数批量抄读,结果在表格中显示• 支持"读地址"广播命令(地址域 999999999999H)

4. 自定义报文

    • 支持手动输入任意十六进制报文直接发送• 可用于测试电表对非标准帧的响应,或调试特殊命令

5. 日志与持久化

    • 实时通信日志(发送/接收报文、时间戳、解析结果)• 日志支持保存为文本文件• 电表地址自动持久化(下次启动自动填入上次地址)• 结果表格支持导出

界面说明

界面分为四个区域:

┌─────────────────────────────────────────────┐
│  通信设置区(顶部)                          │
│  通信模式 | 串口/TCP参数 | 电表地址 | 连接  │
├─────────────────────────────────────────────┤
│  参数选择区(左)   │  结果表格区(右)       │
│  参数列表(可多选)   │  参数名 | 值 | 单位 | 时间 │
│  [读取选中]         │                        │
│  [读地址]           │                        │
├─────────────────────────────────────────────┤
│  自定义帧发送区                              │
│  HEX 输入框 | [发送]                         │
├─────────────────────────────────────────────┤
│  通信日志区(底部)                          │
│  [保存日志] [清空]                           │
└─────────────────────────────────────────────┘

使用方法

1. 启动

双击 DLT645Tool.exe 运行(首次启动需 2-3 秒解压,之后正常)。
无需安装 Python 环境,单文件即可运行。

2. 连接电表

1. 选择通信模式:串口 或 TCP 客户端

2. 串口模式:选择串口号、波特率(电表常用 2400)、校验(通常偶校验)

3. TCP 模式:填入串口服务器的 IP 和端口(如 192.168.1.100:8080)

4. 在"电表地址"框输入 12 位十六进制电表地址(如 122512050318

5. 点击"连接"按钮

3. 抄读参数

    1. 在左侧参数列表勾选要读取的参数(可多选)2. 点击"读取选中"按钮3. 结果显示在右侧表格,包含参数名、数值、单位、读取时间4. 如读不到数据,查看底部日志区是否有异常应答

4. 读取电表地址(读地址命令)

    • 当不知道电表通信地址时,点击"读地址"按钮• 工具自动发送广播帧(地址域 999999999999H,C=13H)• 读到的地址会自动填入地址框

5. 自定义报文发送

      • • 在 HEX 输入框输入完整报文(如

    FE FE FE FE 68 AA AA AA AA AA AA 68 13 00 4F 16

    • • 点击"发送"按钮,原样发送(不二次加唤醒头)
    • • 用于调试特殊命令或非标准帧

6. 日志操作

    • 底部日志区实时显示每次收发的报文• 点击"保存日志"将日志导出为文本文件• 点击"清空"清除当前日志

报文示例

以读取"正向有功总电能"为例(电表地址 122512050318):

发送帧

FE FE FE FE 68 18 03 05 12 25 12 68 11 04 33 33 34 33 1B 16
      • • 地址域:

    18 03 05 12 25 12

      • • 唤醒头:

    FE FE FE FE(低字节在前,对应 122512050318)

  •  • 数据标识:33 33 34 33(DI0~DI3 各+33H,DI3DI2DI1DI0=00010000,正向有功总电能)
      • • 校验码:

    1B

  •  正常应答帧
      • (电表返回):

    FE FE FE FE 68 18 03 05 12 25 12 68 91 08 33 33 34 33 XX XX XX XX CS 16

      • • 控制码

    91

      :正常应答(D7=1)
    • • 数据域前 4 字节为数据标识,后 4 字节为电能数据(BCD,格式 XXXXXX.XX kWh)

技术参数

项目 说明
协议标准 DL/T 645-2007
通信模式 RS232/RS485 串口、TCP 客户端
串口参数 600~19200bps,5/6/7/8 数据位,无/奇/偶校验,1/1.5/2 停止位
地址格式 12 位十六进制(BCD 编码)
运行环境 Windows 7 及以上,无需 Python 环境
程序类型 单文件 exe(37 MB)

常见问题

Q: 连接后读不到数据?

    • 检查串口参数是否与电表一致(默认 2400bps、偶校验)• 检查电表地址是否正确(可用"读地址"命令获取)• 检查物理连接(RS485 的 A/B 极性)• 查看日志区是否有异常应答(如"无数据"表示电表无此数据项)

Q: 日志显示发送报文但无应答?

    • 确认电表已上电且通信端口正常• TCP 模式下确认 IP 和端口可达• 串口模式下确认串口未被其他程序占用

Q: 报文里的 FE FE FE FE 是什么?

    • 唤醒头,用于唤醒电表通信模块,部分电表必须加,工具默认自动添加

Q: 校验码怎么算?

    • 从第一个 68H 到校验码前所有字节相加,取模 256,工具自动计算无需手动处理

下载链接

https://download.csdn.net/download/wuquan_1230/93222947

工具软件截图

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录