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進行搭建。
我們打開數據庫,打開存入數據的表,即可觀察到存入的數據。

審核編輯 黃宇
-
數據采集
+關注
關注
41文章
8038瀏覽量
120871 -
服務器
+關注
關注
14文章
10251瀏覽量
91477 -
阿里云
+關注
關注
3文章
1038瀏覽量
45687 -
JSON
+關注
關注
0文章
128瀏覽量
7780
發布評論請先 登錄
上萬點數據如何穩定采集?基于 BL118 Node-RED 的工業邊緣匯聚方案
什么是企業云服務器-云計算
BL118 Node-RED 邊緣計算網關:數據采集場景下的“隱形冠軍”
IEC104轉Modbus TCP對接上位機的數據采集方案
Node-RED工業節點推薦:Modbus、PLC、OPC UA、MQTT 都能搞定!
工業物聯網和自動化領域 Node-RED 最常用的 10 大節點,你用過幾個?
Modbus能源數據采集網關有什么功能
HarmonyOS5云服務技術分享--ArkTS開發Node環境
Modbus轉Profinet賦予數據采集儀高效通信的超能力
【教程】Node-RED中Chirpstack節點使用指南
【干貨】什么是Node-RED?一文帶你了解!
Node-RED+Modbus_slave:JSON數據采集與阿里云服務器上傳
評論