数码之家

 找回密码
 立即注册
搜索
查看: 1922|回复: 34

[工仪] 智能电表改功率计新玩法:搓一个LabVIEW上位机

[复制链接]
发表于 2024-2-16 18:31:43 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x
DLT645-2007规约的智能电表可以通过RS-485把表内数据按协议读写,站内有不少通过修改轮显数量将智能电表修改为功率计使用的;今天突发奇想,想使用LabVIEW为智能电表编写一个上位机,通过规约读取想要的几个参变量,并在程序内绘制成曲线,可带有.xml文件导出,方便长期的功率监测与测试。


先上测试版程序图:

测试版程序运行演示

测试版程序运行演示


现有程序的主要功能:通过串口读取电表内的电能量:当前正向总电能,变量:实时电压,实时电流(后续添加功率因数),并通过计算得出实时的视在功率并通过图表控件显示。
通讯的主要规范可见DL/T 645—2007内的帧格式;值得一提的是,在07规约内,帧内的数据域的传输十分特殊,数据项均先传送低位字节,后传送高位字节,除此之外在每个数据字节上+33h后再通过RS-485发出;在数据处理中需要特别注意。

规约的传输帧

规约的传输帧


按照规约的要求,数据帧应该进行如下处理:

帧处理流程

帧处理流程


但为了简化程序并减少工作量(菜),在程序中,仅对数据做了以下处理:

程序的

程序的


由于RS-485为半双工总线,电表在收到主机完整的一帧请求帧后会立刻开始应答;在程序的处理中使用了简单粗暴的接收方法:在发送完成命令帧后等待1s;1s后将接收缓冲区的所有数据转换为一个字符串,当有多个命令需要发送时则依次执行,每一次产生的数据都通过一个临时变量存储。
屏幕截图 2024-02-16 170152.png

程序使用顺序循环执行,在完成所有命令的抄读后同步进行数据处理,校验收取到的字符串长度合法后,直接使用截取字符串控件截取对应的数据域,并转换为16进制的字符串,完成这一步后,在循环内按字符串的字进行拆分,并转换为10进制数字,进行-3处理(消除发送时的+3)后按高低位再次将两个字拼合;处理完成一整个数据域后以数组形式输出,读取数组的对应元素并拼接后即可获得数值类型的明文(好阴间的写法)
下面演示一下功能:可见电表正常显示通讯状态;并且上位机读取的各项数据与电表相同,折线图显示正常
屏幕截图 2024-02-16 182322.png 屏幕截图 2024-02-16 182401.png

现有的缺点:
1:表号输入解析的部分还没做,命令帧的数据固定,不方便修改;后续优化会添加自动搜索表号功能,方便使用
2:数据帧的校验不严谨,存在误码可能
3:UI简陋,更多功能未跟进

讲在最后:在实际的使用过程中发现:与智能电表通信时的频率不宜过高,实测500mS的帧间隔对智能电表的负载过大(也有可能是我这电表老,MCU性能不足,11年的表);容易出现帧错误及反应卡顿,推测是频繁的串口中断对MCU的负载过高(电表的通信串口为偶校验),后续优化一点功能后会把源码发在论坛上,欢迎大佬评价!



打赏

参与人数 3家元 +183 收起 理由
亚历山大 + 18
nokia5320 + 15
家睦 + 150

查看全部打赏

 楼主| 发表于 2024-2-16 21:30:12 | 显示全部楼层
最新进度:广播地址查询功能添加完成,支持一键查询电表
屏幕截图 2024-02-16 212950.png
回复 支持 反对

使用道具 举报

发表于 2024-2-16 22:14:58 | 显示全部楼层
极客新人 发表于 2024-2-16 21:30
最新进度:广播地址查询功能添加完成,支持一键查询电表

这个可以有
回复 支持 反对

使用道具 举报

发表于 2024-2-17 08:21:34 来自手机浏览器 | 显示全部楼层
高手,自己做程序。
回复 支持 反对

使用道具 举报

发表于 2024-2-17 09:25:57 | 显示全部楼层
多做几个分享玩
回复 支持 反对

使用道具 举报

发表于 2024-2-17 09:26:01 | 显示全部楼层
多做几个分享玩
回复 支持 反对

使用道具 举报

发表于 2024-2-18 00:55:32 | 显示全部楼层
好厉害啊  虽然看不懂 但是好像很厉害
回复 支持 反对

使用道具 举报

发表于 2024-2-18 08:26:18 来自手机浏览器 | 显示全部楼层
厉害。               
回复 支持 反对

使用道具 举报

发表于 2024-2-18 08:36:04 | 显示全部楼层
没看出来咋接线的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-18 09:23:01 | 显示全部楼层

智能电表的11,12号端子是RS-485通信端子,接上USB转485模块即可
回复 支持 反对

使用道具 举报

发表于 2024-2-20 00:19:36 | 显示全部楼层
这个实用啊。
回复 支持 反对

使用道具 举报

发表于 2024-2-21 14:42:47 | 显示全部楼层
程序搞好给大家用了
回复 支持 反对

使用道具 举报

发表于 2024-2-21 14:54:22 | 显示全部楼层
这个不错,希望越做越好
回复 支持 反对

使用道具 举报

发表于 2024-2-22 08:31:06 | 显示全部楼层

谢谢分享 学习一下
回复 支持 反对

使用道具 举报

发表于 2024-2-22 08:37:27 | 显示全部楼层
有一定的实用性,挺好的
回复 支持 反对

使用道具 举报

发表于 2024-2-22 08:56:48 | 显示全部楼层
智能电表能随便接线吗?被发现了有什么影响吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-22 20:54:32 | 显示全部楼层
ciker_li 发表于 2024-2-22 08:56
智能电表能随便接线吗?被发现了有什么影响吗?

不能,得按照下面的线序接线,不然可能会报相电流异常
回复 支持 反对

使用道具 举报

发表于 2024-2-23 11:20:25 来自手机浏览器 | 显示全部楼层
有一个智能电表,通讯上了,修改参数的权限不够,只能查看修改部分参数,关键参数不能修改。现在电表还在吃灰
回复 支持 反对

使用道具 举报

发表于 2024-2-23 20:16:01 | 显示全部楼层
我有块不知道密码,没得玩。
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-27 16:21 , Processed in 0.187200 second(s), 16 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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