技術(shù)領(lǐng)域:
本發(fā)明涉及無線傳感器網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種無線傳感器網(wǎng)絡(luò)中的傳感器節(jié)點(diǎn)的故障診斷測試方法。
背景技術(shù):
:
無線傳感器網(wǎng)絡(luò)是由部署在監(jiān)測區(qū)域內(nèi)大量的傳感器節(jié)點(diǎn)組成,通過無線通信方式形成的一個(gè)多跳自組織網(wǎng)絡(luò)。無線傳感器網(wǎng)絡(luò)可用于環(huán)境的監(jiān)測與保護(hù)、醫(yī)療護(hù)理、目標(biāo)跟蹤及軍事偵測等領(lǐng)域。傳感器節(jié)點(diǎn)大多隨機(jī)部署在野外環(huán)境中,網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量龐大、傳感器類型多樣、網(wǎng)絡(luò)拓?fù)涞膭?dòng)態(tài)性以及節(jié)點(diǎn)資源受限的特性使得節(jié)點(diǎn)時(shí)常會(huì)出現(xiàn)各種故障。無線傳感器網(wǎng)絡(luò)中的故障檢測是指當(dāng)傳感器節(jié)點(diǎn)發(fā)生故障時(shí),節(jié)點(diǎn)所采集到的數(shù)據(jù)可能是不正確的,從而導(dǎo)致無線傳感器網(wǎng)絡(luò)對監(jiān)測信息的錯(cuò)誤判斷,特別是在檢測精確度要求較高的應(yīng)用領(lǐng)域,信息的準(zhǔn)確性是至關(guān)重要的,所以對無線傳感器網(wǎng)絡(luò)的故障檢測是必不可少的,也是值得研究的。
關(guān)于節(jié)點(diǎn)故障檢測算法的研究已經(jīng)有很多,大致可分為五類:基于多數(shù)投票策略的算法、基于中值策略的算法、基于決策擴(kuò)散策略的算法、基于加權(quán)的算法、基于分簇的算法。
當(dāng)我們想了解網(wǎng)絡(luò)中某個(gè)節(jié)點(diǎn)故障與否的狀態(tài)時(shí),傳統(tǒng)的系統(tǒng)診斷需要收息網(wǎng)絡(luò)中所有的測試結(jié)果,然后才能夠判斷該節(jié)點(diǎn)的狀態(tài),在實(shí)際的應(yīng)用中,該方法的測試時(shí)間長且消耗大量節(jié)點(diǎn)的電量。而基于多數(shù)投票策略算法,由于需要待診斷節(jié)點(diǎn)周圍所有鄰居節(jié)點(diǎn)協(xié)助該節(jié)點(diǎn)進(jìn)行測試,診斷測試的使用時(shí)間與鄰居節(jié)點(diǎn)數(shù)成正比。同時(shí),該方法的診斷測試可靠性容易受到鄰居節(jié)點(diǎn)故障與否的狀態(tài)所影響。
盡管無線傳感器網(wǎng)絡(luò)故障診斷技術(shù)的研究已經(jīng)有了長足的進(jìn)步,發(fā)展出了包括自診斷、基于分簇、基于測試等在內(nèi)的多種類型的診斷方式。但是隨著無線傳感器網(wǎng)絡(luò)應(yīng)用領(lǐng)域的擴(kuò)大,部署環(huán)境的多樣性和復(fù)雜程度對故障診斷算法的性能帶來了新挑戰(zhàn),因此研究新的適用于復(fù)雜環(huán)境下無線傳感器網(wǎng)絡(luò)的故障診斷算法是非常有意義的。另外,鑒于傳感器節(jié)點(diǎn)本身能量有限的性質(zhì),在大規(guī)模的進(jìn)行系統(tǒng)診斷的過程中,如何有效地減少不必要的測試次數(shù),避免無謂的能量損耗也是非常必要的。
技術(shù)實(shí)現(xiàn)要素:
本申請?zhí)峁┝艘环N無線傳感器網(wǎng)絡(luò)中的傳感器節(jié)點(diǎn)的故障診斷測試方法,僅需待診斷節(jié)點(diǎn)周圍部分節(jié)點(diǎn)的測試結(jié)果,大量減少不必要的測試,并且通過使用本發(fā)明所設(shè)計(jì)的診斷測試結(jié)構(gòu),避免診斷測試過程中信號傳遞時(shí)發(fā)生信號沖突,此外,本發(fā)明的診斷測試方法可以并行處理,有效減少診斷測試的時(shí)間。
第一方面,本申請?zhí)峁┝艘环N并行診斷測試方法,該方法包括以下步驟:
(1)確定待診斷節(jié)點(diǎn);
(2)判斷是否需要為所述帶診斷節(jié)點(diǎn)建立診斷測試結(jié)構(gòu),如果是,執(zhí)行步驟(3),如果否,直接執(zhí)行步驟(4);
(3)建立基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu);
(4)根據(jù)診斷測試結(jié)構(gòu)執(zhí)行診斷測試;
(5)根據(jù)診斷測試結(jié)果判斷待診斷節(jié)點(diǎn)是否為故障節(jié)點(diǎn)。
優(yōu)選地,所述建立基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu)具體包括以下步驟:
由待診斷節(jié)點(diǎn)su或系統(tǒng)設(shè)定所述診斷測試結(jié)構(gòu)的最大層數(shù)lmax與最大子節(jié)點(diǎn)個(gè)數(shù)cmax,其中1≤cmax≤|n(su)|,n(su)為待診斷節(jié)點(diǎn)su的鄰居節(jié)點(diǎn)集合。生成su的候選子節(jié)點(diǎn)集,挑選cmax個(gè)鄰居節(jié)點(diǎn)個(gè)數(shù)最多的節(jié)點(diǎn)
對于第i層的節(jié)點(diǎn)si,j,其中2≤i≤lmax且1≤j≤cmax,確定節(jié)點(diǎn)si,j的候選子節(jié)點(diǎn)集ai,j。若|ai,j|≥1并且i<lmax-1,則在ai,j中挑選擁有最多鄰居節(jié)點(diǎn)的那個(gè)候選子節(jié)點(diǎn)作為si+1,j或者隨機(jī)選擇一個(gè)候選子節(jié)點(diǎn)作為si+1,j;若|ai,j|≥1并且i=lmax-1,則隨機(jī)選擇一個(gè)候選子節(jié)點(diǎn)作為si+1,j;若|ai,j|=0或i=lmax,那么就停止選取si,j的子節(jié)點(diǎn)。
優(yōu)選地,將su的全部鄰居節(jié)點(diǎn)加入到候選子節(jié)點(diǎn)集以生成su的候選子節(jié)點(diǎn)集。
優(yōu)選地,確定節(jié)點(diǎn)si,j的候選子節(jié)點(diǎn)集ai,j具體為直接使用si,j的鄰居集合生成ai,j。
優(yōu)選地,確定節(jié)點(diǎn)si,j的候選子節(jié)點(diǎn)集ai,j具體方法為:
對所有與節(jié)點(diǎn)si,j相鄰的節(jié)點(diǎn)y,若節(jié)點(diǎn)y滿足下列兩個(gè)條件則將節(jié)點(diǎn)y放入節(jié)點(diǎn)si,j的候選子節(jié)點(diǎn)集ai,j中:
(1)節(jié)點(diǎn)y與節(jié)點(diǎn)su的距離等于節(jié)點(diǎn)si,j與節(jié)點(diǎn)su的距離加1;
(2)節(jié)點(diǎn)y與節(jié)點(diǎn)su的診斷結(jié)構(gòu)第i層中除了節(jié)點(diǎn)si,j之外的所有節(jié)點(diǎn)都不相鄰。
優(yōu)選地,所述根據(jù)診斷測試結(jié)構(gòu)執(zhí)行診斷測試具體為:
第一輪診斷測試:對所有的1≤j≤cmax且
第二輪診斷測試:對所有的1≤j≤cmax且
第三輪診斷測試:對所有的1≤j≤cmax且
所述感測信息比較具體為:
節(jié)點(diǎn)x向節(jié)點(diǎn)y發(fā)送比較請求與感測時(shí)刻t;
節(jié)點(diǎn)x與y同時(shí)在時(shí)刻t感測環(huán)境信息以獲取自己的感測值vx與vy;
節(jié)點(diǎn)y將vy發(fā)送給節(jié)點(diǎn)x;
節(jié)點(diǎn)x收到y(tǒng)的測量值后,將vx與vy相比較,如果|vx-vy|≤θ,其中θ是事先設(shè)定的閾值,則感測信息比較結(jié)果c(x,y)=0;如果|vx-vy|>θ,則感測信息比較結(jié)果c(x,y)=1。
所述根據(jù)診斷測試結(jié)果判斷待診斷節(jié)點(diǎn)是否為故障節(jié)點(diǎn)具體為:
對所有的1≤j≤cmax,由s1,j收集第j列于前三輪所完成的感測信息比較結(jié)果
優(yōu)選地,所述環(huán)境信息包括溫度、濕度。
第二方面,本申請?zhí)峁┝艘环N用于執(zhí)行權(quán)利要求1-8任一方法的并行診斷測試系統(tǒng),該系統(tǒng)包括:
確定模塊,用于確定待診斷節(jié)點(diǎn);
判斷模塊,用于判斷是否需要為所述帶診斷節(jié)點(diǎn)建立診斷測試結(jié)構(gòu),如果是,則通知診斷測試結(jié)構(gòu)建立模塊以建立基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu),如果否,則通知診斷測試模塊執(zhí)行診斷測試;
診斷測試結(jié)構(gòu)建立模塊,用于建立基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu);
診斷測試模塊,用于根據(jù)診斷測試結(jié)構(gòu)執(zhí)行診斷測試;
診斷結(jié)果判斷模塊,用于根據(jù)診斷測試結(jié)果判斷待診斷節(jié)點(diǎn)是否為故障節(jié)點(diǎn)。
附圖說明
圖1是本發(fā)明并行診斷測試方法流程圖
圖2是基于待診斷節(jié)點(diǎn)的診斷結(jié)構(gòu)示意圖
圖3是構(gòu)造圖2中的診斷測試結(jié)構(gòu)的流程圖
圖4是本發(fā)明實(shí)施例的第一輪測試示意圖
圖5是本發(fā)明實(shí)施例的第二輪測試示意圖
圖6是本發(fā)明實(shí)施例的第三輪測試示意圖
圖7是本發(fā)明實(shí)施例的第四輪測試示意圖
具體實(shí)施方式
現(xiàn)在將參照附圖詳細(xì)說明本發(fā)明構(gòu)思的特定實(shí)施例。
首先,針對本發(fā)明中使用的術(shù)語的含義定義如下:在無線傳感器網(wǎng)絡(luò)中,如果兩個(gè)傳感器節(jié)點(diǎn)p與節(jié)點(diǎn)q的距離在彼此的通信半徑以內(nèi),那么就稱這兩個(gè)節(jié)點(diǎn)是相鄰的,即節(jié)點(diǎn)p是距離節(jié)點(diǎn)q的一跳節(jié)點(diǎn)。我們稱節(jié)點(diǎn)p與節(jié)點(diǎn)q的距離是k跳,表示p和q之間的最少跳數(shù)為k。令dis(p,q)表示節(jié)點(diǎn)p與節(jié)點(diǎn)q之間的距離。
如圖1所示,本發(fā)明的并行診斷測試方法開始后,首先需要判斷是否要為待診斷節(jié)點(diǎn)建立診斷測試結(jié)構(gòu),如果不需要,則直接開始診斷測試,如果需要,則構(gòu)造基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu);在構(gòu)造所述診斷測試結(jié)構(gòu)之后,利用所述診斷測試結(jié)構(gòu)進(jìn)行診斷測試。
圖2顯示了示例性的基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu)示意圖,其中,su為待診斷節(jié)點(diǎn),該示例性的診斷測試結(jié)構(gòu)是一個(gè)五層的結(jié)構(gòu),每一層包括的節(jié)點(diǎn)數(shù)可以相同也可以不同,令si,j表示該診斷測試結(jié)構(gòu)中第i層第j列的節(jié)點(diǎn),ni表示第i層的所有節(jié)點(diǎn)個(gè)數(shù)。
下面參照圖3解釋上述診斷測試結(jié)構(gòu)的建立方法。
首先我們定義建立所述診斷測試結(jié)構(gòu)過程中用到的候選子節(jié)點(diǎn)集,即:若節(jié)點(diǎn)x是待診斷節(jié)點(diǎn)su,則x的候選子節(jié)點(diǎn)集為節(jié)點(diǎn)x的所有鄰居節(jié)點(diǎn)集;若節(jié)點(diǎn)x為待診斷節(jié)點(diǎn)su的診斷結(jié)構(gòu)中第i層節(jié)點(diǎn)(2≤i≤lmax-1),則節(jié)點(diǎn)x的候選子節(jié)點(diǎn)集的選擇方式如下:
對所有與節(jié)點(diǎn)x相鄰的節(jié)點(diǎn)y,若節(jié)點(diǎn)y滿足下列兩個(gè)條件則將節(jié)點(diǎn)y放入節(jié)點(diǎn)x的候選子節(jié)點(diǎn)集中:
(1)節(jié)點(diǎn)y與節(jié)點(diǎn)su的距離等于節(jié)點(diǎn)x與節(jié)點(diǎn)su的距離加1。
(2)節(jié)點(diǎn)y與節(jié)點(diǎn)su的診斷結(jié)構(gòu)第i層中除了節(jié)點(diǎn)x之外的所有節(jié)點(diǎn)都不相鄰。
令a為節(jié)點(diǎn)su的診斷結(jié)構(gòu)中與x在同一層的所有節(jié)點(diǎn)集,且n(x)為節(jié)點(diǎn)x的鄰居節(jié)點(diǎn)集,節(jié)點(diǎn)x的候選子節(jié)點(diǎn)集的產(chǎn)生代碼描述如下:
輸入:節(jié)點(diǎn)x,待診斷節(jié)點(diǎn)su
輸出:節(jié)點(diǎn)x的候選子節(jié)點(diǎn)集b
參見圖3,建立所述診斷測試結(jié)構(gòu)的方法包括:
1.由待診斷節(jié)點(diǎn)su或系統(tǒng)設(shè)定所述診斷測試結(jié)構(gòu)的最大層數(shù)lmax與最大子節(jié)點(diǎn)個(gè)數(shù)cmax,其中1≤cmax≤|n(su)|,生成su的候選子節(jié)點(diǎn)集,挑選cmax個(gè)鄰居節(jié)點(diǎn)個(gè)數(shù)最多節(jié)點(diǎn)
2.從第二層開始,按照下述步驟挑選第i層的節(jié)點(diǎn)si,j,其中2≤i≤lmax且1≤j≤cmax。我們用集合ai,j表示節(jié)點(diǎn)si,j的候選子節(jié)點(diǎn)集,當(dāng)節(jié)點(diǎn)si,j存在時(shí),用上述候選子節(jié)點(diǎn)集的產(chǎn)生方法產(chǎn)生或是直接使用si,j的鄰居集合生成ai,j;若|ai,j|≥1并且i<lmax-1,則在ai,j中挑選擁有最多鄰居節(jié)點(diǎn)的那個(gè)候選子節(jié)點(diǎn)作為si+1,j或者隨機(jī)選擇一個(gè)候選子節(jié)點(diǎn)作為si+1,j;若|ai,j|≥1并且i=lmax-1,則隨機(jī)選擇一個(gè)候選子節(jié)點(diǎn)作為si+1,j;若|ai,j|=0或i=lmax,那么就停止選取si,j的子節(jié)點(diǎn)。
假設(shè)lmax=5且cmax=4時(shí),圖2顯示了對于節(jié)點(diǎn)su所建立的示例性的診斷測試結(jié)構(gòu),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,該診斷測試結(jié)構(gòu)只是一個(gè)示例性的診斷測試結(jié)構(gòu),而不是唯一的診斷測試結(jié)構(gòu)。
根據(jù)上述步驟中描述的關(guān)于待診斷節(jié)點(diǎn)su的診斷測試結(jié)構(gòu),可以進(jìn)一步執(zhí)行診斷操作,以得到su故障與否的狀態(tài)。本發(fā)明利用無線傳感器網(wǎng)絡(luò)感測信息的時(shí)空相關(guān)性進(jìn)行診斷測試。所謂時(shí)空相關(guān)性,是指在物理空間距離接近的兩個(gè)節(jié)點(diǎn)在相近的時(shí)刻所采集的信息會(huì)相同或相近。令c(x,y)表示節(jié)點(diǎn)x對節(jié)點(diǎn)y進(jìn)行感測信息比較的結(jié)果,若感測信息相近,則令c(x,y)=0;反之,若感測信息相差較大,則令c(x,y)=1。當(dāng)節(jié)點(diǎn)x想要與節(jié)點(diǎn)y進(jìn)行感測信息比較,則節(jié)點(diǎn)x向節(jié)點(diǎn)y發(fā)送比較請求與感測時(shí)刻t,然后x與y同時(shí)在時(shí)刻t感測環(huán)境信息以獲取自己的感測值vx與vy(如感測溫度、濕度等),且y發(fā)送vy給x。當(dāng)x收到y(tǒng)的測量值后,將vx與vy相比較,如果|vx-vy|≤θ,其中θ是事先設(shè)定的閾值,那么說明x與y的測量值之差是在允許的差值范圍內(nèi),即感測信息相近,則c(x,y)=0;如果|vx-vy|>θ,即感測信息相差較大,則c(x,y)=1。
令lj表示su的診斷結(jié)構(gòu)中第j列的實(shí)際最大層數(shù)。下面具體描述診斷測試的過程,該過程一共分為四輪,依序進(jìn)行。同時(shí)每一輪中的所有診斷測試可并行進(jìn)行。
第一輪診斷測試:對所有的1≤j≤cmax且
第二輪診斷測試:對所有的1≤j≤cmax且
第三輪診斷測試:對所有的1≤j≤cmax且
第四輪診斷測試:對所有的1≤j≤cmax,首先s1,j收集該列于前三輪所完成的感測信息比較結(jié)果
如圖4所示,加粗箭頭表示第一輪執(zhí)行的診斷操作。因?yàn)榇颂幟恳涣械淖畲髮訑?shù)分別為5、3、4、5,所以第一輪中同時(shí)用節(jié)點(diǎn)s2,1測試節(jié)點(diǎn)s1,1,用節(jié)點(diǎn)s2,2測試節(jié)點(diǎn)s1,2,用節(jié)點(diǎn)s2,3測試節(jié)點(diǎn)s1,3,用節(jié)點(diǎn)s2,4測試節(jié)點(diǎn)s1,4,用節(jié)點(diǎn)s5,1測試節(jié)點(diǎn)s4,1,用節(jié)點(diǎn)s5,4測試節(jié)點(diǎn)s4,4。
如圖5所示,加粗箭頭表示第二輪執(zhí)行的診斷操作。第二輪中同時(shí)用節(jié)點(diǎn)s3,1測試節(jié)點(diǎn)s2,1,用節(jié)點(diǎn)s3,2測試節(jié)點(diǎn)s2,2,用節(jié)點(diǎn)s3,3測試節(jié)點(diǎn)s2,3,用節(jié)點(diǎn)s3,4測試節(jié)點(diǎn)s2,4。
如圖6所示,加粗箭頭表示第三輪執(zhí)行的診斷操作。第三輪中同時(shí)用節(jié)點(diǎn)s4,1測試節(jié)點(diǎn)s3,1,用節(jié)點(diǎn)s4,3測試節(jié)點(diǎn)s3,3,用節(jié)點(diǎn)s4,4測試節(jié)點(diǎn)s3,4。
如圖7所示,四列節(jié)點(diǎn)的測試結(jié)果序列分別為:<0,0,0,0>,<0,0>,<0,1,0>,<0,0,1,0>。顯然在第一列中,從首位開始有四個(gè)連續(xù)的0且連續(xù)0個(gè)數(shù)在這四個(gè)序列中最多,因此選擇節(jié)點(diǎn)s1,1來測試待診斷節(jié)點(diǎn)su。此處需注意,假設(shè)有一序列為<1,1,0,0,1>,因?yàn)樾蛄械氖孜粩?shù)字為1,所以該序列從首位開始連續(xù)0的個(gè)數(shù)為0。
本申請還提供了一種并行診斷測試系統(tǒng),該系統(tǒng)包括:
確定模塊,用于確定待診斷節(jié)點(diǎn);
判斷模塊,用于判斷是否需要為所述帶診斷節(jié)點(diǎn)建立診斷測試結(jié)構(gòu),如果是,則通知診斷測試結(jié)構(gòu)建立模塊以建立基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu),如果否,則通知診斷測試模塊執(zhí)行診斷測試;
診斷測試結(jié)構(gòu)建立模塊,用于建立基于待診斷節(jié)點(diǎn)的診斷測試結(jié)構(gòu);
診斷測試模塊,用于根據(jù)診斷測試結(jié)構(gòu)執(zhí)行診斷測試;
診斷結(jié)果判斷模塊,用于根據(jù)診斷測試結(jié)果判斷待診斷節(jié)點(diǎn)是否為故障節(jié)點(diǎn)。
本發(fā)明的診斷測試方式對于待診斷節(jié)點(diǎn)的診斷測試僅需收集該節(jié)點(diǎn)周圍部分節(jié)點(diǎn)的測試結(jié)果,大量減少不必要的測試,并且該診斷測試方法使用本發(fā)明所設(shè)計(jì)的診斷測試結(jié)構(gòu),在診斷測試的過程中能夠避免信號傳遞時(shí)發(fā)生信號沖突的問題。
此外,該診斷測試方法的診斷測試能夠并行處理,有效減少診斷測試的時(shí)間。由于診斷測試需要收集基于診斷結(jié)構(gòu)中的診斷測試結(jié)果,同時(shí)該診斷測試以并行的方式進(jìn)行輪的測試,所以診斷測試的時(shí)間約等于信號傳遞所使用的時(shí)間,也就是診斷測試結(jié)構(gòu)中與待診斷測試節(jié)點(diǎn)距離最遠(yuǎn)的節(jié)點(diǎn)的距離,然后加上倍的單次診斷測試所花費(fèi)的時(shí)間,診斷測試的總花費(fèi)時(shí)間較短。
以上實(shí)施例僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。