禹 健,高 超,郭天星
(山西大學(xué) 自動(dòng)化系,太原 030013)
無線傳感器網(wǎng)絡(luò)(WSN)是由大量分布在空間上的傳感器節(jié)點(diǎn)通過自組織方式構(gòu)成的網(wǎng)絡(luò)[1]。融合了傳感器、信息處理和網(wǎng)絡(luò)通信三大技術(shù),可以實(shí)現(xiàn)數(shù)據(jù)的采集、處理和傳輸。廣泛應(yīng)用于環(huán)境監(jiān)測(cè)、工業(yè)控制、國防軍事等領(lǐng)域[2]。時(shí)鐘同步是無線傳感器網(wǎng)絡(luò)不可或缺的一部分,測(cè)距定位、多傳感器的數(shù)據(jù)融合以及協(xié)同工作等方面的應(yīng)用都離不開時(shí)鐘同步的支撐[3]。無線傳感器網(wǎng)絡(luò)中的時(shí)鐘同步是指使網(wǎng)絡(luò)中所有或部分節(jié)點(diǎn)擁有相同的時(shí)間基準(zhǔn),目的就是在網(wǎng)絡(luò)中產(chǎn)生一個(gè)全局時(shí)鐘,使網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)的時(shí)鐘可以達(dá)到相對(duì)一致性。網(wǎng)絡(luò)中影響時(shí)鐘同步精度的因素有很多,主要包括主從時(shí)鐘的頻率不一致、時(shí)間戳的精度以及操作系統(tǒng)的延時(shí)等。時(shí)間戳精度和操作系統(tǒng)延時(shí)的影響可以通過基于硬件支持的時(shí)間戳標(biāo)記得以有效解決。一般來說,物理層的抖動(dòng)延時(shí)非常小,在物理層和數(shù)據(jù)鏈路層之間的時(shí)間戳標(biāo)記可以獲得非常高的時(shí)鐘精度。而主從時(shí)鐘晶振的質(zhì)量、溫度、壓力、老化程度等都會(huì)引起頻率的相對(duì)漂移[4],時(shí)鐘同步的精度就與同步周期密切相關(guān),同步周期越小,頻率越快,時(shí)鐘同步精度越高,但相應(yīng)的功耗也隨之增大,對(duì)于追求低功耗的無線傳感器網(wǎng)絡(luò)來說,額外的功耗開銷是不希望的。
本文將傳統(tǒng)的鎖相環(huán)原理應(yīng)用到無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的時(shí)鐘漂移補(bǔ)償中,提出一種基于微處理器的時(shí)鐘漂移補(bǔ)償鎖相環(huán)的實(shí)現(xiàn)方案,并進(jìn)行實(shí)驗(yàn)驗(yàn)證,證實(shí)方案的有效性和可行性。
在無線傳感網(wǎng)絡(luò)中,節(jié)點(diǎn)的時(shí)鐘通常使用晶振的脈沖來度量[5]。因此,某一節(jié)點(diǎn)在t時(shí)刻的本地時(shí)鐘可以表示為

式中:ω(t)是節(jié)點(diǎn)晶體振蕩器的頻率;k是關(guān)于晶體振蕩器物理特性的常量;t是真實(shí)的時(shí)間變量;c(t)與c(t0)分別為t時(shí)刻和t0時(shí)刻的本地時(shí)鐘讀數(shù)。
節(jié)點(diǎn)的本地時(shí)鐘是通過計(jì)數(shù)器記錄晶振產(chǎn)生的脈沖個(gè)數(shù)構(gòu)造的。在此基礎(chǔ)上,我們可以構(gòu)造出多種軟件時(shí)鐘。利用本地時(shí)鐘與同步時(shí)鐘之間的關(guān)系,可以構(gòu)造出對(duì)應(yīng)的軟件時(shí)鐘以達(dá)成同步。
在無線傳感器網(wǎng)絡(luò)應(yīng)用中,大多數(shù)業(yè)務(wù)的正常運(yùn)行都要求全網(wǎng)節(jié)點(diǎn)間的頻率或者時(shí)間差異保持在合理的誤差范圍內(nèi),即時(shí)鐘同步[6]。時(shí)鐘同步則包括相位同步和頻率同步2個(gè)概念。相位同步也稱為時(shí)間同步,是指信號(hào)間的頻率和相位都保持一致,即信號(hào)之間相位差恒定為零。頻率同步即維持各節(jié)點(diǎn)的頻率一致,信號(hào)在其相對(duì)應(yīng)的有效瞬間以同一速率出現(xiàn),以保證所有節(jié)點(diǎn)時(shí)鐘以相同速率運(yùn)行[7]。
假定晶振的頻率在短期內(nèi)是穩(wěn)定的,即r(t)=dc(t)/dt是恒定的。 由式(1),節(jié)點(diǎn)時(shí)鐘ci(t)可以簡化為

時(shí)鐘ci(t)與時(shí)鐘cj(t)之間的關(guān)系可以由式(3)表示:

式中:aij為時(shí)鐘ci(t)和cj(t)之間的相對(duì)漂移量,即相對(duì)時(shí)鐘頻差;bij為2個(gè)時(shí)鐘之間的相對(duì)偏移量,即時(shí)鐘相位差。對(duì)相對(duì)漂移量和相對(duì)偏移量的補(bǔ)償是2種基本的時(shí)鐘同步原理[8]。要實(shí)現(xiàn)某一時(shí)刻時(shí)鐘ci(t)和cj(t)的同步,需要求得bij。 圖 1 描述了偏移量補(bǔ)償?shù)倪^程,時(shí)鐘cj(t)在一系列同步時(shí)刻被同步到時(shí)鐘ci(t),由此構(gòu)造出同步時(shí)鐘cj′(t)。 基于偏移補(bǔ)償?shù)臅r(shí)鐘同步?jīng)]有考慮時(shí)鐘漂移對(duì)同步精度的影響。 因此,構(gòu)造的同步時(shí)鐘cj′(t)與時(shí)鐘cj(t)在每一個(gè)同步周期上有相同的變化速率。如圖1所示,同步周期越大,同步誤差也就越大。增加同步頻率可以提高同步精度,但也會(huì)引入相應(yīng)的開銷。

圖1 偏移補(bǔ)償示意Fig.1 Offset compensation diagram
另一種解決途徑是對(duì)時(shí)鐘ci(t)和cj(t)相對(duì)漂移量進(jìn)行相應(yīng)的補(bǔ)償來減小同步誤差。如圖2所示,在構(gòu)造同步時(shí)鐘時(shí),如果能夠得到ci(t)和cj(t)的相對(duì)時(shí)鐘漂移量δ,就可以對(duì)時(shí)鐘漂移量進(jìn)行人為補(bǔ)償,同步時(shí)鐘以接近參考時(shí)鐘ci(t)的速率變化,而不再依賴本地時(shí)鐘cj(t)的變化速率。時(shí)鐘是采用漂移補(bǔ)償技術(shù)構(gòu)造的同步時(shí)鐘,如果得到的相對(duì)漂移量是比較準(zhǔn)確的,那么在很長的同步周期下,同步誤差也不會(huì)很大。同步誤差不再像同步時(shí)鐘那樣與同步周期息息相關(guān)。

圖2 漂移補(bǔ)償示意Fig.2 Drift compensation schematic
由此可見,單純的偏移量補(bǔ)償只能解決節(jié)點(diǎn)間時(shí)鐘在某一時(shí)刻(同步時(shí)刻)的相位同步問題,要實(shí)現(xiàn)節(jié)點(diǎn)間時(shí)鐘的相位同步需要同時(shí)進(jìn)行相對(duì)偏移量和漂移量的補(bǔ)償。因此,時(shí)鐘漂移補(bǔ)償技術(shù)在無線傳感器節(jié)點(diǎn)的時(shí)鐘同步過程中至關(guān)重要,較為準(zhǔn)確的漂移補(bǔ)償技術(shù)可以減小同步周期對(duì)同步精度的影響,進(jìn)而減小傳感器節(jié)點(diǎn)的能量消耗,有助于實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)應(yīng)用對(duì)低功耗的要求。
在無線傳感器網(wǎng)絡(luò)的一個(gè)廣播域內(nèi),時(shí)鐘參考節(jié)點(diǎn)(時(shí)標(biāo)節(jié)點(diǎn))以固定頻率周期性地廣播同步消息,同步消息的發(fā)送頻率由時(shí)標(biāo)節(jié)點(diǎn)的本地時(shí)鐘驅(qū)動(dòng),接收節(jié)點(diǎn)(被同步節(jié)點(diǎn))用本地時(shí)鐘記錄接收到同步消息的頻率。根據(jù)二者頻率的差值,對(duì)被同步節(jié)點(diǎn)的本地時(shí)鐘進(jìn)行漂移補(bǔ)償,進(jìn)而實(shí)現(xiàn)二者的時(shí)鐘同步。
該方法本質(zhì)上是利用了鎖相環(huán)的鎖頻原理進(jìn)行時(shí)鐘的頻率鎖定。為方便論述,首先結(jié)合鎖相環(huán)原理進(jìn)行補(bǔ)償方法的介紹。如圖3所示,fi和fo分別為時(shí)標(biāo)節(jié)點(diǎn)發(fā)送同步消息的頻率和被同步節(jié)點(diǎn)接收到同步消息的頻率。通過鑒相器鑒別出二者頻率的差值fμ,再通過低通濾波器濾除高頻噪聲,根據(jù)頻率差fμ產(chǎn)生被同步節(jié)點(diǎn)本地振蕩器的控制電壓Vc。容易看出,被同步節(jié)點(diǎn)本地振蕩器的輸出頻率fo隨著頻差fμ的變化而變化,從而實(shí)現(xiàn)頻率漂移補(bǔ)償。

圖3 鎖相環(huán)原理Fig.3 Phase-locked loop schematic
基于鎖相環(huán)原理的時(shí)鐘漂移補(bǔ)償機(jī)制需要鑒相器等硬件的支持,對(duì)于實(shí)現(xiàn)節(jié)點(diǎn)低成本來說,增加額外的硬件成本是不希望的。無線傳感器網(wǎng)絡(luò)的節(jié)點(diǎn)需要完成數(shù)據(jù)的采集、處理以及傳輸?shù)裙ぷ鳎ǔE鋫涔δ軓?qiáng)大的中央處理器來處理本地工作。因此,可以利用節(jié)點(diǎn)主機(jī)資源設(shè)計(jì)如下的數(shù)字鎖相環(huán)。
2.2.1 鑒相器實(shí)現(xiàn)
鑒相器是鎖相環(huán)最基本的部件,它的主要工作是完成兩個(gè)輸入信號(hào)相位差的鑒別。鑒相器的工作可以利用節(jié)點(diǎn)主機(jī)處理器的定時(shí)器模塊完成。
由于時(shí)標(biāo)節(jié)點(diǎn)發(fā)送同步消息的頻率已知,因此可以通過設(shè)置被同步節(jié)點(diǎn)定時(shí)器的分頻系數(shù)以及自動(dòng)重裝載寄存器的值,使計(jì)數(shù)器的計(jì)數(shù)周期與同步消息的發(fā)送周期相匹配。以接收到同步消息為觸發(fā)條件,去捕獲計(jì)數(shù)器的值。在理想情況下,即兩個(gè)節(jié)點(diǎn)的本地晶振沒有頻率漂移時(shí),被同步節(jié)點(diǎn)在每個(gè)同步消息被接收到時(shí)捕獲到的計(jì)數(shù)器值是恒定的。而當(dāng)兩者的本地晶振存在相對(duì)漂移時(shí),多次捕獲到的計(jì)數(shù)器值就會(huì)存在偏差,此偏差可以看作是時(shí)標(biāo)節(jié)點(diǎn)與被同步節(jié)點(diǎn)時(shí)鐘的相對(duì)漂移量。由此可以得到補(bǔ)償本地時(shí)鐘漂移量的依據(jù)。
2.2.2 濾波器實(shí)現(xiàn)
同步消息在傳播過程中存在的隨機(jī)干擾會(huì)對(duì)頻率的測(cè)量產(chǎn)生影響,因此需要設(shè)計(jì)濾波器來消除高頻噪聲,以提高頻率測(cè)量的精度。
算術(shù)平均值濾波,是數(shù)字濾波最簡單和最常用的一種。其原理是在某時(shí)刻對(duì)信號(hào)進(jìn)行連續(xù)多次采樣,對(duì)采樣值進(jìn)行算術(shù)平均,作為該時(shí)刻的信號(hào)值。算術(shù)平均值濾波對(duì)抑制周期性干擾和隨機(jī)干擾有良好效果。在時(shí)鐘漂移補(bǔ)償過程中,兩個(gè)時(shí)鐘的相對(duì)漂移量在短時(shí)間內(nèi)相對(duì)固定,因此采用算數(shù)平均值濾波是合理的。具體來講,需要捕獲多組計(jì)數(shù)器的值,得到多組相同時(shí)間段的時(shí)鐘漂移量進(jìn)行算數(shù)平均,該平均值作為某一時(shí)刻時(shí)鐘漂移補(bǔ)償?shù)囊罁?jù)。
2.2.3 控制電壓的產(chǎn)生
通過上述鑒相器以及濾波器得到的時(shí)鐘相對(duì)漂移量是一個(gè)數(shù)值,而非壓控振蕩器所需的控制電壓信號(hào)。控制電壓信號(hào)通過主機(jī)的DAC模塊產(chǎn)生。將時(shí)鐘的相對(duì)漂移量經(jīng)過換算控制DAC模塊,從而產(chǎn)生控制電壓。
為了驗(yàn)證所設(shè)計(jì)補(bǔ)償方法的可行性,我們利用STM32F7微處理器與ANT無線通信模塊nRF24AP2實(shí)現(xiàn)了該方法。STM32F7與ANT無線通訊模塊nRF24AP2通過SPI進(jìn)行通信,構(gòu)成無線傳感器網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn)。實(shí)驗(yàn)配置如圖4所示。

圖4 實(shí)驗(yàn)配置示意Fig.4 Experimental configuration diagram
時(shí)標(biāo)節(jié)點(diǎn)A周期性地廣播同步消息,被同步節(jié)點(diǎn)B相對(duì)于節(jié)點(diǎn)A的時(shí)鐘漂移將被補(bǔ)償。節(jié)點(diǎn)A選取同步消息的發(fā)送頻率為8 Hz。節(jié)點(diǎn)B的主機(jī)STM32F7的時(shí)鐘源晶振頻率為19.2 MHz,通過倍頻和分頻以7.2 MHz輸出到定時(shí)器,計(jì)數(shù)器的自動(dòng)重裝載值設(shè)置為900000,計(jì)數(shù)周期為125 ms,與節(jié)點(diǎn)A發(fā)送同步消息的周期匹配。節(jié)點(diǎn)B接收到同步消息時(shí)觸發(fā)STM32F7定時(shí)器的捕獲中斷,并在捕獲中斷的回調(diào)函數(shù)中讀取計(jì)數(shù)器的當(dāng)前值。
圖5為漂移補(bǔ)償前進(jìn)行200次采樣,計(jì)數(shù)器讀數(shù)的變化趨勢(shì)。由圖5可知補(bǔ)償前計(jì)數(shù)器讀數(shù)整體呈下降趨勢(shì),表明節(jié)點(diǎn)A與節(jié)點(diǎn)B之間存在時(shí)鐘漂移。另一方面,計(jì)數(shù)器的值雖有抖動(dòng),但基本以某一比例線性遞減,說明晶體振蕩器的頻率在短時(shí)間內(nèi)穩(wěn)定的假設(shè)是合理的。

圖5 補(bǔ)償前計(jì)數(shù)值變化趨勢(shì)Fig.5 Pre-compensation count value change trend
為了方便說明,將圖5計(jì)數(shù)器的變化值換算成時(shí)間繪制出圖6。由圖6可知,節(jié)點(diǎn)A與節(jié)點(diǎn)B在每個(gè)計(jì)數(shù)周期(125 ms)的時(shí)鐘漂移在0.6 μs左右,且抖動(dòng)較大。

圖6 補(bǔ)償前時(shí)鐘漂移量Fig.6 Amount of clock drift before compensation
圖7為補(bǔ)償之后進(jìn)行200次采樣,計(jì)數(shù)器讀數(shù)的變化趨勢(shì)。由圖7可知,計(jì)數(shù)器讀數(shù)沒有明顯的以某一比例線性遞增或者遞減,基本保持穩(wěn)定,表明節(jié)點(diǎn)A與節(jié)點(diǎn)B之間的時(shí)鐘漂移得到有效補(bǔ)償,在相同時(shí)間內(nèi)的相對(duì)時(shí)鐘漂移量較之補(bǔ)償前明顯降低。
同樣將圖7計(jì)數(shù)器的變化值換算成時(shí)間繪制出圖8。由圖8可知,補(bǔ)償后節(jié)點(diǎn)A與節(jié)點(diǎn)B在每個(gè)計(jì)數(shù)周期 (125 ms)的時(shí)鐘漂移基本維持在0 μs左右,雖有抖動(dòng),但較之補(bǔ)償之前更加穩(wěn)定。

圖8 補(bǔ)償后時(shí)鐘漂移量Fig.8 Compensation clock drift
為方便比較,作進(jìn)一步的定量分析,求取補(bǔ)償前后200次采樣時(shí)鐘漂移的最大值、平均值以及方差,將統(tǒng)計(jì)結(jié)果列于表1中。不難看出,補(bǔ)償后平均每個(gè)采樣周期 (125 ms)的時(shí)鐘漂移量下降0.58 μs, 時(shí)鐘漂移峰值由 2.361 μs 下降到 0.417 μs,而且補(bǔ)償之后的數(shù)據(jù)樣本方差更小,穩(wěn)定性也有所改善。

表1 200次采樣時(shí)鐘漂移量Tab.1 200 samples of clock drift
節(jié)點(diǎn)時(shí)鐘頻率的相對(duì)同步對(duì)無線傳感網(wǎng)絡(luò)時(shí)鐘同步意義重大,在不需要額外硬件支持下提出一種基于節(jié)點(diǎn)微處理器的軟件實(shí)現(xiàn)方法,可以大幅度改善節(jié)點(diǎn)間時(shí)鐘漂移情況。在對(duì)網(wǎng)絡(luò)時(shí)鐘同步要求越來越高的大前提下,高精度、低成本是未來時(shí)鐘同步的主流發(fā)展方向。本文介紹的方法結(jié)構(gòu)簡單,易于實(shí)現(xiàn),具有較高的工程實(shí)踐價(jià)值,能滿足無線傳感器網(wǎng)絡(luò)在多數(shù)應(yīng)用場(chǎng)景下的時(shí)鐘同步精度要求,為無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)間的時(shí)鐘漂移提供一種良好可行的補(bǔ)償方案。