欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法

文檔序號:7851934閱讀:241來源:國知局
專利名稱:無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法
技術(shù)領(lǐng)域
本發(fā)明涉及無線傳感器網(wǎng)絡(luò)技術(shù),特別是涉及一種無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法。
背景技術(shù)
無線傳感器網(wǎng)絡(luò)是由部署 在監(jiān)測區(qū)域內(nèi)的大量微型傳感器節(jié)點(diǎn)組成的無線網(wǎng)絡(luò)系統(tǒng),節(jié)點(diǎn)間通過自組織技術(shù)形成多條的無線網(wǎng)絡(luò)。傳感器網(wǎng)絡(luò)應(yīng)用的一個重要需求是如何在網(wǎng)絡(luò)部署后調(diào)整或改變網(wǎng)絡(luò)節(jié)點(diǎn)上的運(yùn)行程序,稱為無線更新或空中編程。要實(shí)現(xiàn)無線更新,則需要將新程序所包含的大量數(shù)據(jù)分發(fā)到所有網(wǎng)絡(luò)節(jié)點(diǎn)上。程序代碼分發(fā)(code dissemination)就是要將更新代碼通過多條的無線路由從基站節(jié)點(diǎn)(BS)發(fā)送到網(wǎng)絡(luò)目標(biāo)更新區(qū)域的所有節(jié)點(diǎn)上的過程。代碼分發(fā)過程與一般的數(shù)據(jù)分發(fā)問題不同之處在于,它會涉及到大量的數(shù)據(jù)在短時間內(nèi)進(jìn)行分發(fā),同時必須保證分發(fā)的程序鏡像在接收端是完整的。傳感器網(wǎng)絡(luò)的研究者們針對程序代碼分發(fā)問題提出了一些相關(guān)協(xié)議,例如CSMA方式的分發(fā)協(xié)議。然而該協(xié)議不能避免隱終端問題造成的大量傳輸沖突,在管道式傳輸?shù)那榫跋?,?jié)點(diǎn)會重復(fù)接收已收到過的數(shù)據(jù)而增加無謂的能量消耗。也有提出使用TDMA方式的分發(fā)協(xié)議減少沖突,然而,使用TDMA方式的分發(fā)協(xié)議建立了固定的網(wǎng)絡(luò)時隙分配方案,當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)換其作為更新數(shù)據(jù)發(fā)送者和接收者的角色后,固定時隙方案會導(dǎo)致部分節(jié)點(diǎn)等待很多時隙而不能立刻能發(fā)送數(shù)據(jù),從而增加了整個分發(fā)過程的時間。而有些TDMA方案的時隙調(diào)整方式較為復(fù)雜,其代價并不適用于管道式傳輸情況下節(jié)點(diǎn)角色的頻繁變化。

發(fā)明內(nèi)容
基于此,有必要提供一種能減少數(shù)據(jù)分發(fā)過程中的能量消耗,并能減少數(shù)據(jù)分發(fā)時間的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法。一種無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,包括以下步驟A.當(dāng)發(fā)送者節(jié)點(diǎn)有新的數(shù)據(jù)塊需要分發(fā)時,向一跳鄰居節(jié)點(diǎn)廣播ADV消息;B.收到ADV消息的接收者節(jié)點(diǎn)檢測是否需要接收所述數(shù)據(jù)塊,若是,則向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息;C.發(fā)送者節(jié)點(diǎn)接收到REQ消息,如果擁有REQ消息請求的數(shù)據(jù)塊,則開始向發(fā)送REQ消息的接收者節(jié)點(diǎn)發(fā)送所述數(shù)據(jù)塊中的數(shù)據(jù)包,所述數(shù)據(jù)塊包含預(yù)設(shè)數(shù)量個固定長度的數(shù)據(jù)包,所述數(shù)據(jù)塊中的每個數(shù)據(jù)包對應(yīng)了不同的序號;D.接收者節(jié)點(diǎn)接收所述數(shù)據(jù)包,且每收到一個數(shù)據(jù)包則將該數(shù)據(jù)包的序號所對應(yīng)的位向量中相應(yīng)比特清零;E.發(fā)送者節(jié)點(diǎn)發(fā)送完所述數(shù)據(jù)塊中的最后一個數(shù)據(jù)包后,等待接收者節(jié)點(diǎn)返回的REQ消息,當(dāng)接收者節(jié)點(diǎn)接收完所述數(shù)據(jù)塊中的最后一個數(shù)據(jù)包后向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息,該REQ消息中包含接收者節(jié)點(diǎn)接收到的數(shù)據(jù)包的序號所對應(yīng)的位向量;
F.發(fā)送者節(jié)點(diǎn)接收到REQ消息,根據(jù)REQ消息中的數(shù)據(jù)包的序號所對應(yīng)的位向量判斷是否需再次發(fā)送數(shù)據(jù)包,若是,則根據(jù)所述位向量獲取需再次發(fā)送的數(shù)據(jù)包并發(fā)送至接收者節(jié)點(diǎn),返回步驟E,否則結(jié)束。在其中一個實(shí)施例中,所述ADV消息中包含分發(fā)協(xié)議的版本號、分發(fā)數(shù)據(jù)的時間戳和程序版本號或發(fā)送者節(jié)點(diǎn)當(dāng)前分發(fā)數(shù)據(jù)塊的序號;所述步驟B中收到ADV消息的接收者節(jié)點(diǎn)檢測ADV消息中的分發(fā)協(xié)議的版本號是否與所使用的分發(fā)協(xié)議版本號相同,若是,則進(jìn)一步判斷ADV消息中的程序版本號比已擁有的程序版本號新或ADV消息中的發(fā)送者節(jié)點(diǎn)聲明的數(shù)據(jù)塊序號是否比自身最后接收的數(shù)據(jù)塊序號大,若是,則向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息請求數(shù)據(jù)塊。在其中一個實(shí)施例中,所述步驟B中接收者節(jié)點(diǎn)向發(fā)送者節(jié)點(diǎn)發(fā)送的REQ消息中包含請求的數(shù)據(jù)塊中的數(shù)據(jù)包的序號和對應(yīng)的位向量;所述步驟C中發(fā)送者節(jié)點(diǎn)接收到REQ消息后,將REQ消息中的序號和對應(yīng)的位向量拷貝到本地的發(fā)送向量中,根據(jù)所述發(fā)送向量確定要發(fā)送的數(shù)據(jù)包的序號,并將確定的序號對應(yīng)的數(shù)據(jù)包發(fā)送至接收者節(jié)點(diǎn),發(fā)送完成后將發(fā)送向量中所述發(fā)送的數(shù)據(jù)包的序號對應(yīng)的比特置位。在其中一個實(shí)施例中,所述無線傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn),包括發(fā)送者節(jié)點(diǎn)和接收者節(jié)點(diǎn),都維護(hù)了一個時隙表,所述時隙表的每一項(xiàng)中包含兩個域發(fā)送者和接收者;所述發(fā)送者為在該時隙進(jìn)行發(fā)送的某一跳鄰居節(jié)點(diǎn),所述接收者為在該時隙內(nèi)進(jìn)行接收的某一跳鄰居節(jié)點(diǎn);如果在該時隙內(nèi)沒有一跳鄰居節(jié)點(diǎn)進(jìn)行發(fā)送或接收,則相應(yīng)域?yàn)榭眨蝗绻?jié)點(diǎn)要在某個時隙內(nèi)從一跳鄰居節(jié)點(diǎn)接收,則將該時隙的接收者設(shè)為自身。在其中一個實(shí)施例中,所述方法還包括當(dāng)在屬于節(jié)點(diǎn)的發(fā)送時隙內(nèi)監(jiān)聽到鄰居節(jié)點(diǎn)發(fā)送數(shù)據(jù),或在節(jié)點(diǎn)的接收時隙內(nèi)收到非預(yù)期節(jié)點(diǎn)發(fā)送的數(shù)據(jù)時,節(jié)點(diǎn)本地更新時隙表并與鄰居節(jié)點(diǎn)進(jìn)行交換。在其中一個實(shí)施例中,所述節(jié)點(diǎn)本地更新時隙表并與鄰居節(jié)點(diǎn)進(jìn)行交換的步驟包括當(dāng)在屬于節(jié)點(diǎn)的發(fā)送時隙內(nèi)收到其他節(jié)點(diǎn)發(fā)送的數(shù)據(jù)或在節(jié)點(diǎn)的接收時隙內(nèi)收到非預(yù)期節(jié)點(diǎn)發(fā)送的數(shù)據(jù)時,在節(jié)點(diǎn)本地的時隙表中添加一個該節(jié)點(diǎn)作為發(fā)送者的時隙;當(dāng)節(jié)點(diǎn)通過來自鄰居節(jié)點(diǎn)的SLOT消息得知自身與另一節(jié)點(diǎn)在某時隙存在沖突時,合并過程中在時隙表中添加一個時隙以該鄰居節(jié)點(diǎn)作為接收者;如果時隙表添加或合并后發(fā)生了變化,節(jié)點(diǎn)在下一個發(fā)送時隙內(nèi)將更新的時隙表通過SLOT消息廣播給鄰居節(jié)點(diǎn);所述鄰居節(jié)點(diǎn)收到SLOT消息時,將SLOT消息中的時隙表與本地維護(hù)的時隙表進(jìn)行合并,再向其鄰居節(jié)點(diǎn)廣播合并后的時隙表。在其中一個實(shí)施例中,所述節(jié)點(diǎn)本地更新時隙表并與鄰居節(jié)點(diǎn)進(jìn)行交換的步驟還包括當(dāng)節(jié)點(diǎn)本地的時隙表中已存在作為發(fā)送者的時隙時,節(jié)點(diǎn)在下一個發(fā)送時隙內(nèi)單播SYNC消息給鄰居節(jié)點(diǎn),所述SYNC消息中包含下一個鄰居節(jié)點(diǎn)所占用時隙的起始時刻、實(shí)際開始發(fā)送時間;

所述鄰居節(jié)點(diǎn)收到SYNC消息時,計算SYNC消息的發(fā)送節(jié)點(diǎn)到下一個自身占用時隙開始的剩余時間,鄰居節(jié)點(diǎn)根據(jù)所述剩余時間調(diào)整自身的下一個時隙和SYNC消息的發(fā)送節(jié)點(diǎn)的下一個時隙在同一時刻開始。在其中一個實(shí)施例中,所述時隙的長度大于兩倍的平均數(shù)據(jù)包發(fā)送時長。在其中一個實(shí)施例中,節(jié)點(diǎn)根據(jù)本地的時隙表中發(fā)送節(jié)點(diǎn)的個數(shù)和數(shù)據(jù)塊中數(shù)據(jù)包的數(shù)量設(shè)置數(shù)據(jù)包發(fā) 送時的起始序號;所述步驟C中,發(fā)送者節(jié)點(diǎn)從所述起始序號開始至塊尾依次發(fā)送數(shù)據(jù)塊中的數(shù)據(jù)包,然后再從塊首開始至所述起始序號依次發(fā)送數(shù)據(jù)塊中的數(shù)據(jù)包。在其中一個實(shí)施例中,按照如下公式計算所述起始序號nstart = (NpageZni^si) (mod Npage)其中,ni是節(jié)點(diǎn)i的時隙表中發(fā)送節(jié)點(diǎn)的個數(shù),Si是節(jié)點(diǎn)i的時隙編號,Npage是一個數(shù)據(jù)塊的數(shù)據(jù)包的數(shù)量,mod表示取模運(yùn)算。上述無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,通過將數(shù)據(jù)塊分為預(yù)設(shè)數(shù)量個固定長度的數(shù)據(jù)包,且每個數(shù)據(jù)包對應(yīng)了不同的序號,并采用位向量標(biāo)記接收節(jié)點(diǎn)收到的數(shù)據(jù)包,多個發(fā)送節(jié)點(diǎn)還可按照不同的起始序號發(fā)送數(shù)據(jù)包,能夠減少數(shù)據(jù)分發(fā)時間,并能減少數(shù)據(jù)分發(fā)過程中的能量消耗。


圖I為無線傳感器網(wǎng)絡(luò)數(shù)據(jù)分發(fā)過程示意圖;圖2為本發(fā)明中進(jìn)行管道式傳輸?shù)氖疽鈭D;圖3為本發(fā)明中的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法的流程圖;圖4為節(jié)點(diǎn)間分發(fā)一個數(shù)據(jù)塊時的狀態(tài)轉(zhuǎn)換圖;圖5為說明TDMA調(diào)度表示方法的局部網(wǎng)絡(luò)示意圖;圖6為節(jié)點(diǎn)獲知競爭對象的示意圖;圖7為節(jié)點(diǎn)間進(jìn)行協(xié)作式傳輸?shù)氖疽鈭D。
具體實(shí)施例方式無線傳感器網(wǎng)絡(luò)由大量的節(jié)點(diǎn)組成,起初,所有節(jié)點(diǎn)工作在常規(guī)模式下,進(jìn)行數(shù)據(jù)采集和傳輸。當(dāng)節(jié)點(diǎn)收到第一個ADV消息以后,節(jié)點(diǎn)中斷常規(guī)的應(yīng)用程序執(zhí)行,開始進(jìn)入到數(shù)據(jù)分發(fā)過程(也是程序分發(fā)過程)。無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)過程是所有節(jié)點(diǎn)都需要參與的分發(fā)過程,通常從基站節(jié)點(diǎn)(BS)開始向其他所有節(jié)點(diǎn)分發(fā)數(shù)據(jù)。處于數(shù)據(jù)分發(fā)過程的節(jié)點(diǎn)可以分為兩類角色發(fā)送者和接收者。數(shù)據(jù)會以數(shù)據(jù)塊的形式進(jìn)行傳輸,在一個數(shù)據(jù)塊的傳輸過程中,負(fù)責(zé)發(fā)送該數(shù)據(jù)塊的節(jié)點(diǎn)稱為發(fā)送者節(jié)點(diǎn),而負(fù)責(zé)接收該數(shù)據(jù)塊的節(jié)點(diǎn)稱為接收者節(jié)點(diǎn)。網(wǎng)絡(luò)完成一個數(shù)據(jù)塊的完整傳輸所需時段稱為一輪,每一輪的時間不完全相同。在本輪充當(dāng)發(fā)送者的節(jié)點(diǎn)一般在下一輪轉(zhuǎn)變?yōu)榻邮照?。在無線傳感器網(wǎng)絡(luò)中,包括基站節(jié)點(diǎn)(BS)和普通節(jié)點(diǎn),如圖I所示,接站節(jié)點(diǎn)通過有線接口從上位機(jī)軟件接收程序更新數(shù)據(jù),發(fā)起數(shù)據(jù)分發(fā)過程,初始時作為網(wǎng)絡(luò)中唯一的發(fā)送者節(jié)點(diǎn)。本發(fā)明中,采用數(shù)據(jù)塊的管道式傳輸方式進(jìn)行數(shù)據(jù)分發(fā),如圖I和圖2所示,網(wǎng)絡(luò)中的節(jié)點(diǎn)依據(jù)其到基站的跳數(shù)可以分為不同層,到基站需經(jīng)過N跳無線傳輸?shù)墓?jié)點(diǎn)的集合以下則稱為第N層節(jié)點(diǎn)。
如上所述,網(wǎng)絡(luò)完成一個數(shù)據(jù)塊的完整傳輸所需時段稱為一輪,本發(fā)明所提供的基于數(shù)據(jù)塊的管道式傳輸方式進(jìn)行數(shù)據(jù)分發(fā)的過程如下(I)在第I輪中,基站節(jié)點(diǎn)通過廣播方式將第一個數(shù)據(jù)塊的所有數(shù)據(jù)包發(fā)送給第I層節(jié)點(diǎn)。第I輪結(jié)束時第I層所有節(jié)點(diǎn)擁有第一個數(shù)據(jù)塊。(2)在第2輪中,第I層中的部分節(jié)點(diǎn)(一般具有更多的鄰居節(jié)點(diǎn)屬于第2層)作為發(fā)送者將第一個數(shù)據(jù)塊發(fā)給 它們的一跳鄰居節(jié)點(diǎn),即第2層節(jié)點(diǎn)。所謂一跳鄰居節(jié)點(diǎn)是指與節(jié)點(diǎn)相鄰的節(jié)點(diǎn),若節(jié)點(diǎn)之間的距離為2層,則節(jié)點(diǎn)相互為二跳鄰居節(jié)點(diǎn),以此類推。本申請中,若沒有特殊說明,鄰居節(jié)點(diǎn)則指的是一跳鄰居節(jié)點(diǎn)。第I層的非發(fā)送節(jié)點(diǎn)(可設(shè)置第I層節(jié)點(diǎn)中的部分節(jié)點(diǎn)發(fā)送第一個數(shù)據(jù)塊)進(jìn)入“休眠”狀態(tài)等待本輪結(jié)束。第2輪結(jié)束時,第2層的節(jié)點(diǎn)都擁有第一個數(shù)據(jù)塊。(3)在第3輪中,基站節(jié)點(diǎn)向第I層節(jié)點(diǎn)發(fā)送第二個數(shù)據(jù)塊,同時第2層節(jié)點(diǎn)向第3層節(jié)點(diǎn)發(fā)送第一個數(shù)據(jù)塊。以此類推。(4)在第2N-1輪中,基站節(jié)點(diǎn)向第I層節(jié)點(diǎn)發(fā)送第N個數(shù)據(jù)塊,第2層節(jié)點(diǎn)向第3層節(jié)點(diǎn)發(fā)送第N-I個數(shù)據(jù)塊,第4層節(jié)點(diǎn)向第5層節(jié)點(diǎn)發(fā)送第N-2個數(shù)據(jù)塊,.....以此類推。(5)在第2N輪中,基站節(jié)點(diǎn)空閑,第I層節(jié)點(diǎn)向第2層節(jié)點(diǎn)發(fā)送第N個數(shù)據(jù)塊,與此同時,第3層節(jié)點(diǎn)向第4層節(jié)點(diǎn)發(fā)送第N-I個數(shù)據(jù)塊,第5層節(jié)點(diǎn)向第6層節(jié)點(diǎn)發(fā)送第N-I個數(shù)據(jù)塊,……以此類推,直到所有數(shù)據(jù)塊傳輸完畢。在某一輪中,同一層節(jié)點(diǎn)中部分作為發(fā)送者,向它們的鄰居節(jié)點(diǎn)發(fā)送數(shù)據(jù)塊。這些發(fā)送者的其他同層節(jié)點(diǎn)經(jīng)過ADV-REQ過程后若沒有鄰居節(jié)點(diǎn)需要其發(fā)送更新數(shù)據(jù),將進(jìn)入“休眠”狀態(tài),停止接收數(shù)據(jù)包直到本輪結(jié)束。數(shù)據(jù)塊按照塊的序號順序進(jìn)行傳輸,當(dāng)下游層發(fā)送數(shù)據(jù)塊時,其上一層節(jié)點(diǎn)雖然可能收到,但發(fā)送的消息中的塊序號將小于節(jié)點(diǎn)已接收到的最后一個數(shù)據(jù)塊的序號,因此上一層節(jié)點(diǎn)將忽略該消息。對于每一個數(shù)據(jù)塊,通過這種流水線式的管道式傳輸方式,使網(wǎng)絡(luò)中不同層次的盡可能多的節(jié)點(diǎn)同時傳輸不同的數(shù)據(jù)塊,從而能夠減少數(shù)據(jù)分發(fā)時間。為清楚闡述本發(fā)明的方案,首先對本發(fā)明所涉及到的節(jié)點(diǎn)間交換的幾種類型的消息進(jìn)行說明。本發(fā)明所涉及到的在節(jié)點(diǎn)間交換的消息及其用途如表I所示表I
消息名稱 Hil ~^DV通知周圍節(jié)點(diǎn)可傳輸數(shù)據(jù)塊的摘要信息
"^EQ向源節(jié)點(diǎn)請求下載一個數(shù)據(jù)塊
"Iata傳輸實(shí)際待分發(fā)的數(shù)據(jù)
slot與鄰居節(jié)點(diǎn)交換時隙表信息
SYNC實(shí)現(xiàn)與鄰居節(jié)點(diǎn)的時間同步
如圖3所示,在一個實(shí)施例中,本發(fā)明提供的一種無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,包括以下步驟步驟S10,當(dāng)發(fā)送者節(jié)點(diǎn)有新的數(shù)據(jù)塊需要分發(fā)時,向一跳鄰居節(jié)點(diǎn)廣播ADV消
肩、O本申請中的數(shù)據(jù)塊是指將 要分發(fā)的大容量數(shù)據(jù)按固定大小(如1KB)分割得到的一定數(shù)量的數(shù)據(jù)塊。在一個實(shí)施例中,發(fā)送者節(jié)點(diǎn)廣播的ADV消息包括可傳輸數(shù)據(jù)塊的摘要信息,包括分發(fā)協(xié)議的版本號、分發(fā)數(shù)據(jù)的時間戳和程序版本號或發(fā)送者節(jié)點(diǎn)已收到的數(shù)據(jù)塊的塊數(shù)。步驟S20,收到ADV消息的接收節(jié)點(diǎn)檢測是否需要接收該數(shù)據(jù)塊,若是,則向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息。進(jìn)一步的,在步驟S20中,收到ADV消息的接收者節(jié)點(diǎn)可檢測ADV消息中的分發(fā)協(xié)議的版本號是否與所使用的分發(fā)協(xié)議的版本號相同,如果相同,則進(jìn)一步判斷ADV消息中的程序版本號比已擁有的程序版本號新或ADV消息中的發(fā)送者節(jié)點(diǎn)聲明的數(shù)據(jù)塊序號是否比自身最后接收的數(shù)據(jù)塊的序號大,若是,則向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息請求數(shù)據(jù)塊。步驟S30,發(fā)送者節(jié)點(diǎn)收到REQ消息,如果擁有REQ消息請求的數(shù)據(jù)塊,則開始向發(fā)送REQ消息的接收節(jié)點(diǎn)發(fā)送數(shù)據(jù)塊中的數(shù)據(jù)包。其中,數(shù)據(jù)塊包括預(yù)設(shè)數(shù)量個固定長度的數(shù)據(jù)包,數(shù)據(jù)塊中的每個數(shù)據(jù)包對應(yīng)了不同的序號。每一個數(shù)據(jù)塊進(jìn)一步被劃分為固定長度的數(shù)據(jù)包(例如每個數(shù)據(jù)包包含32字節(jié)數(shù)據(jù)),一個數(shù)據(jù)塊中的不同數(shù)據(jù)包對應(yīng)了不同的序號,根據(jù)序號可以得到對應(yīng)的數(shù)據(jù)。步驟S40,接收者節(jié)點(diǎn)接收數(shù)據(jù)包,每收到一個數(shù)據(jù)包則將數(shù)據(jù)包的序號所對應(yīng)的位向量中的位清零。具體的,接收者節(jié)點(diǎn)維護(hù)一個與序號對應(yīng)的位向量,該位向量用于標(biāo)識對應(yīng)的序號的數(shù)據(jù)包是否已接收。例如某位為1,表示相應(yīng)的數(shù)據(jù)包未接收到,若該位為O,表示相應(yīng)的數(shù)據(jù)包已接收到。初始時,所有序號所對應(yīng)的位都為I,當(dāng)接收者節(jié)點(diǎn)收到一個數(shù)據(jù)包,則將相應(yīng)的序號所對應(yīng)的位設(shè)為O。步驟S50,發(fā)送者節(jié)點(diǎn)發(fā)送完數(shù)據(jù)塊中的最后一個數(shù)據(jù)包后,等待接收者節(jié)點(diǎn)返回的REQ消息,當(dāng)接收者節(jié)點(diǎn)接收完數(shù)據(jù)塊中的最后一個數(shù)據(jù)包后向發(fā)送者發(fā)送REQ消息,該REQ消息中包含接收者節(jié)點(diǎn)接收到的數(shù)據(jù)包序號所對應(yīng)的位向量。步驟S60,發(fā)送者節(jié)點(diǎn)接收到REQ消息,根據(jù)REQ消息中的數(shù)據(jù)包的序號所對應(yīng)的位向量判斷是否需再次發(fā)送數(shù)據(jù)包,若是,則進(jìn)入步驟S70,否則結(jié)束。發(fā)送者節(jié)點(diǎn)接收到REQ消息后,根據(jù)其中的序號對應(yīng)的位向量的位確定需再次發(fā)送的數(shù)據(jù)包,如果位向量的所有位都為0,則表明發(fā)送REQ消息的該接收者節(jié)點(diǎn)已收到所有的數(shù)據(jù)包,此輪流程結(jié)束。如果有某些位為1,則表明發(fā)送REQ消息的該接收者節(jié)點(diǎn)沒有收到相應(yīng)的數(shù)據(jù)包(數(shù)據(jù)包可能在傳輸過程中丟失),則需要將這些數(shù)據(jù)包再次發(fā)送。步驟S70,根據(jù)位向量獲取需再次發(fā)送的數(shù)據(jù)包并發(fā)送至接收者節(jié)點(diǎn),返回步驟S50。遍歷位向量,獲取所有位為I所對應(yīng)的序號,根據(jù)該序號獲取到對應(yīng)的數(shù)據(jù)包,然后將這些數(shù)據(jù)包再次廣播或單播給鄰居節(jié)點(diǎn),直到接收者節(jié)點(diǎn)返回的REQ消息中的位向量表明所有數(shù)據(jù)包已接收到。
為清楚闡述上述提供的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,下面分別從發(fā)送者節(jié)點(diǎn)和接收者節(jié)點(diǎn)的角度闡述數(shù)據(jù)分發(fā)過程及節(jié)點(diǎn)的狀態(tài)變換過程。結(jié)合圖4所示,發(fā)送者節(jié)點(diǎn)(以下也稱發(fā)送者)向鄰居節(jié)點(diǎn)分發(fā)一個數(shù)據(jù)塊時,其所要執(zhí)行的步驟如下步驟101,發(fā)送者有新的數(shù)據(jù)塊要分發(fā)時,進(jìn)入到“發(fā)布”狀態(tài),準(zhǔn)備發(fā)送ADV消息給鄰居節(jié)點(diǎn),進(jìn)入步驟102。步驟102,發(fā)送者在發(fā)布狀態(tài)下周期性的向鄰居節(jié)點(diǎn)發(fā)送ADV消息并啟動一個超時計時器等待REQ消息。ADV消 息中包含分發(fā)協(xié)議的版本、分發(fā)數(shù)據(jù)的時間戳和程序版本號或發(fā)送者節(jié)點(diǎn)當(dāng)前分發(fā)數(shù)據(jù)塊的序號等。如果在計時器超時發(fā)生前收到一個合法的REQ消息,則進(jìn)入步驟103,否則進(jìn)入步驟108。步驟103,發(fā)送者切換到“發(fā)送”狀態(tài)開始發(fā)送當(dāng)前數(shù)據(jù)塊的DATA消息,發(fā)送者將REQ消息中的位向量拷貝到本地的發(fā)送向量中,并根據(jù)發(fā)送向量確定下一個要發(fā)送的DATA消息序號。發(fā)送者從RAM或FLASH存儲器中根據(jù)序號取出對應(yīng)數(shù)據(jù)(即數(shù)據(jù)包),封裝在DATA消息中廣播給接收者節(jié)點(diǎn),發(fā)送完成后將發(fā)送向量中該DATA消息對應(yīng)的位由I置為0,表示對應(yīng)的數(shù)據(jù)包已發(fā)送,進(jìn)入步驟104。步驟104,發(fā)送者發(fā)送DATA消息后檢查發(fā)送向量,如果仍有發(fā)送向量的位為1,則取該位對應(yīng)的數(shù)據(jù)封裝在DATA消息中發(fā)送。如果該位是發(fā)送向量中的最后一個1,則在DATA消息的選項(xiàng)字節(jié)標(biāo)記其為請求的最后一個數(shù)據(jù)包。該過程持續(xù)到發(fā)送向量所有位都為0,即請求的所有數(shù)據(jù)包已發(fā)送,發(fā)送者進(jìn)入“恢復(fù)”狀態(tài),進(jìn)入步驟105。步驟105,發(fā)送者接收到REQ消息,繼續(xù)等待一定時間以接收來自其他接收者的REQ消息。所有接收者的REQ消息都收到以后,檢查是否有接收者要求重傳數(shù)據(jù),如上所示,即根據(jù)REQ消息中的位向量查看是否有相應(yīng)位為1,如果有,則進(jìn)入步驟106,否則進(jìn)入步驟107。步驟106,發(fā)送者綜合所有接收者要求重傳的數(shù)據(jù)包并更新發(fā)送向量,由“恢復(fù)”狀態(tài)轉(zhuǎn)入“發(fā)送”狀態(tài),轉(zhuǎn)入步驟104。步驟107,發(fā)送者已成功將當(dāng)前數(shù)據(jù)塊發(fā)送到所有鄰居節(jié)點(diǎn),轉(zhuǎn)變角色為接收者,向自己的上游節(jié)點(diǎn)發(fā)送REQ消息請求接收下一個數(shù)據(jù)塊,進(jìn)入“請求”狀態(tài)。步驟108,發(fā)送者從REQ消息中的狀態(tài)位得知,鄰居節(jié)點(diǎn)不需要其發(fā)布的數(shù)據(jù)時,標(biāo)記該鄰居節(jié)點(diǎn)不需要分發(fā);或者當(dāng)前忙于其他任務(wù)而不能立即請求時,標(biāo)記該鄰居節(jié)點(diǎn)需要延時。檢查所有的REQ消息后,如果還有鄰居節(jié)點(diǎn)需要分發(fā),啟動一個延時定時器在一個約定時間后再次發(fā)送ADV消息,進(jìn)入步驟109,否則沒有鄰居節(jié)點(diǎn)需要其發(fā)布的更新數(shù)據(jù),節(jié)點(diǎn)進(jìn)入“休眠”狀態(tài),并啟動一個定時器在本輪結(jié)束前由“休眠”狀態(tài)轉(zhuǎn)入“空閑”狀態(tài)。步驟109,發(fā)送者的延時定時器到時,轉(zhuǎn)入步驟101重新發(fā)送ADV消息。作為接收者的鄰居節(jié)點(diǎn)則執(zhí)行以下步驟步驟201,接收者收到ADV消息后檢查是否與自己使用的分發(fā)協(xié)議為相同版本,如果協(xié)議版本號不同,則忽略此ADV消息,報告協(xié)議錯誤,否則進(jìn)入步驟202。步驟202,接收者比較程序的版本號和數(shù)據(jù)塊的序號,如果ADV消息中包含的程序版本號更新或者數(shù)據(jù)塊序號更大,則接收者向這個ADV消息的發(fā)送者請求下載更新數(shù)據(jù)。在這種情況下,接收者從“空閑”狀態(tài)切換到“請求”狀態(tài)。步驟203,在“請求”狀態(tài)下,接收者發(fā)送REQ消息給ADV消息的發(fā)送者,并忽略來自其他發(fā)送者的ADV消息。等待來自選定發(fā)送者的DATA消息,進(jìn)入步驟204。步驟204,接收者收到請求的第一個DATA消息時,從“請求”狀態(tài)切換到“接收”狀態(tài),將位向量的所有位都置為1,表示該數(shù)據(jù)塊的所有DATA消息都尚未收到,持續(xù)等待來自發(fā)送者的DATA消息,進(jìn)入步驟205。步驟205,接收者檢查收到的DATA消息是否與目標(biāo)接收塊的序號匹配(接收者在收到ADV消息后記錄其中的數(shù)據(jù)塊的序號),并在匹配時將數(shù)據(jù)寫入到存儲器,且置接收到的數(shù)據(jù)包對應(yīng)的位向量相應(yīng)位為O。如果該DATA消息是不需要的(如序號不匹配),則接收者利用這個監(jiān)聽到的數(shù)據(jù)包更新本地的時隙表,關(guān)于時隙表的更新過程下面會詳細(xì)闡述,在此先不做描述。步驟206,接收者收到請求的最后一個DATA消息(檢查DATA消息的選項(xiàng)字節(jié),發(fā)現(xiàn)標(biāo)記位對應(yīng)最后一個數(shù)據(jù)包),向發(fā)送者發(fā)送REQ消息。如果所有數(shù)據(jù)包都已收到,REQ消息中的位向量的所有位都為0,進(jìn)入步驟207,如果部分需要重傳的數(shù)據(jù)包的位向量的相應(yīng)位為1,等待發(fā)送者重新傳輸丟失的數(shù)據(jù)包,轉(zhuǎn)入步驟205。步驟207,接收者完成了接收這個數(shù)據(jù)塊的數(shù)據(jù)后,轉(zhuǎn)換角色為發(fā)送者,進(jìn)入步驟101嘗試向鄰居節(jié)點(diǎn)分發(fā)剛剛完成接收的數(shù)據(jù)塊。對于接收者,如果在一定時間內(nèi)沒有收到任何ADV消息,則節(jié)點(diǎn)將進(jìn)入“休眠”狀態(tài),并啟動定時器在本輪結(jié)束時進(jìn)入“空閑”狀態(tài)。本發(fā)明所提供的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法遵循TDMA調(diào)度,網(wǎng)絡(luò)中的每個節(jié)點(diǎn)按照TDMA調(diào)度開啟射頻開始收發(fā)操作,在不屬于該節(jié)點(diǎn)的時隙內(nèi),節(jié)點(diǎn)射頻則進(jìn)入“休眠”狀態(tài)。在一個實(shí)施例中,無線傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn),包括發(fā)送者節(jié)點(diǎn)和接收者節(jié)點(diǎn),都維護(hù)了一個時隙表。時隙表中的每個項(xiàng)中包含兩個域發(fā)送者和接收者。發(fā)送者為在該時隙進(jìn)行發(fā)送的某一跳鄰居節(jié)點(diǎn),接收者為在該時隙內(nèi)進(jìn)行接收的某一跳鄰居節(jié)點(diǎn);如果在該時隙內(nèi)沒有一跳鄰居節(jié)點(diǎn)進(jìn)行發(fā)送或接收,則相應(yīng)域?yàn)榭?;如果?jié)點(diǎn)要在某個時隙內(nèi)從一跳鄰居節(jié)點(diǎn)接收,則將該時隙的接收者設(shè)為自身。例如,對于如圖5所示的局部網(wǎng)絡(luò),假設(shè)每個節(jié)點(diǎn)僅能與它最近的節(jié)點(diǎn)(即一跳鄰居節(jié)點(diǎn))通訊。對于節(jié)點(diǎn)5,它的時隙表可能如表2所示表權(quán)利要求
1.一種無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,包括以下步驟 A.當(dāng)發(fā)送者節(jié)點(diǎn)有新的數(shù)據(jù)塊需要分發(fā)時,向一跳鄰居節(jié)點(diǎn)廣播ADV消息; B.收到ADV消息的接收者節(jié)點(diǎn)檢測是否需要接收所述數(shù)據(jù)塊,若是,則向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息; C.發(fā)送者節(jié)點(diǎn)接收到REQ消息,如果擁有REQ消息請求的數(shù)據(jù)塊,則開始向發(fā)送REQ消息的接收者節(jié)點(diǎn)發(fā)送所述數(shù)據(jù)塊中的數(shù)據(jù)包,所述數(shù)據(jù)塊包含預(yù)設(shè)數(shù)量個固定長度的數(shù)據(jù)包,所述數(shù)據(jù)塊中的每個數(shù)據(jù)包對應(yīng)了不同的序號; D.接收者節(jié)點(diǎn)接收所述數(shù)據(jù)包,且每收到一個數(shù)據(jù)包則將該數(shù)據(jù)包的序號所對應(yīng)的位向量中相應(yīng)比特清零; E.發(fā)送者節(jié)點(diǎn)發(fā)送完所述數(shù)據(jù)塊中的最后一個數(shù)據(jù)包后,等待接收者節(jié)點(diǎn)返回的REQ消息,當(dāng)接收者節(jié)點(diǎn)接收完所述數(shù)據(jù)塊中的最后一個數(shù)據(jù)包后向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息,該REQ消息中包含接收者節(jié)點(diǎn)接收到的數(shù)據(jù)包的序號所對應(yīng)的位向量; F.發(fā)送者節(jié)點(diǎn)接收到REQ消息,根據(jù)REQ消息中的數(shù)據(jù)包的序號所對應(yīng)的位向量判斷是否需再次發(fā)送數(shù)據(jù)包,若是,則根據(jù)所述位向量獲取需再次發(fā)送的數(shù)據(jù)包并發(fā)送至接收者節(jié)點(diǎn),返回步驟E,否則結(jié)束。
2.根據(jù)權(quán)利要求I所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,所述ADV消息中包含分發(fā)協(xié)議的版本號、分發(fā)數(shù)據(jù)的時間戳和程序版本號或發(fā)送者節(jié)點(diǎn)當(dāng)前分發(fā)數(shù)據(jù)塊的序號;所述步驟B中收到ADV消息的接收者節(jié)點(diǎn)檢測ADV消息中的分發(fā)協(xié)議的版本號是否與所使用的分發(fā)協(xié)議版本號相同,若是,則進(jìn)一步判斷ADV消息中的程序版本號比已擁有的程序版本號新或ADV消息中的發(fā)送者節(jié)點(diǎn)聲明的數(shù)據(jù)塊序號是否比自身最后接收的數(shù)據(jù)塊序號大,若是,則向發(fā)送者節(jié)點(diǎn)發(fā)送REQ消息請求數(shù)據(jù)塊。
3.根據(jù)權(quán)利要求I或2所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,所述步驟B中接收者節(jié)點(diǎn)向發(fā)送者節(jié)點(diǎn)發(fā)送的REQ消息中包含請求的數(shù)據(jù)塊中的數(shù)據(jù)包的序號和對應(yīng)的位向量;所述步驟C中發(fā)送者節(jié)點(diǎn)接收到REQ消息后,將REQ消息中的序號和對應(yīng)的位向量拷貝到本地的發(fā)送向量中,根據(jù)所述發(fā)送向量確定要發(fā)送的數(shù)據(jù)包的序號,并將確定的序號對應(yīng)的數(shù)據(jù)包發(fā)送至接收者節(jié)點(diǎn),發(fā)送完成后將發(fā)送向量中所述發(fā)送的數(shù)據(jù)包的序號對應(yīng)的比特置位。
4.根據(jù)權(quán)利要求I所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,所述無線傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn),包括發(fā)送者節(jié)點(diǎn)和接收者節(jié)點(diǎn),都維護(hù)了一個時隙表,所述時隙表的每一項(xiàng)中包含兩個域發(fā)送者和接收者;所述發(fā)送者為在該時隙進(jìn)行發(fā)送的某一跳鄰居節(jié)點(diǎn),所述接收者為在該時隙內(nèi)進(jìn)行接收的某一跳鄰居節(jié)點(diǎn);如果在該時隙內(nèi)沒有一跳鄰居節(jié)點(diǎn)進(jìn)行發(fā)送或接收,則相應(yīng)域?yàn)榭?;如果?jié)點(diǎn)要在某個時隙內(nèi)從一跳鄰居節(jié)點(diǎn)接收,則將該時隙的接收者設(shè)為自身。
5.根據(jù)權(quán)利要求4所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,所述方法還包括 當(dāng)在屬于節(jié)點(diǎn)的發(fā)送時隙內(nèi)監(jiān)聽到鄰居節(jié)點(diǎn)發(fā)送數(shù)據(jù),或在節(jié)點(diǎn)的接收時隙內(nèi)收到非預(yù)期節(jié)點(diǎn)發(fā)送的數(shù)據(jù)時,節(jié)點(diǎn)本地更新時隙表并與鄰居節(jié)點(diǎn)進(jìn)行交換。
6.根據(jù)權(quán)利要求5所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分方法,其特征在于,所述節(jié)點(diǎn)本地更新時隙表并與鄰居節(jié)點(diǎn)進(jìn)行交換的步驟包括當(dāng)在屬于節(jié)點(diǎn)的發(fā)送時隙內(nèi)收到其他節(jié)點(diǎn)發(fā)送的數(shù)據(jù)或在節(jié)點(diǎn)的接收時隙內(nèi)收到非預(yù)期節(jié)點(diǎn)發(fā)送的數(shù)據(jù)時,在節(jié)點(diǎn)本地的時隙表中添加一個該節(jié)點(diǎn)作為發(fā)送者的時隙;當(dāng)節(jié)點(diǎn)通過來自鄰居節(jié)點(diǎn)的SLOT消息得知自身與另一節(jié)點(diǎn)在某時隙存在沖突時,合并過程中在時隙表中添加一個時隙以該鄰居節(jié)點(diǎn)作為接收者; 如果時隙表添加或合并后發(fā)生了變化,節(jié)點(diǎn)在下一個發(fā)送時隙內(nèi)將更新的時隙表通過SLOT消息廣播給鄰居節(jié)點(diǎn); 所述鄰居節(jié)點(diǎn)收到SLOT消息時,將SLOT消息中的時隙表與本地維護(hù)的時隙表進(jìn)行合并,再向其鄰居節(jié)點(diǎn)廣播合并后的時隙表。
7.根據(jù)權(quán)利要求6所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,所述節(jié)點(diǎn)本地更新時隙表并與鄰居節(jié)點(diǎn)進(jìn)行交換的步驟還包括 當(dāng)節(jié)點(diǎn)本地的時隙表中已存在作為發(fā)送者的時隙時,節(jié)點(diǎn)在下一個發(fā)送時隙內(nèi)單播SYNC消息給鄰居節(jié)點(diǎn),所述SYNC消息中包含下一個鄰居節(jié)點(diǎn)所占用時隙的起始時刻、實(shí)際開始發(fā)送時間; 所述鄰居節(jié)點(diǎn)收到SYNC消息時,計算SYNC消息的發(fā)送節(jié)點(diǎn)到下一個自身占用時隙開始的剩余時間,鄰居節(jié)點(diǎn)根據(jù)所述剩余時間調(diào)整自身的下一個時隙和SYNC消息的發(fā)送節(jié)點(diǎn)的下一個時隙在同一時刻開始。
8.根據(jù)權(quán)利要求4至7任一項(xiàng)所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,所述時隙的長度大于兩倍的平均數(shù)據(jù)包發(fā)送時長。
9.根據(jù)權(quán)利要求I所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,節(jié)點(diǎn)根據(jù)本地的時隙表中發(fā)送節(jié)點(diǎn)的個數(shù)和數(shù)據(jù)塊中數(shù)據(jù)包的數(shù)量設(shè)置數(shù)據(jù)包發(fā)送時的起始序號;所述步驟C中,發(fā)送者節(jié)點(diǎn)從所述起始序號開始至塊尾依次發(fā)送數(shù)據(jù)塊中的數(shù)據(jù)包,然后再從塊首開始至所述起始序號依次發(fā)送數(shù)據(jù)塊中的數(shù)據(jù)包。
10.根據(jù)權(quán)利要求9所述的無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,其特征在于,按照如下公式計算所述起始序號 Hstart = (NpageAijsi) (mod Npage) 其中,Iii是節(jié)點(diǎn)i的時隙表中發(fā)送節(jié)點(diǎn)的個數(shù),Si是節(jié)點(diǎn)i的時隙編號,Npage是一個數(shù)據(jù)塊的數(shù)據(jù)包的數(shù)量,mod表示取模運(yùn)算。
全文摘要
本發(fā)明提供了一種無線傳感器網(wǎng)絡(luò)中的數(shù)據(jù)分發(fā)方法,特別適用于對傳感器網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行程序無線更新的場景。本發(fā)明通過將大容量分發(fā)數(shù)據(jù)劃分為固定大小的數(shù)據(jù)塊、進(jìn)一步劃分為預(yù)設(shè)數(shù)量個固定長度的數(shù)據(jù)包,且每個數(shù)據(jù)包對應(yīng)了不同的序號,通過位向量標(biāo)記接收節(jié)點(diǎn)收到的數(shù)據(jù)包并請求重傳丟失的包,網(wǎng)絡(luò)中離數(shù)據(jù)源不同距離的節(jié)點(diǎn)可以同時傳輸不同編號的數(shù)據(jù)塊,形成管道式傳輸;節(jié)點(diǎn)通過TDMA方式按時隙發(fā)送和接收數(shù)據(jù),在檢測到?jīng)_突時動態(tài)調(diào)整時隙表并交換以減少后續(xù)沖突,也可以減少冗余的數(shù)據(jù)接收;多個發(fā)送節(jié)點(diǎn)還可按照不同的起始序號發(fā)送數(shù)據(jù)包,能夠減少數(shù)據(jù)分發(fā)時間,并能減少數(shù)據(jù)分發(fā)過程中的能量消耗。
文檔編號H04W84/18GK102883466SQ20121016414
公開日2013年1月16日 申請日期2012年5月24日 優(yōu)先權(quán)日2011年7月15日
發(fā)明者陳亮, 于峰崎 申請人:中國科學(xué)院深圳先進(jìn)技術(shù)研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
邯郸市| 定远县| 冕宁县| 宁夏| 河津市| 长宁区| 任丘市| 南阳市| 芒康县| 西乌珠穆沁旗| 营口市| 阜宁县| 黄浦区| 杂多县| 都匀市| 房产| 宜宾市| 灵武市| 神木县| 潞城市| 甘泉县| 巴东县| 河南省| 东光县| 锡林浩特市| 万州区| 威海市| 谢通门县| 蓝山县| 九龙县| 银川市| 南昌市| 巧家县| 秀山| 灵武市| 石首市| 宣化县| 正阳县| 庆城县| 黑龙江省| 六盘水市|