楊兆輝+梁麗麗+姜宇
[摘 要] 針對無線傳感器網絡節(jié)點在網絡中失去連接變成鏈路故障節(jié)點問題,提出了一種優(yōu)化的基于ZigBee傳感器網絡設計思路。利用節(jié)點感知自身網絡連接狀態(tài)變化的方式,減少了網絡資源的消耗;利用節(jié)點轉移的方式,擴展了節(jié)點重新加入網絡的處理機制。仿真實驗證明,該方法有效地增加了故障節(jié)點重新加入網絡的成功率。
[關鍵詞] ZigBee;故障節(jié)點;網絡失聯(lián);子樹節(jié)點
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2017. 17. 074
[中圖分類號] TP212.9 [文獻標識碼] A [文章編號] 1673 - 0194(2017)17- 0163- 02
0 引 言
近年來,隨著物聯(lián)網技術的飛速發(fā)展,作為物聯(lián)網技術的基礎支撐技術之一的無線傳感器網絡技術也不斷成熟。Zig Bee 專注于無線通信網絡技術,也是嵌入式應用的一大熱點,針對孤立子樹的問題應用動態(tài)重構樹方法恢復,但此節(jié)點若要重新加入網絡不能更充分地利用地址空間。
1 ZigBee網絡自主配置技術
1.1 ZigBee網絡鏈路故障
鏈路故障節(jié)點是指失去網絡連接的節(jié)點,在樹形拓撲結構中找不到父節(jié)點,當與父節(jié)點失聯(lián)后,在樹形拓撲結構中ZigBee的數(shù)據(jù)采集是向匯聚節(jié)點發(fā)送信息,所以當鏈路故障發(fā)生后也就無法成功地向匯聚節(jié)點發(fā)送數(shù)據(jù)。
在這個樹形拓撲結構中節(jié)點需要和協(xié)調器保持數(shù)據(jù)同步,此時R1節(jié)點失去網絡連接,那么R1與R2就會斷開,R2以及后代節(jié)點也就形成了孤立子樹,無法再接收到同步消息。
1.2 鏈路故障節(jié)點重新加入網絡自主配置方案設計
1.2.1 無子節(jié)點的鏈路故障節(jié)點
如果鏈路故障節(jié)點無子節(jié)點,當重新發(fā)起網絡請求時,如父節(jié)點有空余的地址空間,則根據(jù)地址分配公式 Cskip 計算網絡地址,如無地址空間則拒絕其加入,該故障節(jié)點會經過一段時間重新再發(fā)起請求。
1.2.2 有子節(jié)點的鏈路故障節(jié)點
若鏈路故障節(jié)點有子節(jié)點,要重新加入網絡就必須考慮孤立子樹問題。鏈路故障節(jié)點充當子樹網絡的代理協(xié)調器,向所有子樹網絡發(fā)送消息,在發(fā)送請求時同時考慮子樹的節(jié)點數(shù)、高度等參數(shù)。如果請求失敗則放棄代理子樹按照鏈路故障節(jié)點重新加入網絡過程。
2 ZigBee網絡設計原型系統(tǒng)實現(xiàn)
2.1 系統(tǒng)的總體實現(xiàn)結構
ZigBee網絡具有自行組網能力,自主配置并收發(fā)數(shù)據(jù),由路由節(jié)點、終端節(jié)點、協(xié)調器節(jié)點組成,而網絡的具體角色需要代碼來設定,由于網絡中只有一個協(xié)調器,所以首先編譯該部分源碼,終端節(jié)點能耗低因此代碼也簡單。
實現(xiàn)步驟:通過Socket接口與網關進行通信實現(xiàn)數(shù)據(jù)收發(fā);緩存區(qū)負責存儲數(shù)據(jù),當緩存區(qū)存滿時就向數(shù)據(jù)庫中插入數(shù)據(jù)也就是數(shù)據(jù)緩存;從緩存表中提取網絡拓撲信息也就是網絡拓撲繪制;軟件把采集到的傳感數(shù)據(jù)存入數(shù)據(jù)庫中,以便提供給用戶查詢也就是數(shù)據(jù)庫管理。
2.2 鏈路網絡狀態(tài)檢測
檢測網絡狀態(tài)只要是對鏈路故障的排查,當節(jié)點已成為故障節(jié)點,故障節(jié)點需要發(fā)起重新加入網絡的申請,啟動用于同步信標的定時器并設置其計數(shù)值,若收到信標消息計數(shù)器清零,否則計數(shù)器值加1,當累加值超過5時,其值的設定一方面依據(jù)Z-Stack 協(xié)議棧源代碼 f8w Config.cfg 文件中的宏定義:-DBEACON_REQUEST_DELAY=1000,為了避免向已發(fā)生故障的節(jié)點發(fā)送數(shù)據(jù),需要在該周期內判斷是否發(fā)生故障。
2.3 更新子樹節(jié)點信息
鏈路故障節(jié)點有子節(jié)點時,如果成功加入網絡,則攜帶的整棵子樹需要更新狀態(tài),此時需要廣播狀態(tài)更新消息,使節(jié)點同步更新高度、地址、網絡等信息,主要代碼如下:
void Sub_Tree_Update(){
SUBTREE_UPDATE sub_update;
for(int i=0;i if(AF_DataRequest(&SampleApp_SubUbdate_DstAddr,// &SampleApp_epDesc, SAMPLEAPP_SUBTREE_UPDATE_CLUSTERID, (uint16)sizeof(sub_update), (uint8*)sub_update, &SampleApp_TranslD, AF_DISCV_ROUTE, //AF_DISCV_ROUTE, AF_DEFAULT_RADIUS==afStatus_SUCCESS){} 3 基于MATLAB仿真平臺實驗測試與結果分析 為了評價基于ZigBee的傳感器網絡設計的性能,本文將與ZigBee標準協(xié)議下的修復能力相關算法應用MATLAB仿真進行了比較。 (1)生成網絡拓撲:在仿真環(huán)境中模擬生成 Zig Bee 網絡節(jié)點。 (2)設置故障點:將帶子節(jié)點的網絡節(jié)點設置為故障節(jié)點。 (3)變化節(jié)點個數(shù):改變ZED和ZR進行測試。 將上述實驗結果換算成節(jié)點加入率,繪制節(jié)點加入率隨節(jié)點數(shù)量變化的曲線圖: 圖1和圖2顯示當 ZED 在節(jié)點中比例越高其節(jié)點加入率急劇下降,在修復鏈路故障后,鏈路故障節(jié)點重新加入網絡處理機制的修復能力比 ZigBee 標準協(xié)議修復能力有所提高,但隨 ZED 比例提高。 基于ZigBee的傳感器網絡設計,可以滿足實際運行的需要。在與 ZigBee 標準協(xié)議對比下,可以看出鏈路故障節(jié)點重新加入網絡處理機制在處理鏈路故障節(jié)點重新加入網絡時的成功率要比 ZigBee 標準協(xié)議有所提高。 主要參考文獻 [1]劉濤濤.基于ZigBee技術的設備狀態(tài)監(jiān)測與故障診斷系統(tǒng)設計[D].太原:中北大學,2014. [2]李蔚.基于ZigBee的無線傳感器網絡通信協(xié)議棧設計與實現(xiàn)[D].成都:電子科技大學,2012. [3] 朱思建.基于開源系統(tǒng)的無線傳感器網絡組網的研究[D].武漢:湖北工業(yè)大學,2014.