国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

睿擎工業Modbus RTU數據MQTT透傳解決方案

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

掃碼添加小助手

加入工程師交流群

作者:張丁丁

功能綜述


該項目基于睿擎平臺,開發了一款高性能工業物聯網數據網關,實現Modbus RTU協議與MQTT協議的雙向高效轉換。該方案為傳統工業設備在不改變原有功能和硬件結構的前提下,快速接入物聯網提供了可靠且經濟的技術路徑。


核心功能


1、Modbus RTU數據采集與上云:

睿擎派作為Modbus RTU主站,定時讀取從站寄存器數據

采集的數據通過消息隊列機制傳遞至MQTT模塊,實時發送至云端MQTT Broker

2、云端命令接收與設備控制:

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

解析命令后轉發至Modbus RTU模塊,執行遠程寄存器讀寫操作

3、技術優勢:

采用生產者-消費者模型,基于RT-Thread消息隊列實現進程間通信(IPC)

任務在無數據處理時進入阻塞狀態,有效節省CPU資源,提升系統實時性

typedefstruct


{


uint16_taddress;


uint16_tvalue;


}ModbusData;

軟件框架設計


項目架構與模塊劃分

本項目采用分層模塊化設計,確保代碼的可維護性和功能分離,核心模塊包括:

1、主入口模塊

a.程序執行入口

b.負責系統初始化流程,調用應用管理模塊

c.具體實現參見 main.c

2、應用管理模塊

a.集中管理應用任務

b.初始化全局資源,如RT-Thread消息隊列等IPC機制

c.具體實現參見 app_management.c

3、網絡初始化模塊

a.配置設備網絡連接

b.實現優先網絡連接策略,為MQTT通信提供底層支撐

c.具體實現參見 app_netset.c

4、Modbus RTU協議處理模塊

a.實現Modbus RTU協議功能

b.負責外設初始化、主站數據讀取及遠程控制

c.具體實現參見 applicationModbusRtu.c

5、MQTT通信模塊

a.實現MQTT客戶端功能

b.負責Broker連接、命令接收和數據發布

c.具體實現參見 applicationMqtt.c


測試環境與云端配置


本項目使用阿里云服務器部署EMQX MQTT Broker,作為可靠的云端測試環境,確保Modbus RTU網關與云平臺之間的穩定雙向通信。

軟件模塊詳細說明


主入口模塊

功能說明:主入口模塊是程序的核心啟動點,負責初始化系統資源并啟動應用管理模塊。它作為整個系統的啟動器,確保所有功能模塊按正確順序初始化和運行,具體實現參見 main.c。

核心代碼片段:

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

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



應用管理模塊

功能說明應用管理模塊是系統的中樞神經,負責全局資源管理和任務調度。它實現了:

1.消息隊列的創建與維護,用于模塊間通信

2.網絡連接的初始化

3.關鍵任務線程的創建與啟動(Modbus RTU和MQTT線程)

具體實現參見 app_management.c。

核心代碼片段:

// 創建消息隊列,實現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);
}

// 系統初始化與任務啟動
voidapp_rt_thread_init(void)
{
message_queue_init();
netset_init();// 網絡初始化

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

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


Modbus RTU協議處理模塊

功能說明:該模塊實現Modbus RTU協議的主站功能,是網關與工業設備通信的核心。主要負責:

1.配置和初始化Modbus RTU通信參數

2.定時讀取從站設備寄存器數據

3.接收并執行來自MQTT模塊的遠程控制命令

具體實現參見 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)
{
// 讀取寄存器數據并發送至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));
}
}

// 處理遠程寫入命令
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);
}
}


網絡初始化模塊


功能說明:該模塊負責設備網絡連接的配置與初始化,為MQTT通信提供底層網絡支持。主要功能包括MAC地址配置和DHCP客戶端啟用,確保設備能自動獲取IP地址并建立網絡連接,具體實現參見 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);
}

// 網絡初始化入口
voidnetset_init(void)
{
mac_config();
dhcp_enable();
}



MQTT通信模塊


功能說明:

該模塊實現MQTT客戶端功能,是網關與云端通信的橋梁。主要功能包括:

1.MQTT Broker連接與認證

2.訂閱云端控制命令

3.發布Modbus采集數據

4.JSON與Modbus數據格式轉換

具體實現參見 applicationMqtt.c。

核心代碼片段:

// MQTT訂閱回調函數 - 處理云端控制命令


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)
{
// 發送至Modbus寫入隊列
rt_mq_send(g_xQueueModbusRtuWriteDate,&write_data,sizeof(ModbusData));
}
}

// 數據格式轉換 - 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線程 - 負責數據發布
voidapp_mqtt_thread(void*arg)
{
mq_start();// 啟動MQTT客戶端

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

rt_thread_mdelay(10);
}
}

演示效果

云端MQTT服務器連接狀態

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

實際應用演示

視頻演示:

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

源碼倉庫

GitHub倉庫:https://github.com/yxy314/ruiqingpai_RTU_MQTT

總結

本項目實現了一個功能完整、性能穩定的Modbus RTU與MQTT協議轉換網關,具有以下特點:

1、高可靠性:采用成熟的開源庫和RT-Thread實時操作系統,確保系統穩定性

2、低資源占用:優化的任務調度和內存管理,適合資源受限的嵌入式平臺

3、易于擴展:模塊化設計便于功能擴展和定制

4、安全通信:支持MQTT認證機制,確保數據傳輸安全


該網關為工業設備的物聯網化改造提供了高效、經濟的解決方案,可廣泛應用于工業自動化、智能工廠、遠程監控等領域。


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


為什么選擇睿擎派進行開發?

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

全棧自主,開放靈活:基于RT-Thread的睿擎平臺提供從底層驅動到應用框架的全棧支持,并允許您進行深度定制。

工業級可靠性:專為工業環境設計,確保您的關鍵應用穩定運行。


即刻入手,開始您的項目

如果您對文中解決方案感興趣,或希望基于睿擎派實現自己的工業物聯網創意,歡迎訪問我們的官方淘寶店鋪“睿賽德科技”,選購睿擎派RC3506開發板及配套配件。

睿擎派工業開發板購買鏈接

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


立即掃碼購買

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

平臺持續提供完善的技術文檔、示例代碼與社區支持,助力您的項目快速落地!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • MODBUS
    +關注

    關注

    28

    文章

    2457

    瀏覽量

    83184
  • 工業
    +關注

    關注

    3

    文章

    2360

    瀏覽量

    49192
  • RTU
    RTU
    +關注

    關注

    0

    文章

    450

    瀏覽量

    30590
  • MQTT
    +關注

    關注

    5

    文章

    733

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于派輕松玩轉Modbus工業通信

    。今天,我們就帶來一篇實戰教程,教大家如何基于派/工業平臺,分別作為ModbusRTU主機和ModbusTCP主機,讀取
    的頭像 發表于 07-23 17:05 ?3802次閱讀
    基于<b class='flag-5'>睿</b><b class='flag-5'>擎</b>派輕松玩轉<b class='flag-5'>Modbus</b><b class='flag-5'>工業</b>通信

    一觸即達:CCLink IE遇見Modbus RTU,解鎖智能電表“數據超車道”

    障礙。電表數據無法實時回至SCADA系統,導致能耗分析模塊無法正常運行。經排查,問題根源在于CCLINKIE的高速總線協議與Modbus RTU的異步串行通信機制存在
    發表于 06-23 13:59

    無線串口終端

    無線串口終端——關鍵詞:無線終端,無線串口,透明數據傳輸模塊,無線485產品簡介:WPLC-C系列無線串口終端,可廣泛應用于無線傳輸
    發表于 04-27 15:33

    Modbus TCP轉Modbus RTU的實現

    有:地址幀、功能碼、數據、CRC校驗。而Modbus TCP數據包包含有:MBAP報文頭、功能碼、數據。必須實現這兩種格式的轉化。3.Modbus
    發表于 08-10 10:04

    干貨篇︱物聯網平臺——工業制造監測解決方案

    和控制設備的行為;有效解決工業數據調度的一致性與完整性問題通信層工業物聯網需要從云端到終端的整體解決方案通信層目的是實現本地和云端的數據同步
    發表于 02-01 15:33

    組態軟件的數據DTU通信技術工業網關

    串口數據,另外在該軟件上還可以直接添加虛擬串口,與組態軟件直接連接。能夠看到組態王往下發的數據,及其DTU返回的數據。方案優點★ 欣仰邦DTU支持標準的
    發表于 03-06 09:12

    物聯網中的數據

    摘要:在農業工業等場景應用中,存在很多場景是有線網絡無法達到的,借助物聯網技術使用無線數據采集與傳輸能很好的解決這一個問題,在這個數據傳輸過程中為了保證數據的可靠性和準確性,通常會涉及
    發表于 09-03 14:17

    如何快速實現Modbus RTUModbus TCP協議轉換?

    Modbus協議是工業現場串口設備之間常用的連接方式,其中最常見的就是Modbus RTUModbus TCP兩種。許多工廠需要將現場各種
    發表于 08-18 18:36

    Modbus RTUModbus TCP的區別

    Modbus RTUModbus TCP的區別: 1.概念不同:MODBUS是一種標準的工業控制數據
    發表于 08-03 17:00 ?5.8w次閱讀

    WD140系列工業終端概述、特性及應用

    WD140系列工業終端是一款工業Modbus I/O數據采集及LORA傳輸智能終端,支持LORA無線傳輸、支持IO
    發表于 09-11 10:07 ?1319次閱讀

    MQTT 單片機移植 收發功能 STM32 串口

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

    嗅準市場機遇,中易騰達推出工業解決方案

    中易騰達全新推出的工業解決方案, 是針對工業級設備廠商所打造的傳輸解決方案。Mesh作為全新
    的頭像 發表于 11-07 09:51 ?1334次閱讀

    Modbus RTU數據采集物聯網解決方案

    了可靠且經濟有效的解決方案。 一、 Modbus RTU概述 Modbus RTU是由施耐德公司于1979年開發的一種基于RS-232或RS
    的頭像 發表于 04-01 09:37 ?1477次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b><b class='flag-5'>數據</b>采集物聯網<b class='flag-5'>解決方案</b>

    Modbus RTU、Modbus TCP轉MQTT網關實現Modbus設備與云平臺的無縫通信

    鋇錸ModbusMQTT網關,簡而言之,就是通過將Modbus協議(包括Modbus RTUModb
    的頭像 發表于 07-23 16:58 ?5576次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>、<b class='flag-5'>Modbus</b> TCP轉<b class='flag-5'>MQTT</b>網關實現<b class='flag-5'>Modbus</b>設備與云平臺的無縫通信

    鋇錸技術ModbusMQTT網關:橋接Modbus協議與MQTT協議

    提供了一鍵對接亞馬遜云平臺的解決方案。 BL101網關是鋇錸技術研發的一款高性能工業物聯網設備,通過橋接Modbus協議與MQTT通信協議,實現了
    的頭像 發表于 07-30 16:28 ?1097次閱讀
    鋇錸技術<b class='flag-5'>Modbus</b>轉<b class='flag-5'>MQTT</b>網關:橋接<b class='flag-5'>Modbus</b>協議與<b class='flag-5'>MQTT</b>協議