一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法
【專利摘要】本發(fā)明涉及通信控制領(lǐng)域,提供一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,包括:拓?fù)涑跏蓟瘯r(shí),從根節(jié)點(diǎn)開始廣播一個(gè)消息,所有收到消息的鄰居節(jié)點(diǎn)開啟同步請(qǐng)求定時(shí)器,消息不斷轉(zhuǎn)發(fā)直到使所有節(jié)點(diǎn)都啟動(dòng)該定時(shí)器;在先期同步階段,通過(guò)消息交換,大部分節(jié)點(diǎn)實(shí)現(xiàn)同步;同步后的節(jié)點(diǎn)會(huì)取消同步請(qǐng)求定時(shí)器,直到網(wǎng)絡(luò)同步停止;重復(fù)請(qǐng)求階段,當(dāng)一未同步節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器到時(shí)間時(shí),它發(fā)送請(qǐng)求同步的消息,如果沒(méi)有回復(fù),則重新開啟同步定時(shí)器;而如果該消息被某個(gè)從屬節(jié)點(diǎn)收到,那么收到消息的從屬節(jié)點(diǎn)開始執(zhí)行消息交換同步算法;這個(gè)過(guò)程重復(fù)執(zhí)行直到所有節(jié)點(diǎn)同步。本發(fā)明能使網(wǎng)絡(luò)內(nèi)所有節(jié)點(diǎn)完成時(shí)間同步,使網(wǎng)絡(luò)能量均衡,延長(zhǎng)網(wǎng)絡(luò)的生命周期。
【專利說(shuō)明】
一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及通信控制領(lǐng)域,尤其涉及一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法。
【背景技術(shù)】
[0002] 近年來(lái),在無(wú)線傳感網(wǎng)中,一個(gè)很重要的問(wèn)題就是實(shí)現(xiàn)時(shí)間同步。在很多應(yīng)用中同 步是十分關(guān)鍵的,例如在水下無(wú)線傳感器網(wǎng)實(shí)現(xiàn)同步、安全同步以及定位同步等領(lǐng)域中也 尤為重要。時(shí)間同步是指為分布式系統(tǒng)提供一個(gè)公共時(shí)間的過(guò)程。而大量的無(wú)線傳感器網(wǎng) 絡(luò)應(yīng)用要求在某個(gè)區(qū)域內(nèi)的節(jié)點(diǎn)共同維護(hù)一個(gè)時(shí)間軸,從而協(xié)同完成共同的任務(wù)。因此對(duì) 于時(shí)間同步的研究變得十分重要。
[0003] 在利用多簇傳感網(wǎng)的成對(duì)廣播進(jìn)行同步的方法中,給出了成對(duì)廣播同步協(xié)議 (roS)的兩種組網(wǎng)方式(GPA、NPA),成對(duì)廣播同步協(xié)議是一種同步性能較好,并可以有效降 低同步過(guò)程功耗的協(xié)議。特別在密集網(wǎng)絡(luò)中,它可以很大程度上減小了整個(gè)同步過(guò)程的功 耗,最終在不損失同步精度的條件下,達(dá)到全網(wǎng)同步。但是GPA和NPA這兩種組網(wǎng)方式,構(gòu)建 網(wǎng)絡(luò)的過(guò)程中還是消耗很多能量。在基于嵌入式網(wǎng)絡(luò)設(shè)備的低功耗時(shí)間同步方法中,目的 是盡可能減少整個(gè)網(wǎng)絡(luò)同步所需要的功耗,它充分利用RRP模型和SRP模型,所以它保證了 足夠高的同步精度。特別是在密集型網(wǎng)絡(luò)中,網(wǎng)絡(luò)的功耗變得十分的少。但是通過(guò)理論分析 和仿真實(shí)驗(yàn),在某些情況下,該算法并不能使網(wǎng)絡(luò)范圍內(nèi)的所有節(jié)點(diǎn)同步。主要原因是算法 設(shè)計(jì)里的從屬節(jié)點(diǎn)并不能發(fā)送任何消息,這就導(dǎo)致從屬節(jié)點(diǎn)的部分鄰居有一定概率不能完 成同步。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明主要解決現(xiàn)有技術(shù)構(gòu)建網(wǎng)絡(luò)過(guò)程中能量消耗多,以及不能使網(wǎng)絡(luò)范圍內(nèi)的 所有節(jié)點(diǎn)達(dá)到時(shí)間同步的技術(shù)問(wèn)題,提出一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,能夠使 得網(wǎng)絡(luò)內(nèi)所有節(jié)點(diǎn)全部同步且保持低功耗,并且根節(jié)點(diǎn)選擇策略的能量均衡。
[0005] 本發(fā)明提供了一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,包括以下過(guò)程:
[0006] 步驟100,確定根節(jié)點(diǎn),并開啟各節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器;
[0007] 步驟200,對(duì)無(wú)線傳感器網(wǎng)中的節(jié)點(diǎn)進(jìn)行先期同步,包括以下子步驟:
[0008]步驟201,根節(jié)點(diǎn)廣播一個(gè)I類型的消息,其中,所述I類型的消息為通知初始化同 步過(guò)程的消息;
[0009] 步驟202,對(duì)于收到I類型消息的所有未定義類型的節(jié)點(diǎn),關(guān)閉同步請(qǐng)求定時(shí)器并 開啟同步定時(shí)器;當(dāng)未定義類型節(jié)點(diǎn)的同步定時(shí)器到時(shí)間后,節(jié)點(diǎn)的節(jié)點(diǎn)類型變?yōu)楣歉晒?jié) 點(diǎn),同時(shí)廣播S類型的消息,其中,所述S類型的消息是同步的消息,目的地址是其父節(jié)點(diǎn),并 攜帶第一本地時(shí)間戳T1;
[0010] 步驟203,對(duì)于收到S類型消息的所有節(jié)點(diǎn),如果與S類型消息的目的地址匹配且為 骨干類型節(jié)點(diǎn),那么記錄第二本地時(shí)間戳T2,并回復(fù)一個(gè)A類型的消息,在發(fā)送時(shí)記錄發(fā)送 時(shí)間戳T3,其中,所述A類型的消息為確認(rèn)同步的消息,包含第二本地時(shí)間戳T2和發(fā)送A類型 消息的發(fā)送時(shí)間戳T3;如果S類型消息的目的地址不匹配且同步定時(shí)器是在運(yùn)行狀態(tài),那么 記錄第三本地時(shí)間戳T5,并停止同步定時(shí)器,標(biāo)記該節(jié)點(diǎn)的類型為從屬節(jié)點(diǎn);
[0011] 步驟204,對(duì)于收到A類型的消息的所有節(jié)點(diǎn),與A類型的目的地址匹配的節(jié)點(diǎn),記 錄第四本地時(shí)間戳T4,利用公式
?角定時(shí)間偏移量,其中,A (α,β)表示時(shí)間偏移量,并利用確定的時(shí)間偏移量,對(duì)節(jié)點(diǎn)進(jìn)行時(shí)間同步;與A類型消息的目 的地址不匹配的節(jié)點(diǎn),讀取A類型消息中的第二本地時(shí)間戳,利用公式Δ (α,γ )=Τ2_Τ5確 定時(shí)間偏移量,其中,Α (α,γ )表示時(shí)間偏移量,并利用確定的時(shí)間偏移量,對(duì)節(jié)點(diǎn)進(jìn)行時(shí) 間同步;
[0012] 步驟205,時(shí)間同步后的節(jié)點(diǎn)向周圍節(jié)點(diǎn)廣播初始化的消息,使其周圍的未定義節(jié) 點(diǎn),依次執(zhí)行步驟202至204,從而使整個(gè)無(wú)線傳感器網(wǎng)進(jìn)行先期時(shí)間同步;
[0013] 步驟300,利用同步請(qǐng)求定時(shí)器,對(duì)無(wú)線傳感網(wǎng)中的未同步節(jié)點(diǎn)進(jìn)行同步,包括以 下子步驟:
[0014] 步驟301,當(dāng)未定義類型節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器到時(shí)間后,該節(jié)點(diǎn)發(fā)送R類型的消 息;
[0015] 步驟302,對(duì)于收到R類型消息的所有節(jié)點(diǎn),如果為從屬節(jié)點(diǎn),將該節(jié)點(diǎn)的類型變?yōu)?骨干節(jié)點(diǎn),并廣播I類型的消息,其中,R類型的消息為重復(fù)請(qǐng)求同步的消息,I類型的消息為 通知初始化同步的過(guò)程的消息;
[0016] 步驟303,對(duì)于收到I類型消息的所有節(jié)點(diǎn),依次執(zhí)行步驟202至204進(jìn)行時(shí)間同步; [0017] 步驟304,依次重復(fù)步驟301至303,直到無(wú)線傳感器網(wǎng)內(nèi)所有節(jié)點(diǎn)完成時(shí)間同步。
[0018] 進(jìn)一步的,在步驟100中,確定根節(jié)點(diǎn)的方式為:
[0019] 第一次同步時(shí),根節(jié)點(diǎn)隨機(jī)選擇,作為時(shí)間同步過(guò)程的開始節(jié)點(diǎn);
[0020] 再次同步時(shí),選擇上一輪同步中根節(jié)點(diǎn)的鄰居中的能量剩余最多的節(jié)點(diǎn)作為新一 輪的根節(jié)點(diǎn)。
[0021] 進(jìn)一步的,在步驟100中,確定根節(jié)點(diǎn),并開啟各節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器,包括:
[0022] 從根節(jié)點(diǎn)開始,以洪泛的形式,向周圍節(jié)點(diǎn)廣播Z類型的消息,其中,所述Z類型的 消息為通知設(shè)置同步請(qǐng)求定時(shí)器的消息;
[0023] 收到Z類型消息的節(jié)點(diǎn),設(shè)置同步請(qǐng)求定時(shí)器,并繼續(xù)向周圍節(jié)點(diǎn)廣播所述Z類型 的消息。
[0024] 本發(fā)明提供的一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,是一種無(wú)線傳感網(wǎng)中的低 功耗的時(shí)間同步方法,在整個(gè)網(wǎng)絡(luò)開始階段,以生成樹的順序,給每個(gè)節(jié)點(diǎn)設(shè)置一個(gè)同步請(qǐng) 求定時(shí)器,同步過(guò)程中,結(jié)合了SRP和RRP兩種類型的方法,因?yàn)镽RP方法中,PN節(jié)點(diǎn)不需要發(fā) 送任何消息,所以,本方法依然可以保持低功耗的特性。而當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)密度越大時(shí),這種優(yōu) 勢(shì)變得非常明顯。同步過(guò)程不需要分組,沒(méi)有額外的能耗開銷。本發(fā)明增加了多個(gè)定時(shí)器來(lái) 請(qǐng)求同步,使得所有節(jié)點(diǎn)都能夠完成同步,當(dāng)節(jié)點(diǎn)不能同步時(shí),定時(shí)器會(huì)超時(shí),從而向鄰居 中的從屬節(jié)點(diǎn)發(fā)起請(qǐng)求,使得所有節(jié)點(diǎn)都能夠完成同步,實(shí)現(xiàn)全網(wǎng)同步。另外,本方法提供 了一種根節(jié)點(diǎn)選擇策略,選擇根節(jié)點(diǎn)的相鄰節(jié)點(diǎn)中剩余能量最多的節(jié)點(diǎn)作為新的根節(jié)點(diǎn), 能夠使能量更加均衡。本發(fā)明采用定時(shí)器請(qǐng)求的形式,可以保證整個(gè)網(wǎng)絡(luò)的所有節(jié)點(diǎn)實(shí)現(xiàn) 同步,不遺漏任何節(jié)點(diǎn),且同步過(guò)程的功耗保持很低,該發(fā)明在多輪同步過(guò)程中,還可以保 持網(wǎng)絡(luò)中的節(jié)點(diǎn)負(fù)載平衡,從而延長(zhǎng)網(wǎng)絡(luò)的生命周期。
【附圖說(shuō)明】
[0025]圖1是本發(fā)明用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法的實(shí)現(xiàn)流程圖;
[0026]圖2是網(wǎng)絡(luò)的初始狀態(tài)的示意圖;
[0027]圖3是設(shè)置同步請(qǐng)求定時(shí)器的示意圖;
[0028]圖4是先期同步階段的示意圖;
[0029]圖5是重復(fù)請(qǐng)求階段的示意圖;
[0030]圖6是完成了重復(fù)請(qǐng)求階段的示意圖;
[0031]圖7是選擇下一輪根節(jié)點(diǎn)的示意圖;
[0032] 圖8是SRP方法和RRP方法的示意圖。
【具體實(shí)施方式】
[0033] 為使本發(fā)明解決的技術(shù)問(wèn)題、采用的技術(shù)方案和達(dá)到的技術(shù)效果更加清楚,下面 結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施 例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖 中僅示出了與本發(fā)明相關(guān)的部分而非全部?jī)?nèi)容。
[0034] 對(duì)于基于生成樹的一些時(shí)間同步算法,網(wǎng)絡(luò)中的節(jié)點(diǎn)分為3種類型:(1)未定義節(jié) 點(diǎn):是所有節(jié)點(diǎn)的初始狀態(tài),即未同步狀態(tài);(2)從屬節(jié)點(diǎn):是用RRP算法完成同步的節(jié)點(diǎn),同 步過(guò)程中不發(fā)送廣播消息。(3)骨干節(jié)點(diǎn):是利用SRP算法同步的節(jié)點(diǎn),構(gòu)成生成樹的核心節(jié) 點(diǎn)。初始狀態(tài)所有節(jié)點(diǎn)都是未定義節(jié)點(diǎn),即都是未同步節(jié)點(diǎn)。由于算法原因或信號(hào)問(wèn)題,在 普通同步算法完成后,網(wǎng)絡(luò)中還有部分節(jié)點(diǎn)未完成同步。本發(fā)明提出一種重復(fù)請(qǐng)求同步的 方案,通過(guò)設(shè)置初始化定時(shí)器的方法。
[0035] 圖1為本發(fā)明用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法的實(shí)現(xiàn)流程圖。如圖1所示,本發(fā) 明實(shí)施例提供的用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法包括:
[0036] 步驟100,確定根節(jié)點(diǎn),并開啟各節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器。
[0037] 本實(shí)施例所針對(duì)的無(wú)線傳感器網(wǎng)是由多種傳感器節(jié)點(diǎn)組合而成的分布式網(wǎng)絡(luò),各 個(gè)節(jié)點(diǎn)運(yùn)行在不同的芯片上,擁有自己時(shí)鐘,所以時(shí)間是不同步的。圖2是網(wǎng)絡(luò)的初始狀態(tài)。 在本實(shí)施例中,確定根節(jié)點(diǎn)的方式為:第一次隨機(jī)選擇,作為本發(fā)明時(shí)間同步過(guò)程的開始節(jié) 點(diǎn)。之后再次建拓?fù)鋾r(shí),選擇上一輪同步中根節(jié)點(diǎn)的鄰居中的能量剩余最多的節(jié)點(diǎn)作為新 一輪的根節(jié)點(diǎn)。
[0038] 確定根節(jié)點(diǎn)之后,整個(gè)網(wǎng)絡(luò)從根節(jié)點(diǎn)開始,以洪泛的形式,向周圍節(jié)點(diǎn)廣播類型為 Z的數(shù)據(jù)包,收到數(shù)據(jù)包的節(jié)點(diǎn)查看如果數(shù)據(jù)包的類型為Z,就設(shè)置同步請(qǐng)求定時(shí)器,并繼續(xù) 廣播該消息,以使網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)都開啟同步請(qǐng)求定時(shí)器,此時(shí),除根節(jié)點(diǎn)以外的其他節(jié) 點(diǎn)都將節(jié)點(diǎn)類型設(shè)置為未定義節(jié)點(diǎn)類型。如圖3中的除節(jié)點(diǎn)A以外的所有節(jié)點(diǎn)都開啟了同步 請(qǐng)求定時(shí)器。
[0039] 其中,定時(shí)器是本發(fā)明中很重要的一個(gè)工具,用來(lái)輔助完成計(jì)時(shí)任務(wù)。在一般的無(wú) 線模塊中,都有定時(shí)器的設(shè)計(jì)。每個(gè)定時(shí)器都包含一個(gè)初始值,用來(lái)表示定時(shí)器計(jì)時(shí)的時(shí) 間,當(dāng)定時(shí)器啟動(dòng)時(shí),計(jì)時(shí)從〇開始,當(dāng)定時(shí)器計(jì)時(shí)等于設(shè)置的初始值時(shí),即定時(shí)器到時(shí)間 了。在本實(shí)施例中所述的同步請(qǐng)求定時(shí)器,在開始階段就開啟,實(shí)現(xiàn)同步后關(guān)閉;如果在先 期同步完成后,同步請(qǐng)求定時(shí)器到時(shí)間后,節(jié)點(diǎn)還未同步,貝進(jìn)行同步請(qǐng)求。它的初始值等 于先期同步的周期(通過(guò)實(shí)驗(yàn)獲得一個(gè)平均值)。
[0040] 本發(fā)明用到的數(shù)據(jù)包(廣播消息)中通常攜帶的數(shù)據(jù)包含:目的地址、源地址、消息 類型、父節(jié)點(diǎn)、等級(jí)和時(shí)間戳,其中,目的地址是廣播數(shù)據(jù)包的目的地址;源地址是發(fā)送消息 的節(jié)點(diǎn)地址;消息類型表示該消息的類型,用在時(shí)間同步過(guò)程的不同階段,共有6種消息類 型,具體的,C表示用于選擇根節(jié)點(diǎn)的消息、Z表示通知設(shè)置同步請(qǐng)求定時(shí)器的消息、I表示通 知初始化同步的過(guò)程的消息、S表示同步的消息、A表示確認(rèn)同步的消息、R表示重復(fù)請(qǐng)求同 步的消息;父節(jié)點(diǎn)是記錄發(fā)送節(jié)點(diǎn)的父節(jié)點(diǎn)地址;等級(jí)是發(fā)送節(jié)點(diǎn)的等級(jí)(默認(rèn)是-1),用來(lái) 表示一個(gè)節(jié)點(diǎn)在生成樹當(dāng)中的層次;時(shí)間戳可以是多個(gè),例如發(fā)送時(shí)間戳和本地時(shí)間戳等。
[0041] 步驟200,對(duì)無(wú)線傳感器網(wǎng)中的節(jié)點(diǎn)進(jìn)行先期同步,包括以下過(guò)程:
[0042]步驟201,根節(jié)點(diǎn)廣播一個(gè)初始化消息(I類型)。參照?qǐng)D3,例如,節(jié)點(diǎn)A被選為根節(jié) 點(diǎn),根節(jié)點(diǎn)A廣播一個(gè)類型為I的消息。
[0043]步驟202,對(duì)于收到I類型消息的所有未定義類型的節(jié)點(diǎn),將發(fā)送類型I消息的節(jié)點(diǎn) 標(biāo)記為自己的父節(jié)點(diǎn),將自己的等級(jí)設(shè)置為發(fā)送消息節(jié)點(diǎn)的等級(jí)加1,關(guān)閉同步請(qǐng)求定時(shí) 器,同時(shí)開啟同步定時(shí)器。之后,如果任何一個(gè)未定義類型的節(jié)點(diǎn)的同步定時(shí)器到時(shí)間后, 同步定時(shí)器到時(shí)間的節(jié)點(diǎn)會(huì)把自己的節(jié)點(diǎn)類型變?yōu)楣歉晒?jié)點(diǎn),同時(shí)廣播一個(gè)類型為S的消 息(同步消息),其中,類型為S的消息目的地址是剛剛記錄的父節(jié)點(diǎn),并攜帶第一本地時(shí)間 戳T1;如果任何一個(gè)未定義類型的節(jié)點(diǎn)的同步定時(shí)器未到時(shí)間,貝lj關(guān)閉該同步請(qǐng)求定時(shí)器。 在實(shí)際應(yīng)用中,能查看一個(gè)定時(shí)器的狀態(tài),如果定時(shí)器處于運(yùn)行狀態(tài)則說(shuō)明還沒(méi)到時(shí)間,如 果定時(shí)器處于空閑狀態(tài)則說(shuō)明已經(jīng)到時(shí)間了。
[0044] 在本實(shí)施例中所述的同步定時(shí)器,用來(lái)選擇骨干節(jié)點(diǎn),所有未定義節(jié)點(diǎn)收到骨干 節(jié)點(diǎn)發(fā)來(lái)I類型(初始化過(guò)程的消息)的消息時(shí),開啟同步定時(shí)器,而實(shí)現(xiàn)同步后的節(jié)點(diǎn)關(guān)閉 同步定時(shí)器。如果在未同步時(shí)同步定時(shí)器到時(shí)間了,那么該節(jié)點(diǎn)就將自己轉(zhuǎn)換為骨干節(jié)點(diǎn)。 為了避免多個(gè)節(jié)點(diǎn)沖突,同步定時(shí)器的初始值是個(gè)隨機(jī)值。
[0045] 例如,圖3中節(jié)點(diǎn)E、B、C、G是收到I類型的消息(即初始化消息)的未定義類型的節(jié) 點(diǎn),節(jié)點(diǎn)E、B、C、G將發(fā)送初始化消息的節(jié)點(diǎn)A標(biāo)記為自己的父節(jié)點(diǎn),將自己的等級(jí)設(shè)置為節(jié) 點(diǎn)A的等級(jí)加1,同時(shí)開啟同步定時(shí)器。之后,如果節(jié)點(diǎn)E、C同步定時(shí)器到時(shí)間,節(jié)點(diǎn)E、C會(huì)把 自己的節(jié)點(diǎn)類型變?yōu)楣歉晒?jié)點(diǎn),同時(shí)廣播一個(gè)同步消息(類型為S的消息),該同步消息目的 地址是剛剛記錄的父節(jié)點(diǎn)A,此時(shí)記錄本地時(shí)間T1 (該時(shí)間戳保留在本地,不放在消息中), 如果同步請(qǐng)求定時(shí)器處于運(yùn)行狀態(tài),關(guān)閉該同步請(qǐng)求定時(shí)器。
[0046] 步驟203,對(duì)于收到類型為S(即同步消息)的所有節(jié)點(diǎn),如果與該同步消息的目的 地址匹配的節(jié)點(diǎn)且該節(jié)點(diǎn)為骨干類型節(jié)點(diǎn),那么記錄第二本地時(shí)間戳為T2(即收到S類型消 息的時(shí)間),并回復(fù)一個(gè)Α類型的消息(即確認(rèn)消息),在發(fā)送時(shí)記錄發(fā)送時(shí)間戳Τ3,所述Α類 型的消息中包含第二本地時(shí)間戳和回復(fù)A類型消息的發(fā)送時(shí)間戳;如果該同步消息的目的 地址不匹配的節(jié)點(diǎn)且該節(jié)點(diǎn)的同步定時(shí)器是在運(yùn)行狀態(tài),那么記錄第三本地時(shí)間戳為T5 (該時(shí)間戳不需要發(fā)送出去),并停止同步定時(shí)器,標(biāo)記該節(jié)點(diǎn)的類型為從屬節(jié)點(diǎn);如果不滿 足以上兩個(gè)條件的節(jié)點(diǎn)忽略該條消息。
[0047] 例如,節(jié)點(diǎn)A、B、G收到節(jié)點(diǎn)E或C廣播的同步消息,如果該類型為S的同步消息的目 的地址是節(jié)點(diǎn)A、且節(jié)點(diǎn)A為骨干類型節(jié)點(diǎn),那么節(jié)點(diǎn)A記錄第二本地時(shí)間戳為T2,回復(fù)一個(gè) 類型為Α的確認(rèn)消息,其中,確認(rèn)消息中包含收到同步消息的時(shí)間Τ2和發(fā)送Α類型消息的發(fā) 送時(shí)間戳T3;如果該B、G消息的目的地址不是節(jié)點(diǎn)B、G且節(jié)點(diǎn)B、G的同步定時(shí)器是在運(yùn)行狀 態(tài),那么記錄第三本地時(shí)間戳為T5,并停止同步定時(shí)器,標(biāo)記節(jié)點(diǎn)B、G的類型為從屬節(jié)點(diǎn)。不 滿足以上兩個(gè)條件的節(jié)點(diǎn)忽略該條消息。
[0048]步驟204,對(duì)于收到一個(gè)類型為A的消息(即確認(rèn)消息)的所有節(jié)點(diǎn),與確認(rèn)消息的 目的地址匹配的節(jié)點(diǎn),記錄第四本地時(shí)間戳為T4,并利用T1、T4、以及該確認(rèn)消息中攜帶的 Τ2、Τ3這4個(gè)時(shí)間戳采用SRP方法來(lái)進(jìn)行時(shí)間偏移量估計(jì),在確定時(shí)間偏移量之后,和父節(jié)點(diǎn) 進(jìn)行時(shí)間同步;與確認(rèn)消息的目的地址不匹配的節(jié)點(diǎn),讀取確認(rèn)消息中的Τ2值,根據(jù)之前記 錄的時(shí)間戳Τ5和這個(gè)Τ2就可以對(duì)自己和父節(jié)點(diǎn)利用RRP方法進(jìn)行時(shí)間偏移量估計(jì),從而和 父節(jié)點(diǎn)同步。
[0049] 參照?qǐng)D8對(duì)SRP方法和RRP方法進(jìn)行說(shuō)明:圖8中節(jié)點(diǎn)α是已經(jīng)同步的節(jié)點(diǎn),而節(jié)點(diǎn)β 和γ是預(yù)進(jìn)行同步的節(jié)點(diǎn)。圖8中實(shí)線和虛線表示的都是廣播消息,實(shí)線表示的該消息的數(shù) 據(jù)內(nèi)容中目的地址是自己,虛線表示該目的地址不是指向自己的。
[0050] SRP方法:節(jié)點(diǎn)β是利用SRP完成的同步,在某一時(shí)刻,節(jié)點(diǎn)β廣播一個(gè)消息類型為S (同步消息類型)的消息并記錄發(fā)送第一本地時(shí)間戳Τ1。收到這個(gè)類型為S消息的節(jié)點(diǎn)α,記 錄第二本地時(shí)間戳Τ2,然后記錄發(fā)送時(shí)間戳Τ3,并廣播回復(fù)一個(gè)類型為Α(確認(rèn)類型)的消 息,該消息中攜帶T 2和T 3的值。收到該回復(fù)消息的節(jié)點(diǎn)β記錄第四本地時(shí)間T 4。此時(shí),節(jié)點(diǎn)β 就根據(jù)!'132^334的值進(jìn)行時(shí)間偏移量的計(jì)算,時(shí)間偏移量的計(jì)算公式如下:
[0051]
[0052] 其中,Α (α,β)表示任意已經(jīng)同步節(jié)點(diǎn)α和任意預(yù)同步節(jié)點(diǎn)β的時(shí)間偏移量,進(jìn)一步 節(jié)點(diǎn)β將自己的本地時(shí)間加上該時(shí)間偏移量,就認(rèn)為節(jié)點(diǎn)β已經(jīng)完成了時(shí)間同步。
[0053] RRP方法:節(jié)點(diǎn)γ利用RRP完成的同步,在收到節(jié)點(diǎn)β廣播的消息類型為S的消息后, 記錄第三本地時(shí)間Τ5。當(dāng)節(jié)點(diǎn)α廣播類型為Α(確認(rèn)類型)的消息時(shí),節(jié)點(diǎn)γ也收到了該消息, 并也得到了第二時(shí)間戳Τ2。利用Τ2和Τ5完成時(shí)間偏移量的計(jì)算,計(jì)算公式如下:
[0054] Δ (α, γ )=Τ2-Τ5
[0055] 其中,Δ (α,γ )表示任意已經(jīng)同步節(jié)點(diǎn)α和任意預(yù)同步節(jié)點(diǎn)γ的時(shí)間偏移量,進(jìn)一 步節(jié)點(diǎn)Β將自己的本地時(shí)間加上△ (α,γ ),就認(rèn)為已經(jīng)和節(jié)點(diǎn)γ完成了同步。
[0056]例如,如果該確認(rèn)消息的目的地址是指向節(jié)點(diǎn)E、C(節(jié)點(diǎn)E、C與確認(rèn)消息的目的地 址匹配),那么記錄本地時(shí)間戳為T4,然后該節(jié)點(diǎn)就可以用T1、T4、以及該確認(rèn)消息中攜帶的 Τ2、Τ3這4個(gè)時(shí)間戳運(yùn)用SRP來(lái)進(jìn)行時(shí)間偏差估計(jì),從而和父節(jié)點(diǎn)同步。如果該確認(rèn)消息的目 的地址不是指向節(jié)點(diǎn)B、G(如節(jié)點(diǎn)B、G與確認(rèn)消息的目的地址不匹配),那么讀取消息中的Τ2 值,根據(jù)之前記錄的時(shí)間戳T5和這個(gè)T2就可以對(duì)自己和父節(jié)點(diǎn)利用RRP進(jìn)行時(shí)間偏差估計(jì), 從而和父節(jié)點(diǎn)同步。不滿足以上兩個(gè)條件的節(jié)點(diǎn)忽略該消息。
[0057]步驟205,時(shí)間同步后的節(jié)點(diǎn)向周圍節(jié)點(diǎn)廣播初始化的消息,使其周圍的未定義節(jié) 點(diǎn),依次執(zhí)行步驟202至204,從而使整個(gè)無(wú)線傳感器網(wǎng)進(jìn)行先期時(shí)間同步。
[0058] 然后步驟202-步驟204開始不斷執(zhí)行,使時(shí)間同步過(guò)程繼續(xù)延伸,直到網(wǎng)絡(luò)內(nèi)的不 再有廣播消息,此時(shí)同步無(wú)法繼續(xù)進(jìn)行,而根據(jù)我們定義的從屬節(jié)點(diǎn)的特征,這種類型的節(jié) 點(diǎn)不能廣播消息,所以先期同步過(guò)程不能保證從屬節(jié)點(diǎn)周圍鄰居的節(jié)點(diǎn)也都能同步,通過(guò) 實(shí)驗(yàn)發(fā)現(xiàn),有相當(dāng)一部分節(jié)點(diǎn)不能同步(具體數(shù)量和拓?fù)湫螤钣嘘P(guān)),此時(shí)同步停止了。
[0059] 本步驟從根節(jié)點(diǎn)開始,利用SRP和RRP進(jìn)行消息交換同步,完成了先期同步階段。該 過(guò)程可以使大部分節(jié)點(diǎn)完成同步,網(wǎng)絡(luò)中現(xiàn)在存在骨干節(jié)點(diǎn)和從屬節(jié)點(diǎn),由于信號(hào)問(wèn)題或 啟動(dòng)較慢導(dǎo)致丟失消息,以及算法本身的原因,網(wǎng)絡(luò)內(nèi)還可能存在未定義類型的節(jié)點(diǎn),未能 一次性在步驟200中同步。如圖4所示,其中實(shí)現(xiàn)圈內(nèi)的節(jié)點(diǎn)是該過(guò)程同步了的節(jié)點(diǎn),而圓圈 外面的節(jié)點(diǎn)(如圖5中的K、R、0等)都是未同步的。那么為了同步這些節(jié)點(diǎn),步驟100中的同步 請(qǐng)求定時(shí)器就發(fā)揮作用了。
[0060] 步驟300,利用同步請(qǐng)求定時(shí)器,對(duì)無(wú)線傳感網(wǎng)中的未同步節(jié)點(diǎn)進(jìn)行同步,包括以 下過(guò)程:
[0061 ]步驟301,當(dāng)未定義類型的節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器到時(shí)間后,該節(jié)點(diǎn)向周圍節(jié)點(diǎn)發(fā) 送類型為R的消息(即同步請(qǐng)求消息),例如圖5中的節(jié)點(diǎn)K和R。
[0062]步驟302,如果收到同步請(qǐng)求消息的節(jié)點(diǎn)為從屬節(jié)點(diǎn)(如圖5中的節(jié)點(diǎn)G,J),那么將 該節(jié)點(diǎn)的類型變?yōu)楣歉晒?jié)點(diǎn),并廣播類型為I的初始化消息。
[0063]步驟303,對(duì)于收到I類型消息的所有節(jié)點(diǎn),步驟202被觸發(fā)執(zhí)行,開始了一個(gè)同步 過(guò)程,即依次執(zhí)行步驟202至204進(jìn)行時(shí)間同步。其他類型節(jié)點(diǎn)忽略該消息。
[0064] 步驟304,依次重復(fù)步驟301至303,直到無(wú)線傳感器網(wǎng)內(nèi)所有節(jié)點(diǎn)完成時(shí)間同步。
[0065] 例如,圖5中的節(jié)點(diǎn)Μ是未定義類型的節(jié)點(diǎn),當(dāng)節(jié)點(diǎn)Μ的同步請(qǐng)求定時(shí)器到時(shí)間后, 該節(jié)點(diǎn)向周圍節(jié)點(diǎn)發(fā)送類型為R的消息,由于其周圍節(jié)點(diǎn)Κ、Ν也是未定義類型的節(jié)點(diǎn),所以 如果指定時(shí)間內(nèi)收不到任何回復(fù)(這里是指類型為I的消息),那么再次發(fā)送同步請(qǐng)求消息, 直到收到I類型消息,進(jìn)一步依次重復(fù)步驟301至303進(jìn)行時(shí)間同步。
[0066] 參照?qǐng)D5,例如,當(dāng)未定義類型節(jié)點(diǎn)Μ的同步請(qǐng)求定時(shí)器到時(shí)間后,節(jié)點(diǎn)Μ發(fā)送同步 請(qǐng)求消息。節(jié)點(diǎn)Μ如果10s內(nèi)收不到任何回復(fù),那么再次發(fā)送同步請(qǐng)求消息。當(dāng)未定義類型節(jié) 點(diǎn)K和R的同步請(qǐng)求定時(shí)器到時(shí)間后,發(fā)送R類型的消息(同步請(qǐng)求消息),收到同步請(qǐng)求消息 的節(jié)點(diǎn)G、J為從屬節(jié)點(diǎn),那么將節(jié)點(diǎn)G、J將自己的節(jié)點(diǎn)類型變?yōu)楣歉晒?jié)點(diǎn),并發(fā)送初始化消 息。然后步驟202-步驟204被觸發(fā)執(zhí)行;其他類型節(jié)點(diǎn)忽略該消息。
[0067] 為了使無(wú)線傳感器網(wǎng)的各根節(jié)點(diǎn)的能量更均衡,本發(fā)明可選擇不同的根節(jié)點(diǎn)進(jìn)行 多次網(wǎng)絡(luò)優(yōu)化(時(shí)間同步)。在本實(shí)施例中根節(jié)點(diǎn)選擇的方式為:第一次隨機(jī)選擇,作為本發(fā) 明時(shí)間同步過(guò)程的開始節(jié)點(diǎn)。之后再次建拓?fù)鋾r(shí),選擇上一輪同步中根節(jié)點(diǎn)的鄰居中的能 量剩余最多的節(jié)點(diǎn)作為新一輪的根節(jié)點(diǎn)。本選出的根節(jié)點(diǎn)的節(jié)點(diǎn)類型變?yōu)楣歉晒?jié)點(diǎn),規(guī)定 它的等級(jí)為0。例如圖3中的A在第一輪被選為根節(jié)點(diǎn)。而對(duì)于第二輪,如圖7所示,A的所有鄰 居節(jié)點(diǎn)中,B的剩余能量最多,被選為下一輪的根節(jié)點(diǎn)。
[0068] 在完成上述步驟之后,整個(gè)網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)都實(shí)現(xiàn)了時(shí)間同步。同步的狀態(tài)如 圖6所示。所有節(jié)點(diǎn)都是骨干節(jié)點(diǎn)或從屬節(jié)點(diǎn)。
[0069] 本發(fā)明提供的用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,(1)在拓?fù)涑跏蓟瘯r(shí),從根節(jié)點(diǎn) 開始廣播一個(gè)消息,所有收到消息的鄰居節(jié)點(diǎn)開啟同步請(qǐng)求定時(shí)器,消息不斷轉(zhuǎn)發(fā)直到使 所有節(jié)點(diǎn)都啟動(dòng)該定時(shí)器;(2)在先期同步階段,通過(guò)消息交換,大部分節(jié)點(diǎn)實(shí)現(xiàn)同步;同步 后的節(jié)點(diǎn)會(huì)取消同步請(qǐng)求定時(shí)器,直到網(wǎng)絡(luò)同步停止;(3)重復(fù)請(qǐng)求階段,當(dāng)一未同步節(jié)點(diǎn) 的同步請(qǐng)求定時(shí)器到時(shí)間時(shí),它發(fā)送請(qǐng)求同步的消息,如果沒(méi)有回復(fù),則重新開啟同步定時(shí) 器;而如果該消息被某個(gè)從屬節(jié)點(diǎn)收到,那么收到消息的從屬節(jié)點(diǎn)開始執(zhí)行消息交換同步 算法;這個(gè)過(guò)程重復(fù)執(zhí)行直到所有節(jié)點(diǎn)同步。本發(fā)明是一種無(wú)線傳感網(wǎng)中的低功耗的時(shí)間 同步方法,在整個(gè)網(wǎng)絡(luò)開始階段,以生成樹的順序,給每個(gè)節(jié)點(diǎn)設(shè)置了一個(gè)同步請(qǐng)求定時(shí) 器,結(jié)合了 SRP和RRP兩種類型的方法進(jìn)行時(shí)間同步,能夠使區(qū)域內(nèi)的全部節(jié)點(diǎn)都能夠同步, 對(duì)同步過(guò)程的時(shí)序也做了相應(yīng)調(diào)整,保證了同步的正確性。增加了根節(jié)點(diǎn)選擇策略,可以使 整個(gè)網(wǎng)絡(luò)的能量均衡,延長(zhǎng)網(wǎng)絡(luò)的生命周期。由于RRP方法中,從屬節(jié)點(diǎn)不需要發(fā)送任何消 息,所以本發(fā)明可以保持低功耗的特性。并當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)密度越大時(shí),這種優(yōu)勢(shì)變得非常明 顯。同步過(guò)程不需要分組,沒(méi)有額外的能耗開銷。
[0070]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡 管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其對(duì) 前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替 換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【主權(quán)項(xiàng)】
1. 一種用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,其特征在于,包括以下過(guò)程: 步驟IOO,確定根節(jié)點(diǎn),并開啟各節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器; 步驟200,對(duì)無(wú)線傳感器網(wǎng)中的節(jié)點(diǎn)進(jìn)行先期同步,包括以下子步驟: 步驟201,根節(jié)點(diǎn)廣播一個(gè)I類型的消息,其中,所述I類型的消息為通知初始化同步過(guò) 程的消息; 步驟202,對(duì)于收到I類型消息的所有未定義類型的節(jié)點(diǎn),關(guān)閉同步請(qǐng)求定時(shí)器并開啟 同步定時(shí)器;當(dāng)未定義類型節(jié)點(diǎn)的同步定時(shí)器到時(shí)間后,節(jié)點(diǎn)的節(jié)點(diǎn)類型變?yōu)楣歉晒?jié)點(diǎn),同 時(shí)廣播S類型的消息,其中,所述S類型的消息是同步的消息,目的地址是其父節(jié)點(diǎn),并攜帶 第一本地時(shí)間戳Tl; 步驟203,對(duì)于收到S類型消息的所有節(jié)點(diǎn),如果與S類型消息的目的地址匹配且為骨干 類型節(jié)點(diǎn),那么記錄第二本地時(shí)間戳T2,并回復(fù)一個(gè)A類型的消息,在發(fā)送時(shí)記錄發(fā)送時(shí)間 戳T3,其中,所述A類型的消息為確認(rèn)同步的消息,包含第二本地時(shí)間戳T2和發(fā)送A類型消息 的發(fā)送時(shí)間戳T3;如果S類型消息的目的地址不匹配且同步定時(shí)器是在運(yùn)行狀態(tài),那么記錄 第三本地時(shí)間戳T5,并停止同步定時(shí)器,標(biāo)記該節(jié)點(diǎn)的類型為從屬節(jié)點(diǎn); 步驟204,對(duì)于收到A類型的消息的所有節(jié)點(diǎn),與A類型的目的地址匹配的節(jié)點(diǎn),記錄第 四本地時(shí)間戳T4,.確定時(shí)間偏移量,其中,A (α,β) 表示時(shí)間偏移量,并利用確定的時(shí)間偏移量,對(duì)節(jié)點(diǎn)進(jìn)行時(shí)間同步;與A類型消息的目的地 址不匹配的節(jié)點(diǎn),讀取A類型消息中的第二本地時(shí)間戳,利用公式Δ (α,γ )=Τ2_Τ5確定時(shí) 間偏移量,其中,△ (α,γ )表示時(shí)間偏移量,并利用確定的時(shí)間偏移量,對(duì)節(jié)點(diǎn)進(jìn)行時(shí)間同 步; 步驟205,時(shí)間同步后的節(jié)點(diǎn)向周圍節(jié)點(diǎn)廣播初始化的消息,使其周圍的未定義節(jié)點(diǎn), 依次執(zhí)行步驟202至204,從而使整個(gè)無(wú)線傳感器網(wǎng)進(jìn)行先期時(shí)間同步; 步驟300,利用同步請(qǐng)求定時(shí)器,對(duì)無(wú)線傳感網(wǎng)中的未同步節(jié)點(diǎn)進(jìn)行同步,包括以下子 步驟: 步驟301,當(dāng)未定義類型節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器到時(shí)間后,該節(jié)點(diǎn)發(fā)送R類型的消息; 步驟302,對(duì)于收到R類型消息的所有節(jié)點(diǎn),如果為從屬節(jié)點(diǎn),將該節(jié)點(diǎn)的類型變?yōu)楣歉?節(jié)點(diǎn),并廣播I類型的消息,其中,R類型的消息為重復(fù)請(qǐng)求同步的消息,I類型的消息為通知 初始化同步的過(guò)程的消息; 步驟303,對(duì)于收到I類型消息的所有節(jié)點(diǎn),依次執(zhí)行步驟202至204進(jìn)行時(shí)間同步; 步驟304,依次重復(fù)步驟301至303,直到無(wú)線傳感器網(wǎng)內(nèi)所有節(jié)點(diǎn)完成時(shí)間同步。2. 根據(jù)權(quán)利要求1所述的用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,其特征在于,在步驟100 中,確定根節(jié)點(diǎn)的方式為: 第一次同步時(shí),根節(jié)點(diǎn)隨機(jī)選擇,作為時(shí)間同步過(guò)程的開始節(jié)點(diǎn); 再次同步時(shí),選擇上一輪同步中根節(jié)點(diǎn)的鄰居中的能量剩余最多的節(jié)點(diǎn)作為新一輪的 根節(jié)點(diǎn)。3. 根據(jù)權(quán)利要求1或2所述的用于無(wú)線傳感器網(wǎng)的時(shí)間同步方法,其特征在于,在步驟 100中,確定根節(jié)點(diǎn),并開啟各節(jié)點(diǎn)的同步請(qǐng)求定時(shí)器,包括: 從根節(jié)點(diǎn)開始,以洪泛的形式,向周圍節(jié)點(diǎn)廣播Z類型的消息,其中,所述Z類型的消息 為通知設(shè)置同步請(qǐng)求定時(shí)器的消息; 收到Z類型消息的節(jié)點(diǎn),設(shè)置同步請(qǐng)求定時(shí)器,并繼續(xù)向周圍節(jié)點(diǎn)廣播所述Z類型的消 息。
【文檔編號(hào)】H04W28/08GK105933935SQ201610221092
【公開日】2016年9月7日
【申請(qǐng)日】2016年4月8日
【發(fā)明人】邱鐵, 寧兆龍, 張玉爽, 李明楚, 陳寧, 李曉芳
【申請(qǐng)人】大連理工大學(xué)