一種即時(shí)同步與時(shí)鐘自校準結合的全網(wǎng)同步技術(shù)
目前,無(wú)線(xiàn)傳感器網(wǎng)絡(luò )時(shí)間同步技術(shù)的研究重點(diǎn)已經(jīng)從單跳網(wǎng)絡(luò )發(fā)展到多跳網(wǎng)絡(luò )?,F有的多跳時(shí)間同步算法充分體現了同步功耗和同步精度以及同步周期間的折衷,本文著(zhù)重解決的問(wèn)題就是在不顯著(zhù)增加同步功耗的前提下擴展同步周期,本文的硬件平臺為Silicon Labs公司的Si1000無(wú)線(xiàn)MCU芯片。
1 網(wǎng)絡(luò )拓撲結構
無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的拓撲結構主要有星型網(wǎng)、樹(shù)型網(wǎng)和網(wǎng)狀網(wǎng),本文以應用較多的星型網(wǎng)和樹(shù)型網(wǎng)結合的多級網(wǎng)絡(luò )結構為例進(jìn)行同步過(guò)程的設計。
一個(gè)典型的網(wǎng)絡(luò )結構如圖1所示。網(wǎng)絡(luò )中的節點(diǎn)可以分為根節點(diǎn)、樹(shù)枝節點(diǎn)和樹(shù)葉節點(diǎn)3種類(lèi)型。其中,最上端的0-0為根節點(diǎn),網(wǎng)絡(luò )中間的如0-1、0-2、5-8等為樹(shù)枝節點(diǎn),網(wǎng)絡(luò )末端的1-3、4-7等為樹(shù)葉節點(diǎn)。每?jì)蓚€(gè)相連接的節點(diǎn)互稱(chēng)為父子節點(diǎn),如0-1和1-4互為父子節點(diǎn)。其中0-1是1-4的父節點(diǎn),1-4是0-1的子節點(diǎn),而1-4是4-7的父節點(diǎn),4-7是1-4的子節點(diǎn)。在對節點(diǎn)編址時(shí),每一個(gè)節點(diǎn)都有兩個(gè)地址信息,其中低位地址表示本節點(diǎn)在網(wǎng)絡(luò )中的唯一的ID號,高位地址表示該節點(diǎn)的父節點(diǎn)在網(wǎng)絡(luò )中的ID號。這種表示方式的優(yōu)勢在于,每個(gè)節點(diǎn)只跟自己的父節點(diǎn)和子節點(diǎn)通信,不與其他節點(diǎn)交互信息,即使收到其他節點(diǎn)的數據包,也會(huì )當作無(wú)效數據丟掉。這樣,每個(gè)節點(diǎn)的程序相對簡(jiǎn)單,網(wǎng)絡(luò )的層數可以不受限制,網(wǎng)絡(luò )層數和網(wǎng)絡(luò )內節點(diǎn)數的增加,不會(huì )導致每個(gè)節點(diǎn)的程序復雜度的增加。
一般情況下,在網(wǎng)絡(luò )中,根節點(diǎn)為網(wǎng)關(guān)節點(diǎn),樹(shù)葉節點(diǎn)和樹(shù)枝節點(diǎn)均為簇頭,每個(gè)簇頭在為其他簇頭作數據轉發(fā)的同時(shí),均可以接收傳感器節點(diǎn)的數據。簇頭的數量由ID號的位數決定,如果用一個(gè)字節來(lái)表示ID號,則網(wǎng)絡(luò )中簇頭的最大數量為255個(gè)。
根據傳感器節點(diǎn)與簇頭節點(diǎn)的緊密程度,可以將傳感器節點(diǎn)劃分為若干個(gè)區域,每個(gè)區域設置一個(gè)簇頭,簇頭與采集節點(diǎn)之間采用星型網(wǎng)連接。
2 即時(shí)同步技術(shù)
在無(wú)線(xiàn)傳感器網(wǎng)絡(luò )剛建立時(shí),由于某些原因導致節點(diǎn)間的同步狀態(tài)丟失時(shí),需要進(jìn)行時(shí)鐘同步的“初始化”,采用即時(shí)同步的方式進(jìn)行。
即時(shí)同步技術(shù)是星型網(wǎng)絡(luò )結構中一種高效的同步技術(shù),同步以網(wǎng)關(guān)節點(diǎn)為起點(diǎn),并由近及遠的同步樹(shù)型網(wǎng)絡(luò )結構中的各簇頭節點(diǎn),之后簇頭節點(diǎn)再分別同步各自的傳感器節點(diǎn)。
下面以簇頭同步傳感器節點(diǎn)為例說(shuō)明同步過(guò)程,同步的時(shí)序如圖2所示。
一般情況下,傳感器節點(diǎn)在剛上電或復位之后,處于低功耗模式,實(shí)驗時(shí),以5 s為一個(gè)周期,即節點(diǎn)睡眠狀態(tài)4 995 ms,接收狀態(tài)5 ms,如果沒(méi)有有效數據。則繼續轉入睡眠狀態(tài),如此循環(huán)下去。5 ms稱(chēng)為數據偵聽(tīng)窗口。由于節點(diǎn)的個(gè)體差異、晶振的漂移等因素的影響,經(jīng)過(guò)一段時(shí)間后,各個(gè)節點(diǎn)的數據接收窗口的起始時(shí)間差距就比較大了。如果簇頭要讓所有的傳感器節點(diǎn)都收到同步命令,必須連續發(fā)送5 s。這個(gè)同步命令包括了簇頭的低位地址和一個(gè)不斷累加的序列號,共3個(gè)字節。若以115.2 kbps的速率傳輸,發(fā)送一個(gè)同步命令需1.72 ms,連續不斷地發(fā)送,從1開(kāi)始,每發(fā)送一次,序列號加1。這樣,序列號本身就攜帶著(zhù)時(shí)間信息。在實(shí)際編程中,共發(fā)送2907次,約為5s。
簇頭連續發(fā)送5 s同步序列后,轉入低功耗模式,5 s結束時(shí)的時(shí)間點(diǎn)稱(chēng)為同步時(shí)間點(diǎn),即圖中的10 s點(diǎn)的位置。如圖2所示,所有的傳感器節點(diǎn)在數據接收窗口內都至少能收到一條完整的喚醒命令。以收到的第一條完整的同步命令為有效命令,根據序列號,節點(diǎn)能夠判斷自己在時(shí)間軸上所處的位置,經(jīng)過(guò)計算后,得到自己距同步時(shí)間點(diǎn)的時(shí)長(cháng)t??梢钥吹?,經(jīng)過(guò)5 s的持續同步后,所有傳感器節點(diǎn)均可以同步到同步時(shí)間點(diǎn)。
傳感器節點(diǎn)的同步流程圖如圖3所示。
網(wǎng)關(guān)節點(diǎn)同步簇頭節點(diǎn)的時(shí)序與傳感器節點(diǎn)類(lèi)似,只是將通信速率降低到4 800 bps,相對應的簇頭的偵聽(tīng)窗口為50 ms,睡眠4 950 ms,網(wǎng)關(guān)發(fā)送的同步命令字為本地ID+末端簇頭ID+一個(gè)不斷累加的序列號,共3個(gè)字節。以4 800 bps的波特率發(fā)送,每個(gè)同步命令需要22 ms,實(shí)際編程中,共發(fā)送227次,約為5 s。經(jīng)過(guò)即時(shí)同步后,網(wǎng)絡(luò )中的各個(gè)節點(diǎn)均被同步到網(wǎng)關(guān)節點(diǎn)的時(shí)鐘上。
評論