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