禹 健,高 超,郭天星
(山西大學 自動化系,太原 030013)
無線傳感器網絡(WSN)是由大量分布在空間上的傳感器節(jié)點通過自組織方式構成的網絡[1]。融合了傳感器、信息處理和網絡通信三大技術,可以實現(xiàn)數(shù)據(jù)的采集、處理和傳輸。廣泛應用于環(huán)境監(jiān)測、工業(yè)控制、國防軍事等領域[2]。時鐘同步是無線傳感器網絡不可或缺的一部分,測距定位、多傳感器的數(shù)據(jù)融合以及協(xié)同工作等方面的應用都離不開時鐘同步的支撐[3]。無線傳感器網絡中的時鐘同步是指使網絡中所有或部分節(jié)點擁有相同的時間基準,目的就是在網絡中產生一個全局時鐘,使網絡內節(jié)點的時鐘可以達到相對一致性。網絡中影響時鐘同步精度的因素有很多,主要包括主從時鐘的頻率不一致、時間戳的精度以及操作系統(tǒng)的延時等。時間戳精度和操作系統(tǒng)延時的影響可以通過基于硬件支持的時間戳標記得以有效解決。一般來說,物理層的抖動延時非常小,在物理層和數(shù)據(jù)鏈路層之間的時間戳標記可以獲得非常高的時鐘精度。而主從時鐘晶振的質量、溫度、壓力、老化程度等都會引起頻率的相對漂移[4],時鐘同步的精度就與同步周期密切相關,同步周期越小,頻率越快,時鐘同步精度越高,但相應的功耗也隨之增大,對于追求低功耗的無線傳感器網絡來說,額外的功耗開銷是不希望的。
本文將傳統(tǒng)的鎖相環(huán)原理應用到無線傳感器網絡節(jié)點的時鐘漂移補償中,提出一種基于微處理器的時鐘漂移補償鎖相環(huán)的實現(xiàn)方案,并進行實驗驗證,證實方案的有效性和可行性。
在無線傳感網絡中,節(jié)點的時鐘通常使用晶振的脈沖來度量[5]。因此,某一節(jié)點在t時刻的本地時鐘可以表示為
式中:ω(t)是節(jié)點晶體振蕩器的頻率;k是關于晶體振蕩器物理特性的常量;t是真實的時間變量;c(t)與c(t0)分別為t時刻和t0時刻的本地時鐘讀數(shù)。
節(jié)點的本地時鐘是通過計數(shù)器記錄晶振產生的脈沖個數(shù)構造的。在此基礎上,我們可以構造出多種軟件時鐘。利用本地時鐘與同步時鐘之間的關系,可以構造出對應的軟件時鐘以達成同步。
在無線傳感器網絡應用中,大多數(shù)業(yè)務的正常運行都要求全網節(jié)點間的頻率或者時間差異保持在合理的誤差范圍內,即時鐘同步[6]。時鐘同步則包括相位同步和頻率同步2個概念。相位同步也稱為時間同步,是指信號間的頻率和相位都保持一致,即信號之間相位差恒定為零。頻率同步即維持各節(jié)點的頻率一致,信號在其相對應的有效瞬間以同一速率出現(xiàn),以保證所有節(jié)點時鐘以相同速率運行[7]。
假定晶振的頻率在短期內是穩(wěn)定的,即r(t)=dc(t)/dt是恒定的。 由式(1),節(jié)點時鐘ci(t)可以簡化為
時鐘ci(t)與時鐘cj(t)之間的關系可以由式(3)表示:
式中:aij為時鐘ci(t)和cj(t)之間的相對漂移量,即相對時鐘頻差;bij為2個時鐘之間的相對偏移量,即時鐘相位差。對相對漂移量和相對偏移量的補償是2種基本的時鐘同步原理[8]。要實現(xiàn)某一時刻時鐘ci(t)和cj(t)的同步,需要求得bij。 圖 1 描述了偏移量補償?shù)倪^程,時鐘cj(t)在一系列同步時刻被同步到時鐘ci(t),由此構造出同步時鐘cj′(t)。 基于偏移補償?shù)臅r鐘同步沒有考慮時鐘漂移對同步精度的影響。 因此,構造的同步時鐘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
由此可見,單純的偏移量補償只能解決節(jié)點間時鐘在某一時刻(同步時刻)的相位同步問題,要實現(xiàn)節(jié)點間時鐘的相位同步需要同時進行相對偏移量和漂移量的補償。因此,時鐘漂移補償技術在無線傳感器節(jié)點的時鐘同步過程中至關重要,較為準確的漂移補償技術可以減小同步周期對同步精度的影響,進而減小傳感器節(jié)點的能量消耗,有助于實現(xiàn)無線傳感器網絡應用對低功耗的要求。
在無線傳感器網絡的一個廣播域內,時鐘參考節(jié)點(時標節(jié)點)以固定頻率周期性地廣播同步消息,同步消息的發(fā)送頻率由時標節(jié)點的本地時鐘驅動,接收節(jié)點(被同步節(jié)點)用本地時鐘記錄接收到同步消息的頻率。根據(jù)二者頻率的差值,對被同步節(jié)點的本地時鐘進行漂移補償,進而實現(xiàn)二者的時鐘同步。
該方法本質上是利用了鎖相環(huán)的鎖頻原理進行時鐘的頻率鎖定。為方便論述,首先結合鎖相環(huán)原理進行補償方法的介紹。如圖3所示,fi和fo分別為時標節(jié)點發(fā)送同步消息的頻率和被同步節(jié)點接收到同步消息的頻率。通過鑒相器鑒別出二者頻率的差值fμ,再通過低通濾波器濾除高頻噪聲,根據(jù)頻率差fμ產生被同步節(jié)點本地振蕩器的控制電壓Vc。容易看出,被同步節(jié)點本地振蕩器的輸出頻率fo隨著頻差fμ的變化而變化,從而實現(xiàn)頻率漂移補償。
圖3 鎖相環(huán)原理Fig.3 Phase-locked loop schematic
基于鎖相環(huán)原理的時鐘漂移補償機制需要鑒相器等硬件的支持,對于實現(xiàn)節(jié)點低成本來說,增加額外的硬件成本是不希望的。無線傳感器網絡的節(jié)點需要完成數(shù)據(jù)的采集、處理以及傳輸?shù)裙ぷ鳎ǔE鋫涔δ軓姶蟮闹醒胩幚砥鱽硖幚肀镜毓ぷ?。因此,可以利用?jié)點主機資源設計如下的數(shù)字鎖相環(huán)。
2.2.1 鑒相器實現(xiàn)
鑒相器是鎖相環(huán)最基本的部件,它的主要工作是完成兩個輸入信號相位差的鑒別。鑒相器的工作可以利用節(jié)點主機處理器的定時器模塊完成。
由于時標節(jié)點發(fā)送同步消息的頻率已知,因此可以通過設置被同步節(jié)點定時器的分頻系數(shù)以及自動重裝載寄存器的值,使計數(shù)器的計數(shù)周期與同步消息的發(fā)送周期相匹配。以接收到同步消息為觸發(fā)條件,去捕獲計數(shù)器的值。在理想情況下,即兩個節(jié)點的本地晶振沒有頻率漂移時,被同步節(jié)點在每個同步消息被接收到時捕獲到的計數(shù)器值是恒定的。而當兩者的本地晶振存在相對漂移時,多次捕獲到的計數(shù)器值就會存在偏差,此偏差可以看作是時標節(jié)點與被同步節(jié)點時鐘的相對漂移量。由此可以得到補償本地時鐘漂移量的依據(jù)。
2.2.2 濾波器實現(xiàn)
同步消息在傳播過程中存在的隨機干擾會對頻率的測量產生影響,因此需要設計濾波器來消除高頻噪聲,以提高頻率測量的精度。
算術平均值濾波,是數(shù)字濾波最簡單和最常用的一種。其原理是在某時刻對信號進行連續(xù)多次采樣,對采樣值進行算術平均,作為該時刻的信號值。算術平均值濾波對抑制周期性干擾和隨機干擾有良好效果。在時鐘漂移補償過程中,兩個時鐘的相對漂移量在短時間內相對固定,因此采用算數(shù)平均值濾波是合理的。具體來講,需要捕獲多組計數(shù)器的值,得到多組相同時間段的時鐘漂移量進行算數(shù)平均,該平均值作為某一時刻時鐘漂移補償?shù)囊罁?jù)。
2.2.3 控制電壓的產生
通過上述鑒相器以及濾波器得到的時鐘相對漂移量是一個數(shù)值,而非壓控振蕩器所需的控制電壓信號??刂齐妷盒盘柾ㄟ^主機的DAC模塊產生。將時鐘的相對漂移量經過換算控制DAC模塊,從而產生控制電壓。
為了驗證所設計補償方法的可行性,我們利用STM32F7微處理器與ANT無線通信模塊nRF24AP2實現(xiàn)了該方法。STM32F7與ANT無線通訊模塊nRF24AP2通過SPI進行通信,構成無線傳感器網絡的一個節(jié)點。實驗配置如圖4所示。
圖4 實驗配置示意Fig.4 Experimental configuration diagram
時標節(jié)點A周期性地廣播同步消息,被同步節(jié)點B相對于節(jié)點A的時鐘漂移將被補償。節(jié)點A選取同步消息的發(fā)送頻率為8 Hz。節(jié)點B的主機STM32F7的時鐘源晶振頻率為19.2 MHz,通過倍頻和分頻以7.2 MHz輸出到定時器,計數(shù)器的自動重裝載值設置為900000,計數(shù)周期為125 ms,與節(jié)點A發(fā)送同步消息的周期匹配。節(jié)點B接收到同步消息時觸發(fā)STM32F7定時器的捕獲中斷,并在捕獲中斷的回調函數(shù)中讀取計數(shù)器的當前值。
圖5為漂移補償前進行200次采樣,計數(shù)器讀數(shù)的變化趨勢。由圖5可知補償前計數(shù)器讀數(shù)整體呈下降趨勢,表明節(jié)點A與節(jié)點B之間存在時鐘漂移。另一方面,計數(shù)器的值雖有抖動,但基本以某一比例線性遞減,說明晶體振蕩器的頻率在短時間內穩(wěn)定的假設是合理的。
圖5 補償前計數(shù)值變化趨勢Fig.5 Pre-compensation count value change trend
為了方便說明,將圖5計數(shù)器的變化值換算成時間繪制出圖6。由圖6可知,節(jié)點A與節(jié)點B在每個計數(shù)周期(125 ms)的時鐘漂移在0.6 μs左右,且抖動較大。
圖6 補償前時鐘漂移量Fig.6 Amount of clock drift before compensation
圖7為補償之后進行200次采樣,計數(shù)器讀數(shù)的變化趨勢。由圖7可知,計數(shù)器讀數(shù)沒有明顯的以某一比例線性遞增或者遞減,基本保持穩(wěn)定,表明節(jié)點A與節(jié)點B之間的時鐘漂移得到有效補償,在相同時間內的相對時鐘漂移量較之補償前明顯降低。
同樣將圖7計數(shù)器的變化值換算成時間繪制出圖8。由圖8可知,補償后節(jié)點A與節(jié)點B在每個計數(shù)周期 (125 ms)的時鐘漂移基本維持在0 μs左右,雖有抖動,但較之補償之前更加穩(wěn)定。
圖8 補償后時鐘漂移量Fig.8 Compensation clock drift
為方便比較,作進一步的定量分析,求取補償前后200次采樣時鐘漂移的最大值、平均值以及方差,將統(tǒng)計結果列于表1中。不難看出,補償后平均每個采樣周期 (125 ms)的時鐘漂移量下降0.58 μs, 時鐘漂移峰值由 2.361 μs 下降到 0.417 μs,而且補償之后的數(shù)據(jù)樣本方差更小,穩(wěn)定性也有所改善。
表1 200次采樣時鐘漂移量Tab.1 200 samples of clock drift
節(jié)點時鐘頻率的相對同步對無線傳感網絡時鐘同步意義重大,在不需要額外硬件支持下提出一種基于節(jié)點微處理器的軟件實現(xiàn)方法,可以大幅度改善節(jié)點間時鐘漂移情況。在對網絡時鐘同步要求越來越高的大前提下,高精度、低成本是未來時鐘同步的主流發(fā)展方向。本文介紹的方法結構簡單,易于實現(xiàn),具有較高的工程實踐價值,能滿足無線傳感器網絡在多數(shù)應用場景下的時鐘同步精度要求,為無線傳感器網絡節(jié)點間的時鐘漂移提供一種良好可行的補償方案。