从Modbus到MySQL:Node-RED数据封装与TCP上传教程

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进行搭建。

我们打开数据库,打开存入数据的表,即可观察到存入的数据。

相关推荐
ba_pi2 个月前
物联网中台搭建以及规则定义
物联网·mqtt·mongodb·tdengine·emqx·node-red
DreamLife☼2 个月前
Node-RED革命性实践:从智能家居网关到二次开发,全面重新定义可视化编程
mqtt·网关·低代码·智能家居·iot·1024程序员节·node-red
RockHopper20253 个月前
Node-RED 与 n8n 在 IIoT 低代码开发项目中的互补性分析
物联网·node-red·n8n
赵大爷你大爷3 个月前
node-red 采集CNC?
node-red·cnc采集
handsomestWei6 个月前
Node-RED低代码流式编程工具使用简介
低代码·node-red·物联网iot
成都纵横智控科技官方账号9 个月前
工业物联网的可视化编程革新:Node-RED与边缘计算的深度融合-纵横智控
物联网·边缘计算·数据采集·node-red·智改数转
sanzk9 个月前
node-red dashboard
node-red
sanzk9 个月前
node-red
node-red
文浩(楠搏万)1 年前
全面解析 Node-RED:功能、Docker 部署与实战示例
运维·物联网·docker·容器·编程工具·node-red·流编程