陳斌,楊俊杰
(上海電力學院電子與信息工程學院,上海 200090)
自從無線傳感器網(wǎng)絡(W ireless Sensor Networks,WSN)技術誕生以來,就一直受到國內(nèi)外的廣泛關注,而伴隨著通信技術、計算機技術等各類技術的快速發(fā)展,無線傳感器網(wǎng)絡的系統(tǒng)功能也變得日益強大,到目前為止,無線傳感器網(wǎng)絡已運用于多種環(huán)境,可以為各類監(jiān)測提供幫助.[1]無線傳感器網(wǎng)絡節(jié)點的類型主要包括匯聚節(jié)點(Sink節(jié)點)、任務管理節(jié)點和終端節(jié)點3種.[2]自傳感器網(wǎng)絡節(jié)點部署開始,經(jīng)過較長時間運行后可能會發(fā)生故障,但是由于傳感器網(wǎng)絡處在無人監(jiān)控和檢查的狀態(tài),它本身運行的狀態(tài)無從得知,為了更好地了解節(jié)點狀態(tài),就需要對節(jié)點進行故障診斷.目前,雖然有各種故障診斷算法的研究,但對診斷系統(tǒng)的設計卻很少,因此本文提出一種無線傳感器網(wǎng)絡故障診斷系統(tǒng)的設計方案.
WSN故障診斷系統(tǒng)由節(jié)點定位模塊、故障診斷模塊和終端處理模塊3部分組成.系統(tǒng)整體結構如圖1所示.
圖1 系統(tǒng)整體結構
(1)節(jié)點定位模塊在部署無線傳感器網(wǎng)絡節(jié)點后,系統(tǒng)可以在計算機終端界面上顯示出各節(jié)點的大致位置.
(2)故障診斷模塊系統(tǒng)的核心部分,計算機終端通過Sink節(jié)點發(fā)布一條故障監(jiān)測指令,使各節(jié)點開始進行故障監(jiān)測,然后作出故障診斷,再將診斷結果發(fā)回計算機終端.
(3)終端處理模塊針對無線傳感器網(wǎng)絡發(fā)回的各種信息進行提取,然后按照步驟進行處理,最終將結果顯示在計算機界面上.
當無線傳感器網(wǎng)絡節(jié)點隨意部署在無人監(jiān)控的環(huán)境中時,系統(tǒng)需要對節(jié)點進行定位,然后在系統(tǒng)界面上顯示出各節(jié)點的大致位置,便于診斷出故障后,在界面上顯示故障節(jié)點.
在傳感器網(wǎng)絡的定位技術中,可以分為兩類節(jié)點:一類稱為信標節(jié)點,它表示節(jié)點已經(jīng)知道自身的位置;另一類則是不知道自身位置的節(jié)點,稱為未知節(jié)點.在無線傳感器網(wǎng)絡中信標節(jié)點的數(shù)量較少,為了確定信標節(jié)點的位置,通常可以使節(jié)點攜帶GPS定位設備等來進行定位.[3]未知節(jié)點則通過參考信標節(jié)點的位置來確定自身位置.
基于三邊測量法的實用性,本系統(tǒng)采用此方法實現(xiàn)節(jié)點的定位.已知a,b,c 3個節(jié)點的坐標為(x1,y1),(x2,y2),(x3,y3),它們到未知節(jié)點d的距離分別為d1,d2,d3.假設節(jié)點d的坐標為(x,y),則可以得到:
因此,通過上述方法,在已知3個無線傳感器網(wǎng)絡節(jié)點的坐標位置的情況下,就可以求出未知節(jié)點的位置.
無線傳感器網(wǎng)絡的節(jié)點故障可以分為硬故障和軟故障兩類.[4]當傳感器節(jié)點的某一模塊發(fā)生故障(如節(jié)點能量由于運行到一定時間耗盡或者其通信模塊由于某些因素發(fā)生故障等),導致其不能與附近節(jié)點通信的,稱之為硬故障;傳感器節(jié)點雖然發(fā)生故障,但其通信模塊正常,并且可以繼續(xù)工作,與其他節(jié)點正常通信,只是節(jié)點感知或者傳送的數(shù)據(jù)不正確的,稱之為軟故障.[5]本文的設計主要針對的是節(jié)點的軟故障.
無線傳感器網(wǎng)絡故障診斷技術根據(jù)其診斷過程集中與否,可以分為集中式和分布式兩種.
目前,無線傳感器網(wǎng)絡故障診斷技術大部分采用基于Sink節(jié)點的集中式診斷機制,在這些診斷技術中每個傳感器節(jié)點定期向基站傳送控制數(shù)據(jù)分組以匯報其狀態(tài)信息.文獻[6]提出了一個管理體系結構MANNA,該體系結構創(chuàng)建一個管理中心,通過掌握整個網(wǎng)絡的全局信息,如網(wǎng)絡覆蓋圖、能量損耗圖等,實現(xiàn)對網(wǎng)絡的實時檢測.文獻[7]通過收集傳感器網(wǎng)絡節(jié)點的鄰居列表來生成可視化的網(wǎng)絡拓撲圖,并以此來判斷網(wǎng)絡連接的可靠性.集中式的診斷方法由于能夠獲得完整的網(wǎng)絡狀態(tài)信息,因而能夠得到較為準確的診斷結果.但它會占用過多的通信開銷,影響網(wǎng)絡的正常應用.
分布式故障診斷方法是通過每個節(jié)點自行判斷狀態(tài),并依靠鄰居節(jié)點的輔助信息進行故障診斷.由于分布式故障診斷方法能夠有效減小由診斷所引起的通信開銷,因此本系統(tǒng)主要采用此診斷方法.此外,文獻[8]提出的Distributed Fault Detection(DFD)算法,其主要思想是被檢測節(jié)點通過與鄰居節(jié)點比較測量值來判斷自身狀態(tài),該算法充分利用節(jié)點的分布式特性,具有很強的靈活性和自組織能力,因此本系統(tǒng)采用DFD故障診斷方法來實現(xiàn)節(jié)點的故障診斷.
故障診斷程序是在節(jié)點內(nèi)部運行的,程序包括診斷觸發(fā)和診斷方法執(zhí)行兩個階段,并且最終由故障節(jié)點向Sink節(jié)點發(fā)送故障信息,并由Sink節(jié)點通過串口向計算機終端轉發(fā)信息,計算機終端讀取信息后進行判別,確定是故障信息后再通過系統(tǒng)主界面顯示.
本系統(tǒng)內(nèi)無線傳感器網(wǎng)絡節(jié)點采用的路由協(xié)議為匯聚協(xié)議,在節(jié)點部署初期,各節(jié)點即可得知其鄰節(jié)點,因此設計基于DFD方法的故障診斷程序更符合需求.
3.3.1 診斷觸發(fā)機制
分布式故障診斷算法適用于節(jié)點部署較多且密集的場合,此時節(jié)點間的距離較為接近,節(jié)點間同一時刻測量的值(本系統(tǒng)測量的是溫度值)相差不多,其差值dtij應該小于所設定的閾值θ,我們將閾值θ設為節(jié)點測量值的正常波動范圍.如果某個節(jié)點發(fā)生故障,其與相鄰節(jié)點間的測量值的差dtij可能會超過θ,由此可知啟動診斷過程的觸發(fā)機制為dtij大于θ.根據(jù)實際需要的不同來設定閾值θ的大小,這樣可以更加精確地確定無線傳感器網(wǎng)絡的故障.
3.3.2 診斷方法執(zhí)行過程
(1)更新節(jié)點間的狀態(tài)關系首先使各節(jié)點執(zhí)行故障監(jiān)測,Sink節(jié)點發(fā)布一條命令,通知網(wǎng)絡中所有節(jié)點更新節(jié)點間的狀態(tài)關系Cij.當一個節(jié)點收到執(zhí)行故障監(jiān)測的信息后,與周圍鄰節(jié)點協(xié)調后開始執(zhí)行故障監(jiān)測.第一步,收到故障監(jiān)測信息的節(jié)點Si和它的一個鄰節(jié)點Sj,先設置其狀態(tài)關系Cij=0,如果,則Cij=1,否則Cij= 0.第二步,將節(jié)點Si與每個鄰節(jié)點進行上述操作,并保存測試結果.
(2)初步確定節(jié)點自身狀態(tài)為了初步確定節(jié)點自身狀態(tài),需要執(zhí)行如下計算.
一是計算各個Cij值的和,如果:
則節(jié)點狀態(tài)Ri=LT(可能故障),否則Ri=LG(可能正常).式中的Num(N(Si))為節(jié)點i的鄰居節(jié)點總數(shù).
二是對N(Si)中的每個節(jié)點重復前面的步驟判斷其狀態(tài).
(3)最終判定節(jié)點是否故障對N(Si)中每個節(jié)點Sj而言,其實際狀態(tài)可能正常也可能是故障,所以利用Cij來判定Si的初步結果可能是錯誤的,不能就此立刻判定節(jié)點Si是否故障,因此需要進行第3次計算來真正確定節(jié)點Si是否故障.第1步,計算N(Si)中初步診斷狀態(tài)為LG且與節(jié)點Si間測試結果為Cij=0的節(jié)點數(shù)a;第2步,計算N (Si)中初步診斷狀態(tài)為LG且與節(jié)點Si間測試結果Cij=1的節(jié)點數(shù)b;第3步,計算a-b的值,若:
則Ri=GD(節(jié)點正常),否則Ri=FT(節(jié)點故障).
系統(tǒng)工作流程如圖2所示.
圖2 系統(tǒng)工作流程
系統(tǒng)啟動時,計算機終端通過Sink節(jié)點發(fā)布一條請求節(jié)點定位的命令,節(jié)點通過自身設計好的定位功能模塊測量出與3個信標節(jié)點的距離d1,d2,d3,并發(fā)送回計算機終端,由終端計算出未知節(jié)點的坐標,然后在系統(tǒng)界面上顯示.如果計算機終端想知道是否有節(jié)點發(fā)生故障,則需要發(fā)布一條故障監(jiān)測命令使節(jié)點啟動檢測,檢測完成后發(fā)回檢測結果,再由計算機終端在系統(tǒng)界面顯示檢測結果.
終端處理模塊的界面設計基于.NET框架的智能客戶端技術,使用了pictureBox控件顯示節(jié)點的具體位置.首先將節(jié)點的坐標按照一定比例縮小為圖形上的坐標,然后利用Graphics類中的畫圖方法將節(jié)點的圖像畫在pictureBox控件的相應位置.系統(tǒng)主界面如圖3所示.
圖3 系統(tǒng)主界面
本文在研究無線傳感器網(wǎng)絡節(jié)點故障診斷方法的基礎上設計了節(jié)點故障診斷軟件,結合三邊測量定位方法,利用.NET框架的智能客戶端技術,對整個無線傳感器網(wǎng)絡故障診斷系統(tǒng)進行設計.該系統(tǒng)只要知道了3個節(jié)點的位置,就可對其余節(jié)點進行定位,而且用戶可以根據(jù)需要自主查詢是否有節(jié)點出現(xiàn)故障,所有關于節(jié)點位置和故障的信息都可以在系統(tǒng)主界面上顯示,用戶可以直觀地了解節(jié)點的分布及故障情況.因此,本系統(tǒng)的設計開發(fā)具有良好的應用前景.
[1]李曉維.無線傳感器網(wǎng)絡技術[M].北京:北京理工大學出版社,2007:7-9.
[2]霍梅梅,鄭增威,周曉偉.移動傳感器網(wǎng)絡及其路由協(xié)議研究進展[J].計算機應用研究,2009,26(11):4 010-4 013.
[3]傅明磊,董慧穎.無線傳感器網(wǎng)絡節(jié)點定位技術研究[J].科技咨詢導報,2007(3):28-29.
[4]CHESSA S,SANTI P.Crash faults identification in w ireless sensor networks[J].Computer Communications,2002,25 (14):1 273-1 282.
[5]季賽,袁慎芳,李含光.WSN中故障診斷性能與平均節(jié)點度研究[J].計算機工程,2010,36(7):14-16.
[6]RUIZ L B,SIQUERIA I G,WONG H C,et al.Fault management in even-driven w ireless sensor network[C]∥Proceedings of the 7th ACM Internetional Sysmposium on Modeling,Analysis and Simulation of W ireless and Mobile Systems,ACM,2004:149-156.
[7]WOO A,TONG T,CULLER D.Tam ing the underlying challenges of reliablemultihop routing in sensor network[C]∥Proceedings of the 1st Internetional Conference on Embedded Network Sensor Systems,ACM,2003:14-27.
[8]CHEN J,KHER S,SOMANIA.Distributed fault detection of w ireless sensor networks[C]∥Proceedings of the 2006Workshop on Dependability Issues in W ireless ad Hoc Networks and Sensor Networks,ACM,2006:65-72.
(編輯胡小萍)