chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

睿擎工業(yè)Modbus RTU數(shù)據(jù)MQTT透?jìng)鹘鉀Q方案

RT-Thread官方賬號(hào) ? 2026-01-07 18:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:張丁丁

功能綜述


該項(xiàng)目基于睿擎平臺(tái),開發(fā)了一款高性能工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)網(wǎng)關(guān),實(shí)現(xiàn)Modbus RTU協(xié)議與MQTT協(xié)議的雙向高效轉(zhuǎn)換。該方案為傳統(tǒng)工業(yè)設(shè)備在不改變?cè)泄δ芎陀布Y(jié)構(gòu)的前提下,快速接入物聯(lián)網(wǎng)提供了可靠且經(jīng)濟(jì)的技術(shù)路徑。


核心功能


1、Modbus RTU數(shù)據(jù)采集與上云:

睿擎派作為Modbus RTU主站,定時(shí)讀取從站寄存器數(shù)據(jù)

采集的數(shù)據(jù)通過消息隊(duì)列機(jī)制傳遞至MQTT模塊,實(shí)時(shí)發(fā)送至云端MQTT Broker

2、云端命令接收與設(shè)備控制:

睿擎派作為MQTT客戶端,接收云端發(fā)布的控制命令

解析命令后轉(zhuǎn)發(fā)至Modbus RTU模塊,執(zhí)行遠(yuǎn)程寄存器讀寫操作

3、技術(shù)優(yōu)勢(shì):

采用生產(chǎn)者-消費(fèi)者模型,基于RT-Thread消息隊(duì)列實(shí)現(xiàn)進(jìn)程間通信(IPC)

任務(wù)在無數(shù)據(jù)處理時(shí)進(jìn)入阻塞狀態(tài),有效節(jié)省CPU資源,提升系統(tǒng)實(shí)時(shí)性

typedefstruct


{


uint16_taddress;


uint16_tvalue;


}ModbusData;

軟件框架設(shè)計(jì)


項(xiàng)目架構(gòu)與模塊劃分

本項(xiàng)目采用分層模塊化設(shè)計(jì),確保代碼的可維護(hù)性和功能分離,核心模塊包括:

1、主入口模塊

a.程序執(zhí)行入口

b.負(fù)責(zé)系統(tǒng)初始化流程,調(diào)用應(yīng)用管理模塊

c.具體實(shí)現(xiàn)參見 main.c

2、應(yīng)用管理模塊

a.集中管理應(yīng)用任務(wù)

b.初始化全局資源,如RT-Thread消息隊(duì)列等IPC機(jī)制

c.具體實(shí)現(xiàn)參見 app_management.c

3、網(wǎng)絡(luò)初始化模塊

a.配置設(shè)備網(wǎng)絡(luò)連接

b.實(shí)現(xiàn)優(yōu)先網(wǎng)絡(luò)連接策略,為MQTT通信提供底層支撐

c.具體實(shí)現(xiàn)參見 app_netset.c

4、Modbus RTU協(xié)議處理模塊

a.實(shí)現(xiàn)Modbus RTU協(xié)議功能

b.負(fù)責(zé)外設(shè)初始化、主站數(shù)據(jù)讀取及遠(yuǎn)程控制

c.具體實(shí)現(xiàn)參見 applicationModbusRtu.c

5、MQTT通信模塊

a.實(shí)現(xiàn)MQTT客戶端功能

b.負(fù)責(zé)Broker連接、命令接收和數(shù)據(jù)發(fā)布

c.具體實(shí)現(xiàn)參見 applicationMqtt.c


測(cè)試環(huán)境與云端配置


本項(xiàng)目使用阿里云服務(wù)器部署EMQX MQTT Broker,作為可靠的云端測(cè)試環(huán)境,確保Modbus RTU網(wǎng)關(guān)與云平臺(tái)之間的穩(wěn)定雙向通信。

軟件模塊詳細(xì)說明


主入口模塊

功能說明:主入口模塊是程序的核心啟動(dòng)點(diǎn),負(fù)責(zé)初始化系統(tǒng)資源并啟動(dòng)應(yīng)用管理模塊。它作為整個(gè)系統(tǒng)的啟動(dòng)器,確保所有功能模塊按正確順序初始化和運(yùn)行,具體實(shí)現(xiàn)參見 main.c。

核心代碼片段:

#include<rtthread.h>
#include"app_management.h"

intmain(void)
{
app_rt_thread_init();
rt_kprintf("Modbus-MQTT Gateway initialized successfully\n");
return0;
}



應(yīng)用管理模塊

功能說明應(yīng)用管理模塊是系統(tǒng)的中樞神經(jīng),負(fù)責(zé)全局資源管理和任務(wù)調(diào)度。它實(shí)現(xiàn)了:

1.消息隊(duì)列的創(chuàng)建與維護(hù),用于模塊間通信

2.網(wǎng)絡(luò)連接的初始化

3.關(guān)鍵任務(wù)線程的創(chuàng)建與啟動(dòng)(Modbus RTU和MQTT線程)

具體實(shí)現(xiàn)參見 app_management.c。

核心代碼片段:

// 創(chuàng)建消息隊(duì)列,實(shí)現(xiàn)Modbus與MQTT模塊間通信


staticvoidmessage_queue_init(void)
{
g_xQueueModbusRtuReadDate=rt_mq_create("modbus_rtu_mq",sizeof(ModbusData),10,RT_IPC_FLAG_FIFO);
g_xQueueModbusRtuWriteDate=rt_mq_create("modbus_rtu_mq_w",sizeof(ModbusData),10,RT_IPC_FLAG_FIFO);
}

// 系統(tǒng)初始化與任務(wù)啟動(dòng)
voidapp_rt_thread_init(void)
{
message_queue_init();
netset_init();// 網(wǎng)絡(luò)初始化

// 啟動(dòng)Modbus RTU主站任務(wù)
tid=rt_thread_create("modbus_rtu_thread",app_modbusRTU_master_thread,RT_NULL,1024*4,10,10);
rt_thread_startup(tid);

// 啟動(dòng)MQTT通信任務(wù)
tid=rt_thread_create("mqtt_thread",app_mqtt_thread,RT_NULL,1024*4,10,10);
rt_thread_startup(tid);
}


Modbus RTU協(xié)議處理模塊

功能說明:該模塊實(shí)現(xiàn)Modbus RTU協(xié)議的主站功能,是網(wǎng)關(guān)與工業(yè)設(shè)備通信的核心。主要負(fù)責(zé):

1.配置和初始化Modbus RTU通信參數(shù)

2.定時(shí)讀取從站設(shè)備寄存器數(shù)據(jù)

3.接收并執(zhí)行來自MQTT模塊的遠(yuǎn)程控制命令

具體實(shí)現(xiàn)參見 applicationModbusRtu.c。


核心代碼片段:

// 初始化Modbus RTU主站


staticintmodbus_rtu_master_init(void)
{
ctx=modbus_new_rtu("/dev/uart5",9600,'N',8,1);
modbus_set_slave(ctx,1);
modbus_set_response_timeout(ctx,1,0);
modbus_rtu_set_serial_mode(ctx,MODBUS_RTU_RS485);
modbus_rtu_set_rts(ctx,RS485_RTS_PIN,MODBUS_RTU_RTS_UP);
returnmodbus_connect(ctx);
}

// Modbus RTU主站線程
voidapp_modbusRTU_master_thread(void*arg)
{
uint16_treceived_regs[10];
modbus_rtu_master_init();

while(1)
{
// 讀取寄存器數(shù)據(jù)并發(fā)送至MQTT模塊
rc=modbus_read_registers(ctx,0,10,received_regs);
if(rc>0)
{
for(inti=0;i<rc;i++)
{
ModbusData data={.address=i,.value=received_regs[i]};
rt_mq_send(g_xQueueModbusRtuReadDate,&data,sizeof(ModbusData));
}
}

// 處理遠(yuǎn)程寫入命令
ModbusData write_data;
rt_mq_recv(g_xQueueModbusRtuWriteDate,&write_data,sizeof(ModbusData),RT_WAITING_FOREVER);
modbus_write_register(ctx,write_data.address,write_data.value);

rt_thread_delay(1000);
}
}


網(wǎng)絡(luò)初始化模塊


功能說明:該模塊負(fù)責(zé)設(shè)備網(wǎng)絡(luò)連接的配置與初始化,為MQTT通信提供底層網(wǎng)絡(luò)支持。主要功能包括MAC地址配置和DHCP客戶端啟用,確保設(shè)備能自動(dòng)獲取IP地址并建立網(wǎng)絡(luò)連接,具體實(shí)現(xiàn)參見 app_netset.c。


核心代碼片段:

// 配置MAC地址


staticintmac_config(void)
{
uint8_tmac[6]={0x00,0x11,0x22,0x33,0x44,0x55};
returnif_set_mac(DEV_NAME,mac);
}

// 啟用DHCP客戶端




staticintdhcp_enable(void)
{
returnif_dhcp(DEV_NAME,1);
}

// 網(wǎng)絡(luò)初始化入口
voidnetset_init(void)
{
mac_config();
dhcp_enable();
}



MQTT通信模塊


功能說明:

該模塊實(shí)現(xiàn)MQTT客戶端功能,是網(wǎng)關(guān)與云端通信的橋梁。主要功能包括:

1.MQTT Broker連接與認(rèn)證

2.訂閱云端控制命令

3.發(fā)布Modbus采集數(shù)據(jù)

4.JSON與Modbus數(shù)據(jù)格式轉(zhuǎn)換

具體實(shí)現(xiàn)參見 applicationMqtt.c。

核心代碼片段:

// MQTT訂閱回調(diào)函數(shù) - 處理云端控制命令


staticvoidmqtt_sub_callback(MQTTClient*c,MessageData*msg_data)
{
ModbusData write_data;

// 解析JSON命令
constchar*json_string=(constchar*)msg_data->message->payload;
if(json_to_ModbusData(json_string,&write_data)==0)
{
// 發(fā)送至Modbus寫入隊(duì)列
rt_mq_send(g_xQueueModbusRtuWriteDate,&write_data,sizeof(ModbusData));
}
}

// 數(shù)據(jù)格式轉(zhuǎn)換 - JSON到ModbusData
intjson_to_ModbusData(constchar*json_string,ModbusData*out_data)
{
cJSON*root=cJSON_Parse(json_string);
if(root==NULL)return-1;

out_data->address=(uint16_t)cJSON_GetObjectItemCaseSensitive(root,"address")->valuedouble;
out_data->value=(uint16_t)cJSON_GetObjectItemCaseSensitive(root,"value")->valuedouble;

cJSON_Delete(root);
return0;
}

// MQTT線程 - 負(fù)責(zé)數(shù)據(jù)發(fā)布
voidapp_mqtt_thread(void*arg)
{
mq_start();// 啟動(dòng)MQTT客戶端

while(1)
{
ModbusData data;
// 接收Modbus數(shù)據(jù)并發(fā)布到云端
rt_mq_recv(g_xQueueModbusRtuReadDate,&data,sizeof(ModbusData),RT_WAITING_FOREVER);
ModbusData_publish(&data);

rt_thread_mdelay(10);
}
}

演示效果

云端MQTT服務(wù)器連接狀態(tài)

af209cdc-ebb5-11f0-8ce9-92fbcf53809c.png

實(shí)際應(yīng)用演示

視頻演示:

https://www.bilibili.com/video/BV1uWSnBwEqp/?vd_source=9ed2178ae937fd4121a4f70f89f06b65

源碼倉(cāng)庫(kù)

GitHub倉(cāng)庫(kù):https://github.com/yxy314/ruiqingpai_RTU_MQTT

總結(jié)

本項(xiàng)目實(shí)現(xiàn)了一個(gè)功能完整、性能穩(wěn)定的Modbus RTU與MQTT協(xié)議轉(zhuǎn)換網(wǎng)關(guān),具有以下特點(diǎn):

1、高可靠性:采用成熟的開源庫(kù)和RT-Thread實(shí)時(shí)操作系統(tǒng),確保系統(tǒng)穩(wěn)定性

2、低資源占用:優(yōu)化的任務(wù)調(diào)度和內(nèi)存管理,適合資源受限的嵌入式平臺(tái)

3、易于擴(kuò)展:模塊化設(shè)計(jì)便于功能擴(kuò)展和定制

4、安全通信:支持MQTT認(rèn)證機(jī)制,確保數(shù)據(jù)傳輸安全


該網(wǎng)關(guān)為工業(yè)設(shè)備的物聯(lián)網(wǎng)化改造提供了高效、經(jīng)濟(jì)的解決方案,可廣泛應(yīng)用于工業(yè)自動(dòng)化、智能工廠、遠(yuǎn)程監(jiān)控等領(lǐng)域。


這篇文章展示了睿擎平臺(tái)將傳統(tǒng)工業(yè)設(shè)備無縫接入物聯(lián)網(wǎng)的完整能力。如果您正在尋找一個(gè)穩(wěn)定、高效且開箱即用的硬件平臺(tái)來部署此類解決方案,或用于您的其他工業(yè)控制項(xiàng)目,那么實(shí)現(xiàn)本文所有功能的睿擎派RC3506開發(fā)板將是您的理想選擇。


為什么選擇睿擎派進(jìn)行開發(fā)?

軟硬一體,省心省力:文章中的所有軟件皆可在此開發(fā)板上流暢運(yùn)行,無需擔(dān)憂硬件適配問題。

全棧自主,開放靈活:基于RT-Thread的睿擎平臺(tái)提供從底層驅(qū)動(dòng)到應(yīng)用框架的全棧支持,并允許您進(jìn)行深度定制。

工業(yè)級(jí)可靠性:專為工業(yè)環(huán)境設(shè)計(jì),確保您的關(guān)鍵應(yīng)用穩(wěn)定運(yùn)行。


即刻入手,開始您的項(xiàng)目

如果您對(duì)文中解決方案感興趣,或希望基于睿擎派實(shí)現(xiàn)自己的工業(yè)物聯(lián)網(wǎng)創(chuàng)意,歡迎訪問我們的官方淘寶店鋪“睿賽德科技”,選購(gòu)睿擎派RC3506開發(fā)板及配套配件。

睿擎派工業(yè)開發(fā)板購(gòu)買鏈接

https://item.taobao.com/item.htm?ft=t&id=946489007785


立即掃碼購(gòu)買

af38080e-ebb5-11f0-8ce9-92fbcf53809c.png

平臺(tái)持續(xù)提供完善的技術(shù)文檔、示例代碼與社區(qū)支持,助力您的項(xiàng)目快速落地!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    2454

    瀏覽量

    83076
  • 工業(yè)
    +關(guān)注

    關(guān)注

    3

    文章

    2345

    瀏覽量

    49163
  • RTU
    RTU
    +關(guān)注

    關(guān)注

    0

    文章

    449

    瀏覽量

    30570
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    732

    瀏覽量

    25036
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于派輕松玩轉(zhuǎn)Modbus工業(yè)通信

    。今天,我們就帶來一篇實(shí)戰(zhàn)教程,教大家如何基于派/工業(yè)平臺(tái),分別作為ModbusRTU主機(jī)和ModbusTCP主機(jī),讀取
    的頭像 發(fā)表于 07-23 17:05 ?3775次閱讀
    基于<b class='flag-5'>睿</b><b class='flag-5'>擎</b>派輕松玩轉(zhuǎn)<b class='flag-5'>Modbus</b><b class='flag-5'>工業(yè)</b>通信

    一觸即達(dá):CCLink IE遇見Modbus RTU,解鎖智能電表“數(shù)據(jù)超車道”

    障礙。電表數(shù)據(jù)無法實(shí)時(shí)回至SCADA系統(tǒng),導(dǎo)致能耗分析模塊無法正常運(yùn)行。經(jīng)排查,問題根源在于CCLINKIE的高速總線協(xié)議與Modbus RTU的異步串行通信機(jī)制存在
    發(fā)表于 06-23 13:59

    無線串口終端

    無線串口終端——關(guān)鍵詞:無線終端,無線串口,透明數(shù)據(jù)傳輸模塊,無線485產(chǎn)品簡(jiǎn)介:WPLC-C系列無線串口終端,可廣泛應(yīng)用于無線傳輸
    發(fā)表于 04-27 15:33

    Modbus TCP轉(zhuǎn)Modbus RTU的實(shí)現(xiàn)

    有:地址幀、功能碼、數(shù)據(jù)、CRC校驗(yàn)。而Modbus TCP數(shù)據(jù)包包含有:MBAP報(bào)文頭、功能碼、數(shù)據(jù)。必須實(shí)現(xiàn)這兩種格式的轉(zhuǎn)化。3.Modbus
    發(fā)表于 08-10 10:04

    干貨篇︱物聯(lián)網(wǎng)平臺(tái)——工業(yè)制造監(jiān)測(cè)解決方案

    和控制設(shè)備的行為;有效解決工業(yè)數(shù)據(jù)調(diào)度的一致性與完整性問題通信層工業(yè)物聯(lián)網(wǎng)需要從云端到終端的整體解決方案通信層目的是實(shí)現(xiàn)本地和云端的數(shù)據(jù)同步
    發(fā)表于 02-01 15:33

    組態(tài)軟件的數(shù)據(jù)DTU通信技術(shù)工業(yè)網(wǎng)關(guān)

    串口數(shù)據(jù),另外在該軟件上還可以直接添加虛擬串口,與組態(tài)軟件直接連接。能夠看到組態(tài)王往下發(fā)的數(shù)據(jù),及其DTU返回的數(shù)據(jù)方案優(yōu)點(diǎn)★ 欣仰邦DTU支持標(biāo)準(zhǔn)的
    發(fā)表于 03-06 09:12

    物聯(lián)網(wǎng)中的數(shù)據(jù)

    摘要:在農(nóng)業(yè)工業(yè)等場(chǎng)景應(yīng)用中,存在很多場(chǎng)景是有線網(wǎng)絡(luò)無法達(dá)到的,借助物聯(lián)網(wǎng)技術(shù)使用無線數(shù)據(jù)采集與傳輸能很好的解決這一個(gè)問題,在這個(gè)數(shù)據(jù)傳輸過程中為了保證數(shù)據(jù)的可靠性和準(zhǔn)確性,通常會(huì)涉及
    發(fā)表于 09-03 14:17

    如何快速實(shí)現(xiàn)Modbus RTUModbus TCP協(xié)議轉(zhuǎn)換?

    Modbus協(xié)議是工業(yè)現(xiàn)場(chǎng)串口設(shè)備之間常用的連接方式,其中最常見的就是Modbus RTUModbus TCP兩種。許多工廠需要將現(xiàn)場(chǎng)各種
    發(fā)表于 08-18 18:36

    Modbus RTUModbus TCP的區(qū)別

    Modbus RTUModbus TCP的區(qū)別: 1.概念不同:MODBUS是一種標(biāo)準(zhǔn)的工業(yè)控制數(shù)據(jù)
    發(fā)表于 08-03 17:00 ?5.8w次閱讀

    WD140系列工業(yè)數(shù)終端概述、特性及應(yīng)用

    WD140系列工業(yè)數(shù)終端是一款工業(yè)級(jí)Modbus I/O數(shù)據(jù)采集及LORA傳輸智能終端,支持LORA無線傳輸、支持IO
    發(fā)表于 09-11 10:07 ?1303次閱讀

    MQTT 單片機(jī)移植 收發(fā)功能 STM32 串口

    MQTT 單片機(jī)移植 收發(fā)功能 STM32 串口 根據(jù)STM32+WIFI串口模塊進(jìn)行講解如何使用
    發(fā)表于 11-22 09:06 ?39次下載
    <b class='flag-5'>MQTT</b> 單片機(jī)移植 收發(fā)功能 STM32 串口 <b class='flag-5'>透</b><b class='flag-5'>傳</b>

    嗅準(zhǔn)市場(chǎng)機(jī)遇,中易騰達(dá)推出工業(yè)解決方案

    中易騰達(dá)全新推出的工業(yè)解決方案, 是針對(duì)工業(yè)級(jí)設(shè)備廠商所打造的傳輸解決方案。Mesh作為全新
    的頭像 發(fā)表于 11-07 09:51 ?1318次閱讀

    Modbus RTU數(shù)據(jù)采集物聯(lián)網(wǎng)解決方案

    了可靠且經(jīng)濟(jì)有效的解決方案。 一、 Modbus RTU概述 Modbus RTU是由施耐德公司于1979年開發(fā)的一種基于RS-232或RS
    的頭像 發(fā)表于 04-01 09:37 ?1459次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b><b class='flag-5'>數(shù)據(jù)</b>采集物聯(lián)網(wǎng)<b class='flag-5'>解決方案</b>

    Modbus RTU、Modbus TCP轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)Modbus設(shè)備與云平臺(tái)的無縫通信

    鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關(guān),簡(jiǎn)而言之,就是通過將Modbus協(xié)議(包括Modbus RTUModb
    的頭像 發(fā)表于 07-23 16:58 ?5545次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>、<b class='flag-5'>Modbus</b> TCP轉(zhuǎn)<b class='flag-5'>MQTT</b>網(wǎng)關(guān)實(shí)現(xiàn)<b class='flag-5'>Modbus</b>設(shè)備與云平臺(tái)的無縫通信

    鋇錸技術(shù)Modbus轉(zhuǎn)MQTT網(wǎng)關(guān):橋接Modbus協(xié)議與MQTT協(xié)議

    提供了一鍵對(duì)接亞馬遜云平臺(tái)的解決方案。 BL101網(wǎng)關(guān)是鋇錸技術(shù)研發(fā)的一款高性能工業(yè)物聯(lián)網(wǎng)設(shè)備,通過橋接Modbus協(xié)議與MQTT通信協(xié)議,實(shí)現(xiàn)了
    的頭像 發(fā)表于 07-30 16:28 ?1085次閱讀
    鋇錸技術(shù)<b class='flag-5'>Modbus</b>轉(zhuǎn)<b class='flag-5'>MQTT</b>網(wǎng)關(guān):橋接<b class='flag-5'>Modbus</b>協(xié)議與<b class='flag-5'>MQTT</b>協(xié)議