吳俊輝,吳桂初,?,陳 沖,葛世偉,許小鋒
(1.溫州大學(xué)浙江省低壓電器技術(shù)創(chuàng)新服務(wù)平臺,浙江溫州 325027;2.浙江天正電氣股份有限公司,浙江溫州 325604;3.溫州聚創(chuàng)電氣科技有限公司,浙江溫州 325035)
在物聯(lián)網(wǎng)技術(shù)和云平臺通信技術(shù)廣泛應(yīng)用的今天,采用云端通信對設(shè)備進行遠程監(jiān)控的需求不斷增加.各公司生產(chǎn)的設(shè)備之間的通信技術(shù)不同,以及物聯(lián)網(wǎng)公司之間的相互競爭,導(dǎo)致設(shè)備數(shù)據(jù)傳輸?shù)膮f(xié)議多種多樣、管理平臺混亂,這是當前業(yè)界存在的主要問題[1-4].
許多電器設(shè)備可通過現(xiàn)場總線的方式將自身的運行數(shù)據(jù)傳輸?shù)缴衔粰C,如多功能電表、智能斷路器等,但不同類型的設(shè)備采用的通信協(xié)議各不相同,因此需要設(shè)計一款能夠與不同設(shè)備進行協(xié)議轉(zhuǎn)換的網(wǎng)關(guān)設(shè)備,并且該網(wǎng)關(guān)也能夠?qū)f(xié)議轉(zhuǎn)換后的數(shù)據(jù)傳輸?shù)竭h程服務(wù)器.文獻[5]介紹了一種嵌入式網(wǎng)關(guān),該網(wǎng)關(guān)可以將無線協(xié)調(diào)器采集到的數(shù)據(jù)通過GPRS傳輸?shù)交ヂ?lián)網(wǎng),也可通過GPRS實現(xiàn)遠程控制;文獻[6]介紹了一種基于W5500芯片的以太網(wǎng)網(wǎng)關(guān)的設(shè)計方案,該方案能夠靈活地實現(xiàn)以太網(wǎng)通信,特別適用于RAM較小的低級處理器;文獻[7]設(shè)計了一種低成本網(wǎng)關(guān),該網(wǎng)關(guān)可以實現(xiàn)以太網(wǎng)和RS485采集器的高速連接.但以上設(shè)計針對性強,只能為單一產(chǎn)品使用,應(yīng)用范圍有限.為了能夠與多種類型的電器設(shè)備進行通信,并將所有設(shè)備信息匯總后傳輸?shù)皆贫朔?wù)器,本文設(shè)計了一款以STM32F103為主控制芯片,搭建三路RS485串行電氣接口,集成以太網(wǎng)、WIFI及GPRS等多種網(wǎng)絡(luò)通信方式的網(wǎng)關(guān)設(shè)備.在與電器設(shè)備通信時,本網(wǎng)關(guān)作為主機通過RS485接口與電器從機設(shè)備進行通信,最后通過協(xié)議轉(zhuǎn)換,將設(shè)備運行的數(shù)據(jù)通過MQTT協(xié)議傳輸?shù)桨⒗镌莆锫?lián)網(wǎng)平臺.
在本設(shè)計中,所涉及的協(xié)議有三種,一種是網(wǎng)關(guān)與云端的通信協(xié)議,采用MQTT協(xié)議與阿里云物聯(lián)網(wǎng)平臺通信;第二種是網(wǎng)關(guān)與從機設(shè)備的通信協(xié)議,主要是Modbus協(xié)議與DLT645協(xié)議,其網(wǎng)關(guān)作主機,與網(wǎng)關(guān)連接的電器設(shè)備作為從機,進行協(xié)議間的互相轉(zhuǎn)換.
MQTT協(xié)議是一種基于TCP/IP網(wǎng)絡(luò)連接的消息傳輸協(xié)議,使用發(fā)布/訂閱的消息模式,它開放、簡單、輕量、易于實現(xiàn)的特點使它適用于各種受限的環(huán)境,如低寬帶、網(wǎng)絡(luò)不可靠、嵌入式處理器和內(nèi)存不足等情況[8-10].MQTT協(xié)議的報文結(jié)構(gòu)如圖1所示.
MQTT協(xié)議的消息類型(Message Tpye)共有十六種,如表1所示.
圖1 MQTT協(xié)議報文結(jié)構(gòu)Fig 1 MQTT Protocol Message Structure
表1 消息類型Table 1 Message Types
QoS(Quality of Service)消息交付質(zhì)量級別是MQTT協(xié)議中一個重要的功能,它可以決定消息的交付質(zhì)量.QoS總共有三種服務(wù)級別,0表示至多只發(fā)送一次,不保證消息可靠性,消息可能會丟失;1表示至少發(fā)送一次,客戶端或服務(wù)器確認收到消息,但消息可能會重復(fù);2表示精確發(fā)送一次,確??蛻舳嘶蚍?wù)器僅一次收到消息[10].就消息質(zhì)量而言,客戶端與服務(wù)器之間的交互如圖2所示.在本網(wǎng)關(guān)中通過MQTT協(xié)議將電器設(shè)備運行數(shù)據(jù)上傳到阿里云物聯(lián)網(wǎng)平臺,并且可以接收解析服務(wù)器端命令,實現(xiàn)遠程監(jiān)控的目的.
圖2 消息質(zhì)量流程圖Fig 2 Message Quality Flow Chart
Modbus是應(yīng)用層的報文傳輸協(xié)議,它提供不同類型設(shè)備之間主機/從機的通信.Modbus是一個請求/應(yīng)答協(xié)議,提供功能碼規(guī)定的服務(wù),Modbus功能碼是請求/應(yīng)答協(xié)議數(shù)據(jù)單元(PDU-Protocol Data Unit)的元素,是Modbus協(xié)議定義的一個與基礎(chǔ)通信網(wǎng)絡(luò)無關(guān)的簡單協(xié)議數(shù)據(jù)單元(PDU)[11].幀格式如圖3所示.
本設(shè)計中傳輸模式采用RTU模式,地址域與從機設(shè)備相對應(yīng),差錯校驗采用16位CRC校驗.網(wǎng)關(guān)與兩路RS485接口采用Modbus串行鏈路協(xié)議,網(wǎng)關(guān)作為主機發(fā)送請求,與之相連接的設(shè)備作為從機響應(yīng)主機請求,主機定時訪問從機,周期性完成數(shù)據(jù)信息交換.
圖3 通用Modbus幀F(xiàn)ig 3 General Modbus Frame
多功能電表和智能斷路器均采用DLT645通信協(xié)議,DLT645協(xié)議的幀格式如圖4所示.68H和16H分別作為幀的起始和結(jié)束標志,A0-A5作為地址域,C控制碼由規(guī)約規(guī)定,具體根據(jù)主機/從機的請求/應(yīng)答確定,L為數(shù)據(jù)域的字節(jié)數(shù),CS校驗碼采用各字節(jié)二進制算術(shù)和.DATA數(shù)據(jù)域的結(jié)構(gòu)隨控制碼的功能而改變,數(shù)據(jù)域主要包含數(shù)據(jù)標識、密碼、數(shù)據(jù)等,數(shù)據(jù)域的數(shù)據(jù)格式為低字節(jié)在前高字節(jié)在后[12].本設(shè)計中,網(wǎng)關(guān)中嵌入DLT645規(guī)約,并且網(wǎng)關(guān)作主機.
圖4 DLT645幀格式Fig 4 DLT645 Frame Format
本網(wǎng)關(guān)采用STM32F103作為主控芯片,外圍搭建電源電路,三路RS485接口電路,WIFI接口電路,GPRS接口電路以及以太網(wǎng)網(wǎng)口電路.
STM32F103是一款低功耗、高性能的芯片,包含多種通信接口,如IIC、SPI和USART,綜合考慮生產(chǎn)成本和性能配置,該芯片滿足本設(shè)計的要求.本設(shè)計中,通信網(wǎng)關(guān)的整體硬件結(jié)構(gòu)見圖5.
圖5 整體硬件結(jié)構(gòu)Fig 5 Overall Hardware Structure
本設(shè)計中,WIFI采用的是ESP8266通信模塊,GPRS采用的是A6_Mini通信模塊,兩無線模塊硬件連接電路分別如圖6、圖7所示.
圖6 ESP8266模塊Fig 6 ESP8266 Module
圖7 A6_Mini模塊Fig 7 A6_Mini Module
ESP8266模塊和A6_Mini模塊分別通過USART串口與STM32F103連接,同時兩個通信模塊都支持AT指令,通過AT指令分別對兩模塊進行設(shè)置,便可建立TCP/IP通信連接.
以太網(wǎng)通信采用W5500芯片作為以太網(wǎng)控制單元,配合晶振等外圍電路,該芯片的一端連接RJ45作為外部接口,另一端通過SPI接口與STM32F103連接,連接電路圖如圖8所示.
本設(shè)計所選用的STM32F103處理器包含五路USART,其中兩路分別與WIFI模塊和GPRS模塊連接,其余三路設(shè)計為RS485通信接口,其硬件電路如圖9所示.
圖9 RS485接口電路圖Fig 9 RS485 Interface Circuit Diagram
本設(shè)計的軟件部分運行在處理器的μC/OS-Ⅱ操作系統(tǒng)中,程序的功能是通過WIFI、GPRS、以太網(wǎng)建立的TCP連接作為網(wǎng)絡(luò)通信基礎(chǔ),采用MQTT協(xié)議與阿里云物聯(lián)網(wǎng)平臺進行通信,網(wǎng)關(guān)作為主機,定時與從機進行數(shù)據(jù)信息交換.在μC/OS-Ⅱ操作系統(tǒng)中建立以下任務(wù):TCP連接任務(wù)、MQTT任務(wù)、定時任務(wù).TCP連接任務(wù)為MQTT通信做好網(wǎng)絡(luò)連接準備,其中包括ESP8266、A6_Mini、W5500模塊的網(wǎng)絡(luò)配置,并選擇其中一種作為通信方式;MQTT任務(wù)是在TCP任務(wù)完成的基礎(chǔ)上,采用選定的通訊方式,通過MQTT協(xié)議連接到阿里云物聯(lián)網(wǎng)平臺,該任務(wù)包含MQTT協(xié)議的連接命令、消息訂閱、PING請求以及消息接收;定時任務(wù)主要是通過RS485定時地訪問從機交換設(shè)備的數(shù)據(jù)信息,并通過MQTT協(xié)議傳輸?shù)皆贫朔?wù)器.
網(wǎng)絡(luò)通信提供有效可靠TCP連接是MQTT協(xié)議通信的基礎(chǔ).本網(wǎng)關(guān)作為客戶端,在通信方式上包含WIFI、GPRS及以太網(wǎng)三種,可以有效應(yīng)對各種使用環(huán)境.WIFI、GPRS通過AT指令配置參數(shù)后,在提供無線網(wǎng)絡(luò)覆蓋的環(huán)境下,即可保證TCP連接;以太網(wǎng)W5500芯片在初始化后即可檢測路由連接;本設(shè)計中,優(yōu)先選用以太網(wǎng)作為通信方式.三種通信方式的切換以及TCP連接流程如圖10所示.
在TCP網(wǎng)絡(luò)連接成功后,客戶端MQTT任務(wù)開始向阿里云物聯(lián)網(wǎng)平臺發(fā)送連接命令,請求建立MQTT通信連接,當MQTT通信建立成功后,客戶端繼續(xù)向服務(wù)器發(fā)送主題訂閱命令,服務(wù)器在收到訂閱命令后,對訂閱主題進行確認并向客戶端返回主題訂閱成功的命令,最后一個步驟是MQTT保活命令,設(shè)備端的保活時間間隔內(nèi),需要向服務(wù)器至少發(fā)送一次報文.MQTT協(xié)議通信的流程如圖11所示.
定時任務(wù)的功能是客戶端向服務(wù)器發(fā)送數(shù)據(jù)信息,在MQTT協(xié)議連接成功的基礎(chǔ)上,定時任務(wù)便可啟動.定時任務(wù)的流程如下:在規(guī)定的時間內(nèi),網(wǎng)關(guān)作為主機對RS485總線上的從機電器設(shè)備進行數(shù)據(jù)訪問,網(wǎng)關(guān)將從機數(shù)據(jù)幀解析后,添加到網(wǎng)關(guān)已經(jīng)訂閱的主題中,再通過消息發(fā)布,將數(shù)據(jù)發(fā)送到阿里云物聯(lián)網(wǎng)平臺,按上述流程如此循環(huán).定時任務(wù)的流程如圖12所示.
圖10 TCP連接流程圖Fig 10 TCP Connection Flow Chart
圖11 MQTT協(xié)議通信流程Fig 11 MQTT Protocol Communication Process
圖12 定時任務(wù)流程圖Fig 12 Timing Task Flow Chart
為了測試該網(wǎng)關(guān)的通信能力,專門搭建了一個實驗平臺,該測試平臺由智能斷路器、多功能電表、通信網(wǎng)關(guān)和電源組成,測試平臺的電路連接見圖13,實物圖見圖14.測試平臺搭建完成后進行系統(tǒng)測試,測試主要分為兩部分,一部分是網(wǎng)關(guān)連接到阿里云,成功登陸云服務(wù)器測試;另一部分是與云平臺連接成功后不同網(wǎng)絡(luò)通信方式的測試,主要是數(shù)據(jù)傳輸性能和傳輸延遲測試.
圖13 測試平臺電路連接圖Fig 13 Test Platform Circuit Connection Diagram
圖14 測試平臺實物圖Fig 14 Physical Diagram of Test Platform
將阿里云平臺的MQTT賬號寫入網(wǎng)關(guān)中,在TCP網(wǎng)絡(luò)基礎(chǔ)連接建立成功后,系統(tǒng)會自動登陸到設(shè)置的阿里云賬號,成功登陸云平臺后,該網(wǎng)關(guān)在云平臺上顯示在線狀態(tài),如圖15所示.
圖15 成功登陸云平臺Fig 15 Successfully Landed on Cloud Platform
在實驗室條件下,分別測試不同網(wǎng)絡(luò)通信方式與云端成功連接后的數(shù)據(jù)傳輸性能.測試的方法是網(wǎng)關(guān)在一小時內(nèi)向云平臺通信192次,每次發(fā)送一條不大于1K字節(jié)的消息,連續(xù)測試24h,查看云端接收數(shù)據(jù)的情況.表2是不同網(wǎng)絡(luò)方式通信測試的實驗數(shù)據(jù).由于WIFI網(wǎng)絡(luò)連接不穩(wěn)定,導(dǎo)致數(shù)據(jù)丟失,其它兩種網(wǎng)絡(luò)方式通信丟包為零.
表2 通信性能測試Table 2 Communication Performance Test
在通信測試的同時,隨機選取 10個不同時刻進行網(wǎng)絡(luò)延遲測試.阿里云物聯(lián)網(wǎng)平臺提供一個實時延遲測試接口,原理是從云端向網(wǎng)關(guān)下發(fā)一條指令,查看網(wǎng)關(guān)回復(fù)時間.表3為網(wǎng)絡(luò)延遲測試數(shù)據(jù),單位是ms.可以從數(shù)據(jù)中得出,以太網(wǎng)延遲最低,GPRS延遲最高.
表3 網(wǎng)絡(luò)延遲時間Table 3 Network Delay Time
本文采用WIFI、GPRS、以太網(wǎng)集成芯片W5500和STM32F103微處理器,設(shè)計了一種基于MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān),通過RS485與子設(shè)備連接,實現(xiàn)了阿里云物聯(lián)網(wǎng)平臺和設(shè)備端的數(shù)據(jù)信息交換.三種不同的網(wǎng)絡(luò)通信方式,有利于網(wǎng)關(guān)應(yīng)用在各種網(wǎng)絡(luò)環(huán)境下,縮短了產(chǎn)品的開發(fā)周期.實驗表明,該網(wǎng)關(guān)通信能力穩(wěn)定,可以在具體實踐中進行應(yīng)用.
溫州大學(xué)學(xué)報(自然科學(xué)版)2019年4期