找回密码
立即注册
搜索
发回帖 发新帖

5256

积分

0

好友

673

主题
发表于 1 小时前 | 查看: 6| 回复: 0

写代码调试 DL/T645 电能表时,手里没有真表是常态。就算有表,接线也得折腾半天。等都弄好了,还得自己写串口调试程序、拼报文、解析应答,一上午就没了。换个表型,数据标识又不一样,还得重新改。

前几天在 GitHub 上看到一个用 .NET 8 写的 DL/T645 主站调试工具,内置仿真从站——没有真表也能跑,克隆下来直接启动。

DL/T645电能表主站监控界面,显示三相电压趋势图、报文监视和数据卡片

项目简介

MeterSim645 是按照 DL/T645-2007 规约实现的电能表调试上位机。通过 RS485 串口轮询,电量、电压、电流、功率、频率等数据实时显示。从连接、轮询、组帧、解析到展示,整条链路都串起来了。

有些朋友对 DL/T645-2007 协议可能还不太熟悉,这里简单说一下。它是国内电能表通信的事实标准,变电站、配电台区的表计基本都走这个协议。帧结构以 68 开头,地址域用 6 字节 BCD 表示,数据域加 0x33 掩码,算术和校验,默认 2400 bps 偶校验。

DL/T645电能表主站v1.0界面截图,串口配置、实时数据与报文监视

几个核心亮点

① 内置仿真从站,没有真表也可以运行

这是最省事的地方。仿真从站加内存回环,克隆完 dotnet run 就起来了。不用查表、查线、对波特率,直接跑。仿真数据按电网特性做了标定:频率在 49.90~50.10 Hz 间随机游走,功率因数钳在 0.93~0.99,三相电压在 209~235 V 波动,电能只增不减,跟接真表看到的表现一样。

② 单元测试全覆盖

协议编解码是一个字节出错就整体崩掉的活儿。项目里的 139 个单元测试全部通过,覆盖了编解码契约、帧扫描器、收发统计,还涉及命令状态机、波动数据源值域断言、CSV 导出转义等边界场景。黄金报文向量也在里面,编解码正确性拿捏得死死的。对做规约对接的老哥来说,这些测试用例就是一份活着的 DL/T645 参考手册。

DL/T645电能表主站断开状态界面,串口配置、实时数据与三相电压趋势图

③ 严格三层结构

Core 是纯类库,不依赖任何 UI 框架,协议、模型、轮询服务都在里面。设计上把 ITransport 接口放在 Core 里,服务层只依赖抽象。无论另一端是真实串口还是内存回环,切换只改一行装配代码。

④ 深色工业 HMI 风格

深色 HMI 主题,标题栏支持拖动、双击最大化。卡片墙按电能、电压、电流、功率分组,涨跌用箭头标记,一目了然。断开连接后卡片变灰,但最后的数值仍保留,不会一断开就清空。三相电压趋势图采用 120 点滚动窗口,250 V 红虚线作为上限警戒线。整个界面是为工业现场环境设计的。

怎么用

直接用 git 下载代码:

git clone https://github.com/agentthink/MeterSim645.git
cd MeterSim645
dotnet build
dotnet test
dotnet run --project src/Dlt645Master.App

启动后默认走仿真链路,不需要连接真实电表。点击连接,徽标变成绿色,再点启动轮询,卡片墙数值就会跳起来。三相曲线滚动、报文监视滚屏、收发分色,哪帧是问哪帧是答一眼就能分清。

这些数据可以导出为 CSV 或 Excel 格式,直接打开不会乱码。报文监视区也支持导出,把原始帧保存为文本文件。

写在最后

目前只支持 DL/T645-2007,Modbus、IEC 61850 暂不支持。真实串口接入和多表轮询还在规划中,眼下主要用作单表调试和协议验证。需要的朋友可以下载试一下。

开源地址:https://github.com/agentthink/MeterSim645




上一篇:拍一下 MacBook 它会叫:5 千星开源项目把内置加速度计玩明白了
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-9 08:40 , Processed in 0.064273 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表