01 前言
本文章原文发表于我的微信公众号,请大家关注阅读,涉及的源代码等都在公众号,请搜索公众号: 智能家居NodeRed和HomeAssistant 即可关注。
02 概述
我并没有DDSU666这款电表的使用需求,但还是买了一只。原因有两个,其一是为了测试NodeRed解析流程中的浮点数据类型,其二是这款电表网友们关注度较高。
03 如何切换到Modbus通讯
DDSU666出厂默认是DL/T645协议,但我们一般都是用Modbus,我拿到的这只也不例外,按照网上搜罗的教程切换通讯协议操作起来都比较繁琐,于是根据资料编写了一条NodeRed流程来执行,大大简化了操作流程,无需计算校验码、无需进制转换、无需其他软件即可一键完成。
首先确定波特率:在液晶屏上读取BAUD的值,例如BAUD-1,则对应波特率为2400bps,0:1200bps,2:4800bps,3:9600bps
获取数据校验方式:查看屏幕显示是否为8N1或者8N2,一般情况下都是8N2校验。然后在NodeRed中安装serial port节点,使用serial request节点,设置好通讯参数如下:
如下流程中在Inject节点输入16位表号,可以从液晶屏幕显示或者机身条码获取,按照顺序填入触发节点即可切换到Modbus通讯。
04 更改Modbus从站地址
为方便更改从站地址我又编写了一条流程,只需查看显示屏当前的Modbus从站地址和波特率(需更改serial port波特率设置),例如把从站地址72改成1,Inject节点填入Now的值72,New的值1,触发节点即可完成。
05 更改通讯校验方式
在实际使用中,总线上的设备一般都不会只有一台,如果要使他们都能同时读取,就必须保证他们的通讯参数一致。但是正泰的电表基本默认都采用的是偶校验方式,如果把它改为无校验呢?于是我又查询了相关资料写出了下面一条NodeRed流程,这次只需要填写当前的从站地址即可,触发流程即可更改。