本發(fā)明涉及wsn(無線傳感器網(wǎng)絡(luò),wirelesssensornetworks)領(lǐng)域,特別涉及一種基于備份節(jié)點的wsn的組網(wǎng)方法。
背景技術(shù):
在wsn中,無線傳感器節(jié)點一般采用電池供電,且無法更換,同時由于wsn一般部署后,使得網(wǎng)絡(luò)幾乎不能維護,所以需要盡量延長wsn壽命。因此,如何在不影響功能的前提下,最大限度地利用能源、減小網(wǎng)路能量消耗是wsn設(shè)計中的關(guān)鍵問題。
一種好的無線傳感器組網(wǎng)方式無疑是wsn中一種有效的節(jié)能方法。一方面,針對密集節(jié)點部署的樹形結(jié)構(gòu)廣泛應(yīng)用于wsn的情況;另一方面,在不影響數(shù)據(jù)可靠性前提下,有針對性地減少工作中的wsn節(jié)點就可以滿足需求,這樣形成的樹形層次性網(wǎng)絡(luò)結(jié)構(gòu),能最大限度的保證采集區(qū)域中的節(jié)點向上層傳輸?shù)臄?shù)據(jù)量是最小的,同時能達到有效采集的目的。目前缺少一種基于備份節(jié)點實現(xiàn)wsn的組網(wǎng)的方法。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是實現(xiàn)一種通過確定節(jié)點的跳數(shù)、設(shè)置備份節(jié)點等方法最終實現(xiàn)組網(wǎng),達到減少wsn冗余和增加wsn壽命的wsn組網(wǎng)方法。
為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:基于備份節(jié)點的無線傳感器網(wǎng)絡(luò)的組網(wǎng)方法:
1)設(shè)定wsn組網(wǎng)具有sink節(jié)點、主節(jié)點、備份節(jié)點、普通節(jié)點;
2)基于樹形拓撲算法生成wsn,選取距離父節(jié)點最近且距離小于設(shè)定的最小通訊距離的子節(jié)點作為為其備份節(jié)點,同時父節(jié)點設(shè)置為主節(jié)點;
3)當主節(jié)點失效或者能量到達設(shè)定的警戒值時;
4)備份節(jié)點接替主節(jié)點。
所述2)為初始階段包括以下步驟:
步驟1:普通節(jié)點通過定位技術(shù)確定自身位置,跳數(shù)值初始化為無窮大,sink節(jié)點的跳數(shù)值初始化為0;
步驟2:sink節(jié)點向感知范圍內(nèi)的鄰居節(jié)點廣播跳數(shù)值,接收到sink節(jié)點的傳感器節(jié)點跳數(shù)值設(shè)為1;
步驟3:跳數(shù)值為1的節(jié)點,依次向鄰居節(jié)點廣播跳數(shù)值,如果節(jié)點ni收到節(jié)點nj傳輸?shù)奶鴶?shù)值小于本身跳數(shù)值且本身跳數(shù)值為無窮大,則節(jié)點ni將到節(jié)點nj設(shè)為父節(jié)點,并將自己跳數(shù)值設(shè)為節(jié)點nj跳數(shù)值加1,每個父節(jié)點選擇距離最近的子節(jié)點,如果該子節(jié)點距離小于設(shè)定的最小通訊距離rmin,則該子節(jié)點擁有成為備份節(jié)點的資格,然后把該子節(jié)點設(shè)置為備份節(jié)點,父節(jié)點設(shè)置為主節(jié)點,主節(jié)點同備份節(jié)點完成備份信息的同步;如果該節(jié)點距離大于或者等于設(shè)定的最小通訊距離rmin,則父節(jié)點成為普通節(jié)點;
步驟4:每個節(jié)點的子節(jié)點重復上述步驟,直至沒有其他節(jié)點加入傳感器網(wǎng)絡(luò);
步驟5:葉節(jié)點設(shè)置為普通節(jié)點。
所述3)為主節(jié)點工作階段,主節(jié)點處于傳感器網(wǎng)絡(luò)之中,備份節(jié)點不處于傳感器網(wǎng)絡(luò)中,備份節(jié)點定期從休眠狀態(tài)喚醒,發(fā)送查詢消息給主節(jié)點,如果主節(jié)點失效或者能量低于預(yù)設(shè)的警告能量值則開始執(zhí)行交換程序,將主節(jié)點剔除,此備份節(jié)點成為主節(jié)點,接管原主節(jié)點的功能,成為原wsn中的一枚節(jié)點。
所述4)為備份節(jié)點接管階段,備份節(jié)點升級為新的主節(jié)點,通知原主節(jié)點的父節(jié)點和子節(jié)點原主節(jié)點已死亡,并更新網(wǎng)絡(luò)拓撲信息。完成網(wǎng)絡(luò)更新后,新主節(jié)點進入工作狀態(tài)。
本發(fā)明wsn的組網(wǎng)方法能夠在不影響節(jié)點數(shù)據(jù)收集的情況下,能夠減少密集部署區(qū)域的正常工作時節(jié)點數(shù)量,形成一種高效的樹形層次拓撲網(wǎng)絡(luò)結(jié)構(gòu)。該方法具有節(jié)省能量、組網(wǎng)方式簡單的特點,有效的延長網(wǎng)絡(luò)壽命。
附圖說明
下面對本發(fā)明說明書中每幅附圖表達的內(nèi)容作簡要說明:
圖1為傳感器網(wǎng)絡(luò)的生命周期圖;
圖2為樹形結(jié)構(gòu)拓撲網(wǎng)絡(luò)的示意圖。
具體實施方式
本發(fā)明提出一種基于備份節(jié)點的wsn的組網(wǎng)方法,主要目的是通過確定傳感器節(jié)點位置、確定傳感器節(jié)點感知范圍內(nèi)兩節(jié)點之間的通信距離、通過廣播命令層層傳遞生成樹形拓撲結(jié)構(gòu)以及在廣播過程中除sink節(jié)點外的每個節(jié)點都判斷距離最近的子節(jié)點是否具有成為備份節(jié)點的資格來設(shè)置備份節(jié)點;最終在樹形拓撲結(jié)構(gòu)上減少在網(wǎng)節(jié)點數(shù)目來達到有效的延長wsn的使用壽命的目的。
組網(wǎng)方法通過對無線傳感器節(jié)點進行初始化,然后通過一種基于樹形拓撲算法生成wsn,在生成wsn的時候,通過選取距離父節(jié)點最近且距離小于設(shè)定的最小通訊距離rmin的子節(jié)點設(shè)置為其備份節(jié)點,同時父節(jié)點設(shè)置為主節(jié)點。接著在主節(jié)點失效或者能量到達設(shè)定的警戒值時,備份節(jié)點接替主節(jié)點。本方法適用于隨機部署環(huán)境下密集部署區(qū)域的wsn,既能減少wsn冗余又能增加wsn壽命。
具體來來說,將無線傳感器節(jié)點分為sink節(jié)點、主節(jié)點、備份節(jié)點和普通節(jié)點四種,如圖2所示,sink節(jié)點由標記為a的圓點表示,主節(jié)點由標記為b的圓點表示,備份節(jié)點由標記為c的圓點表示,普通節(jié)點由標記為d的圓點表示。
sink結(jié)點:sink結(jié)點是數(shù)據(jù)采集的匯聚結(jié)點,在初始化階段,由sink結(jié)點發(fā)起組網(wǎng)信號,實現(xiàn)wsn組建工作;在網(wǎng)絡(luò)運行階段,wsn中的結(jié)點數(shù)據(jù)經(jīng)匯聚到sink結(jié)點。
主節(jié)點:wsn中正常運行且有備份節(jié)點的普通結(jié)點,當主節(jié)點能量達到警戒線時,主動喚醒備份結(jié)點,同時告知備份節(jié)點修改父節(jié)點和子節(jié)點的信息。
備份結(jié)點:備份結(jié)點大部分的時候處于休眠狀態(tài),確保主節(jié)點能量達到警戒線時,及時被主節(jié)點喚醒,然后接管主節(jié)點的工作;當一定周期沒有收到主節(jié)點發(fā)來的確認信息,主動發(fā)信息查詢主節(jié)點,如沒收到主節(jié)點的信息,啟動交接程序。一個主節(jié)點只有一個備份結(jié)點,離主節(jié)點越近,同時低于最低通訊半徑的一個結(jié)點可設(shè)置為備份結(jié)點。當主節(jié)點發(fā)生能量耗盡時,備份結(jié)點被喚醒升級為主節(jié)點,并負責發(fā)送消息給原主節(jié)點的父節(jié)點和子結(jié)點,然后進入運行狀態(tài)。
普通結(jié)點:處于wsn中沒有自己備份結(jié)點的普通節(jié)點。
主節(jié)點命令處理具體包括:
(1)當父節(jié)點或者子節(jié)點發(fā)生變化時,主節(jié)點會發(fā)送命令消息通知備份結(jié)點更新父節(jié)點和子結(jié)點的信息。
(2)當主結(jié)點能量低于預(yù)先設(shè)置的值時,主動發(fā)送消息喚醒備份結(jié)點,并與備份結(jié)點交接數(shù)據(jù)信息,并通知備份結(jié)點發(fā)送消息給父節(jié)點和子節(jié)點。
組網(wǎng)方法具體如下:
步驟1:在初始化階段,普通節(jié)點通過定位技術(shù)確定自身位置,并且跳數(shù)值初始化為無窮大。
步驟2:sink節(jié)點跳數(shù)值初始化為0。
步驟3:sink節(jié)點向鄰居結(jié)點廣播信息,信息為當前節(jié)點的跳數(shù)值。
步驟4:在通訊半徑內(nèi)接收到信息的結(jié)點根據(jù)接收到的跳數(shù)值,跳數(shù)值加一,然后設(shè)置為自身的跳數(shù)值。
步驟5:在通訊半徑內(nèi)中找到編號最小的結(jié)點,編號最小結(jié)點向鄰居結(jié)點廣播信息,如果接受到信息的結(jié)點跳數(shù)值為無窮大,則把收到的跳數(shù)值,跳數(shù)值加一,然后設(shè)置為自身的跳數(shù)值。如果和當前節(jié)點跳數(shù)值相同的其他兄弟結(jié)點接收到信息,則不修改跳數(shù)值。
步驟6:通訊半徑內(nèi)接收到信息的結(jié)點跳數(shù)值大于等于自己跳數(shù)值,并且有低于最小通訊半徑的結(jié)點,則取其中最近的結(jié)點設(shè)置為自己的備份結(jié)點,自己設(shè)置為主節(jié)點,在初始化階段不再接收信息。
步驟7:如果一個結(jié)點被設(shè)置為備份結(jié)點,則在初始化階段不再接收信息。
步驟8:接下來,大于當前編號的最小值結(jié)點向鄰居結(jié)點廣播信息,如果接受到信息的結(jié)點跳數(shù)值為無窮大,則把收到的跳數(shù)值,跳數(shù)值加一后,設(shè)置為自身的跳數(shù)值。如果和當前節(jié)點跳數(shù)值相同的其他兄弟結(jié)點接收到信息,則不修改跳數(shù)值。
步驟9:重復步驟6、步驟7、步驟8三步,直到?jīng)]有當前跳數(shù)值結(jié)點。
步驟10:執(zhí)行步驟9直到?jīng)]有結(jié)點可以加入wsn。
步驟11:把除主節(jié)點和備份節(jié)點外的節(jié)點設(shè)置為普通節(jié)點。
根據(jù)組網(wǎng)方法,每個結(jié)點依次修改當前節(jié)點的父節(jié)點和子節(jié)點信息。
在主節(jié)點工作階段。主節(jié)點處于wsn中,備份結(jié)點定期從休眠狀態(tài)喚醒,發(fā)送查詢消息給主節(jié)點,如果主節(jié)點沒有應(yīng)答,判斷主節(jié)點失效后,備份節(jié)點主動升級為主節(jié)點,通知父節(jié)點和子節(jié)點的信息更新結(jié)點信息。如果主節(jié)點正常工作,則主節(jié)點返回一個正常工作的消息,備份結(jié)點接收到后,從當前狀態(tài)轉(zhuǎn)變?yōu)樾菝郀顟B(tài)。
在備份節(jié)點工作階段,備份節(jié)點升級為主節(jié)點,完成主節(jié)點的工作。
上面結(jié)合附圖對本發(fā)明進行了示例性描述,顯然本發(fā)明具體實現(xiàn)并不受上述方式的限制,只要采用了本發(fā)明的方法構(gòu)思和技術(shù)方案進行的各種非實質(zhì)性的改進,或未經(jīng)改進將本發(fā)明的構(gòu)思和技術(shù)方案直接應(yīng)用于其它場合的,均在本發(fā)明的保護范圍之內(nèi)。