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