隨著物聯(lián)網(wǎng)的迅速發(fā)展,越來(lái)越多的工業(yè)自動(dòng)化設(shè)備需要上報(bào)數(shù)據(jù)到云。本文將基于EsDA開(kāi)發(fā)套件快速實(shí)現(xiàn)將Modbus RTU協(xié)議的數(shù)據(jù)轉(zhuǎn)換為MQTT格式,實(shí)現(xiàn)更靈活的數(shù)據(jù)傳輸和遠(yuǎn)程控制。
?項(xiàng)目簡(jiǎn)介
在物聯(lián)網(wǎng)領(lǐng)域中,Modbus RTU是一種串行通信協(xié)議通常用于工業(yè)自動(dòng)化領(lǐng)域,MQTT則是基于發(fā)布/訂閱模式的消息傳遞的協(xié)議,并廣泛應(yīng)用于物聯(lián)網(wǎng)設(shè)備間的通信。本文將介紹如何使用 EPC6450-AWI開(kāi)發(fā)板 ,以及圖形化設(shè)計(jì)工具AWFlow Designer將Modbus RTU協(xié)議轉(zhuǎn)換為MQTT協(xié)議,實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)傳輸與遠(yuǎn)程控制。
?項(xiàng)目概述
本項(xiàng)目主要將Modbus RTU數(shù)據(jù)轉(zhuǎn)換為MQTT消息,然后通過(guò)MQTT協(xié)議將Modbus采集到的數(shù)據(jù)以主題消息的形式發(fā)送到MQTT服務(wù)器(在PC本地自搭建的emqx代理服務(wù)器),最后在PC端的MQTTX客戶(hù)端上顯示(MQTTX訂閱相關(guān)主題的消息后,即可收到由MQTT服務(wù)器轉(zhuǎn)發(fā)的Modbus數(shù)據(jù)主題的消息)。具體可以分為以下幾個(gè)步驟:
- Modbus RTU數(shù)據(jù)采集:通過(guò)modbus_master_in節(jié)點(diǎn)去采集Modbus RTU從站設(shè)備的數(shù)據(jù);
- 數(shù)據(jù)轉(zhuǎn)換:將采集到的Modbus RTU從站設(shè)備的數(shù)據(jù),通過(guò)modbus_parse_in和fscript節(jié)點(diǎn)轉(zhuǎn)換為有效且能被mqtt_out節(jié)點(diǎn)接收的數(shù)據(jù);
- MQTT發(fā)布:mqtt_out節(jié)點(diǎn)可發(fā)布Modbus主題消息到MQTT云端服務(wù)器;
- MQTT訂閱:由MQTTX客戶(hù)端工具訂閱Modbus相關(guān)主題,接收并顯示發(fā)布的Modbus主題消息。
?項(xiàng)目準(zhǔn)備
客戶(hù)可閱讀以下相關(guān)文章,對(duì)Modbus協(xié)議和MQTT協(xié)議在EsDA上的使用操作上可以有更多的了解:
- ModbusRTUMaster轉(zhuǎn)TCPServer
- ModbusTCPMaster轉(zhuǎn)ZWS云
- IO設(shè)備接入MQTT
- EsDAMPC-ZC1應(yīng)用——串口服務(wù)器(一)
1. 硬件準(zhǔn)備
- 在標(biāo)有絲印為TF Card 絲印的卡槽處,插入SD卡。
- 在標(biāo)有絲印為UTX5和URX5的模塊上,將TTL轉(zhuǎn)USB串口模塊的TX與板子絲印為RXD連接,TTL轉(zhuǎn)USB串口模塊的RX與板子絲印為T(mén)XD相連;并將串口模塊的USB端口接入電腦。
- 在標(biāo)有絲印為Type-C 的接口處,插上Type-C線(xiàn),并將Type-C的USB端口插入電腦。
- 在標(biāo)有絲印為NET0或 NET1的RJ45網(wǎng)絡(luò)插座處,插上網(wǎng)線(xiàn)水晶頭,另一端的網(wǎng)線(xiàn)水晶頭插在PC的網(wǎng)絡(luò)插座上。
2. 軟件準(zhǔn)備
2.1 網(wǎng)絡(luò)搭建因?yàn)镸QTT服務(wù)器是在PC端本地搭建的,所以與開(kāi)發(fā)板通信的網(wǎng)口網(wǎng)絡(luò)和PC的以太網(wǎng)網(wǎng)絡(luò)在同一局域網(wǎng)下即可,不需要接入互聯(lián)網(wǎng)。出廠(chǎng)固件的NET0默認(rèn)網(wǎng)口IP為:192.168.137.251,NET1默認(rèn)網(wǎng)口IP為:192.168.137.252。所以配置PC上的以太網(wǎng)的IP與開(kāi)發(fā)板的IP地址在同一局域網(wǎng)下如圖所示。
PC端的網(wǎng)口配置成功后,執(zhí)行電腦ping開(kāi)發(fā)板的操作。
在應(yīng)用開(kāi)發(fā)中,可以使用shell命令行,執(zhí)行開(kāi)發(fā)板ping電腦的操作。硬件連接上將絲印為DUART的調(diào)試串口上接TTL轉(zhuǎn)USB的串口設(shè)備,TTL轉(zhuǎn)USB設(shè)備另一端接PC電腦上(TX接RX,RX接TX);軟件上打開(kāi)第三方串口助手工具,在設(shè)備管理器中查看調(diào)試串口的端口信息,在串口助手工具上配置相對(duì)應(yīng)的端口號(hào)和波特率(115200)等串口參數(shù),就可以在輸入窗口輸入相關(guān)的shell命令了,也可在輸出框查看打印信息。輸入ping + PC設(shè)備的IP地址(本機(jī)電腦的IP地址是192.168.137.223),在輸出框中可以看到開(kāi)發(fā)板是可以ping通電腦的(若ping不通可以將電腦端的防火墻關(guān)閉了再試試)。至此開(kāi)發(fā)板和電腦之間互ping結(jié)束,網(wǎng)絡(luò)搭建完成。
2.2 MQTT服務(wù)器搭建2.2.1 下載EMQX。進(jìn)入EMQX官網(wǎng)下載EMQX(開(kāi)源物聯(lián)網(wǎng)的MQTT消息服務(wù)器),選擇Windows系統(tǒng)下的服務(wù)器版壓縮包,點(diǎn)擊下載。2.2.2?對(duì)下載的壓縮包解壓后,cmd到bin目錄下執(zhí)行 emqx start 指令啟動(dòng)MQTT服務(wù)器。2.2.3?在瀏覽器上輸入 http://localhost:18083網(wǎng)址登錄MQTT服務(wù)器的網(wǎng)站,可以在此查看和配置MQTT服務(wù)器相關(guān)的參數(shù),初始用戶(hù)名是admin,初始密碼是public。
2.3 MQTTX客戶(hù)端使用
用戶(hù)可以在【EsDA應(yīng)用】IO設(shè)備接入MQTT 文章中的3.1.1 下載MQTTX章節(jié)查看相關(guān)內(nèi)容,在此不再贅述。
2.4 ModbusSlave安裝并使用2.4.1 下載并安裝Modbus Slave(Modbus從機(jī)模擬工具,軟件可以免費(fèi)試用30天)。
https://www.modbustools.com/modbus_slave.html
2.4.2配置ModbusSlave工具
打開(kāi)剛才安裝的Modbus Slave軟件。點(diǎn)擊Connection–>Connection Setup,根據(jù)用戶(hù)實(shí)際使用情況配置Modbus串行通信的設(shè)備參數(shù),隨后點(diǎn)擊OK即可保存設(shè)置。
點(diǎn)擊Setup->Slave Definition,根據(jù)用戶(hù)實(shí)際使用情況配置Modbus通信協(xié)議的從設(shè)備參數(shù),點(diǎn)擊OK保存。配置Modbus從設(shè)備對(duì)應(yīng)寄存器的值如下圖。
?項(xiàng)目實(shí)施本項(xiàng)目主要分為以下四個(gè)部分:
- Modbus RTU Master采集Modbus從站設(shè)備寄存器的值;
- 將Modbus數(shù)據(jù)轉(zhuǎn)換為MQTT協(xié)議消息內(nèi)容的主體;
- 開(kāi)發(fā)板上搭建的MQTT客戶(hù)端發(fā)送Modbus主題消息到MQTT服務(wù)器;
- MQTT服務(wù)器將消息轉(zhuǎn)發(fā)給訂閱Modbus主題的MQTT客戶(hù)端。
1. 流圖繪制
添加modbus_master_in,modbus_parse_in,fscript和mqtt_out節(jié)點(diǎn)到畫(huà)布中并連線(xiàn)如下圖。
2. 節(jié)點(diǎn)配置
雙擊modbus_master_in節(jié)點(diǎn),配置需要讀取的Modbus從機(jī)ID和寄存器的參數(shù),該節(jié)點(diǎn)的相關(guān)屬性需要與前面配置的Modbus Slave模擬從機(jī)工具的參數(shù)一致。點(diǎn)擊完成即可保存配置。
雙擊modbus_master_in節(jié)點(diǎn)的主機(jī)參數(shù)配置屬性旁邊的鉛筆圖標(biāo)配置Modbus主機(jī)的參數(shù)配置,根據(jù)用戶(hù)實(shí)際需要選擇相關(guān)參數(shù)。本項(xiàng)目主要是使用rtu傳輸數(shù)據(jù),EPC6450-AWI開(kāi)發(fā)板用絲印為UTX/RX5的串口設(shè)備與從站進(jìn)行Modbus通信。點(diǎn)擊更新即可保存配置。雙擊modbus_parse_in節(jié)點(diǎn),根據(jù)用戶(hù)實(shí)際需要選擇進(jìn)行數(shù)據(jù)轉(zhuǎn)換的方式,該節(jié)點(diǎn)接收modbus輸入形節(jié)點(diǎn)的原始數(shù)據(jù),支持將不同數(shù)量的寄存器地址的值按序向其消費(fèi)者節(jié)點(diǎn)進(jìn)行輸出。點(diǎn)擊完成即可保存配置。
雙擊fscript節(jié)點(diǎn),將讀到的Modbus從站寄存器的值轉(zhuǎn)換為mqtt_out節(jié)點(diǎn)可以接收的數(shù)據(jù)類(lèi)型的值。點(diǎn)擊完成即可保存配置。
var a = "modbus data is "
for(var i=0; i1) { a = join(",",a,array_get(msg.payload, i))}
wb = wbuffer_create()wbuffer_write_string(wb,a)output.payload = wbuffer_get_data(wb)output.payloadLength = len(a)
雙擊mqtt_out節(jié)點(diǎn),填寫(xiě)需要發(fā)布的主題名。點(diǎn)擊完成即可保存配置。雙擊mqtt_out節(jié)點(diǎn)的配置屬性旁邊的鉛筆圖標(biāo),相關(guān)參數(shù)根據(jù)用戶(hù)實(shí)際使用情況填寫(xiě),需注意的是主機(jī)地址填寫(xiě)與開(kāi)發(fā)板網(wǎng)口進(jìn)行MQTT通信的以太網(wǎng)IP地址,若使用emqx服務(wù)器則端口號(hào)通用為1883。點(diǎn)擊更新按鈕即可保存配置。
3. 下載驗(yàn)證
下載AWFlow流圖到核心板中。
用戶(hù)在MQTTX上位機(jī)上創(chuàng)建一個(gè)隨機(jī)的MQTT客戶(hù)端如下所示,點(diǎn)擊連接按鈕。
打開(kāi)EMQX服務(wù)器網(wǎng)址,可以看到所有客戶(hù)端的連接情況。由下圖可知EPC6450-AWI開(kāi)發(fā)板上的MQTT客戶(hù)端和MQTTX上位機(jī)創(chuàng)建的MQTT客戶(hù)端都已連接到EMQX服務(wù)器上了。在MQTTX上創(chuàng)建的客戶(hù)端上訂閱開(kāi)發(fā)板上發(fā)布的Modbus主題名,就可以收到來(lái)自MQTT服務(wù)器轉(zhuǎn)發(fā)的Modbus主題消息如下圖所示。至此,Modbus Master RTU轉(zhuǎn)MQTT協(xié)議的項(xiàng)目就已實(shí)現(xiàn)。
-
MODBUS
+關(guān)注
關(guān)注
28文章
1810瀏覽量
77070 -
ESDA
+關(guān)注
關(guān)注
0文章
28瀏覽量
7514 -
RTU
+關(guān)注
關(guān)注
0文章
414瀏覽量
28702 -
MQTT
+關(guān)注
關(guān)注
5文章
651瀏覽量
22541
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論