無線傳感器網(wǎng)絡(luò)拓撲的監(jiān)控與維護
摘要:以ZigBee協(xié)議為基礎(chǔ),提出了一種新的無線傳感器網(wǎng)絡(luò)拓撲結(jié)構(gòu)的監(jiān)控和維護方法。創(chuàng)新性地設(shè)計了基于葉子節(jié)點的通訊模式,該模式運用協(xié)議棧自有運行流程來獲取節(jié)點的加入或丟失信息、實現(xiàn)網(wǎng)絡(luò)拓撲的監(jiān)控,并通過設(shè)計一種基于關(guān)聯(lián)表的鏈表式存儲結(jié)構(gòu)來進行動態(tài)網(wǎng)絡(luò)拓撲的維護。經(jīng)過在實際辦公環(huán)境監(jiān)控平臺上驗證表明,該方法數(shù)據(jù)傳輸量小,資源占用少,操作簡便,具有較強的應(yīng)用推廣價值。
本文引用地址:http://m.butianyuan.cn/article/160576.htm關(guān)鍵詞:無線傳感器網(wǎng)絡(luò);ZigBee;拓撲結(jié)構(gòu);監(jiān)控與維護
0 引言
隨著無線傳感器網(wǎng)絡(luò)技術(shù)在軍事、工農(nóng)業(yè)、城市管理、環(huán)境監(jiān)控等各個領(lǐng)域的快速發(fā)展,作為系統(tǒng)基礎(chǔ)組成部分的網(wǎng)絡(luò)拓撲結(jié)構(gòu)成為研究的一個重要方面。目前,國內(nèi)外的科研機構(gòu)在網(wǎng)絡(luò)拓撲發(fā)現(xiàn)以及拓撲的監(jiān)控和管理方面開展了大量的相關(guān)研究工作,但大多停留在理論和仿真層面,這些通過在高性能的PC機上搭建仿真模型來驗證算法效果的研究,大多缺乏能夠應(yīng)用到實際系統(tǒng)的可行性案例。安徽財經(jīng)大學(xué)的趙濤,根據(jù)在聚合節(jié)點(sink)收集到網(wǎng)絡(luò)內(nèi)部節(jié)點報文接收或丟失的情況,通過發(fā)現(xiàn)網(wǎng)絡(luò)中所有葉子節(jié)點到sink節(jié)點的數(shù)據(jù)傳輸路徑,來推測網(wǎng)絡(luò)的邏輯拓撲。該方法計算比較復(fù)雜,120節(jié)點規(guī)模網(wǎng)絡(luò)在主頻為2.8 GHz的CPU主機上運行尚需9秒的時間,同時會受到節(jié)點資源、計算速度、實施條件等限制,因此,這種方法很難在實際應(yīng)用中實現(xiàn)。德州儀器(TI)公司的官方網(wǎng)站也給出了一種獲取網(wǎng)絡(luò)拓撲結(jié)構(gòu)的方法,該方法采用發(fā)送網(wǎng)絡(luò)發(fā)現(xiàn)命令的方式,并通過返回結(jié)果來確定網(wǎng)絡(luò)拓撲結(jié)構(gòu)。此法雖然能夠在實際應(yīng)用中實施,但需要定期向網(wǎng)絡(luò)中的所有節(jié)點發(fā)送發(fā)現(xiàn)命令,因而數(shù)據(jù)消耗量巨大。
本文以Z-stack協(xié)議棧為基礎(chǔ),采用葉子節(jié)點通訊方式,并利用協(xié)議自身的運行流程,提出了一種輕量數(shù)據(jù)消耗、真正面向應(yīng)用的拓撲監(jiān)控方案,同時通過設(shè)計一種基于關(guān)聯(lián)表的鏈?zhǔn)酱鎯Y(jié)構(gòu)來實現(xiàn)對網(wǎng)絡(luò)拓撲信息的維護,因而在解決網(wǎng)絡(luò)監(jiān)控與維護方面更具有實際應(yīng)用價值。
1 Z-stack協(xié)議棧原理簡介
作為ZigBee聯(lián)盟的一個重要的組織成員,2007年,TI公司宣布推出業(yè)界領(lǐng)先的ZigBee協(xié)議棧Z-Stack。Z-Stack符合ZigBee 2006規(guī)范,能支持多種平臺,其中包括本系統(tǒng)使用的、面向IEEE 802.15.4/ZigBee的CC2430片上系統(tǒng)解決方案。
1.1 ZigBee協(xié)議棧的體系結(jié)構(gòu)及信息傳遞流程
ZigBee協(xié)議棧的體系結(jié)構(gòu)如圖1所示,由圖可見,ZigBee協(xié)議采用分層體系結(jié)構(gòu),由物理層(PHY)、介質(zhì)接入控制子層(MAC層)、網(wǎng)絡(luò)層(NWK)和應(yīng)用層(APL)組成。其中,應(yīng)用層框架包括了應(yīng)用支持子層(APS)、ZigBee設(shè)備對象(ZDO)及由制造商制定的應(yīng)用對象。
在ZigBee網(wǎng)絡(luò)中,信息或數(shù)據(jù)的傳遞將依照上述層次結(jié)構(gòu)實現(xiàn)。上層發(fā)送的數(shù)據(jù)或指令按照應(yīng)用層-網(wǎng)絡(luò)層-MAC層-物理層的順序,從上至下依次進行處理;底層返回的數(shù)據(jù)則按照物理層-MAC層-網(wǎng)絡(luò)層-應(yīng)用層的順序,從下至卜處理后返回給上層用戶。每個層次負責(zé)發(fā)送到本層數(shù)據(jù)的分析和判斷,并對于屬于本層次的數(shù)據(jù)或指令做出相應(yīng)的動作響應(yīng);對于不屬十本層的數(shù)據(jù),則按照規(guī)定格式打包后發(fā)送給上、下一層。
1.2 節(jié)點加入與失步流程
為了維護系統(tǒng)的正常運行,ZigBee協(xié)議棧還提供了一些必須的消息響應(yīng)流程,其中包括節(jié)點加入網(wǎng)絡(luò)和失步響應(yīng)的流程。
節(jié)點加入流程如圖2所示。當(dāng)子節(jié)點申請加入網(wǎng)絡(luò)時,會啟動加入流程。子節(jié)點的加入請求通過其NWK層、MAC層、PHY層傳遞給父節(jié)點;父節(jié)點收到加入通知消息后,又通過其PHY層、MAC層、NWK層將該情況上傳給應(yīng)用層,最后通過ZDO JoinIndicationCB()函數(shù)的調(diào)用,得到子節(jié)點加入的消息。
節(jié)點失步流程是指終端節(jié)點丟失其父節(jié)點的同步信號時,向上層報告的失步情況發(fā)生的流程。其具體流程如圖3所示。
終端節(jié)點每隔一段時間就會開啟與父節(jié)點的同步,當(dāng)在設(shè)定時間內(nèi)沒有接收到父節(jié)點的同步信號時,就會產(chǎn)生失步指示信息,協(xié)議棧將該失步信息層層上傳,最后通過調(diào)用ZDOSynclndicationCB()函數(shù),將信息傳達到應(yīng)用層。
1.3 關(guān)聯(lián)表
TI的Z-stack協(xié)議棧在全功能節(jié)點中可以維護associateddevices t結(jié)構(gòu)的關(guān)聯(lián)表,關(guān)聯(lián)表中保存有與本節(jié)點直接關(guān)聯(lián)(父子節(jié)點)的相關(guān)信息,包括關(guān)聯(lián)節(jié)點的短地址、設(shè)備類型、連接狀態(tài)等,基本上可以滿足網(wǎng)絡(luò)拓撲結(jié)構(gòu)監(jiān)控和維護的信息需求。
TI的ZigBee協(xié)議棧雖然可為用戶開發(fā)提供強大支持,但是在網(wǎng)絡(luò)監(jiān)控和維護上并沒有專用的接口。一方面,該協(xié)議棧只能發(fā)現(xiàn)節(jié)點加入網(wǎng)絡(luò),但是無法發(fā)現(xiàn)節(jié)點非主動性的丟失或退出,因而不具備網(wǎng)絡(luò)拓撲監(jiān)控的功能;另一方面,協(xié)議在每個全功能節(jié)點中部維護了與之關(guān)聯(lián)設(shè)備的關(guān)聯(lián)表,但是并沒有維護整體網(wǎng)絡(luò)的關(guān)聯(lián)信息,因而無法掌控網(wǎng)絡(luò)拓撲的全貌。鑒于協(xié)議棧在網(wǎng)絡(luò)拓撲功能上的不足和缺陷,本文以協(xié)議基本流程為基礎(chǔ),提出一種實現(xiàn)整體網(wǎng)絡(luò)拓撲監(jiān)控和維護的方法,該方法可以滿足一般系統(tǒng)對于拓撲結(jié)構(gòu)的監(jiān)控和維護需求。
2 網(wǎng)絡(luò)拓撲結(jié)構(gòu)監(jiān)控
網(wǎng)絡(luò)拓撲結(jié)構(gòu)監(jiān)控的主要目的是實現(xiàn)拓撲結(jié)構(gòu)的建立和在結(jié)構(gòu)發(fā)生變化時及時獲取變化情況,其中最主要的是實現(xiàn)節(jié)點加入和退出事件的捕捉。節(jié)點加入事件的獲取相對容易,可以通過加入節(jié)點主動上報等方式來獲?。欢?jié)點丟失事件獲取要復(fù)雜得多?,F(xiàn)階段,對節(jié)點丟失情況的監(jiān)控多采用系統(tǒng)定期查詢的手段。采用查詢方法時,其實時性與查詢周期的長短直接相關(guān):查詢周期設(shè)置較長,拓撲變化反映時間增長,實時性變差;而查詢周期設(shè)置較短,則傳輸數(shù)據(jù)量增大,占用系統(tǒng)資源,往往很難在二者之間找到平衡點。協(xié)議棧中數(shù)據(jù)或消息的傳遞是一個復(fù)雜的過程,為了盡可能地降低系統(tǒng)資源的占用、節(jié)約能耗,除了維護系統(tǒng)正常運行所必須的數(shù)據(jù)通訊外,還應(yīng)盡量減少人為添加(應(yīng)用層)的數(shù)據(jù)通訊量。因此,最好的辦法就是利用協(xié)議自身的數(shù)據(jù)傳遞或者節(jié)點加入、失步等流程來實現(xiàn)相關(guān)信息的獲取。
本文設(shè)計了一種基于網(wǎng)關(guān)——葉子節(jié)點通訊的節(jié)點丟失情況獲取方法,該方法可以利用協(xié)議棧自身的運行流程,以較少的數(shù)據(jù)通訊量和簡單的操作,實現(xiàn)網(wǎng)絡(luò)中所有節(jié)點的丟失情況獲取。
2.1 節(jié)點加入事件的獲取
通常情況下,節(jié)點加入事件多采用加入節(jié)點主動上報的方法來獲取。該方法操作簡單,但是需要人為地發(fā)送相關(guān)加入信息,會增加系統(tǒng)數(shù)據(jù)通訊量。由圖2所示的節(jié)點加入流程可知,如果有子節(jié)點加入網(wǎng)絡(luò),加入的指示信息都會通過ZDOJoinIndmationCB()函數(shù)的調(diào)用報告給父節(jié)點。即該函數(shù)的調(diào)用證明有了節(jié)點的加入事件。因此,本文通過在此函數(shù)中添加向應(yīng)用程序報告的功能,即可通知用戶了節(jié)點加入事件的發(fā)生。
2.2 節(jié)點丟失信息的獲取
由圖3所示的流程可知,協(xié)議棧通過調(diào)用vold ZDOSyncIndicationCB(byte type,uint16 shortAddr)函數(shù)可實現(xiàn)失步情況的報告。該函數(shù)具有節(jié)點丟失的指示功能,并能夠指示丟失節(jié)點與本節(jié)點的父子關(guān)系和短地址等。但在實際的應(yīng)用中發(fā)現(xiàn),該函數(shù)的調(diào)用是有條件限制的,具體實施條件如下:
父節(jié)點丟失:從失步報告流程可知,終端節(jié)點能夠自動輪詢發(fā)現(xiàn)其父節(jié)點同步信號的丟失,而無需人為添加任何觸發(fā)條件,引發(fā)函數(shù)調(diào)用。但路由節(jié)點不支持與父節(jié)點的輪詢機制,因而不能產(chǎn)生父節(jié)點丟失情況的報告。
子節(jié)點丟失:對于包括終端節(jié)點在內(nèi)的所有類型節(jié)點的子節(jié)點丟失,在未加相應(yīng)處理的情況下,協(xié)議棧都不會引發(fā)該函數(shù)的調(diào)用。
由實施條件可知,該函數(shù)的丟失指示并不適用于所有類型節(jié)點的丟失情況,因此,如果要得到除終端父節(jié)點外網(wǎng)絡(luò)中所有節(jié)點的丟失情況,就需要人為加入其他處理,以觸發(fā)ZDOsynclndicationCB()函數(shù)的調(diào)用,從而實現(xiàn)丟失事件的獲取。
2.3 葉子節(jié)點通訊觸發(fā)方法
通常采用的基于查詢的網(wǎng)絡(luò)發(fā)現(xiàn)機制部需要在所有節(jié)點間發(fā)送數(shù)據(jù),因而增大系統(tǒng)的數(shù)據(jù)開銷。這里以圖4所示的拓撲結(jié)構(gòu)為例,圖中的葉子通訊需要進行14條數(shù)據(jù)的查詢和14條數(shù)據(jù)的應(yīng)答才能夠完成一次節(jié)點丟失情況的獲取。為了盡可能減少數(shù)據(jù)通訊和操作的復(fù)雜度,本文設(shè)計了一種基于網(wǎng)關(guān)——葉子節(jié)點通訊的節(jié)點丟失情況獲取方法,以便用較少的數(shù)據(jù)通訊量和簡單的操作來實現(xiàn)網(wǎng)絡(luò)中聽有節(jié)點的丟失情況獲取。
研究發(fā)現(xiàn),失步函數(shù)的觸發(fā)可以通過加入數(shù)據(jù)通訊來實現(xiàn)。因為在數(shù)據(jù)發(fā)送的過程中,協(xié)議棧會開啟數(shù)據(jù)發(fā)送流程,數(shù)據(jù)發(fā)送后則會自動檢測接收方應(yīng)答幀。這樣,如果節(jié)點丟失,則發(fā)送節(jié)點無法接收到有效應(yīng)答,進而引發(fā)節(jié)點失步指示函數(shù)的觸發(fā)。
具體觸發(fā)時,如果節(jié)點之間有數(shù)據(jù)通訊,發(fā)送數(shù)據(jù)節(jié)點則能夠發(fā)現(xiàn)接收數(shù)據(jù)節(jié)點的丟失,從而引發(fā)vold ZDOSynclndicationCB(byte type,uint16 shortAddr)函數(shù)的調(diào)用。
評論