国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法及裝置的制作方法

      文檔序號(hào):7945706閱讀:151來(lái)源:國(guó)知局
      專利名稱:無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及無(wú)線傳感器網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種無(wú)線傳感器網(wǎng)絡(luò)的數(shù)據(jù)收集路由方法及裝置。
      背景技術(shù)
      近年來(lái),無(wú)線傳感器網(wǎng)絡(luò)發(fā)展迅速,無(wú)線傳感器網(wǎng)絡(luò)由部署在一定區(qū)域內(nèi)的多個(gè)傳感器節(jié)點(diǎn)組成,通過(guò)無(wú)線通信方式組成一個(gè)多跳的網(wǎng)絡(luò)系統(tǒng),對(duì)網(wǎng)絡(luò)覆蓋區(qū)域內(nèi)的數(shù)據(jù)進(jìn)行搜集處理并將之發(fā)送給用戶或觀察者。它具有廣闊的應(yīng)用前景環(huán)境監(jiān)測(cè)和預(yù)報(bào)、醫(yī)療護(hù)理、智能家居、監(jiān)控、交通、探索以及物流管理和安全檢測(cè)等。
      路由協(xié)議是無(wú)線傳感器網(wǎng)絡(luò)中網(wǎng)絡(luò)層的核心技術(shù),也是當(dāng)今國(guó)內(nèi)外研究的熱點(diǎn)之一,其主要目的是實(shí)現(xiàn)能量有效性路由的制定,即在把數(shù)據(jù)從源節(jié)點(diǎn)可靠地傳送到匯聚節(jié)點(diǎn)的基礎(chǔ)上,盡可能地使網(wǎng)絡(luò)生命周期最大化。目前的無(wú)線傳感器網(wǎng)絡(luò)的路由協(xié)議根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)主要分為三類平面路由協(xié)議(flat-based)、層次路由協(xié)議(hierarchical-based)禾口基于位置(location-based)的路由協(xié)議。
      在平面路由協(xié)議中,所有網(wǎng)絡(luò)節(jié)點(diǎn)不存在等級(jí)和層次差異,它們的地位是平等的,節(jié)點(diǎn)通過(guò)相互之間的局部操作和信息反饋來(lái)生成路由。在這類協(xié)議中,匯聚節(jié)點(diǎn)向監(jiān)測(cè)區(qū)域的節(jié)點(diǎn)發(fā)出查詢命令,監(jiān)測(cè)區(qū)域內(nèi)的節(jié)點(diǎn)收到査詢命令后,向目的節(jié)點(diǎn)發(fā)送監(jiān)測(cè)數(shù)據(jù)。
      Flooding協(xié)議是一種經(jīng)典的平面路由協(xié)議,在該協(xié)議中,節(jié)點(diǎn)將采集或收到的數(shù)據(jù)向所有的鄰節(jié)點(diǎn)廣播,這些數(shù)據(jù)包只有在過(guò)期或到達(dá)目的地時(shí)才停止傳播。該協(xié)議的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,不需要為保持網(wǎng)絡(luò)拓?fù)湫畔⒑蛯?shí)現(xiàn)復(fù)雜的路由發(fā)現(xiàn)方法而消耗計(jì)算資源,方法具有很高的可靠性和健壯性。但是該協(xié)議同時(shí)具有嚴(yán)重的缺陷1、內(nèi)爆,即節(jié)點(diǎn)幾乎同時(shí)從鄰節(jié)點(diǎn)收到多份相同數(shù)據(jù);2、交疊,節(jié)點(diǎn)先后收到監(jiān)控同一區(qū)域的多個(gè)節(jié)點(diǎn)發(fā)送的幾乎相同的數(shù)據(jù);3、資源利用盲目,節(jié)點(diǎn)不考慮自身資源限制,在任何情況下都轉(zhuǎn)發(fā)數(shù)據(jù)。這些缺陷會(huì)導(dǎo)致節(jié)點(diǎn)能耗消耗過(guò)快,網(wǎng)絡(luò)生存周期太短,不符合長(zhǎng)時(shí)間工作的需求。
      Gossiping協(xié)議是對(duì)Flooding協(xié)議的改進(jìn),在該協(xié)議中,節(jié)點(diǎn)將產(chǎn)生或收到的數(shù)據(jù)隨機(jī)轉(zhuǎn)發(fā),雖然避免了內(nèi)爆的問(wèn)題,但增加了時(shí)延。隨著網(wǎng)絡(luò)節(jié)點(diǎn)的增加,該協(xié)議的時(shí)延會(huì)越來(lái)越大,效率越來(lái)越低,不符合在至少具有幾十個(gè)節(jié)點(diǎn)的應(yīng)用環(huán)境中高效和實(shí)時(shí)性的需求。
      SPIN是一種以數(shù)據(jù)為中心的自適應(yīng)通信路由協(xié)議,它引入了兩個(gè)新思路協(xié)商(negotiation)禾口資源自適應(yīng)(resource-adaptation),以此來(lái)解決傳統(tǒng)路由協(xié)議在傳感器網(wǎng)絡(luò)中可能存在的問(wèn)題。在該協(xié)議中,傳輸數(shù)據(jù)之前,節(jié)點(diǎn)之間要先進(jìn)行協(xié)商,只有有用的數(shù)據(jù)才會(huì)傳輸;同時(shí),每個(gè)節(jié)點(diǎn)都有一個(gè)資源管理器負(fù)責(zé)管理節(jié)點(diǎn)資源損耗,根據(jù)節(jié)點(diǎn)所擁有的資源狀況,資源管理器控制節(jié)點(diǎn)在處理和傳輸數(shù)據(jù)時(shí)采取不同的行為。但是,SPIN協(xié)議中,度數(shù)(即相鄰節(jié)點(diǎn)的個(gè)數(shù))較大的節(jié)點(diǎn)消耗能量較多,如果該節(jié)點(diǎn)處在關(guān)鍵位置上,它的"死亡"可能會(huì)對(duì)網(wǎng)絡(luò)造成較大影響;并且,在傳輸新數(shù)據(jù)的過(guò)程中,直接向鄰居節(jié)點(diǎn)廣播數(shù)據(jù)包,而沒有考慮其鄰居節(jié)點(diǎn)如果由于自身能量的原因不愿承擔(dān)起轉(zhuǎn)發(fā)新數(shù)據(jù)的功能時(shí),則新數(shù)據(jù)將無(wú)法傳輸而出現(xiàn)"數(shù)據(jù)盲點(diǎn)",進(jìn)而影響整個(gè)網(wǎng)絡(luò)信息的收集。SPIN協(xié)議的該缺點(diǎn)會(huì)導(dǎo)致網(wǎng)絡(luò)負(fù)載不均,部分節(jié)點(diǎn)過(guò)早死亡,影響數(shù)據(jù)的正常傳輸,不符合對(duì)網(wǎng)絡(luò)負(fù)載均衡和數(shù)據(jù)傳輸?shù)目煽啃砸蟆?br> 層次路由協(xié)議采用簇(cluste:r)的形式將網(wǎng)絡(luò)進(jìn)行劃分,它與平面路由協(xié)議相對(duì)應(yīng)。所謂簇就是具有某種關(guān)聯(lián)的網(wǎng)絡(luò)節(jié)點(diǎn)集合。每個(gè)簇由一個(gè)簇首(cluster head)和多個(gè)簇內(nèi)成員(cluster member)組成。簇與簇之間可以通過(guò)簇首進(jìn)行通信,簇首管理或控制整個(gè)簇內(nèi)成員,協(xié)調(diào)成員節(jié)點(diǎn)之間的工作與通信,負(fù)責(zé)收集簇內(nèi)節(jié)點(diǎn)的信息并對(duì)這些信息進(jìn)行融合處理。簇首之間的連接構(gòu)成上一級(jí)網(wǎng)絡(luò)的骨干節(jié)點(diǎn)。
      低功耗自適應(yīng)集簇分層型協(xié)議(Low Energy Adaptive ClusteringHierarchy,下稱LEACH協(xié)議)是MIT的Chandrakasan等人為無(wú)線傳感器網(wǎng)絡(luò)設(shè)計(jì)的低功耗自適應(yīng)聚類路由方法,它是第一個(gè)在無(wú)線傳感器網(wǎng)絡(luò)中提出的層次式路由協(xié)議。該協(xié)議定義了 "輪"(round)的概念, 一輪由初始化和穩(wěn)定工作兩個(gè)階段組成。為了避免額外的處理開銷,穩(wěn)定態(tài)一般持續(xù)相對(duì)較長(zhǎng)的時(shí)間。在初始化階段,簇首是通過(guò)下面的機(jī)制產(chǎn)生的節(jié)點(diǎn)生成(O, l)之間的隨機(jī)數(shù),如果大于閾值T,則選該節(jié)點(diǎn)為簇首。該協(xié)議在計(jì)算閾值T時(shí)未考慮節(jié)點(diǎn)的剩余能量,如果被選為簇首的節(jié)點(diǎn)剩余能量很低,即將死亡,整個(gè)簇的數(shù)據(jù)可能會(huì)無(wú)法傳送到匯聚節(jié)點(diǎn),導(dǎo)致數(shù)據(jù)丟失。此外,該方法假設(shè)簇首均可直 接與匯聚點(diǎn)通信,在該假設(shè)不成立的監(jiān)測(cè)環(huán)境中則無(wú)法應(yīng)用該方法。
      HEED(hybrid energy-efficient distributed clustering)協(xié)議針對(duì) LEACH協(xié)議簇首分布不均勻的問(wèn)題進(jìn)行了改進(jìn),其基本思路是將節(jié)點(diǎn)最大剩余 能量禾口平均最小可達(dá)會(huì)巨量(average minimum reach ability power,下禾爾AMRP) 作為選擇簇首的參數(shù),通過(guò)迭代的方式周期性地選取出較合理的簇首分布。平 均最小可達(dá)能量是指一個(gè)簇內(nèi)所有其他節(jié)點(diǎn)與簇首通信所需的最小功率的平均 值。它以簇內(nèi)平均可達(dá)能量AMRP作為衡量簇內(nèi)通信成本的標(biāo)準(zhǔn)。HEED協(xié)議雖 然使網(wǎng)絡(luò)的能量均衡消耗,簇首的分布更合理,但由于簇首選舉采用迭代的方 式,簇首生成時(shí)間較長(zhǎng),通信開銷較大。
      因此,人們需要一種能夠長(zhǎng)時(shí)間監(jiān)測(cè)數(shù)據(jù)且數(shù)據(jù)傳輸可靠的路由技術(shù),并 解決上述相關(guān)技術(shù)中的問(wèn)題。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供一種基于異步休眠調(diào)度的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路 由方法及裝置。
      根據(jù)本發(fā)明的一方面,提供了一種無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法,其 技術(shù)方案是
      一種無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法,包括以下步驟 路由建立階段S101,其包括以下步驟
      步驟S101-1:基站發(fā)出hello包,所述hello包的內(nèi)容包括節(jié)點(diǎn)的節(jié)點(diǎn) 號(hào)、自己到基站的跳步數(shù)、剩余能量及LEAF標(biāo)識(shí);其中,基站到自己跳步數(shù) 為0,其它節(jié)點(diǎn)到基站的跳步數(shù)初始化為無(wú)窮大,如果節(jié)點(diǎn)為L(zhǎng)EAF節(jié)點(diǎn),則 LEAF標(biāo)示為真,否則為假;
      步驟S101-2:節(jié)點(diǎn)判斷是否收到hello包,如果是則執(zhí)行步驟S101-3;
      步驟S101-3:確定本節(jié)點(diǎn)到基站的跳步數(shù),建立鄰居表,所述鄰居表的內(nèi) 容包括鄰居節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、鄰居節(jié)點(diǎn)到基站的跳步數(shù)、鄰居節(jié)點(diǎn)剩余能量、到
      鄰居節(jié)點(diǎn)的鏈路質(zhì)量指示,執(zhí)行步驟S101-4;
      步驟S101-4:判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如 果是則廣播自身的hello包;步驟S101-5:如果節(jié)點(diǎn)在路由建立階段S101都沒有收到hello包,則判 定自己為新加入的節(jié)點(diǎn),執(zhí)行生成休眠調(diào)度階段S102中的步驟S102-lb;
      生成休眠調(diào)度階段S102,其包括以下步驟
      所述生成休眠調(diào)度階段S102中包括隨機(jī)時(shí)間和第一周期,所述第一周期 包括監(jiān)聽時(shí)間和休眠時(shí)間,其中,隨機(jī)時(shí)間<休眠時(shí)間
      步驟S102-1:節(jié)點(diǎn)等待隨機(jī)時(shí)間,開始自身的監(jiān)聽時(shí)間并廣播hello包, 如果節(jié)點(diǎn)收到hello包,執(zhí)行步驟S102-2;
      步驟S102-lb:節(jié)點(diǎn)等待隨機(jī)時(shí)間,開始自身的監(jiān)聽時(shí)間并按第二周期為 周期廣播路由修復(fù)包,到數(shù)據(jù)收集階段S103開始時(shí)則停止發(fā)送路由修復(fù)包, 其中,第二周期〈監(jiān)聽時(shí)間,執(zhí)行數(shù)據(jù)收集階段S103中的步驟S103-7;所述路 由修復(fù)包的內(nèi)容包括本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次開始時(shí)間的時(shí)間差、自己到基 站的跳步數(shù)、剩余能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào);
      步驟S102-2:在鄰居表中記錄鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間和自身節(jié)點(diǎn)監(jiān)聽時(shí)間的啟 動(dòng)時(shí)間差;
      數(shù)據(jù)收集階段S103,其包括以下步驟 節(jié)點(diǎn)周期性進(jìn)入監(jiān)聽時(shí)間和休眠時(shí)間
      步驟S103-l:判斷節(jié)點(diǎn)是否處于監(jiān)聽時(shí)間,如果是則執(zhí)行步驟S103-2a; 如果不是則執(zhí)行步驟S103-2b;
      步驟S103-2a:節(jié)點(diǎn)監(jiān)聽無(wú)線信道,判斷收到的數(shù)據(jù)包類型;如果收到環(huán) 境數(shù)據(jù)包,執(zhí)行步驟S103-3;如果收到路由修復(fù)包,執(zhí)行步驟S103-6;如果 收到hello包,執(zhí)行步驟S103-7;
      步驟S103-2b:節(jié)點(diǎn)關(guān)閉監(jiān)聽,進(jìn)入休眠狀態(tài);
      步驟S103-2c:節(jié)點(diǎn)判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果是 則執(zhí)行步驟S103-3;
      步驟S103-3:節(jié)點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居
      表一次計(jì)算所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)q,選出q最小的節(jié)點(diǎn)作為下一跳將消息
      發(fā)出去,執(zhí)行步驟S103-4;步驟S103-4:等待鄰居表中記錄的與該節(jié)點(diǎn)的時(shí)間差的時(shí)間,即等待下一 條節(jié)點(diǎn)進(jìn)入監(jiān)聽狀態(tài)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;
      步驟S103-5:節(jié)點(diǎn)在Tw時(shí)期向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;
      步驟S103-6:更新鄰居表信息,其中鄰居節(jié)點(diǎn)與本節(jié)點(diǎn)的時(shí)間差(t)的計(jì) 算公式為Atl-At2,其中Atl為發(fā)送節(jié)點(diǎn)發(fā)送的路由修復(fù)包中包含的時(shí)間 差,At2為本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次監(jiān)聽時(shí)間(Tw)開始時(shí)間的時(shí)間差;如果 收到的路由修復(fù)包中的跳步數(shù)為無(wú)窮大,回復(fù)一個(gè)路由修復(fù)包;
      步驟S103-7:更新節(jié)點(diǎn)本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的 跳步數(shù)加l;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié)點(diǎn)各自 進(jìn)入監(jiān)聽狀態(tài)時(shí)依次發(fā)送hello包。
      優(yōu)選的,所述步驟S103-2a中節(jié)點(diǎn)如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-
      3a;
      步驟S103-3a:判斷是否Trcv〉P*Tw,其中,P=l/2, Trcv是收到的環(huán)境 數(shù)據(jù)包時(shí)間,Tw是監(jiān)聽時(shí)間,如果是則執(zhí)行步驟S103-3b;如果否則執(zhí)行步驟 S103-3c;
      步驟S103-3b:回復(fù)ACK,在ACK包中加入收到包的當(dāng)前時(shí)間和最近一次 Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,執(zhí)行步驟S103-3;
      步驟S103-3c:回復(fù)ACK,在ACK包中不含時(shí)間差Trcv-Tw,執(zhí)行步驟 S103-3;
      所述步驟S103-5中,節(jié)點(diǎn)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包后,等待確認(rèn) ACK;如果接收到下一跳節(jié)點(diǎn)返回的ACK,執(zhí)行步驟S103-5a;如果沒有收到 ACK,執(zhí)行步驟S103-5b;
      步驟S103-5a:記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間的開始時(shí)間,重 新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差,更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;
      步驟S103-5b:隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl〈CTw,如果在此期 間收到ACK,執(zhí)行步驟S103-5a,如果仍然沒有收到ACK,判斷該鄰居節(jié)點(diǎn)已經(jīng) 失效,從鄰居表中刪除該鄰居節(jié)點(diǎn)信息,執(zhí)行步驟S103-3。
      優(yōu)選的,所述步驟S102-2中啟動(dòng)時(shí)間差t的計(jì)算公式為如果t3》t2, 則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點(diǎn)記錄的本節(jié)點(diǎn)Tw啟動(dòng)時(shí)間,t3為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)hello包的當(dāng)前時(shí)間,n是 使得(t3+nT)》t2的最小自然數(shù)。
      優(yōu)選的,所述步驟S103-3中轉(zhuǎn)發(fā)代價(jià)q的計(jì)算公式為
      '五,"x
      其中,A為鄰居節(jié)點(diǎn)到Sink節(jié)點(diǎn)的跳步數(shù),《為鄰居節(jié)點(diǎn)剩余能量, £2/'為到該鄰居節(jié)點(diǎn)的鏈路質(zhì)量,","分別為剩余能量和鏈路質(zhì)量權(quán)重指數(shù)。
      優(yōu)選的,所述步驟S103-5a中的啟動(dòng)時(shí)間差t的計(jì)算公式為如果ACK中 包含發(fā)送ACK節(jié)點(diǎn)收到包的當(dāng)前時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t-(t4-15);其中,t4為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn) ACK的當(dāng)前時(shí)間,t5為本第一周期T內(nèi)第一次向鄰居節(jié)點(diǎn)發(fā)送環(huán)境數(shù)據(jù)包的時(shí) 間。
      根據(jù)本發(fā)明的另一方面,提供了一種由無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法 得到的路由裝置,該路由裝置映射到每一個(gè)節(jié)點(diǎn),至少由路由建立模塊、生成 休眠調(diào)度模塊及數(shù)據(jù)收集模塊依次連接組成,各模塊分別實(shí)現(xiàn)如下功能
      路由建立模塊
      基站發(fā)出hello包,所述hello包的內(nèi)容包括節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、自己到基站 的跳步數(shù)、剩余能量及LEAF標(biāo)識(shí);其中,基站到自己跳步數(shù)為0,其它節(jié)點(diǎn)到 基站的跳步數(shù)初始化為無(wú)窮大,如果節(jié)點(diǎn)為L(zhǎng)EAF節(jié)點(diǎn),則LEAF標(biāo)示為真,否 則為假;節(jié)點(diǎn)判斷是否收到hello包,如果是則確定本節(jié)點(diǎn)到基站的跳步數(shù), 建立鄰居表,所述鄰居表的內(nèi)容包括鄰居節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、鄰居節(jié)點(diǎn)到基站的跳 步數(shù)、鄰居節(jié)點(diǎn)剩余能量、到鄰居節(jié)點(diǎn)的鏈路質(zhì)量指示;判斷自己到基站的跳 步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;如果路由 建立模塊中節(jié)點(diǎn)都沒有收到hello包,則判定自己為新加入的節(jié)點(diǎn);
      生成休眠調(diào)度模塊
      所述生成休眠調(diào)度模塊中包括隨機(jī)時(shí)間和第一周期,所述第一周期包括監(jiān) 聽時(shí)間和休眠時(shí)間,其中,隨機(jī)時(shí)間<休眠時(shí)間;節(jié)點(diǎn)等待隨機(jī)時(shí)間,開始自身的監(jiān)聽時(shí)間并廣播hello包,如果節(jié)點(diǎn)收到 hello包,在鄰居表中記錄鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間和自身節(jié)點(diǎn)監(jiān)聽時(shí)間的啟動(dòng)時(shí)間 差;
      判定自己為新加入的節(jié)點(diǎn)等待隨機(jī)時(shí)間,開始自身的監(jiān)聽時(shí)間并按第二周 期為周期廣播路由修復(fù)包,到數(shù)據(jù)收集階段開始時(shí)則停止發(fā)送路由修復(fù)包,其 中,第二周期〈監(jiān)聽時(shí)間;所述路由修復(fù)包的內(nèi)容包括本節(jié)點(diǎn)當(dāng)前時(shí)間距最近 一次開始時(shí)間的時(shí)間差、自己到基站的跳步數(shù)、剩余能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào);
      數(shù)據(jù)收集模塊
      節(jié)點(diǎn)周期性進(jìn)入監(jiān)聽時(shí)間和休眠時(shí)間判斷節(jié)點(diǎn)是否處于監(jiān)聽時(shí)間,如果 是則監(jiān)聽無(wú)線信道;如果不是節(jié)點(diǎn)關(guān)閉監(jiān)聽,進(jìn)入休眠狀態(tài);或者節(jié)點(diǎn)判斷是 否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果有,則節(jié)點(diǎn)從鄰居表選擇下一跳節(jié)
      點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居表一次計(jì)算所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)G,選出 c'最小的節(jié)點(diǎn)作為下一跳將消息發(fā)出去,等待鄰居表中記錄的與該節(jié)點(diǎn)的時(shí)間 差的時(shí)間,在監(jiān)聽時(shí)間向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;
      節(jié)點(diǎn)監(jiān)聽無(wú)線信道時(shí),判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,節(jié) 點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居表一次計(jì)算所有鄰居
      節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)q,選出G最小的節(jié)點(diǎn)作為下一跳將消息發(fā)出去,等待鄰居表
      中記錄的與該節(jié)點(diǎn)的時(shí)間差的時(shí)間,即等待下一條節(jié)點(diǎn)進(jìn)入監(jiān)聽狀態(tài)發(fā)送環(huán)境 數(shù)據(jù)包,節(jié)點(diǎn)在Tw時(shí)期向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;
      如果收到路由修復(fù)包,更新鄰居表信息,其中鄰居節(jié)點(diǎn)與本節(jié)點(diǎn)的時(shí)間差 (t)的計(jì)算公式為A tl- A t2,其中A tl為發(fā)送節(jié)點(diǎn)發(fā)送的路由修復(fù)包中包含的 時(shí)間差,A t2為本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次監(jiān)聽時(shí)間Tw開始時(shí)間的時(shí)間差; 如果收到的路由修復(fù)包中的跳步數(shù)為無(wú)窮大,回復(fù)一個(gè)路由修復(fù)包;
      如果收到hello包,更新節(jié)點(diǎn)本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中 最小的跳步數(shù)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié) 點(diǎn)各自進(jìn)入監(jiān)聽狀態(tài)時(shí)依次發(fā)送hello包。
      優(yōu)選的,數(shù)據(jù)收集模塊中節(jié)點(diǎn)監(jiān)聽無(wú)線信道時(shí),如果收到環(huán)境數(shù)據(jù)包,判 斷是否TrCV〉P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時(shí)間,Tw是監(jiān)聽 時(shí)間,如果是則回復(fù)ACK,在ACK包中加入收到包的當(dāng)前時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,然后再?gòu)泥従颖磉x擇下一跳節(jié)點(diǎn);如果否則回復(fù) ACK,在ACK包中不含時(shí)間差Trcv-Tw,然后再?gòu)泥従颖磉x擇下一跳節(jié)點(diǎn);
      當(dāng)節(jié)點(diǎn)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包后,等待確認(rèn)ACK;如果接收到下一 跳節(jié)點(diǎn)返回的ACK,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間的開始時(shí)間,重 新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差,更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;如果沒 有收到ACK,則隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl《Tw,如果在此期間收 到ACK,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間的開始時(shí)間,重新計(jì)算鄰居 節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差,更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;如果仍然沒有收到 ACK,判斷該鄰居節(jié)點(diǎn)已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點(diǎn)信息,從鄰居表 選擇下一跳節(jié)點(diǎn)。
      優(yōu)選的,所述生成休眠調(diào)度模塊鄰居表中的啟動(dòng)時(shí)間差t的計(jì)算公式為 如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2 為本節(jié)點(diǎn)記錄的本節(jié)點(diǎn)Tw啟動(dòng)時(shí)間,t3為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)hello包的當(dāng) 前時(shí)間,n是使得(t3+nT)》t2的最小自然數(shù)。
      優(yōu)選的,所述轉(zhuǎn)發(fā)代價(jià)^的計(jì)算公式為
      ,五,"x
      其中,A為鄰居節(jié)點(diǎn)到Sink節(jié)點(diǎn)的跳步數(shù),《為鄰居節(jié)點(diǎn)剩余能量, Z2/'為到該鄰居節(jié)點(diǎn)的鏈路質(zhì)量,","分別為剩余能量和鏈路質(zhì)量權(quán)重指數(shù)。
      優(yōu)選的,如果接收到下一跳節(jié)點(diǎn)返回的ACK,記錄收到ACK的時(shí)間為鄰居 節(jié)點(diǎn)監(jiān)聽時(shí)間Tw的開始時(shí)間,重新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差t, 所述啟動(dòng)時(shí)間差t的計(jì)算公式為如果ACK中包含發(fā)送ACK節(jié)點(diǎn)收到包的當(dāng)前 時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,則t=t-(Trcv-Tw);否則 t=t-(t4-15);其中,t4為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)ACK的當(dāng)前時(shí)間,t5為本第一 周期T內(nèi)第一次向鄰居節(jié)點(diǎn)發(fā)送環(huán)境數(shù)據(jù)包的時(shí)間。
      根據(jù)上述技術(shù)方案,本發(fā)明實(shí)現(xiàn)如下技術(shù)效果
      在路由建立階段,節(jié)點(diǎn)在切換到工作節(jié)點(diǎn)廣播hello包,同時(shí)記錄接收到 的其它節(jié)點(diǎn)hello包時(shí)間,通過(guò)接收hello包的時(shí)間和節(jié)點(diǎn)廣播hello包的時(shí) 間差維護(hù)鄰居節(jié)點(diǎn)的休眠調(diào)度,解決時(shí)間同步引起的額外開銷;節(jié)點(diǎn)新加入或者更換電池后,局部路由信息丟失,為了使新加入節(jié)點(diǎn)能快
      速融入網(wǎng)絡(luò),通過(guò)判斷在路由建立階段是否接收到hello包來(lái)判斷本身是否為 新加入節(jié)點(diǎn),并在生成休眠調(diào)度階段中節(jié)點(diǎn)按周期Tl廣播路由修復(fù)包,收到 路由修復(fù)包的節(jié)點(diǎn)會(huì)在下一節(jié)點(diǎn)切換到工作狀態(tài)時(shí)廣播hello包,從而對(duì)局部 路由進(jìn)行修復(fù);
      節(jié)點(diǎn)向鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包后等待ACK,如果未收到ACK,則隔tl后 重發(fā),持續(xù)n次重發(fā),如果重發(fā)n次后仍未收到ACK那么重新選擇下一個(gè)鄰居 為下一跳,當(dāng)收到ACK后,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)更新后的開始工作 時(shí)間;如果節(jié)點(diǎn)接收到鄰居發(fā)來(lái)的環(huán)境數(shù)據(jù)包時(shí)間Trcv〉P*TW,那么回復(fù)ACK 時(shí),在ACK包中加入時(shí)間差Trcv-Tw,解決節(jié)點(diǎn)硬件的石英晶體振蕩器隨著時(shí) 間產(chǎn)生偏移累計(jì),會(huì)造成節(jié)點(diǎn)維護(hù)的鄰居休眠調(diào)度時(shí)間產(chǎn)生誤差,導(dǎo)致路由失 效的問(wèn)題。
      由以上方案可見,與現(xiàn)有的路由方法相比,本發(fā)明路由方法的優(yōu)點(diǎn)有
      1、 不需要時(shí)間同步而達(dá)到休眠調(diào)度,利用接收到的hello數(shù)據(jù)包與自身 Tw時(shí)間差確定鄰居節(jié)點(diǎn)的休眠周期,避免了時(shí)間同步引起的額外開銷;
      2、 標(biāo)識(shí)為L(zhǎng)EAF節(jié)點(diǎn)是人員不方便到達(dá)的節(jié)點(diǎn),盡可能不轉(zhuǎn)發(fā)數(shù)據(jù),把網(wǎng) 絡(luò)的能耗負(fù)載加到容易更換電池的節(jié)點(diǎn)上;
      3、 更換電池或者新加入的節(jié)點(diǎn)能在小于Ttopo+2T+Trandom時(shí)間內(nèi)修復(fù)局 部路由,有很好的可擴(kuò)展性和收斂性;
      4、 能對(duì)定時(shí)器偏移累計(jì)引起的發(fā)送失敗問(wèn)題進(jìn)行自適應(yīng)修復(fù),具有很好 的魯棒性;
      5、 控制信息種類少,只有hello包和路由修復(fù)包兩種,而且不要求節(jié)點(diǎn) 之間頻繁交換控制信息,只在建立路由階段、生成休眠調(diào)度階段、定時(shí)器偏移 累計(jì)引起的發(fā)送失敗和新節(jié)點(diǎn)加入時(shí)交換控制信息,提高了能量利用率;
      6、 在低于1%的占空比(監(jiān)聽時(shí)間/(監(jiān)聽時(shí)間+休眠時(shí)間))時(shí)也能良好工 作,很好地保存節(jié)點(diǎn)能量;
      7、 對(duì)應(yīng)用層隱藏了路由方法的具體實(shí)現(xiàn),通過(guò)接口為應(yīng)用層提供透明的 服務(wù)。


      圖1是根據(jù)本發(fā)明的拓?fù)渖墒疽鈭D2是根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的流程圖3是根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由裝置的方框圖4是根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法中路由建立階段的 流程圖5是根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法中生成休眠調(diào)度階 段的流程圖6是根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法中數(shù)據(jù)收集階段的 基本流程圖7為根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法中數(shù)據(jù)收集階段帶 ACK確認(rèn)機(jī)制的流程圖8為定時(shí)器前向偏移修復(fù)示意圖9為定時(shí)器后向偏移修復(fù)示意圖IO是本發(fā)明方法三個(gè)階段示意圖。
      以下結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
      作進(jìn)一步詳細(xì)地說(shuō)明。
      具體實(shí)施例方式
      本發(fā)明是一種基于異步休眠調(diào)度的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法(a Data collection Routing algorithm based on Asynchronous Duty—cycle in Wireless Sensor Networks,以下簡(jiǎn)稱DRAD)及裝置,在本發(fā)明的方法中共 有3種數(shù)據(jù)包hello包、環(huán)境數(shù)據(jù)包以及路由修復(fù)包(RouteR印aire)。在以 下的實(shí)施例說(shuō)明中,將本發(fā)明的方法及裝置應(yīng)用于如下網(wǎng)絡(luò)模型
      1. 所有節(jié)點(diǎn)隨機(jī)分布于一個(gè)三維空間中,匯聚節(jié)點(diǎn)(基站)在區(qū)域外側(cè), 匯聚節(jié)點(diǎn)只有一個(gè);
      2. 所有節(jié)點(diǎn)與匯聚節(jié)點(diǎn)均保持靜止,局部節(jié)點(diǎn)能補(bǔ)充能量;
      3. 所有節(jié)點(diǎn)均同構(gòu),具有唯一ID,并具有數(shù)據(jù)融合的功能;
      4. 長(zhǎng)期監(jiān)測(cè)環(huán)境數(shù)據(jù),對(duì)數(shù)據(jù)的實(shí)時(shí)性沒有特別要求,可以容忍一定的 數(shù)據(jù)延遲;5.網(wǎng)內(nèi)的數(shù)據(jù)傳輸表現(xiàn)為普通節(jié)點(diǎn)發(fā)送到基站的數(shù)據(jù)收集。
      圖2示出了根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的流程圖,圖 3示出了根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由裝置的方框圖。
      參照?qǐng)D2及圖10,本發(fā)明的方法包括以下階段及步驟
      路由建立階段S101的時(shí)間為Ttopo,參照?qǐng)D4,路由建立階段S101包括 以下步驟-
      步驟S101-1:基站發(fā)出hello包,該hello包的內(nèi)容包括節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、 自己到基站的跳步數(shù)、剩余能量及LEAF標(biāo)識(shí);其中,基站到自己跳步數(shù)為0, 其它節(jié)點(diǎn)到基站的跳步數(shù)初始化為無(wú)窮大;如果節(jié)點(diǎn)為L(zhǎng)EAF節(jié)點(diǎn),則LEAF標(biāo) 示為真,否則為假;
      步驟S101-2:節(jié)點(diǎn)判斷是否收到hello包,如果是則執(zhí)行步驟S101-3;
      步驟S101-3:確定本節(jié)點(diǎn)到基站的跳步數(shù)(myhop),建立鄰居表,鄰居表 的內(nèi)容包括鄰居節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、鄰居節(jié)點(diǎn)到基站的跳步數(shù)、鄰居節(jié)點(diǎn)剩余能 量、到鄰居節(jié)點(diǎn)的鏈路質(zhì)量指示;執(zhí)行步驟S101-4;
      步驟S101-4:判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如 果是則廣播自身的hello包;
      步驟S101-5:如果節(jié)點(diǎn)在Ttopo期間都沒有收到hello包,則判定自己為 新加入的節(jié)點(diǎn),執(zhí)行生成休眠調(diào)度階段S102中的步驟S102-lb;
      參照?qǐng)D5,生成休眠調(diào)度階段S102中包括隨機(jī)時(shí)間Trandom和第一周期 T,該第一周期T包括監(jiān)聽時(shí)間Tw和休眠時(shí)間Ts,即T=Tw + Ts,且Trandom <Ts。生成休眠調(diào)度階段S102包括以下步驟
      步驟S102-l:節(jié)點(diǎn)等待隨機(jī)時(shí)間,開始自身的Tw,廣播hello包,如果 節(jié)點(diǎn)收到hello包,執(zhí)行步驟S102-2;
      步驟S102-lb:節(jié)點(diǎn)等待隨機(jī)時(shí)間Trandom后,開始監(jiān)聽時(shí)間Tw,按第二 周期Tl為周期廣播路由修復(fù)包,到數(shù)據(jù)收集階段S103開始時(shí)停止發(fā)送路由修 復(fù)包,其中TKTw,然后執(zhí)行數(shù)據(jù)收集階段中的步驟S103-7;該路由修復(fù)包的 內(nèi)容包括本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次Tw開始時(shí)間的時(shí)間差A(yù)t、自己到基站的 跳步數(shù)、剩余能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào);步驟S102-2:在鄰居表中記錄鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間Tw和自身節(jié)點(diǎn)監(jiān)聽時(shí)間
      Tw的啟動(dòng)時(shí)間差t;在該步驟中,啟動(dòng)時(shí)間差t的計(jì)算公式為如果t3》t2,
      則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點(diǎn)記錄 的本節(jié)點(diǎn)Tw啟動(dòng)時(shí)間,t3為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)hello包的當(dāng)前時(shí)間,n是 使得(t3+nT)》t2的最小自然數(shù)。
      參照?qǐng)D6,在數(shù)據(jù)收集階段S103中,節(jié)點(diǎn)周期性地進(jìn)入Tw和Ts時(shí)期,其 中,Tw期間節(jié)點(diǎn)打開監(jiān)聽,可接收信息;Ts期間節(jié)點(diǎn)關(guān)閉監(jiān)聽,無(wú)法接收信 息;
      數(shù)據(jù)收集階段S103包括以下步驟
      步驟S103-l:判斷節(jié)點(diǎn)是否處于Tw期間,如果是則執(zhí)行步驟S103-2a; 如果不是則執(zhí)行步驟S103-2b;
      步驟S103-2a:節(jié)點(diǎn)監(jiān)聽無(wú)線信道,判斷收到的數(shù)據(jù)包類型;如果收到環(huán) 境數(shù)據(jù)包,執(zhí)行步驟S103-3;如果收到路由修復(fù)包,執(zhí)行步驟S103-6;如果 收到hello包,執(zhí)行步驟S103-7;
      步驟S103-2b:節(jié)點(diǎn)關(guān)閉監(jiān)聽,進(jìn)入休眠狀態(tài);
      步驟S103-2c:節(jié)點(diǎn)判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果是 則執(zhí)行步驟S103-3;
      步驟S103-3:節(jié)點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居
      表一次計(jì)算所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)q,選出q最小的節(jié)點(diǎn)作為下一跳將消息
      發(fā)出去,執(zhí)行步驟S103-4;
      可選的,q的計(jì)算公式為 '
      其中,巧為鄰居節(jié)點(diǎn)到Sink節(jié)點(diǎn)的跳步數(shù),^為鄰居節(jié)點(diǎn)剩余能量, £^'為到該鄰居節(jié)點(diǎn)的鏈路質(zhì)量,","分別為剩余能量和鏈路質(zhì)量權(quán)重指數(shù)。 標(biāo)識(shí)有LEAF的節(jié)點(diǎn),只有當(dāng)鄰居表中沒有其他非LEAF節(jié)點(diǎn)時(shí),才能選為下一 跳;
      步驟S103-4:等待鄰居表中記錄的與該節(jié)點(diǎn)的時(shí)間差的時(shí)間,即等待下一 條節(jié)點(diǎn)進(jìn)入監(jiān)聽狀態(tài)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;步驟S103-5: Tw時(shí)期向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;
      步驟S103-6:如果收到的路由修復(fù)包中的跳步數(shù)為無(wú)窮大,回復(fù)一個(gè)路由 修復(fù)包,并更新鄰居表信息;
      步驟S103-7:更新節(jié)點(diǎn)本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的 跳步數(shù)(hop—min)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居 節(jié)點(diǎn)各自進(jìn)入監(jiān)聽狀態(tài)時(shí)依次發(fā)送hello包。
      以上為對(duì)流程中不帶ACK (Acknowledge Character,確認(rèn)字符)確認(rèn)機(jī)制的 本發(fā)明方法的說(shuō)明,參照?qǐng)D7,圖7為是根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收 集路由方法中數(shù)據(jù)收集階段帶ACK確認(rèn)機(jī)制的流程圖,其與上述不帶ACK確認(rèn) 機(jī)制的方法不同之處在于
      在數(shù)據(jù)收集階段S103的步驟S103-2a中節(jié)點(diǎn)監(jiān)聽無(wú)線信道,判斷收到 的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-3a;
      步驟S103-3a:判斷收到的環(huán)境數(shù)據(jù)包時(shí)間Trcv是否大于P*Tw,其中, P=l/2,如果是執(zhí)行步驟S103-3b ;如果否,執(zhí)行步驟S103-3c;
      步驟S103-3b:回復(fù)ACK,在ACK包中加入收到包的當(dāng)前時(shí)間和最近一次 Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,執(zhí)行步驟S103-3;
      步驟S103-3c:回復(fù)ACK,在ACK包中不含時(shí)間差Trcv-Tw,執(zhí)行步驟 S103-3;
      步驟S103-4:等待鄰居表中記錄的與該節(jié)點(diǎn)的啟動(dòng)時(shí)間差t的時(shí)間,即等 待下一條節(jié)點(diǎn)進(jìn)入監(jiān)聽狀態(tài)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;
      步驟S103-5:節(jié)點(diǎn)在Tw時(shí)期向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;等待確認(rèn) ACK;如果接收到下一跳節(jié)點(diǎn)返回的ACK,執(zhí)行步驟S103-5a;如果沒有收到 ACK,執(zhí)行步驟S103-5b;
      步驟S103-5a:記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)Tw的開始時(shí)間,重新計(jì)算 鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差t,更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;在該步驟 中,啟動(dòng)時(shí)間差t的計(jì)算公式為如果ACK中包含發(fā)送ACK節(jié)點(diǎn)收到包的當(dāng)前 時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,則t=t-(Trcv-Tw);否則 t=t-(t4-t5);其中,t4為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)ACK的當(dāng)前時(shí)間,t5為本第一 周期T內(nèi)第一次向鄰居節(jié)點(diǎn)發(fā)送環(huán)境數(shù)據(jù)包的時(shí)間;步驟S103-5b:隔tl后重發(fā)數(shù)據(jù)包,其中,tK〈Tw,重發(fā)N次,優(yōu)選的, N=5;如果在此期間收到ACK,執(zhí)行步驟S103-5a;如果仍然沒有收到ACK,判 斷該鄰居節(jié)點(diǎn)已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點(diǎn)信息,執(zhí)行步驟S103-3。
      如圖3所示,根據(jù)本發(fā)明的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的裝置,該 裝置映射到每一個(gè)節(jié)點(diǎn)上,至少由路由建立模塊201、生成休眠調(diào)度模塊202 及數(shù)據(jù)收集模塊203依次連接組成,各模塊分別實(shí)現(xiàn)如下功能
      路由建立模塊201:
      基站發(fā)出hello包,所述hello包的內(nèi)容包括節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、自己到基站 的跳步數(shù)、剩余能量及LEAF標(biāo)識(shí);其中,基站到自己跳步數(shù)為0,其它節(jié)點(diǎn)到 基站的跳步數(shù)初始化為無(wú)窮大,如果節(jié)點(diǎn)為L(zhǎng)EAF節(jié)點(diǎn),則LEAF標(biāo)示為真,否 則為假;節(jié)點(diǎn)判斷是否收到hello包,如果是則確定本節(jié)點(diǎn)到基站的跳步數(shù), 建立鄰居表,所述鄰居表的內(nèi)容包括鄰居節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、鄰居節(jié)點(diǎn)到基站的跳 步數(shù)、鄰居節(jié)點(diǎn)剩余能量、到鄰居節(jié)點(diǎn)的鏈路質(zhì)量指示;判斷自己到基站的跳 步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;如果路由 建立模塊201中節(jié)點(diǎn)都沒有收到hello包,則判定自己為新加入的節(jié)點(diǎn);
      生成休眠調(diào)度模塊202:
      所述生成休眠調(diào)度模塊包括隨機(jī)時(shí)間Trandom和第一周期T,第一周期T 包括監(jiān)聽時(shí)間Tw和休眠時(shí)間Ts,其中,隨機(jī)時(shí)間Trandom〈休眠時(shí)間Ts;
      節(jié)點(diǎn)等待隨機(jī)時(shí)間,開始自身的監(jiān)聽時(shí)間Tw并廣播hello包,如果節(jié)點(diǎn) 收到hello包,在鄰居表中記錄鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間Tw和自身節(jié)點(diǎn)監(jiān)聽時(shí)間Tw 的啟動(dòng)時(shí)間差t,該啟動(dòng)時(shí)間差t的計(jì)算公式可為如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT—t2)%(Tw+Ts);其中,t2為本節(jié)點(diǎn)記錄的本節(jié)點(diǎn) Tw啟動(dòng)時(shí)間,t3為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)hello包的當(dāng)前時(shí)間,n是使得(t3+nT) 》t2的最小自然數(shù);
      判定自己為新加入的節(jié)點(diǎn)等待隨機(jī)時(shí)間,開始自身的監(jiān)聽時(shí)間Tw并按第 二周期Tl為周期廣播路由修復(fù)包,到數(shù)據(jù)收集階段S103開始時(shí)則停止發(fā)送路 由修復(fù)包,其中,第二周期TK監(jiān)聽時(shí)間Tw;所述路由修復(fù)包的內(nèi)容包括本節(jié) 點(diǎn)當(dāng)前時(shí)間距最近一次Tw開始時(shí)間的時(shí)間差A(yù)t、自己到基站的跳步數(shù)、剩余 能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào);數(shù)據(jù)收集模塊203:
      所述數(shù)據(jù)收集模塊203節(jié)點(diǎn)周期性進(jìn)入監(jiān)聽時(shí)間Tw和休眠時(shí)間Ts:判斷 節(jié)點(diǎn)是否處于監(jiān)聽時(shí)間Tw,如果是則監(jiān)聽無(wú)線信道;如果不是節(jié)點(diǎn)關(guān)閉監(jiān)聽, 進(jìn)入休眠狀態(tài);或者節(jié)點(diǎn)判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果 有,則節(jié)點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居表一次計(jì)算
      所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)G,選出G最小的節(jié)點(diǎn)作為下一跳將消息發(fā)出去,等
      待鄰居表中記錄的與該節(jié)點(diǎn)的時(shí)間差的時(shí)間,在Tw時(shí)期向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán) 境數(shù)據(jù)包;
      節(jié)點(diǎn)監(jiān)聽無(wú)線信道時(shí),判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,節(jié) 點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居表一次計(jì)算所有鄰居 節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)q,選出q最小的節(jié)點(diǎn)作為下一跳將消息發(fā)出去,等待鄰居表 中記錄的與該節(jié)點(diǎn)的時(shí)間差的時(shí)間,即等待下一條節(jié)點(diǎn)進(jìn)入監(jiān)聽狀態(tài)發(fā)送環(huán)境 數(shù)據(jù)包,節(jié)點(diǎn)在TW時(shí)期向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;
      如果收到路由修復(fù)包,更新鄰居表信息,其中鄰居節(jié)點(diǎn)與本節(jié)點(diǎn)的時(shí)間差
      (t)的計(jì)算公式為Atl-At2,其中Atl為發(fā)送節(jié)點(diǎn)發(fā)送的路由修復(fù)包中包含的 時(shí)間差,At2為本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次監(jiān)聽時(shí)間Tw開始時(shí)間的時(shí)間差; 如果收到的路由修復(fù)包中的跳步數(shù)為無(wú)窮大,回復(fù)一個(gè)路由修復(fù)包;
      如果收到hello包,更新節(jié)點(diǎn)本身到基站的跳步數(shù),該^l〖步數(shù)為鄰居表中 最小的跳步數(shù)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié) 點(diǎn)各自進(jìn)入監(jiān)聽狀態(tài)時(shí)依次發(fā)送hello包。
      更進(jìn)一步的方案為,數(shù)據(jù)收集模塊中節(jié)點(diǎn)監(jiān)聽無(wú)線信道時(shí),如果收到環(huán)境 數(shù)據(jù)包,判斷是否TrCV>P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時(shí) 間,Tw是監(jiān)聽時(shí)間,如果是則回復(fù)ACK,在ACK包中加入收到包的當(dāng)前時(shí)間和 最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,然后再?gòu)泥従颖磉x擇下一跳節(jié)點(diǎn); 如果否則回復(fù)ACK,在ACK包中不含時(shí)間差Trcv-Tw,然后再?gòu)泥従颖磉x擇下 一跳節(jié)點(diǎn);
      當(dāng)節(jié)點(diǎn)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包后,等待確認(rèn)ACK;如果接收到下一 跳節(jié)點(diǎn)返回的ACK,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間的開始時(shí)間,重 新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差,更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束,該步驟 中啟動(dòng)時(shí)間差t的計(jì)算公式為如果ACK中包含發(fā)送ACK節(jié)點(diǎn)收到包的當(dāng)前時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t_ (t4-t5);其中,t4為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)ACK的當(dāng)前時(shí)間,t5為本第一周期 T內(nèi)第一次向鄰居節(jié)點(diǎn)發(fā)送環(huán)境數(shù)據(jù)包的時(shí)間;如果沒有收到ACK,則隔tl后 重發(fā)數(shù)據(jù)包,發(fā)N次,N=5,其中,tl〈〈Tw,如果在此期間收到ACK,記錄收到 ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間的開始時(shí)間,重新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟 動(dòng)時(shí)間差,更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;如果仍然沒有收到ACK,判斷該鄰居 節(jié)點(diǎn)已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點(diǎn)信息,則從鄰居表選擇下一跳節(jié) 點(diǎn)。更進(jìn)一步的方案為,轉(zhuǎn)發(fā)代價(jià)e'的計(jì)算公式為其中,^為鄰居節(jié)點(diǎn)到Sink節(jié)點(diǎn)的跳步數(shù),^為鄰居節(jié)點(diǎn)剩余能量, Z^'為到該鄰居節(jié)點(diǎn)的鏈路質(zhì)量,","分別為剩余能量和鏈路質(zhì)量權(quán)重指數(shù)。以下結(jié)合附圖以具體的例子對(duì)本發(fā)明作進(jìn)一步的說(shuō)明實(shí)施方式一路由建立階段步驟1:基站發(fā)出hello包,包的內(nèi)容為節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、自己到基站的跳 步數(shù)、剩余能量及LEAF標(biāo)識(shí);其中,基站到自己跳步數(shù)為0,其它節(jié)點(diǎn)到基站 的跳步數(shù)初始化為無(wú)窮大;步驟2:節(jié)點(diǎn)接收hello包,建立鄰居表,鄰居表的內(nèi)容包括鄰居節(jié)點(diǎn)的 節(jié)點(diǎn)號(hào)、鄰居節(jié)點(diǎn)到基站的跳步數(shù)、鄰居節(jié)點(diǎn)剩余能量、到鄰居節(jié)點(diǎn)的鏈路質(zhì) 量指示;步驟3:如果自己到基站的跳步數(shù)減小,則廣播自身的hello包; 生成休眠調(diào)度階段步驟4-l:節(jié)點(diǎn)等待隨機(jī)時(shí)間后開始自身的Tw,廣播hello包,如果節(jié)點(diǎn) 收到hello包,執(zhí)行步驟5;步驟5:在鄰居表記錄鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間Tw和自身節(jié)點(diǎn)監(jiān)聽時(shí)間Tw的啟 動(dòng)時(shí)間差t; t的計(jì)算公式為如果t3》t2,則t=(t3_t2)%(Tw+Ts);否則t=(t3+nT-12) %(Tw+Ts);其中,t2為本節(jié)點(diǎn)記錄的本節(jié)點(diǎn)Tw啟動(dòng)時(shí)間,t3 為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)hello包的當(dāng)前時(shí)間,n是使得(t3+nT)》t2的最小自 然數(shù);數(shù)據(jù)收集階段節(jié)點(diǎn)周期性進(jìn)入Tw和Ts時(shí)期,其中,Tw期間節(jié)點(diǎn)打開監(jiān) 聽可接收信息,Ts期間節(jié)點(diǎn)關(guān)閉監(jiān)聽無(wú)法接收信息;步驟6-1:進(jìn)入Tw期間,如果節(jié)點(diǎn)在此階段收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟7;步驟7:如果收到的環(huán)境數(shù)據(jù)包時(shí)間TrCV<P*Tw,直接回復(fù)一個(gè)ACK,執(zhí)行 步驟8;步驟8:節(jié)點(diǎn)收到環(huán)境數(shù)據(jù)后從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié) 點(diǎn)遍歷鄰居表一次計(jì)算所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)q,選出q最小的節(jié)點(diǎn)作為下 一跳將消息發(fā)出去。可選的,該q的計(jì)算公式為其中,^為鄰居節(jié)點(diǎn)到Sink節(jié)點(diǎn)的跳步數(shù),《為鄰居節(jié)點(diǎn)剩余能量, ^"'為到該鄰居節(jié)點(diǎn)的鏈路質(zhì)量,","分別為剩余能量和鏈路質(zhì)量權(quán)重指數(shù), 標(biāo)識(shí)有LEAF的節(jié)點(diǎn),只有當(dāng)鄰居表中沒有其他非LEAF節(jié)點(diǎn)時(shí),才能選為下一跳;步驟9:等待下一跳節(jié)點(diǎn)進(jìn)入Tw,向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包,發(fā)送后 如果接收到下一跳節(jié)點(diǎn)返回的ACK,執(zhí)行步驟10-1;步驟10-1:記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間Tw的開始時(shí)間,重 新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)監(jiān)聽時(shí)間Tw的啟動(dòng)時(shí)間差t,更新鄰居表,路由轉(zhuǎn)發(fā) 結(jié)束;t的計(jì)算公式為如果ACK中包含發(fā)送ACK節(jié)點(diǎn)收到包的當(dāng)前時(shí)間和最近 一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,則t二t-(Trcv-Tw);否則t=t-(t4-t5);其中,t4為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)ACK的當(dāng)前時(shí)間,t5為本第一周期T 內(nèi)第一次向鄰居節(jié)點(diǎn)發(fā)送環(huán)境數(shù)據(jù)包的時(shí)間。實(shí)施方式一中,對(duì)時(shí)間差的計(jì)算均是通過(guò)相對(duì)時(shí)間而進(jìn)行計(jì)算的,能夠有 效避免節(jié)點(diǎn)時(shí)間不同步所產(chǎn)生的問(wèn)題。實(shí)施方式二本實(shí)施方式與實(shí)施方式一所述的路由方法區(qū)別在于,如果節(jié) 點(diǎn)在Ttopo期間都沒有收到hello包時(shí),執(zhí)行步驟4-2;步驟4-2:節(jié)點(diǎn)等待隨機(jī)時(shí)間Trandom,開始監(jiān)聽時(shí)間Tw,并以Tl為周期 廣播路由修復(fù)包,路由修復(fù)包內(nèi)容包括本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次Tw開始時(shí) 間的時(shí)間差A(yù)t、自己到基站的跳步數(shù)、剩余能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào),其中 TKTw;到數(shù)據(jù)收集階段開始則停止發(fā)送,執(zhí)行步驟ll;步驟11:更新節(jié)點(diǎn)本身到基站的跳步數(shù),跳步數(shù)為鄰居表中最小的跳步數(shù) 加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,等待鄰居節(jié)點(diǎn)各自進(jìn)入監(jiān)聽 狀態(tài)時(shí)依次發(fā)送hello包;實(shí)施方式二中,對(duì)新加入節(jié)點(diǎn)和更換電池節(jié)點(diǎn)進(jìn)行判斷,如果在路由建立 階段接都沒有收到Hello包,則判斷節(jié)點(diǎn)本身為新加入或者更換電池節(jié)點(diǎn),并 在生成休眠調(diào)度階段中廣播路由修復(fù)包,在進(jìn)入數(shù)據(jù)收集階段的第一個(gè)Tw時(shí) 給鄰居節(jié)點(diǎn)分別發(fā)送hello包,使得新加入節(jié)點(diǎn)的鄰居能夠得到新加入節(jié)點(diǎn)的信息。實(shí)施方式三本實(shí)施方式與實(shí)施方式一所述的路由方法區(qū)別在于,當(dāng)步驟 6-1中,收到的是路由修復(fù)包時(shí),執(zhí)行步驟12;步驟12:更新鄰居表信息,其中鄰居節(jié)點(diǎn)與本節(jié)點(diǎn)的時(shí)間差t的計(jì)算公式 為Atl-At2,其中Atl為發(fā)送節(jié)點(diǎn)發(fā)送的路由修復(fù)包中包含的時(shí)間差,厶t2 為本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次Tw開始時(shí)間的時(shí)間差;如果收到的路由修復(fù)包 中的跳步數(shù)為無(wú)窮大,回復(fù)一個(gè)路由修復(fù)包;實(shí)施方式三中,節(jié)點(diǎn)在數(shù)據(jù)收集階段收到路由修復(fù)包,則判斷有新節(jié)點(diǎn)加 入,回復(fù)一個(gè)路由修復(fù)包,其中包含包括本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次Tw開始 時(shí)間的時(shí)間差A(yù)t、自己到基站的跳步數(shù)、剩余能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào),便于新 加入節(jié)點(diǎn)更新鄰居表,并且計(jì)算時(shí)間差的公式能避免節(jié)點(diǎn)時(shí)間不同步造成的問(wèn) 題。實(shí)施方式四本實(shí)施方式與實(shí)施方式一所述的路由方法區(qū)別在于,當(dāng)所述 步驟6-l中,收到的是Hello包時(shí),執(zhí)行步驟ll;實(shí)施方式四中,在路由建立階段接收到Hello包導(dǎo)致自己到基站跳步數(shù)變 小的情況下,則在下一個(gè)周期T時(shí)以Hello包的形式在鄰居節(jié)點(diǎn)進(jìn)入Tw時(shí)分 別告知各鄰居節(jié)點(diǎn)。
      實(shí)施方式五參見圖8,本實(shí)施方式與實(shí)施方式一所述的路由方法區(qū)別在 于,當(dāng)步驟7收到數(shù)據(jù)包時(shí)間Trcv>P*Tw,執(zhí)行步驟7-l;
      步驟7-1:在ACK包中加入收到包的當(dāng)前時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的 時(shí)間差Trcv-Tw,返回ACK,執(zhí)行步驟8;
      實(shí)施方式五中,對(duì)節(jié)點(diǎn)硬件定時(shí)器向后偏移累計(jì)誤差引起的路由中斷問(wèn)題 進(jìn)行修復(fù),當(dāng)節(jié)點(diǎn)接收到數(shù)據(jù)包超過(guò)l/2*Tw時(shí)間,則對(duì)源節(jié)點(diǎn)進(jìn)行通知,進(jìn) 行時(shí)間校正。
      實(shí)施方式六參見圖9,本實(shí)施方式與實(shí)施方式一所述的路由方法區(qū)別在 于,當(dāng)步驟9未收到ACK,執(zhí)行步驟10-2;
      步驟10-2:隔tl后重發(fā)數(shù)據(jù)包,其中,tK〈Tw,重發(fā)N次,N可等于5 或10,如果在此期間收到ACK,執(zhí)行步驟13;如果仍然沒有收到ACK,則判斷 該鄰居已失效,從鄰居表中刪除該鄰居信息,執(zhí)行步驟8;
      步驟13:收到ACK,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)Tw的開始時(shí)間,重 新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差t,更新鄰居表。
      實(shí)施方式六中,對(duì)節(jié)點(diǎn)硬件定時(shí)器向前偏移累計(jì)誤差引起的路由中斷問(wèn)題 進(jìn)行修復(fù),多次重傳成功后,由于tK〈Tw,使用重傳成功后受到的ACK時(shí)間為 修正的鄰居節(jié)點(diǎn)Tw開始時(shí)間,并且判斷了節(jié)點(diǎn)是否失效,更新了鄰居表信 息。
      根據(jù)本發(fā)明的方法,解決了無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集中的如下問(wèn)題 1、異步的休眠調(diào)度
      技術(shù)問(wèn)題
      時(shí)間同步往往會(huì)引起額外開銷,而之前的路由方法都是在時(shí)間同步的基礎(chǔ) 上進(jìn)行休眠調(diào)度。
      本方法的解決方案
      在生成休眠調(diào)度階段,節(jié)點(diǎn)在Trandom結(jié)束時(shí)廣播hello包,而記錄接收到的其他節(jié)點(diǎn)hello包的時(shí)間,通過(guò)接收hello包時(shí)間和節(jié)點(diǎn)廣播hello包的 時(shí)間差維護(hù)鄰居節(jié)點(diǎn)的休眠調(diào)度。
      2、 新節(jié)點(diǎn)加入或者更換電池后路由修復(fù) 技術(shù)問(wèn)題
      節(jié)點(diǎn)新加入或者更換電池后,局部路由信息丟失,因此要求新加入節(jié)點(diǎn)能 快速融入網(wǎng)絡(luò)。
      本方法的解決方案
      節(jié)點(diǎn)新加入網(wǎng)絡(luò),通過(guò)判斷在路由建立階段接收的數(shù)據(jù)包是hello包還是 普通環(huán)境數(shù)據(jù)包判斷本身是否為新加入節(jié)點(diǎn),節(jié)點(diǎn)按周期Tl(Tl〈Tw)廣播路由 修復(fù)包,收到路由修復(fù)包的節(jié)點(diǎn)會(huì)在下一周期切換到工作狀態(tài)時(shí)廣播hello 包,從而對(duì)局部路由進(jìn)行修復(fù)。
      3、 定時(shí)器偏移累計(jì)引起路由失效 技術(shù)問(wèn)題
      節(jié)點(diǎn)硬件的石英晶體振蕩器隨著時(shí)間會(huì)產(chǎn)生偏移累計(jì),因此會(huì)造成節(jié)點(diǎn)維 護(hù)的鄰居休眠調(diào)度時(shí)間產(chǎn)生誤差,導(dǎo)致路由失效。
      本方法的解決方案
      節(jié)點(diǎn)向鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包后增加等待ACK的步驟,如果未收到ACK,則 隔tl后重發(fā),持續(xù)n次重發(fā),如果重發(fā)n次后仍未收到ACK那么重新選擇下 一個(gè)鄰居節(jié)點(diǎn)為下一跳,當(dāng)收到ACK后,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)更新 后的開始工作時(shí)間;如果節(jié)點(diǎn)接收到鄰居發(fā)來(lái)的環(huán)境數(shù)據(jù)包時(shí)間Trcv〉P*TW, 那么回復(fù)ACK時(shí),在ACK包中加入時(shí)間差Trcv-Tw。
      顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以 用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多 個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選的,它們可以用計(jì)算裝置可執(zhí)行的程序代碼 來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者以其它 集成方式實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。應(yīng)該明 白,這些具體實(shí)施中的變化對(duì)于本領(lǐng)域人員來(lái)說(shuō)是顯而易見的,不脫離本發(fā)明 的精神保護(hù)范圍。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng) 域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則 之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之 內(nèi)。
      權(quán)利要求
      1、一種無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法,其特征在于,包括以下步驟路由建立階段S101,其包括以下步驟步驟S101-1基站發(fā)出hello包,所述hello包的內(nèi)容包括節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、自己到基站的跳步數(shù)、剩余能量及LEAF標(biāo)識(shí);其中,基站到自己跳步數(shù)為0,其它節(jié)點(diǎn)到基站的跳步數(shù)初始化為無(wú)窮大,如果節(jié)點(diǎn)為L(zhǎng)EAF節(jié)點(diǎn),則LEAF標(biāo)示為真,否則為假;步驟S101-2節(jié)點(diǎn)判斷是否收到hello包,如果是則執(zhí)行步驟S101-3;步驟S101-3確定本節(jié)點(diǎn)到基站的跳步數(shù),建立鄰居表,所述鄰居表的內(nèi)容包括鄰居節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、鄰居節(jié)點(diǎn)到基站的跳步數(shù)、鄰居節(jié)點(diǎn)剩余能量、到鄰居節(jié)點(diǎn)的鏈路質(zhì)量指示,執(zhí)行步驟S101-4;步驟S101-4判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;步驟S101-5如果節(jié)點(diǎn)在路由建立階段S101都沒有收到hello包,則判定自己為新加入的節(jié)點(diǎn),執(zhí)行生成休眠調(diào)度階段S102中的步驟S102-1b;生成休眠調(diào)度階段S102,其包括以下步驟所述生成休眠調(diào)度階段S102中包括隨機(jī)時(shí)間(Trandom)和第一周期(T),所述第一周期(T)包括監(jiān)聽時(shí)間(Tw)和休眠時(shí)間(Ts),其中,隨機(jī)時(shí)間(Trandom)<休眠時(shí)間(Ts);步驟S102-1節(jié)點(diǎn)等待隨機(jī)時(shí)間(Trandom),開始自身的監(jiān)聽時(shí)間(Tw)并廣播hello包,如果節(jié)點(diǎn)收到hello包,執(zhí)行步驟S102-2;步驟S102-1b節(jié)點(diǎn)等待隨機(jī)時(shí)間(Trandom),開始自身的監(jiān)聽時(shí)間(Tw)并按第二周期(T1)為周期廣播路由修復(fù)包,到數(shù)據(jù)收集階段S103開始時(shí)停止發(fā)送路由修復(fù)包,其中,第二周期(T1)<監(jiān)聽時(shí)間(Tw),執(zhí)行數(shù)據(jù)收集階段S103中的步驟S103-7;所述路由修復(fù)包的內(nèi)容包括本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次(Tw)開始時(shí)間的時(shí)間差(Δt)、自己到基站的跳步數(shù)、剩余能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào);步驟S102-2在鄰居表中記錄鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)和自身節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)的啟動(dòng)時(shí)間差(t);數(shù)據(jù)收集階段S103,其包括以下步驟節(jié)點(diǎn)周期性進(jìn)入監(jiān)聽時(shí)間(Tw)和休眠時(shí)間(Ts)步驟S103-1判斷節(jié)點(diǎn)是否處于監(jiān)聽時(shí)間(Tw),如果是則執(zhí)行步驟S103-2a;如果不是則執(zhí)行步驟S103-2b;步驟S103-2a節(jié)點(diǎn)監(jiān)聽無(wú)線信道,判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-3;如果收到路由修復(fù)包,執(zhí)行步驟S103-6;如果收到hello包,執(zhí)行步驟S103-7;步驟S103-2b節(jié)點(diǎn)關(guān)閉監(jiān)聽,進(jìn)入休眠狀態(tài);步驟S103-2c節(jié)點(diǎn)判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果是則執(zhí)行步驟S103-3;步驟S103-3節(jié)點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居表一次計(jì)算所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)Ci,選出Ci最小的節(jié)點(diǎn)作為下一跳將消息發(fā)出去,執(zhí)行步驟S103-4;步驟S103-4等待鄰居表中記錄的與該節(jié)點(diǎn)的啟動(dòng)時(shí)間差(t)的時(shí)間,即等待下一條節(jié)點(diǎn)進(jìn)入監(jiān)聽時(shí)間(Tw)發(fā)送環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-5;步驟S103-5節(jié)點(diǎn)在監(jiān)聽時(shí)間(Tw)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;步驟S103-6更新鄰居表信息,其中鄰居節(jié)點(diǎn)與本節(jié)點(diǎn)的時(shí)間差(t)的計(jì)算公式為Δt1-Δt2,其中,Δt1為發(fā)送節(jié)點(diǎn)發(fā)送的路由修復(fù)包中包含的時(shí)間差,Δt2為本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次監(jiān)聽時(shí)間(Tw)開始時(shí)間的時(shí)間差;如果收到的路由修復(fù)包中的跳步數(shù)為無(wú)窮大,回復(fù)一個(gè)路由修復(fù)包;步驟S103-7更新節(jié)點(diǎn)本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的跳步數(shù)加1;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié)點(diǎn)各自進(jìn)入監(jiān)聽時(shí)間(Tw)時(shí)依次發(fā)送hello包。
      2、根據(jù)權(quán)利要求1所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法,其特征在于所述步驟S103-2a中,節(jié)點(diǎn)如果收到環(huán)境數(shù)據(jù)包,執(zhí)行步驟S103-3a;步驟S103-3a:判斷是否Trcv>P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時(shí)間,Tw是監(jiān)聽時(shí)間,如果是則執(zhí)行步驟S103-3b;如果否則執(zhí)行步驟S103-3c;步驟S103-3b:回復(fù)ACK,在ACK包中加入收到包的當(dāng)前時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,執(zhí)行步驟S103-3;步驟S103-3c:回復(fù)ACK,在ACK包中不含時(shí)間差Trcv-Tw,執(zhí)行步驟S103-3;所述步驟S103-5中,節(jié)點(diǎn)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包后,等待確認(rèn)ACK;如果接收到下一跳節(jié)點(diǎn)返回的ACK,執(zhí)行步驟S103-5a;如果沒有收到ACK,執(zhí)行步驟S103-5b;步驟S103-5a:記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)的開始時(shí)間,重新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差(t),更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;步驟S103-5b:隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl《Tw,如果在此期間收到ACK,執(zhí)行步驟S103-5a,如果仍然沒有收到ACK,判斷該鄰居節(jié)點(diǎn)已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點(diǎn)信息,執(zhí)行步驟S103-3。
      3、 根據(jù)權(quán)利要求1所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法,其特征在于所述步驟S102-2中啟動(dòng)時(shí)間差(t)的計(jì)算公式為如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點(diǎn)記錄的本節(jié)點(diǎn)Tw啟動(dòng)時(shí)間,t3為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)hello包的當(dāng)前時(shí)間,n是使得(t3+nT)》t2的最小自然數(shù)。
      4、 根據(jù)權(quán)利要求1所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法,其特征在于所述步驟S103-3中轉(zhuǎn)發(fā)代價(jià)^的計(jì)算公式為其中,A為鄰居節(jié)點(diǎn)到Sink節(jié)點(diǎn)的跳步數(shù),《為鄰居節(jié)點(diǎn)剩余能量,Z^'為到該鄰居節(jié)點(diǎn)的鏈路質(zhì)量,","分別為剩余能量和鏈路質(zhì)量權(quán)重指數(shù)。
      5、 根據(jù)權(quán)利要求2所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法,其特征在于所述步驟S103-5a中的啟動(dòng)時(shí)間差(t)的計(jì)算公式為如果ACK中包含發(fā)送ACK節(jié)點(diǎn)收到包的當(dāng)前時(shí)間和最近一次監(jiān)聽時(shí)間(Tw)的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t-(t.4-t5);其中,t4為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)ACK的當(dāng)前時(shí)間,t5為本第一周期(T)內(nèi)第一次向鄰居節(jié)點(diǎn)發(fā)送環(huán)境數(shù)據(jù)包的時(shí)間。
      6、 實(shí)現(xiàn)權(quán)利要求1所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的裝置,其特征在于該裝置映射到每一個(gè)節(jié)點(diǎn),至少包括依次連接的路由建立模塊(201)、生成休眠調(diào)度模塊(202)及數(shù)據(jù)收集模塊(203),所述模塊分別實(shí)現(xiàn)如下功能路由建立模塊(201):基站發(fā)出hello包,所述hello包的內(nèi)容包括節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、自己到基站的跳步數(shù)、剩余能量及LEAF標(biāo)識(shí);其中,基站到自己跳步數(shù)為O,其它節(jié)點(diǎn)到基站的跳步數(shù)初始化為無(wú)窮大,如果節(jié)點(diǎn)為L(zhǎng)EAF節(jié)點(diǎn),則LEAF標(biāo)示為真,否則為假;節(jié)點(diǎn)判斷是否收到hello包,如果是則確定本節(jié)點(diǎn)到基站的跳步數(shù),建立鄰居表,所述鄰居表的內(nèi)容包括鄰居節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)、鄰居節(jié)點(diǎn)到基站的跳步數(shù)、鄰居節(jié)點(diǎn)剩余能量、到鄰居節(jié)點(diǎn)的鏈路質(zhì)量指示;判斷自己到基站的跳步數(shù)是否比之前未更新的跳步數(shù)小,如果是則廣播自身的hello包;如果路由建立模塊(201)中節(jié)點(diǎn)都沒有收到hello包,則判定自己為新加入的節(jié)點(diǎn);生成休眠調(diào)度模塊(202):所述生成休眠調(diào)度模塊(202)中包括隨機(jī)時(shí)間(Trandom)和第一周期(T),所述第一周期(T)包括監(jiān)聽時(shí)間(Tw)和休眠時(shí)間(Ts),其中,隨機(jī)時(shí)間(Trandom) <休眠時(shí)間(Ts);節(jié)點(diǎn)等待隨機(jī)時(shí)間(Trandom),開始自身的監(jiān)聽時(shí)間(Tw)并廣播hello包,如果節(jié)點(diǎn)收到hello包,在鄰居表中記錄鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)和自身節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)的啟動(dòng)時(shí)間差(t);判定自己為新加入的節(jié)點(diǎn)等待隨機(jī)時(shí)間(Trandom),開始自身的監(jiān)聽時(shí)間(Tw)并按第二周期(Tl)為周期廣播路由修復(fù)包,到數(shù)據(jù)收集階段S103開始時(shí)則停止發(fā)送路由修復(fù)包,其中,第二周期(Tl)〈監(jiān)聽時(shí)間(Tw);所述路由修復(fù)包的內(nèi)容包括本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次(Tw)開始時(shí)間的時(shí)間差(At)、自己到基站的跳步數(shù)、剩余能量及節(jié)點(diǎn)的節(jié)點(diǎn)號(hào);數(shù)據(jù)收集模塊(203):節(jié)點(diǎn)周期性進(jìn)入監(jiān)聽時(shí)間(Tw)和休眠時(shí)間(Ts):判斷節(jié)點(diǎn)是否處于監(jiān)聽時(shí)間(Tw),如果是則監(jiān)聽無(wú)線信道;如果不是節(jié)點(diǎn)關(guān)閉監(jiān)聽,進(jìn)入休眠狀態(tài),或者節(jié)點(diǎn)判斷是否有自身產(chǎn)生的環(huán)境數(shù)據(jù)包需要發(fā)送,如果有,則節(jié)點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居表一次計(jì)算所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)q,選出G最小的節(jié)點(diǎn)作為下一跳將消息發(fā)出去,等待鄰居表中記錄的與該節(jié)點(diǎn)的時(shí)間差的時(shí)間,在監(jiān)聽時(shí)間(Tw)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;節(jié)點(diǎn)監(jiān)聽無(wú)線信道時(shí),判斷收到的數(shù)據(jù)包類型;如果收到環(huán)境數(shù)據(jù)包,節(jié)點(diǎn)從鄰居表選擇下一跳節(jié)點(diǎn),選擇策略為節(jié)點(diǎn)遍歷鄰居表一次計(jì)算所有鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)代價(jià)q,選出q最小的節(jié)點(diǎn)作為下一跳將消息發(fā)出去,等待鄰居表中記錄的與該節(jié)點(diǎn)的時(shí)間差的時(shí)間,即等待下一條節(jié)點(diǎn)進(jìn)入監(jiān)聽時(shí)間(Tw)發(fā)送環(huán)境數(shù)據(jù)包,節(jié)點(diǎn)在監(jiān)聽時(shí)間(Tw)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包;如果收到路由修復(fù)包,更新鄰居表信息,其中,鄰居節(jié)點(diǎn)與本節(jié)點(diǎn)的時(shí)間差t的計(jì)算公式為A tl- A t2,其中A tl為發(fā)送節(jié)點(diǎn)發(fā)送的路由修復(fù)包中包含的時(shí)間差,At2為本節(jié)點(diǎn)當(dāng)前時(shí)間距最近一次監(jiān)聽時(shí)間(Tw)開始時(shí)間的時(shí)間差;如果收到的路由修復(fù)包中的跳步數(shù)為無(wú)窮大,回復(fù)一個(gè)路由修復(fù)包;如果收到hello包,更新節(jié)點(diǎn)本身到基站的跳步數(shù),該跳步數(shù)為鄰居表中最小的跳步數(shù)加l;如果跳步數(shù)比之前未更新的跳步數(shù)小的話,則等待鄰居節(jié)點(diǎn)各自進(jìn)入監(jiān)聽時(shí)間(Tw)時(shí)依次發(fā)送hello包。
      7、根據(jù)權(quán)利要求6所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的裝置,其特征在于所述數(shù)據(jù)收集模塊(203)中節(jié)點(diǎn)監(jiān)聽無(wú)線信道時(shí),如果收到環(huán)境數(shù)據(jù)包,判斷是否Trcv〉P*Tw,其中,P=l/2, Trcv是收到的環(huán)境數(shù)據(jù)包時(shí)間,Tw是監(jiān)聽時(shí)間,如果是則回復(fù)ACK,在ACK包中加入收到包的當(dāng)前時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,然后再?gòu)泥従颖磉x擇下一跳節(jié)點(diǎn);如果否則回復(fù)ACK, ACK包中不含時(shí)間差Trcv-Tw,然后再?gòu)泥従颖磉x擇下一跳節(jié)點(diǎn);當(dāng)節(jié)點(diǎn)向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包后,等待確認(rèn)ACK;如果接收到下一跳節(jié)點(diǎn)返回的ACK,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)的開始時(shí)間,重新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差(t),更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;如果沒有收到ACK,則隔tl后重發(fā)數(shù)據(jù)包,發(fā)N次,其中,tl《Tw,如果在此期間收到ACK,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)的開始時(shí)間,重新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差(t),更新鄰居表,路由轉(zhuǎn)發(fā)結(jié)束;如果仍然沒有收到ACK,判斷該鄰居節(jié)點(diǎn)已經(jīng)失效,從鄰居表中刪除該鄰居節(jié)點(diǎn)信息,則從鄰居表選擇下一跳節(jié)點(diǎn)。
      8、 根據(jù)權(quán)利要求6所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的裝置,其特征在于-所述生成休眠調(diào)度模塊(202)鄰居表中的啟動(dòng)時(shí)間差(t)的計(jì)算公式為如果t3》t2,則t=(t3-t2)%(Tw+Ts);否則t=(t3+nT-t2)%(Tw+Ts);其中,t2為本節(jié)點(diǎn)記錄的本節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)啟動(dòng)時(shí)間,t3為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)hello包的當(dāng)前時(shí)間,n是使得(t3+nT)》t2的最小自然數(shù)。
      9、 根據(jù)權(quán)利要求6所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的裝置,其特征在于所述轉(zhuǎn)發(fā)代價(jià)e'的計(jì)算公式為其中,A為鄰居節(jié)點(diǎn)到Sink節(jié)點(diǎn)的跳步數(shù),《為鄰居節(jié)點(diǎn)剩余能量,為到該鄰居節(jié)點(diǎn)的鏈路質(zhì)量,","分別為剩余能量和鏈路質(zhì)量權(quán)重指數(shù)。
      10、 根據(jù)權(quán)利要求7所述的無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法的裝置,其特征在于如果接收到下一跳節(jié)點(diǎn)返回的ACK,記錄收到ACK的時(shí)間為鄰居節(jié)點(diǎn)監(jiān)聽時(shí)間(Tw)的開始時(shí)間,重新計(jì)算鄰居節(jié)點(diǎn)和本節(jié)點(diǎn)的啟動(dòng)時(shí)間差(t),所述啟動(dòng)時(shí)間差(t)的計(jì)算公式為如果ACK中包含發(fā)送ACK節(jié)點(diǎn)收到包的當(dāng)前時(shí)間和最近一次Tw的啟動(dòng)時(shí)間的時(shí)間差Trcv-Tw,則t=t-(Trcv-Tw);否則t=t-(t4-15);其中,t4為本節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)ACK的當(dāng)前時(shí)間,t5為本第一周期T內(nèi)第一次向鄰居節(jié)點(diǎn)發(fā)送環(huán)境數(shù)據(jù)包的時(shí)間。
      全文摘要
      一種無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)收集路由方法及裝置,包括路由建立階段、生成休眠調(diào)度階段和數(shù)據(jù)收集階段,有以下步驟基站發(fā)出hello包,節(jié)點(diǎn)收到hello包,建立鄰居表,廣播hello包;節(jié)點(diǎn)等待隨機(jī)時(shí)間,廣播hello包或廣播路由修復(fù)包;更新鄰居表;節(jié)點(diǎn)監(jiān)聽無(wú)線信道,按照收到的數(shù)據(jù)包的類型等待鄰居節(jié)點(diǎn)醒來(lái)后執(zhí)行轉(zhuǎn)發(fā)環(huán)境數(shù)據(jù)包或更新鄰居表信息或發(fā)送hello包的動(dòng)作。本發(fā)明的方法及裝置基于異步休眠調(diào)度的機(jī)制,利用接收到的hello包與自身監(jiān)聽時(shí)間的差確定鄰居節(jié)點(diǎn)的休眠周期,避免了時(shí)間同步引起的額外開銷;且能在短時(shí)間內(nèi)修復(fù)局部路由,并對(duì)定時(shí)器偏移累計(jì)引起的發(fā)送失敗問(wèn)題進(jìn)行自適應(yīng)修復(fù)。
      文檔編號(hào)H04W40/24GK101635975SQ200910023498
      公開日2010年1月27日 申請(qǐng)日期2009年8月4日 優(yōu)先權(quán)日2009年8月4日
      發(fā)明者路 何, 劉寶英, 劉微姍, 孫鐫宸, 娜 安, 謙 張, 房鼎益, 湯戰(zhàn)勇, 陳曉江, 媛 魏, 黃學(xué)青 申請(qǐng)人:西北大學(xué)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1