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