潍微牌水表-边缘网关-MQTT接入ThingsKit
1、准备工作
本次测试所需硬件为纵横边缘网关(本次测试型号为EG8000),潍微牌水表DN40、RS485转USB串口工具以及各类线材:
潍微牌水表DN40,型号:DN40
纵横边缘网关(本次测试使用),型号:EG8000
购买咨询地址:
RS485转USB工具,需自行购买
准备好设备后按照相关说明书接线,水表需要接入一组12VDC电源供电以及AB数据线连接边缘网关RS485口,本次测试组网方式为以太网。
💡 补充
📎MODBUS倒流可测调试软件及协议 20.1.10.zip
2、水表设置
2-1、使用配置软件
💡 提示
打开配置软件时用管理员权限打开,进入配置软件后按照动图流程测试获取设备地址码,测试是否可以读出当前水表总流量。
💡 提示
本文档测试水表地址码为01H。
3、网关设置
3-1、配置串口
💡 注意
本文档测试水表通讯参数为波特率9600、停止位1、数据位8、无校验位以及接入RS485第一口,实际操作时配置内容需要按照测试设备以及接入口做调整。
3-2、请求数据
💡 提示
本测试水表的通讯协议是Modbus。2-1内容中我们确定了设备的地址码,并且可以确定设备寄存器基地址为200H,所以在配置Modbus请求节点时,起始地址写入了组态地址40513(200H=512,由于组态地址从1开始,故加1变成513)。而根据设备Modbus通讯文档确定了,取“净累计流量”需要读两个寄存器的值,所以在寄存器数量上填写了2。
❓ 在Modbus请求节点中填写的寄存器解析是由什么决定配置信息的?
答:根据数据点在寄存器中的表达形式确定。地址填写需要Modbus解析节点的起始寄存器地址,数量填写有几个解析数据点,类型根据数据点在寄存器中的表达形式选择。
如:本水表设备取其“净累计流量”需要读两个寄存器的值,且确定了起始寄存器地址以及数据点。
地址:40513
数量:1(取1个32位无符号整数ABCD的寄存器值作为一个数据点)
类型:32位无符号整数ABCD(选择数据点在寄存器中的数据格式)
💡 注意
文档中动图最后的输出是1,但这并不是真实的“净累计流量”,由于设备设置“脉冲当量”为0.1。数据点的值=解析值x脉冲当量,即净累计流量=1×0.1=0.1。
💡 注意
本文档只打印了最终解析的值,当按照本文档测试时应在其他节点多使用调试节点,能够够好理解边缘网关是怎么实现Modbus通讯。
3-3、缩放数据
根据3-2获得的数据进行缩放
3-4、上传平台
var temp = msg.payload;
var x = {
"水表": [
{
"净累积流量": temp
}
]
}
msg.payload = x;
return msg;
💡 注意
测试中使用服务器地址以及端口需要根据实际情况填写。
体验账号
服务器地址:101.133.234.90
端口号:1883
💡 提示
由于还没有进行平台配置,网关数据是无法上报至平台。
4、平台配置
4-1、创建产品
4-2、创建物模型
💡 提示
创建物模型时,物模型标识符需要与平台接受数据中的键名一致。
4-3、创建设备
💡 提示
网关上线后,平台会自动创建网关子设备。
4-4、修改子设备产品
💡 提示
由于流程中的注入节点没有开启定时注入以及立即注入,所以动图中需要手动注入一次。测试过程中可以开启这两项。
5、数据验证
💡 提示
由于本测试水表读数为0,数据不够直观,实际测试中可以让测试水表有累积流量后再取值。