485转以太网【亿佰特NA111】MobusRTU读取_物联网平台

1、准备工作

1-1、485转以太网,串口服务器(型号:EBYTE-NA111)

EBYTE-NA111购买链接:

温湿度设备购买链接:

温湿度传感器信息(一般在配套的文档中)

温湿度传感器中温度湿度寄存器(保持寄存器)地址:

通信示例(在文末更改Node-Red配置的时候可能会用到):

1-3、USB转485工具,读取到传感器的波特率和地址码

1-3-1、USB转485工具接线图:

1-3-2、通过软件读取并配置传感器地址码及其波特率

接线完成后将USB转485工具连接电脑并打开 "控制面板" -> "设备管理器",找到其连接的端口号:

然后打开串口工具:

此处得到该温湿度传感器 地址码为:01 , 波特率为 9600

PS: 本次示例中导入Node-Red网关中的传感器命令配置是根据地址码01来确认的

PS: 本次示例中进入亿佰特NA111串口服务器配置波特率是根据传感器波特率进行匹配的

1-4、进入EBYTE-NA111串口服务器配置界面,获取IP地址/设置串口参数.

1-4-1:串口服务器连接传感器与电脑主机:

1-4-2:修改电脑网络频段

1-4-3:进入EBYTE后台管理界面:

进入界面后进行如下配置:

PS:查询当前电脑网段方法:进入CMD命令台->输入命令ipconfig->找到无线局域网适配器 WLAN->找到IPv4 地址:

PS:确认配置后,拔出网线连接电脑网口的一端并接入IP为当前网段的交换机中以便能够通过网络远程访问到EBYTE设备。

2、进入ThingsKit Edge配置设备接入

2-1、创建温湿度产品及温湿度设备

进入创建产品页面后:

创建成功后会立即弹信息栏:

2-2、创建Node-RED实例

进入"创建实例":

2-3、通过案例导入配置,接入USR-TCP232-304并获取传感器信息

[{"id":"310bf935d7d1fdf8","type":"tcp request","z":"71d4f1938e87d25f","name":"","server":"192.168.1.137","port":"502","out":"time","ret":"buffer","splitc":"0","newline":"","trim":false,"tls":"","x":380,"y":240,"wires":[["eb364d022d55c9e9","fb5d2ea76a895ed0","4f9e854bae1d34a6"]]},{"id":"14b696111075d74f","type":"inject","z":"71d4f1938e87d25f","name":"010300000002C40B","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[1,3,0,0,0,2,196,11]","payloadType":"bin","x":130,"y":240,"wires":[["310bf935d7d1fdf8","491d4d43c4899be6"]]},{"id":"eb364d022d55c9e9","type":"debug","z":"71d4f1938e87d25f","name":"debug 3","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":640,"y":240,"wires":[]},{"id":"491d4d43c4899be6","type":"debug","z":"71d4f1938e87d25f","name":"debug 4","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":340,"y":200,"wires":[]},{"id":"fd2a9ef5341f3768","type":"comment","z":"71d4f1938e87d25f","name":"这个是问询帧","info":"","x":110,"y":200,"wires":[]},{"id":"3770ae436facbb7f","type":"comment","z":"71d4f1938e87d25f","name":"这个是应答帧","info":"","x":650,"y":200,"wires":[]},{"id":"fb5d2ea76a895ed0","type":"function","z":"71d4f1938e87d25f","name":"function 1","func":"// 获取 Buffer(如果 msg.payload 已是 Buffer 则直接使用)nlet buf = msg.payload;nn// 确保是 Buffer,如果不是则尝试转换(例如字符串)nif (!Buffer.isBuffer(buf)) {n    // 如果是数组或其他,转为 Buffern    buf = Buffer.from(buf);n}nn// 读取湿度:偏移 3~4,大端nlet humidityRaw = buf.readUInt16BE(3);   // 等价于 (buf[3] << 8) | buf[4]nlet humidity = humidityRaw / 10.0;nn// 读取温度:偏移 5~6,大端nlet tempRaw = buf.readUInt16BE(5);nlet temperature = tempRaw / 10.0;nn// 将结果放到 msg.payload,也可以附加原始数据nmsg.payload = {n    CurrentHumidity: humidity,      // 39.7n    CurrentTemperature: temperature // 29.2n};nn// 如果需要调试,可以打印n// node.warn(`湿度: ${humidity}℃, 温度: ${temperature}℃`);nnreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":340,"wires":[["13a80b20ad32945d"]]},{"id":"13a80b20ad32945d","type":"debug","z":"71d4f1938e87d25f","name":"debug 5","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":680,"y":340,"wires":[]},{"id":"55c9c1aed0b523c3","type":"comment","z":"71d4f1938e87d25f","name":"文档见:https://yunteng.yuque.com/avshoi/thingskit-edge-v1xdocs/wepzq71binks4t7p","info":"","x":320,"y":80,"wires":[]},{"id":"4f9e854bae1d34a6","type":"buffer-parser","z":"71d4f1938e87d25f","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"uint16be","name":"CurrentHumidity","offset":3,"length":1,"offsetbit":0,"scale":"0.1","mask":""},{"type":"uint16be","name":"CurrentTemperature","offset":5,"length":1,"offsetbit":0,"scale":"0.1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"return","multipleResult":false,"fanOutMultipleResult":false,"setTopic":true,"outputs":1,"x":510,"y":400,"wires":[["003a7f0267d23a6b"]]},{"id":"003a7f0267d23a6b","type":"debug","z":"71d4f1938e87d25f","name":"debug 6","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":680,"y":400,"wires":[]},{"id":"ddea600d81008698","type":"comment","z":"71d4f1938e87d25f","name":"一种:JavaScript解析","info":"","x":300,"y":340,"wires":[]},{"id":"5a43730027099e8f","type":"comment","z":"71d4f1938e87d25f","name":"另一种:利用buffer-parser节点解析","info":"","x":260,"y":400,"wires":[]},{"id":"d8bd9d378e700e44","type":"comment","z":"71d4f1938e87d25f","name":"buffer解析节点:node-red-contrib-buffer-parser","info":"","x":400,"y":500,"wires":[]},{"id":"ee25fb1a54e96205","type":"global-config","env":[],"modules":{"node-red-contrib-buffer-parser":"3.2.2"}}]

2-5 、数据上报到平台对应设备

进入配置界面后看作如下更改:

这里上报的值,与物模型是一致的,所以不用转换

CurrentHumidity

CurrentTemperature

数据验证

云腾五洲-AI助理