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

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

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

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

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

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

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

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

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

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

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

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