陳德富,劉小湖,周旭文,邱寶象,吳華君,屈亮亮
(1.浙江工業(yè)大學(xué) 信息工程學(xué)院,杭州 310023; 2.萬向錢潮股份有限公司,杭州 311215)
電能是當(dāng)前社會活動的必需能源之一,隨著社會經(jīng)濟(jì)的發(fā)展,電氣設(shè)備日漸增多。然而各種設(shè)備分布廣泛,使人們難以獲取設(shè)備的實(shí)時(shí)用電信息和運(yùn)行狀態(tài),從而造成了電能的浪費(fèi)。物聯(lián)網(wǎng)技術(shù)為這一難題帶來了解決方案,然而當(dāng)前各種物聯(lián)網(wǎng)模組價(jià)格、性能不一,適用的場景也不盡相同,因此設(shè)計(jì)出一種低成本的、滿足特定場景需求的遠(yuǎn)程電能采集系統(tǒng)對能源的可持續(xù)發(fā)展具有重要意義。
目前廣泛使用的物聯(lián)網(wǎng)通信模組主要有藍(lán)牙、ZigBee[1]、NB-IoT[2]和LoRa[3]等。其中,藍(lán)牙和ZigBee雖然已經(jīng)發(fā)展出了成熟的開發(fā)協(xié)議棧,但它們的實(shí)測通信距離通常不足二十米,并且易受障礙物的影響,因此主要用于短距離通信的智能家居等領(lǐng)域。NB-IoT和LoRa通信距離較遠(yuǎn),是低功耗廣域網(wǎng)中最開放和成熟的技術(shù),目前廣泛用于水表、電表等遠(yuǎn)程無線抄表領(lǐng)域[4-7]。雖然NB-IoT具備覆蓋廣、連接多和低功耗等眾多優(yōu)勢,但它構(gòu)建于蜂窩網(wǎng)絡(luò),對基站的依賴性較高,并且需要定期向運(yùn)營商支付流量費(fèi)用,對開發(fā)和運(yùn)行維護(hù)的成本需求較高[8]。LoRa技術(shù)基于開放頻段,可按需構(gòu)建自主網(wǎng)絡(luò),具有高度的自主性、可擴(kuò)展性、靈活性和運(yùn)行成本低等眾多優(yōu)勢,因此LoRa通信技術(shù)成為了首選。
無線傳感器網(wǎng)絡(luò)由具有無線收發(fā)功能的終端節(jié)點(diǎn)構(gòu)成,網(wǎng)絡(luò)中的節(jié)點(diǎn)根據(jù)預(yù)設(shè)的算法和協(xié)議獲取信道資源,實(shí)現(xiàn)數(shù)據(jù)傳輸。與傳統(tǒng)中心式的蜂窩網(wǎng)絡(luò)不同,無線自組網(wǎng)無需大型基站或網(wǎng)絡(luò)設(shè)施的支持,能夠迅速、靈活、高效地部署網(wǎng)絡(luò)終端設(shè)備。目前,市場上的LoRa無線網(wǎng)絡(luò)開發(fā)方案主要有基于LoRaWAN協(xié)議[9]和基于LoRa網(wǎng)關(guān)兩種方式,LoRaWAN協(xié)議主要針對星型拓?fù)浣Y(jié)構(gòu),但并不適用于小規(guī)模的無線傳感器網(wǎng)絡(luò)[10];LoRa網(wǎng)關(guān)可同時(shí)提供了8個(gè)下行信道,傳輸距離可達(dá)幾公里,但目前的LoRa網(wǎng)關(guān)成本高達(dá)幾百元,并且開發(fā)難度大[11],因此也并不適用。綜上所述,本文針對用電設(shè)備遠(yuǎn)程監(jiān)控的問題,研究設(shè)計(jì)了一種基于LoRa自組網(wǎng)技術(shù)的低成本的、適用于網(wǎng)絡(luò)規(guī)模較小的電能數(shù)據(jù)采集系統(tǒng)。
本文設(shè)計(jì)了一種基于LoRa自組網(wǎng)的電能數(shù)據(jù)采集系統(tǒng),該系統(tǒng)整體為集中式的星型網(wǎng)絡(luò)架構(gòu),由一個(gè)集中器和若干終端節(jié)點(diǎn)組成。集中器的主要功能為通過LoRa模塊收集終端上傳的傳感器數(shù)據(jù)并通過NB-IoT模塊將數(shù)據(jù)打包上傳至物聯(lián)網(wǎng)云平臺中;節(jié)點(diǎn)主要讀取傳感器中的電壓電流數(shù)據(jù),使用LoRa模塊按照特定的通信協(xié)議上傳至集中器中。LoRa無線通信部分采用了基于CSMA/CA協(xié)議[12]的設(shè)計(jì)方法來實(shí)現(xiàn)節(jié)點(diǎn)與集中器的無線通信,使節(jié)點(diǎn)通過競爭信道的方式來獲取信道資源,實(shí)現(xiàn)數(shù)據(jù)上傳。集中器和節(jié)點(diǎn)均使用同樣規(guī)格的LoRa模塊,采用這樣的自組網(wǎng)設(shè)計(jì)方式,有效地降低了開發(fā)成本。系統(tǒng)總體框架圖如圖1所示。
圖3 RN8209應(yīng)用電路原理圖
圖1 系統(tǒng)框圖
終端節(jié)點(diǎn)的核心硬件主要由微控制器電路、電能采集模塊和LoRa通信模塊組成,節(jié)點(diǎn)的整體硬件結(jié)構(gòu)如圖2所示。電能采集部分使用電壓互感器和電流互感器對用電設(shè)備運(yùn)行時(shí)的電壓電流進(jìn)行轉(zhuǎn)換,將大電流信號轉(zhuǎn)換到芯片可以處理的范圍,使用RN8209計(jì)量芯片[13]對轉(zhuǎn)換后的電壓電流進(jìn)行采樣處理,STM32處理器通過SPI總線讀取計(jì)量芯片內(nèi)部的寄存器值。LoRa通信模塊由基于SX1278芯片[14]的LoRa模組構(gòu)成,處理器通過SPI總線與LoRa模塊進(jìn)行通信。
圖2 節(jié)點(diǎn)硬件結(jié)構(gòu)圖
本文選用STM32F103C8T6型號芯片作為系統(tǒng)核心控制器,與穩(wěn)壓供電電路、USART串口通信接口、晶振電路和LoRa通信接口構(gòu)成微控制器電路。芯片的最高工作頻率可達(dá)72 MHz,具有64 k字節(jié)的可編程FLASH空間和20 k字節(jié)的RAM空間,并支持SPI、USART等多種通信方式的外設(shè),完全滿足實(shí)現(xiàn)本項(xiàng)目的硬件和軟件設(shè)計(jì)的性能需求。
電能采集電路采用精密的ZMPT107電壓互感器和電流互感器TA1410對220 V交流電壓實(shí)現(xiàn)1:1的電壓轉(zhuǎn)換,對交流電流實(shí)現(xiàn)5 A:2.5 mA的比例轉(zhuǎn)換。RN8209芯片與微控制器的SPI1_MOSI、SPI1_MISO、SPI1_CLK和SPI1_CS引腳相連,電能采集電路的原理圖如圖3所示。該芯片是一款單相多功能專用計(jì)量芯片,能測量有功功率、無功功率、有功能量以及無功能量;同時(shí)提供兩路獨(dú)立的有功功率有效值、電壓有效值、線頻率和過零中斷;支持全數(shù)字的增益、相位和直流偏置校正,并提供串行通信接口SPI和UART;內(nèi)嵌的電源監(jiān)測電路,能保證上電和斷電時(shí)芯片工作的可靠性。因此,滿足本系統(tǒng)的電能采集需求。
LoRa通信模塊采用了安信可公司所設(shè)計(jì)的Ra-02型號的LoRa模組,與微控制器的SPI2引腳相連進(jìn)行通信。該模組基于SX1278芯片,支持410 MHz至525 MHz的通信頻段,支持6種調(diào)制方式,適用于長距離的擴(kuò)頻無線通信,理論通信距離可到達(dá)五公里,具有較強(qiáng)的抗干擾能力和高可靠性,接收靈敏度理論可達(dá)到-140 dBm,并支持最高+20 dBm的發(fā)射功率。同時(shí),該模塊還具備低功耗的特性,在接收模式下電流為12.15 mA,待機(jī)狀態(tài)下的電流僅為1至2 mA。
集中器的核心硬件主要由微控制器電路、NB-IoT通信電路和LoRa通信模塊組成,其中,微控制器電路和LoRa通信模塊采用與節(jié)點(diǎn)相同的設(shè)計(jì)方案。為了便于系統(tǒng)開發(fā),NB-IoT通信電路則直接采用基于移遠(yuǎn)公司的BC26模塊進(jìn)行設(shè)計(jì)。BC26模塊與STM32的USART串口的TX引腳和RX引腳相連接,STM32通過串口向模塊發(fā)送特定的AT指令字符串與模塊進(jìn)行通信,用于控制NB-IoT模塊的工作和數(shù)據(jù)發(fā)送。集中器通過LoRa通信模塊接收各節(jié)點(diǎn)上發(fā)的數(shù)據(jù)包并解析,然后將各節(jié)點(diǎn)數(shù)據(jù)封裝成MQTT協(xié)議支持的格式,上傳至阿里云平臺。
本文設(shè)計(jì)了基于星型拓?fù)浣Y(jié)構(gòu)的無線傳感器網(wǎng)絡(luò),星型網(wǎng)絡(luò)是具有低時(shí)延的簡單網(wǎng)絡(luò)結(jié)構(gòu),消除了網(wǎng)絡(luò)同步開銷和跳數(shù)。由于LoRa模塊本身具備較遠(yuǎn)的通信距離,這使得LoRa節(jié)點(diǎn)無需像網(wǎng)狀網(wǎng)絡(luò)一樣依靠中繼節(jié)點(diǎn)和路由協(xié)議實(shí)現(xiàn)與遠(yuǎn)端網(wǎng)關(guān)的通信,大大降低了LoRa傳感器網(wǎng)絡(luò)的復(fù)雜度和開發(fā)難度,不需要設(shè)計(jì)龐大的網(wǎng)狀結(jié)構(gòu)來覆蓋更大的范圍[15]。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖4所示。
圖4 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
CSMA/CA協(xié)議源于ALOHA協(xié)議[16],是一種基于競爭的帶沖突避免的載波監(jiān)聽多址訪問協(xié)議。CSMA/CA協(xié)議規(guī)定,節(jié)點(diǎn)在發(fā)送數(shù)據(jù)前首先使用載波偵聽計(jì)數(shù)對當(dāng)前信道進(jìn)行檢測,當(dāng)信道空閑時(shí),則延遲一次等待幀間間隔(DIFS)后再次檢測,若信道仍然空閑,節(jié)點(diǎn)則獲取當(dāng)前退避窗口內(nèi)的一個(gè)隨機(jī)退避值并進(jìn)入退避階段。在退避階段,節(jié)點(diǎn)根據(jù)退避值進(jìn)行退避計(jì)數(shù),每過一個(gè)時(shí)隙(SlotTime),若信道仍然保持空閑,則退避值減1。直到退避值減為0,表明節(jié)點(diǎn)成功競爭到信道,允許發(fā)送數(shù)據(jù)幀(DATA),若節(jié)點(diǎn)在短幀間間隔(SIFS)內(nèi)沒有接收到應(yīng)答幀(ACK),說明當(dāng)前通信發(fā)送碰撞,則節(jié)點(diǎn)根據(jù)預(yù)設(shè)的退避算法調(diào)整退避窗口(CW)的值以減小下一次通信發(fā)生沖突的概率。在退避階段中,若節(jié)點(diǎn)檢測到信道忙碌,則掛起當(dāng)前退避值,等待下一次信道空閑再重新進(jìn)入退避階段。圖5展示了基本的基于CSMA/CA通信機(jī)制的兩節(jié)點(diǎn)競爭通信過程。
圖5 節(jié)點(diǎn)工作時(shí)序圖
其中,短幀間間隔(SIFS)是節(jié)點(diǎn)處理協(xié)議的最短時(shí)間,用來保證節(jié)點(diǎn)對信道的占用,以順利完成幀數(shù)據(jù)的交換。由圖5可知,SIFS被用作DATA幀之后,SIFS的大小由式(1)確定。其中,aRxRFDelay、aRxPLCPDelay為射頻接收延時(shí),aMACPrcDelay為節(jié)點(diǎn)處理MAC協(xié)議產(chǎn)生的延時(shí),aRxTxTurnaroundTime為射頻收發(fā)模式的轉(zhuǎn)換時(shí)間[17]。
aSIFSTime=aRxRFDelay+
aRxPLCPDelay+aMACPrcDelay+
aRxTxTurnaroundTime
(1)
時(shí)隙(SlotTime)是MAC協(xié)議中的最小時(shí)間單位,協(xié)議中所有的時(shí)間都是其整數(shù)倍。等待幀間間隔(DIFS)是節(jié)點(diǎn)判定信道空閑的最小持續(xù)時(shí)間,當(dāng)檢測到信道持續(xù)空閑DIFS時(shí)間后,節(jié)點(diǎn)才能執(zhí)行下一步的退避操作。DIFS的大小由式(2)確定。
DIFS=aSIFSTime+2×aSlotTime
(2)
在無線網(wǎng)絡(luò)通信中,由于無線信號的覆蓋范圍有限,會存在隱藏終端的問題[18]。假設(shè)節(jié)點(diǎn)A、C同時(shí)位于集中器B的覆蓋范圍之內(nèi),而A和C彼此間信號不相互覆蓋。當(dāng)A正在向B發(fā)送數(shù)據(jù)的時(shí),由于節(jié)點(diǎn)C偵聽不到A的載波,此時(shí)它會認(rèn)為信道處于空閑從而接入信道。這就會造成集中器B在接收A的數(shù)據(jù)幀時(shí)發(fā)生沖突,從而降低了信道吞吐量。
本文采用RTS/CTS握手機(jī)制來解決隱藏終端的問題。當(dāng)節(jié)點(diǎn)需要發(fā)送數(shù)據(jù)時(shí),首先向集中器發(fā)送一個(gè)簡短的RTS請求握手幀,然后集中器會立即向節(jié)點(diǎn)發(fā)送一個(gè)簡短的CTS幀進(jìn)行回應(yīng),當(dāng)節(jié)點(diǎn)接收CTS信號時(shí),表明握手成功可以繼續(xù)發(fā)送數(shù)據(jù)幀,從而避免了直接發(fā)送較長的數(shù)據(jù)幀時(shí)因碰撞而造成較長時(shí)間的信道資源的浪費(fèi)。因此,本文采用了RTS+CTS+DATA+ACK的通信機(jī)制來克服上述問題。
在CSMA/CA協(xié)議中,退避算法的主要作用是為了保證網(wǎng)絡(luò)中各節(jié)點(diǎn)公平地進(jìn)行數(shù)據(jù)發(fā)送,當(dāng)節(jié)點(diǎn)間通信發(fā)生碰撞或通信成功時(shí),退避算法則會調(diào)整當(dāng)前退避窗口,以減少沖突和延遲、提高吞吐量、提高網(wǎng)絡(luò)性能[19]。
二進(jìn)制指數(shù)退避算法[20](BEB)是最經(jīng)典的退避算法。當(dāng)節(jié)點(diǎn)通信發(fā)生沖突時(shí),BEB算法將當(dāng)前競爭窗口值CW乘以2,若CW己達(dá)到最大值,則不再增加。當(dāng)通信成功時(shí),則將競爭窗口值CW下降至最小值,節(jié)點(diǎn)隨機(jī)退避值的取值范圍則為0到CW之間的隨機(jī)值,BEB算法如式(3)所示。
(3)
在發(fā)生沖突時(shí),雖然BEB算法的倍乘操作能快速有效的解決沖突,但當(dāng)數(shù)據(jù)發(fā)送成功時(shí),它直接將競爭窗口重置為最小值,這樣總是使得上次發(fā)送成功的節(jié)點(diǎn)獲取到最大的競爭優(yōu)先權(quán),這樣可能會導(dǎo)致網(wǎng)絡(luò)中的不公平現(xiàn)象,甚至出現(xiàn)信道一直被某一節(jié)點(diǎn)占用,從而導(dǎo)致其它節(jié)點(diǎn)無法競爭到信道的極端情況。
為解決BEB算法存在的缺陷,目前提出了一系列改進(jìn)的退避算法,如EIED[21]、MILD[22]和MIMLD[23]等。MILD算法調(diào)整了沖突和成功時(shí)競爭窗口的更新規(guī)律,當(dāng)節(jié)點(diǎn)產(chǎn)生沖突,則將當(dāng)前競爭窗口CW乘以乘法因子α,當(dāng)節(jié)點(diǎn)交互成功或是競爭窗口值達(dá)到上限后,MILD采用線性遞減的方法,將競爭窗口值CW減去一個(gè)線性因子β,使CW線性下降,如式(4)所示。該算法使得CW的變化更加緩慢,克服了BEB的極端不公平性。EIED和MIMLD算法也采用了類似的思想,即發(fā)生碰撞時(shí),通過擴(kuò)大競爭窗口以快速擺脫沖突,通信成功時(shí)緩慢減小競爭窗口,同時(shí)也保證了一定的公平性。
(4)
由前文可知,CSMA/CA協(xié)議中有DIFS、SlotTime、SIFS三個(gè)重要的時(shí)間參數(shù)。在基于LoRa模塊的CSMA/CA通信機(jī)制設(shè)計(jì)中,上述參數(shù)的確定與LoRa模塊的工作參數(shù)密切相關(guān)。主要由擴(kuò)頻因子(SF)、帶寬(BW)、編碼率(CR)決定,不同的參數(shù)配置會導(dǎo)致時(shí)隙和各幀間間隔不同,若沒有匹配合適的時(shí)隙與幀間間隔,則會導(dǎo)致網(wǎng)絡(luò)性能的降低。在本文的系統(tǒng)設(shè)計(jì)中,LoRa模塊的工作參數(shù)均設(shè)置為SF=12,BW=250 kHz,CR=4/5,前導(dǎo)碼長度Npreamble=8,即在數(shù)據(jù)速率DR=0.58 kbps的條件下,確定系統(tǒng)時(shí)隙和幀間間隔的取值。
時(shí)隙SlotTime的確定方法為:當(dāng)某節(jié)點(diǎn)在某時(shí)隙向信道中發(fā)送數(shù)據(jù)后,在下一個(gè)時(shí)隙前,其它節(jié)點(diǎn)都能檢測到信道已經(jīng)轉(zhuǎn)變?yōu)槊β禒顟B(tài)。因此,上一時(shí)隙LoRa數(shù)據(jù)包中的前導(dǎo)碼部分在信道中的傳輸時(shí)長與下一時(shí)隙節(jié)點(diǎn)CAD檢測信道的時(shí)長就決定了時(shí)隙長度,時(shí)隙長度應(yīng)大于等于二者中較長者。根據(jù)LoRa芯片手冊,前導(dǎo)碼的傳輸時(shí)間由式(5)確定,有LoRa參數(shù)計(jì)算可得,前導(dǎo)碼的傳輸時(shí)間約為205 ms。CAD檢測時(shí)長與LoRa參數(shù)的關(guān)系如表1所示。因此,本文選擇將SlotTime的大小設(shè)置為205 ms。
(5)
SIFS的大小由射頻接收延時(shí)、MAC協(xié)議解析處理協(xié)延時(shí)和射頻收發(fā)模式的轉(zhuǎn)換延時(shí)共同確定。根據(jù)LoRa芯片手冊可知,射頻接收延時(shí)和射頻收發(fā)模式轉(zhuǎn)換的時(shí)間都是微小的,通常不足1 ms。經(jīng)過實(shí)驗(yàn)測試,單片機(jī)處理MAC協(xié)議的延時(shí)通常在5 ms左右。因此,本文將SIFS的大小確定為10 ms。最后根據(jù)式(2),將DIFS的大小確定為420 ms。
常用的網(wǎng)絡(luò)性能評估標(biāo)準(zhǔn)有吞吐量、網(wǎng)絡(luò)利用率、數(shù)據(jù)丟包率等指標(biāo),本文在MatLab中實(shí)現(xiàn)了CSMA/CA協(xié)議的仿真,在隨著系統(tǒng)節(jié)點(diǎn)的不斷增加的情況下,測試了第2小節(jié)中的4種不同退避算法,并比較其網(wǎng)絡(luò)利用率的性能表現(xiàn)。
設(shè)定一個(gè)具有N個(gè)節(jié)點(diǎn)的星型網(wǎng)絡(luò)拓?fù)洵h(huán)境,節(jié)點(diǎn)需要隨機(jī)將數(shù)據(jù)上報(bào)給集中器,從而形成競爭網(wǎng)絡(luò)。退避算法的目的就是根據(jù)通信情況合理的調(diào)整退避窗口,從而盡可能避免節(jié)點(diǎn)間通信發(fā)生碰撞,減少網(wǎng)絡(luò)中發(fā)生沖突的時(shí)間,實(shí)現(xiàn)穩(wěn)定的網(wǎng)絡(luò)通信。無線網(wǎng)絡(luò)利用率的定義如式(6)所示,網(wǎng)絡(luò)利用率用E表示,其中Ttotal為總的網(wǎng)絡(luò)通信時(shí)間,Tno_collision表示未發(fā)生數(shù)據(jù)包碰撞的通信時(shí)間。E越大,網(wǎng)絡(luò)中發(fā)生沖突的時(shí)間就越短,表明退避算法的性能更加優(yōu)越。
(6)
在仿真實(shí)驗(yàn)中,設(shè)置節(jié)點(diǎn)數(shù)量由1到100遞增,仿真時(shí)間Ttotal=500 s,得到的網(wǎng)絡(luò)利用率隨節(jié)點(diǎn)數(shù)量遞增的變化曲線如圖6所示。由圖中曲線可知,當(dāng)網(wǎng)絡(luò)中節(jié)點(diǎn)較少時(shí),各退避算法的表現(xiàn)性能均相差不大。隨著網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量的增加,BEB算法由于在上一次通信成功時(shí)直接將退避窗口調(diào)整為最小值,因此性能急劇下降,EIED算法由于只是將退避窗口調(diào)整為原來的9/10,因此性能相對BEB算法較好。MILD采用乘性增加、線性遞減的策略,當(dāng)節(jié)點(diǎn)數(shù)量逐漸增多時(shí),展現(xiàn)了比BEB和EIED算法更好的性能。MIMLD根據(jù)當(dāng)前CW的值來判斷網(wǎng)絡(luò)的擁堵情況,以此來采取不同的策略調(diào)整CW,在4種退避算法中,具有最好的性能表現(xiàn)。因此,本系統(tǒng)采取了基于MIMLD退避算法的CSMA/CA協(xié)議設(shè)計(jì)。
圖6 網(wǎng)絡(luò)利用率仿真結(jié)果
要實(shí)現(xiàn)基于CSMA/CA協(xié)議的傳感器網(wǎng)絡(luò)設(shè)計(jì),前提是節(jié)點(diǎn)設(shè)備可以進(jìn)行載波偵聽,即判斷當(dāng)前信道是否被占用,LoRa模塊提供了CAD工作模式以實(shí)現(xiàn)對信道的偵聽。一個(gè)完整的LoRa數(shù)據(jù)包主要由前導(dǎo)碼、數(shù)據(jù)有效負(fù)載和可選報(bào)頭組成。在CAD模式下,LoRa模塊將高效掃描當(dāng)前信道,用于檢測當(dāng)前信道中是否存在前導(dǎo)碼信息。若檢測到前導(dǎo)碼,LoRa模塊會產(chǎn)生相應(yīng)的CAD中斷信號,表明當(dāng)前信道中有正在傳輸?shù)腖oRa數(shù)據(jù)包,即信道處于忙碌狀態(tài)。
由于節(jié)點(diǎn)和集中器間采用了RTS+CTS+DATA+ACK的通信機(jī)制,因此本文針對這4種數(shù)據(jù)幀設(shè)計(jì)了對應(yīng)的通信數(shù)據(jù)包,數(shù)據(jù)包格式如圖7所示。其中,RTS數(shù)據(jù)包用于節(jié)點(diǎn)向集中器發(fā)送握手請求,主要由網(wǎng)絡(luò)標(biāo)識符(net_flag)、PANID、節(jié)點(diǎn)設(shè)備地址(dev_addr)、標(biāo)識字符‘R’和校驗(yàn)和(chksum)組成。CTS數(shù)據(jù)包用于集中器發(fā)送握手響應(yīng)指令,當(dāng)節(jié)點(diǎn)收到CTS信號,表明握手成功。根據(jù)系統(tǒng)的設(shè)計(jì)需求,DATA數(shù)據(jù)幀除了包含網(wǎng)絡(luò)標(biāo)識符、PANID、設(shè)備地址和校驗(yàn)和外,還具備數(shù)據(jù)包標(biāo)識字符‘D’、4字節(jié)的電壓有效值(Urms)和電流有效值(Irms)。ACK數(shù)據(jù)包則用于集中器向節(jié)點(diǎn)發(fā)送數(shù)據(jù)包的應(yīng)答信號,表明集中器成功接收數(shù)據(jù)包。
圖7 數(shù)據(jù)包格式
由于系統(tǒng)采用基于隨機(jī)競爭的MAC協(xié)議進(jìn)行通信,因此節(jié)點(diǎn)端的數(shù)據(jù)發(fā)送方式也采用隨機(jī)發(fā)送的策略。在本系統(tǒng)的軟件設(shè)計(jì)中,當(dāng)檢測到用電設(shè)備的電流有效值發(fā)生大于5 mA的變化時(shí),即認(rèn)為負(fù)載設(shè)備的運(yùn)行狀態(tài)發(fā)生變化,例如設(shè)備從斷電狀態(tài)變?yōu)樯想娺\(yùn)行狀態(tài)。此時(shí)節(jié)點(diǎn)立即嘗試獲取信道資源,將當(dāng)前設(shè)備的電壓電流有效值打包后發(fā)送至集中器,在其它情況下都將LoRa模塊設(shè)置為空閑模式,以降低LoRa模塊的功耗。
本系統(tǒng)中的LoRa節(jié)點(diǎn)主要在CAD模式、空閑模式、接收模式、發(fā)送模式這4種工作模式間切換。節(jié)點(diǎn)上電后初始化為空閑模式,當(dāng)有數(shù)據(jù)要發(fā)送時(shí),節(jié)點(diǎn)立即進(jìn)入CAD檢測模式,若檢測到信道連續(xù)空閑時(shí)間達(dá)到DIFS,則獲取隨機(jī)退避值,進(jìn)入退避階段。當(dāng)隨機(jī)退避值減為0時(shí),則表明節(jié)點(diǎn)成功競爭到信道,然后切換至發(fā)送模式發(fā)送RTS,發(fā)送完畢后進(jìn)入接收模式等待CTS信號。若經(jīng)過SIFS時(shí)間后,仍未收到CTS信號,則說明當(dāng)前發(fā)生超時(shí),節(jié)點(diǎn)回到空閑模式,等待下次數(shù)據(jù)發(fā)送;若成功接收CTS信號則切換到發(fā)送模式發(fā)送DATA幀,并等待接收ACK幀。在節(jié)點(diǎn)通信過程中,若發(fā)生超時(shí)和數(shù)據(jù)包解析錯(cuò)誤,則節(jié)點(diǎn)根據(jù)退避算法調(diào)整CW值并切換為空閑模式。節(jié)點(diǎn)的通信流程如圖8所示。
圖8 節(jié)點(diǎn)端通信流程圖
集中器主要由NB-IoT通信任務(wù)和LoRa通信任務(wù)組成。集中器上電時(shí),首先運(yùn)行NB-IoT任務(wù),主要包括初始化硬件接口,測試模塊是否工作正常,并與云平臺建立連接。集中器的LoRa模塊主要工作在接收模式和發(fā)送模式,當(dāng)NB模塊初始化完成后即開啟接收,用于接收節(jié)點(diǎn)發(fā)送的RTS幀和DATA幀。然后解析接收到的數(shù)據(jù)包,構(gòu)造對應(yīng)的CTS幀和ACK幀并轉(zhuǎn)換為發(fā)送模式發(fā)送至節(jié)點(diǎn),集中器的LoRa通信流程如圖9所示。最后,由NB-IoT任務(wù)周期性的將采集到的各節(jié)點(diǎn)數(shù)據(jù)封裝成MQTT協(xié)議支持的格式并發(fā)送至物聯(lián)網(wǎng)云平臺。
圖9 集中器通信流程圖
實(shí)驗(yàn)測試環(huán)境由4個(gè)LoRa節(jié)點(diǎn)和1個(gè)集中器組成,各LoRa節(jié)點(diǎn)讀取傳感器數(shù)據(jù)并隨機(jī)進(jìn)行上報(bào),通過RTS/CTS/DATA/ACK的握手通信機(jī)制與集中器進(jìn)行通信,同時(shí)將通信過程、隨機(jī)獲取的退避值、更新的競爭窗口CW、請求發(fā)送的次數(shù)和成功發(fā)送的次數(shù)通過串口輸出到本地。LoRa集中器將接收的各節(jié)點(diǎn)的電流電壓數(shù)據(jù)和各節(jié)點(diǎn)的數(shù)據(jù)包統(tǒng)計(jì)量通過串口定時(shí)輸出,并通過NB-IoT模塊將各節(jié)點(diǎn)的電流數(shù)據(jù)傳送到阿里云平臺。對比LoRa節(jié)點(diǎn)上報(bào)的數(shù)據(jù)量與集中器成功接收的數(shù)據(jù)包數(shù)量可以驗(yàn)證通信過程中是否丟包,程序是否按照設(shè)定的協(xié)議正確執(zhí)行。在系統(tǒng)運(yùn)行15分鐘后查看集中器和各節(jié)點(diǎn)的運(yùn)行結(jié)果。
節(jié)點(diǎn)1的串口輸出結(jié)果如圖10所示。由圖中可知,節(jié)點(diǎn)1當(dāng)前得到的隨機(jī)退避值為6,競爭窗口CW值為31。節(jié)點(diǎn)1總共隨機(jī)發(fā)起了186次RTS/CTS握手請求,成功通信的次數(shù)為150次,數(shù)據(jù)包投遞率為80.6%。其中,通信失敗的原因主要是由于節(jié)點(diǎn)間發(fā)生碰撞從而導(dǎo)致了集中器接收的數(shù)據(jù)包不正確或者接收超時(shí)造成的。
圖10 節(jié)點(diǎn)1運(yùn)行結(jié)果
集中器的輸出結(jié)果如圖11所示,集中器將節(jié)點(diǎn)的地址、當(dāng)前上報(bào)的電壓電流值和各節(jié)點(diǎn)上報(bào)數(shù)據(jù)包的數(shù)量總和通過串口輸出值PC端。由輸出結(jié)果可知,集中器成功接收的節(jié)點(diǎn)1上報(bào)的數(shù)據(jù)包數(shù)量為150,與節(jié)點(diǎn)1的運(yùn)行結(jié)果相同,驗(yàn)證了程序的正確性。并且可以看到4個(gè)節(jié)點(diǎn)隨機(jī)上報(bào)數(shù)據(jù)的成功次數(shù)相差不大,因此也可反映出協(xié)議具有一定的公平性。
圖11 集中器運(yùn)行結(jié)果
阿里云物聯(lián)網(wǎng)平臺的顯示結(jié)果如圖12所示,可以看出集中器通過NB-IoT模塊成功將各節(jié)點(diǎn)的電流數(shù)據(jù)發(fā)送至云平臺上。其中,由節(jié)點(diǎn)1的電流變化曲線可知,該節(jié)點(diǎn)在某一時(shí)刻開始上電工作,并在運(yùn)行一段時(shí)間后又?jǐn)嚯娡V构ぷ鳌?/p>
圖12 物聯(lián)網(wǎng)平臺顯示結(jié)果
本研究設(shè)計(jì)了一套新型的用電設(shè)備電能采集方案,該方案采用LoRa無線通信自組網(wǎng)技術(shù),并實(shí)現(xiàn)基于CSMA/CA競爭通信機(jī)制的星型傳感器網(wǎng)絡(luò),經(jīng)過實(shí)驗(yàn)測試,系統(tǒng)各功能均正常實(shí)現(xiàn)。與傳統(tǒng)的藍(lán)牙、ZigBee和NB-IoT等物聯(lián)網(wǎng)通信方式相比,該系統(tǒng)具有較遠(yuǎn)的通信距離、較低的開發(fā)運(yùn)行管理成本和較高的靈活性等優(yōu)點(diǎn)。本方案的設(shè)計(jì)符合萬物互聯(lián)的發(fā)展趨勢,能較好的滿足經(jīng)濟(jì)實(shí)惠的遠(yuǎn)距離用電信息監(jiān)控系統(tǒng)的需求。依托LoRa無線通信技術(shù),筆者后續(xù)將對組網(wǎng)算法做進(jìn)一步研究,以進(jìn)一步提高無線傳感器網(wǎng)絡(luò)的性能,增強(qiáng)其實(shí)用性。