Node-RED采集Modbus数据并上传到MySQL数据库的完整教程

2026-01-05 17:29:36 钡铼技术

1.引言

1.1文档说明

本文档介绍的是使用node-red将modbus_slave模拟的485数据进行JSON数据封装后,上传到阿里云ECS私人搭建的服务器,数据通过服务器出处理后,存入到MYSQL数据库中。在参照本文档进行操作时,请先参照附录1和附录3搭建所需实验环境。
工业物联网关

1.2注意事项

本文档不单单适用于阿里云TCP服务器,也适用于其他TCP云服务器和本地Linux服务器。
本文档的数据传输格式,是由个人制定的,如果需要自己规定传输格式,请修改node-red里的function文件。
本文档采集modbus_slave模拟的感知层传感器。
本文档node-red流程在node-red流程文件夹下1.NODE-RED通过私人云服务器访问数据库(以TCP服务器为例)文件。

1.3术语解释

Modbus_slave:指在 Modbus 通信中作为从设备的角色。它响应主设备(Modbus Master)的请求,并提供所需的数据或执行命令的软件。
Modbus:是一种开放的通信协议,用于工业自动化系统中设备间的通信。它允许多个设备(如传感器、执行器、PLC 等)通过串行线或网络互相交换数据。
JSON:是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
Node_red:一个基于浏览器的流式编程工具,主要用于连接物联网设备和在线服务。

2.系统架构图

工业物联网关

3.感知层(modbus_slave)配置

打开modbus_slave软件,键盘点击CTRL+N创建一个新表格。
工业物联网关
点击setup->Slave Definition,进入配置界面,参照下图对modbus_slave进行配置。
工业物联网关
点击connection->connection setup,点击connection设置Modbus TCP/IP。
工业物联网关
配置modbus slave传输内容,通过前面操作其ID号,将寄存器内容栏设置为16进制,其中温湿度寄存器高2位为小数点前数据,低两位为小数点后数据。
工业物联网关

4.Node-red搭建过程

4.1节点安装

本次项目需要使用到的节点有node-red-contrib-modbus节点,安装方法如下:
工业物联网关

4.2Node-red业务配置

在Node-RED的工作区中,从左侧面板将一个Modbus-Read节点拖入到工作区。
工业物联网关

双击Modebus-Red 节点,对modbus-red节点进行属性设置,如下图。

工业物联网关
工业物联网关
点击server后的加号设置从站的modbus TCP地址。

注:本项目使用的本地采集,所以IP为127.0.01,根据个人需求自行修改。

工业物联网关
配置好后,点击部署,观察modbus-read节点下方是否出现active标识,出现代表网关和modbus_slave连接成功。
工业物联网关
配置好modbus-red节点后,从左侧面板将一个inject节点拖入工作区。因为采集的modbus_slave分别有温度、湿度两组数据,使用需要在inject节点中添加两个节点,分别取名为msg.temp和msg.humi。
工业物联网关

配置好inject节点后,从左侧面板将一个function节点拖入工作区。并且将inject节点和modbus-read节点同时连接到function节点上。

工业物联网关

双击function节点,将下方代码复制到文本编辑栏中。

if (msg.payload[1] >= 0 && msg.payload[1] < 10) {
msg.temp = msg.payload[0] + msg.payload[1] * 0.1;
}
else if (msg.payload[1] < 100 && msg.payload[1] >= 10) {
msg.temp = msg.payload[0] + msg.payload[1] * 0.01;
}
else if (msg.payload[1] < 1000 && msg.payload[1] >= 100) {
msg.temp = msg.payload[0] + msg.payload[1] * 0.001;
}
else if (msg.payload[1] >= 1000 && msg.payload[1] < 10000) {
msg.temp = msg.payload[0] + msg.payload[1] * 0.0001;
}
if (msg.payload[3] >= 0 && msg.payload[3] < 10) {
msg.humi = msg.payload[2] + msg.payload[3] * 0.1;
}
else if (msg.payload[3] < 100 && msg.payload[3] >= 10) {
msg.humi = msg.payload[2] + msg.payload[3] * 0.01;
}
else if (msg.payload[3] < 1000 && msg.payload[3] >= 100) {
msg.humi = msg.payload[2] + msg.payload[3] * 0.001;
}
else if (msg.payload[3] >= 1000 && msg.payload[3] < 10000) {
msg.humi = msg.payload[2] + msg.payload[3] * 0.0001;
}
msg.payload = '{"CurrentHumidity":'+ msg.humi+',"CurrentTemperature":' + msg.temp+'}';
return msg;

注:该函数是对采集的数据进行JSON封装处理,请根据需求修改。

最后再从左侧面板将一个TCP OUT节点拖入工作区中,并将function节点与其相连。

工业物联网关

双击TCP OUT节点,进行配置,选择连接服务器,输入端口号和地址。

工业物联网关

最后点击部署,此时网关的业务逻辑层编写完成。

4.3开启服务器

注:简单的TCP服务器搭建请参考附录1进行配置。

在服务器命令栏中输入./server开启监听,此时即可观察数据上传情况。

工业物联网关

5.观察MySQL数据库

注:mysql数据库搭建方法请参考附录3进行搭建。

我们打开数据库,打开存入数据的表,即可观察到存入的数据。
工业物联网关


标签: Node-RED Modbus
微信公众号

首页
产品
案例
联系钡铼