論壇原文:
https://club.rt-thread.org/ask/article/04554bb1d4ba5bfe.html
作者:XLUR_8603
功能綜述
基于睿擎派和RT-Thread操作系統(tǒng),我們開發(fā)了一款高性能工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)網(wǎng)關(guān),實(shí)現(xiàn)了設(shè)備信息的實(shí)時(shí)采集、可視化監(jiān)控和遠(yuǎn)程管理。該方案為傳統(tǒng)工業(yè)設(shè)備的智能化升級(jí)提供了可靠且經(jīng)濟(jì)的技術(shù)路徑。
核心功能
1.實(shí)時(shí)數(shù)據(jù)采集與可視化
a.通過(guò)Modbus RTU協(xié)議采集從設(shè)備數(shù)據(jù)
b.基于WebNet實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)頁(yè)可視化展示
c.支持溫濕度、光照、距離等多種傳感器數(shù)據(jù)監(jiān)控
2.遠(yuǎn)程設(shè)備管理
a.通過(guò)Web界面實(shí)現(xiàn)設(shè)備參數(shù)配置
b.支持在線OTA固件升級(jí)
c.實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出功能,方便數(shù)據(jù)分析
3.穩(wěn)定可靠的通信
a.采用RS485總線連接,通信穩(wěn)定可靠
b.基于RT-Thread實(shí)時(shí)操作系統(tǒng),確保系統(tǒng)響應(yīng)及時(shí)
c.使用互斥量保護(hù)數(shù)據(jù),避免并發(fā)訪問(wèn)沖突
系統(tǒng)架構(gòu)
硬件架構(gòu)設(shè)計(jì)
本方案采用主從架構(gòu)設(shè)計(jì),實(shí)現(xiàn)了分布式數(shù)據(jù)采集與集中管理:

主機(jī):睿擎派作為主站,負(fù)責(zé)數(shù)據(jù)匯總、處理和可視化
從機(jī):星火一號(hào)作為從站,負(fù)責(zé)前端傳感器數(shù)據(jù)采集
通信鏈路:通過(guò)RS485總線實(shí)現(xiàn)主從機(jī)之間的Modbus RTU通信
軟件架構(gòu)設(shè)計(jì)
本項(xiàng)目采用分層模塊化設(shè)計(jì),確保代碼的可維護(hù)性和功能分離,核心模塊包括:
主入口模塊:程序執(zhí)行入口,負(fù)責(zé)系統(tǒng)初始化流程
應(yīng)用管理模塊:集中管理應(yīng)用任務(wù),初始化全局資源
Modbus通信模塊:實(shí)現(xiàn)Modbus RTU協(xié)議功能,負(fù)責(zé)數(shù)據(jù)讀寫操作
Web服務(wù)模塊:基于WebNet實(shí)現(xiàn)HTTP服務(wù),提供網(wǎng)頁(yè)界面
傳感器采集模塊:負(fù)責(zé)各種傳感器數(shù)據(jù)采集和處理

核心代碼實(shí)現(xiàn)
Modbus初始化配置
代碼說(shuō)明:此模塊負(fù)責(zé)初始化Modbus RTU通信環(huán)境,配置串口參數(shù)、從機(jī)地址、超時(shí)設(shè)置和RS485模式,為后續(xù)的數(shù)據(jù)采集建立通信基礎(chǔ)。
/* Modbus初始化 - 根據(jù)硬件配置 */staticrt_bool_tmodbus_init(void){/* 創(chuàng)建Modbus RTU上下文 - 使用串口配置 */ modbus_ctx =modbus_new_rtu("/dev/uart5",115200,'N',8,1);if(modbus_ctx ==NULL){LOG_E("Unable to create Modbus context");return-1;}/* 設(shè)置從機(jī)地址 */modbus_set_slave(modbus_ctx,MODBUS_SLAVE_ADDR);/* 設(shè)置響應(yīng)超時(shí) */modbus_set_response_timeout(modbus_ctx,1,0);/* 設(shè)置為 RS485 模式 */modbus_rtu_set_serial_mode(modbus_ctx,MODBUS_RTU_RS485);/* 設(shè)置 RTS 控制 */modbus_rtu_set_rts(modbus_ctx,RS485_RTS_PIN,MODBUS_RTU_RTS_UP);/* 連接Modbus設(shè)備 */if(modbus_connect(modbus_ctx)==-1){LOG_E("Modbus connection failed: %s",modbus_strerror(errno));modbus_free(modbus_ctx); modbus_ctx =RT_NULL;returnRT_FALSE;}LOG_I("Modbus initialized successfully with UART5, 115200, RS485 mode");returnRT_TRUE;}
數(shù)據(jù)采集實(shí)現(xiàn)
代碼說(shuō)明:此模塊實(shí)現(xiàn)從Modbus從設(shè)備讀取傳感器數(shù)據(jù)的功能,包括溫濕度、光照和距離等參數(shù),并進(jìn)行數(shù)據(jù)處理和驗(yàn)證。
staticrt_bool_tread_sensor_data(structsensor_data*data){uint16_t tab_reg[MODBUS_REG_COUNT];int rc;int i;if(modbus_ctx ==NULL){LOG_E("Modbus context is null");returnRT_FALSE;} rc =modbus_read_registers(modbus_ctx, MODBUS_REG_START, MODBUS_REG_COUNT, tab_reg);if(rc ==-1){LOG_E("Modbus read failed: %s",modbus_strerror(errno));returnRT_FALSE;}/* 讀取溫度值(假設(shè)為有符號(hào)16位整數(shù),單位0.1℃) */ data->temperature =(int16_t)tab_reg[TEMPERATURE_REG - MODBUS_REG_START]/1.0f; data->humidity = tab_reg[HUMIDITY_REG - MODBUS_REG_START]/1.0f; data->ps_data = tab_reg[PS_REG_ADDR - MODBUS_REG_START]; data->brightness = tab_reg[BR_REG_ADDR - MODBUS_REG_START]/1.0f; data->valid = RT_TRUE;LOG_D("Modbus read: temp=%.1f℃, humidity=%.1f%%", data->temperature,data->humidity);returnRT_TRUE;}
Web服務(wù)實(shí)現(xiàn)
代碼說(shuō)明:此模塊實(shí)現(xiàn)Web服務(wù)的CGI處理函數(shù),用于響應(yīng)前端的光照數(shù)據(jù)請(qǐng)求,通過(guò)互斥量保護(hù)共享數(shù)據(jù),確保數(shù)據(jù)訪問(wèn)的安全性。
staticvoidcgi_get_light_handler(structwebnet_session*session){constchar*mimetype;float light_value =0.0f; mimetype =mime_get_type(RT_NULL);webnet_session_set_header(session, mimetype,200,"Ok",-1);char*trans_buf ="{"light": %.2f}";if(temperature_mutex !=RT_NULL){rt_mutex_take(temperature_mutex,100); light_value = g_light_value;rt_mutex_release(temperature_mutex);}webnet_session_printf(session, trans_buf, light_value);}
網(wǎng)頁(yè)界面設(shè)計(jì)
代碼說(shuō)明:此模塊定義了Web界面的頁(yè)面路由配置,根據(jù)用戶選擇加載不同的功能頁(yè)面,包括設(shè)備信息、從機(jī)設(shè)備信息、視頻流、數(shù)據(jù)導(dǎo)出、OTA更新和參數(shù)設(shè)置等。
// 根據(jù)選擇加載不同內(nèi)容頁(yè)constpages ={ device_info:"device_info.shtml", slave_device_info:"slave_device_info.shtml", video_stream:"video_stream.shtml", data_export:"data_export.shtml", ota_update:"ota_update.shtml", parameter_settings:"parameter_settings.shtml",};
技術(shù)優(yōu)勢(shì)
1.高實(shí)時(shí)性
a.基于RT-Thread實(shí)時(shí)操作系統(tǒng),任務(wù)響應(yīng)及時(shí)
b.采用消息隊(duì)列和互斥量等IPC機(jī)制,確保數(shù)據(jù)處理的實(shí)時(shí)性
2.易于擴(kuò)展
a.模塊化設(shè)計(jì),功能分離清晰
b.基于RT-Thread軟件包生態(tài),可快速集成各種傳感器
3.穩(wěn)定可靠
a.Modbus RTU協(xié)議,通信穩(wěn)定可靠
b.RS485總線,抗干擾能力強(qiáng)
c.完善的錯(cuò)誤處理機(jī)制
4.用戶友好
a.直觀的Web界面,操作簡(jiǎn)單
b.支持在線OTA升級(jí),維護(hù)便捷
c.數(shù)據(jù)可視化展示,一目了然
應(yīng)用場(chǎng)景
工業(yè)設(shè)備監(jiān)控:實(shí)時(shí)監(jiān)控工業(yè)設(shè)備的運(yùn)行狀態(tài)和環(huán)境參數(shù)
智能樓宇:監(jiān)控樓宇內(nèi)的溫濕度、光照等環(huán)境參數(shù)
農(nóng)業(yè)大棚:監(jiān)測(cè)大棚內(nèi)的環(huán)境參數(shù),實(shí)現(xiàn)智能調(diào)控
倉(cāng)儲(chǔ)物流:監(jiān)控倉(cāng)庫(kù)內(nèi)的溫濕度、煙霧等參數(shù),確保存儲(chǔ)安全
部署與配置
硬件配置
主機(jī):睿擎派開發(fā)板
從機(jī):星火一號(hào)開發(fā)板
通信:RS485總線連接
傳感器:溫濕度傳感器、光照傳感器、距離傳感器
軟件配置
操作系統(tǒng):RT-Thread 4.0+
協(xié)議:Modbus RTU
網(wǎng)絡(luò):WebNet HTTP服務(wù)
串口配置:UART5,波特率115200,無(wú)校驗(yàn)位,8位數(shù)據(jù),1位停止位
演示效果
總結(jié)
基于Modbus的在線監(jiān)控網(wǎng)關(guān)系統(tǒng)方案,充分利用了RT-Thread操作系統(tǒng)的優(yōu)勢(shì),實(shí)現(xiàn)了設(shè)備信息的實(shí)時(shí)采集、可視化監(jiān)控和遠(yuǎn)程管理。該方案具有高實(shí)時(shí)性、易于擴(kuò)展、穩(wěn)定可靠和用戶友好等特點(diǎn),可廣泛應(yīng)用于工業(yè)、樓宇、農(nóng)業(yè)等領(lǐng)域的設(shè)備監(jiān)控場(chǎng)景。
通過(guò)本方案的實(shí)施,傳統(tǒng)工業(yè)設(shè)備可以快速接入物聯(lián)網(wǎng),實(shí)現(xiàn)智能化升級(jí),提高生產(chǎn)效率和管理水平。RT-Thread軟件包生態(tài)的豐富資源,也為系統(tǒng)的快速開發(fā)和功能擴(kuò)展提供了有力支持。
項(xiàng)目代碼地址:
https://gitee.com/lv-yuhaogree/rui-ching_demo
相關(guān)文檔:
https://www.rt-thread.com/ruiching/document/site/
-
MODBUS
+關(guān)注
關(guān)注
28文章
2509瀏覽量
83720 -
網(wǎng)關(guān)
+關(guān)注
關(guān)注
9文章
6919瀏覽量
56534 -
在線監(jiān)控
+關(guān)注
關(guān)注
0文章
49瀏覽量
10970 -
工業(yè)物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
25文章
2541瀏覽量
67707
發(fā)布評(píng)論請(qǐng)先 登錄
基于睿擎派輕松玩轉(zhuǎn)Modbus工業(yè)通信
睿擎派文件系統(tǒng)指南:從開發(fā)到發(fā)布全流程實(shí)踐 | 技術(shù)解析
睿擎工業(yè)Modbus RTU數(shù)據(jù)MQTT透?jìng)鹘鉀Q方案
Modbus轉(zhuǎn)ethercat網(wǎng)關(guān)在農(nóng)業(yè)中的應(yīng)用主要體現(xiàn)
油品污染度在線檢測(cè)系統(tǒng)CANopen通訊解決方案
modbus串口轉(zhuǎn)Profinet 網(wǎng)關(guān)解決電力項(xiàng)目負(fù)荷生產(chǎn)的監(jiān)控應(yīng)用
Modbus網(wǎng)關(guān)接入ThingsBoard平臺(tái)
如何通過(guò)物聯(lián)網(wǎng)網(wǎng)關(guān)打造PLC在線監(jiān)控云平臺(tái)并實(shí)現(xiàn)遠(yuǎn)程維護(hù)
基于物聯(lián)網(wǎng)平臺(tái)與邊緣計(jì)算網(wǎng)關(guān),打造高效能工廠設(shè)備監(jiān)控系統(tǒng)方案
中新社:RT-Thread攜“睿擎平臺(tái)”亮相工博會(huì) | 媒體視角
川商傳媒:睿擎工業(yè)開發(fā)平臺(tái)開啟智能化新篇章 | 媒體視角
睿擎平臺(tái)極簡(jiǎn)開發(fā)重要實(shí)踐—— PinMux 配置工具 | 睿擎派試用名單公示
【直播預(yù)告】10月14日晚8點(diǎn)|睿擎平臺(tái)首場(chǎng)實(shí)戰(zhàn)直播:從快速上手到實(shí)現(xiàn)遠(yuǎn)程監(jiān)控網(wǎng)關(guān)
【直播預(yù)告】10月14日 本周二晚8點(diǎn)|睿擎平臺(tái)首場(chǎng)實(shí)戰(zhàn)直播:從快速上手到實(shí)現(xiàn)遠(yuǎn)程監(jiān)控網(wǎng)關(guān)
睿擎平臺(tái)v1.7.2版本正式發(fā)布|技術(shù)集結(jié)
睿擎平臺(tái):基于Modbus的在線監(jiān)控網(wǎng)關(guān)方案
評(píng)論