陳健,曾培炎,黎鵬
(1. 廣東工業(yè)大學機電工程學院,廣東廣州 510006;2.中國人民解放軍陸軍31627部隊,廣東深圳 518109)
無線傳感網(Wireless Sensor Networks,WSNs)是由大量的、有無線通信和計算能力的小型傳感節(jié)點組成的自組織多跳網絡,通常有計算能力小、能源受限等特點[1-4]。無線傳感網絡設備通常由電池供電,電池的容量決定了設備的運行時長,因此,找到無線設備合適的能耗解決方案成為延長網絡運行周期的關鍵。
目前,國內外的無線傳感器網絡相關學者主要從能量采集、網絡控制、數(shù)據(jù)融合和自適應采樣策略等方面開展WSNs的節(jié)能研究。在能量采集方面,文獻[1]和文獻[5]結合太陽能光伏發(fā)電技術解決設備的能源補充問題,但是增加了硬件成本且需要在有陽光的環(huán)境下實現(xiàn)。在網絡控制方面,文獻[6]基于改進的蟻群算法提出一種改進ZigBee路由算法,縮短網絡中節(jié)點的傳輸路徑;文獻[7]運用模糊控制方法對網絡拓撲結構進行優(yōu)化,控制網絡中不同位置簇的規(guī)模;文獻[8]運用博弈理論建立了一種能耗均衡的拓撲控制模型,使得節(jié)點能調整自身功率。但是網絡控制的角度更關注的是網絡的整體節(jié)能,且系統(tǒng)開發(fā)難度較大、不易拓展。在數(shù)據(jù)融合方面,文獻[9]基于壓縮感知理論提出一種時空壓縮簇內數(shù)據(jù)收集算法減少傳輸量,但是數(shù)據(jù)反饋時間延長,不適用于實時性和數(shù)據(jù)精度要求高的場景。從自適應采樣角度出發(fā),文獻[10]通過BP神經網絡預測和閾值分析的方法,實現(xiàn)動態(tài)采樣調度,但是計算量大且需要大量的訓練數(shù)據(jù);文獻[3]通過分析多個節(jié)點的數(shù)據(jù)相關性選舉簇頭,并調整簇內節(jié)點的采樣頻率,但是網絡維護會帶來額外的通信量;文獻[4]和文獻[11]通過上一個預測值與采樣值的誤差來決定下一步采樣的步長,易受到突變值的影響,且用戶端得到的數(shù)據(jù)在時間上不規(guī)則,不能很好地在用戶端還原采樣對象的實時情況。
針對上述節(jié)能方法的不足,文中從自適應采樣角度出發(fā),首先通過在網絡的上位機端和終端節(jié)點上搭建相同的預測模型進行同步預測,實現(xiàn)自適應通信算法;然后在自適應通信算法的基礎上進行改進,提出一種基于多步預測的自適應采樣算法,在保證數(shù)據(jù)精度的前提下更有效地降低終端節(jié)點的能耗;最后在基于ZigBee的船舶下水氣囊氣壓監(jiān)測系統(tǒng)平臺上進行能耗分析和節(jié)能實驗。
由于無線傳感網絡中終端節(jié)點通常由電池供電,運算能力較低且存儲空間有限,因而要選擇運算量低、容易部署的預測算法,增強算法可用性和可拓展性。
自回歸模型又稱AR模型,是用于研究平穩(wěn)時間序列的一種常用方法,有計算簡單、預測準確的特點。AR(P)模型可表示為
Xt=φ0+φ1Xt-1+…+φpXt-p+εt
(1)
其中:{εt}是零均值同方差的獨立同分布白噪聲序列,方差為σ2,且εt與Xt-1、Xt-2、…相互獨立。建模過程分為以下部分:
(1)數(shù)據(jù)預處理
設獲取時間序列值為
(2)
實際獲取的數(shù)據(jù)序列一般為非平穩(wěn)序列,因此需要對時間序列進行d次差分運算轉換為平穩(wěn)序列。差分后數(shù)據(jù)經單位根檢驗(ADF檢驗)方法檢驗平穩(wěn)性。預處理后數(shù)據(jù)記為
{Xt|t=1,2,…,n}
(3)
在實際分析中,如果一階差分結果的平穩(wěn)性檢驗不通過,繼續(xù)進行二次差分。
(2)模型識別
模型識別和定階問題主要確定合適的p參數(shù)。對給定的長度為n的數(shù)據(jù)樣本Xt,可通過偏自相關函數(shù)(Partical Autocorrelation Coefficient Function,PACF)獲取可能的p階數(shù)。
對于平穩(wěn)時間序列Xt,對n=1,2,…,有:
L(Xt|Xt-1,…,Xt-n)=φn0+φn1Xt-1+…+φnnXt-n
(4)
其中:φnn為時間序列{Xt}的偏自相關系數(shù)。
(3)定階
通過赤池信息準則函數(shù)(Akaike Information Criterion,AIC)進行定階:
(5)
(4)參數(shù)估計及模型檢驗
采用最小二乘法估計AR模型參數(shù)φ0,…,φp,對擬合后殘差序列進行白噪聲檢驗。如能通過白噪聲檢驗則說明模型能夠準確刻畫數(shù)據(jù)變化規(guī)律,可以對時間序列進行短期預測。若白噪聲檢驗不通過則重新建立模型。
在一段時間的采樣中,如果環(huán)境狀態(tài)無變化或變化緩慢,保持固定短周期采樣則會出現(xiàn)多個數(shù)據(jù)相同或相差不大的情況,即產生冗余數(shù)據(jù)。終端節(jié)點和上位機通過融合AR模型,利用已有數(shù)據(jù)序列的最新數(shù)據(jù),同步預測下一次數(shù)據(jù)。終端節(jié)點在下一次采樣時,若預測值與采樣值的誤差在設定閾值范圍內,則將此次采樣值視為冗余數(shù)據(jù),不發(fā)送至上位機。由此,能夠在滿足一定數(shù)據(jù)精度的要求下,減少冗余數(shù)據(jù)的發(fā)送操作而實現(xiàn)自適應通信。
AR模型建模過程中,模型識別和定階過程計算量較大。為了進一步降低終端節(jié)點的計算負擔,將AR模型建模過程的步驟(2)—(4)搭載在上位機程序,由上位機經協(xié)調器將參數(shù)p和φnn發(fā)送至終端節(jié)點。終端節(jié)點進入節(jié)能模式,從上位機獲取預設參數(shù),以預設周期采樣并上傳nref次作為模型的初始數(shù)據(jù)序列。
終端節(jié)點已記錄的數(shù)據(jù)序列記為Sed(i),上位機中對應的終端節(jié)點抽象對象記錄的數(shù)據(jù)序列記為Scoor(i),其中i=0,1,…,n。如圖1所示,在終端節(jié)點和上位機中,設置一個參考值窗口Wref,如圖1所示,長度為nref,記為
Wref={Xt|t=n-nref,…,n}
(6)
圖1 參考值窗口示意
在每次采樣時更新參考值窗口,確保窗口中的值為最新的采樣數(shù)據(jù)。
(7)
為確保AR模型的預測效果,設定最大限制錯誤次數(shù)nmax_err。若上位機接收到終端節(jié)點上傳實測值次數(shù)大于錯誤限制次數(shù),則以Wref為更新模型參數(shù),并發(fā)送至終端節(jié)點。
在自適應通信算法中,終端節(jié)點在每個采樣周期里都進行采樣操作,將浪費大量能量。從減少傳感器采樣次數(shù)的角度出發(fā),對自適應通信算法進行改進,在終端節(jié)點加入步長更新機制,實現(xiàn)自適應采樣算法。終端節(jié)點通過自適應采樣算法,在環(huán)境變化不劇烈的采樣周期中,保持睡眠狀態(tài),減少采樣和發(fā)送操作。而當判斷出環(huán)境變化劇烈時,縮短采樣周期,及時采樣以確保采樣的精確度。
為實現(xiàn)采樣步長的自適應變化,需要制定合理有效的步長更新機制,因此在終端節(jié)點中引入趨勢參考窗口。
趨勢參考窗口的值為Sed(i)的最新數(shù)據(jù),如圖2所示,設長窗口為Wed,長度記為nnew;短窗口為Wed的最新一半數(shù)據(jù),設為Wedhalf,長度記為nnew/2。
圖2 趨勢參考窗口示意
此窗口的數(shù)據(jù)反映了數(shù)據(jù)的最新動態(tài)變化情況,通過最小二乘法擬合參考窗口數(shù)據(jù),可以得出此時間段中數(shù)據(jù)總體變化趨勢。通過計算長窗口和短窗口的方差,可以判斷出環(huán)境狀態(tài)的浮動情況。當浮動較大時,以短窗口判斷數(shù)據(jù)變化趨勢,避免時間較舊的數(shù)據(jù)的影響;當浮動較小時,以長窗口判斷數(shù)據(jù)變化趨勢,避免跳變值對變化趨勢的影響。
利用現(xiàn)有變化趨勢,前向擬合接下來多個步長的數(shù)據(jù),將擬合值與AR模型的前向預測值逐步對比,誤差在設定閾值內則累計作為下一采樣的步長。
把Wed的方差var(Wed)記為ved,以及Wedhalf窗口值的方差var(Wedhalf)記為vedhalf。設方差比的閾值為εed。
把擬合窗口Wref定義為
(8)
在終端節(jié)點采樣得到最新的采樣值后,利用AR模型進行前向預測,得到n個步長的預測值,記為{Xj|j=1,2,…,n}。利用最小二乘法擬合Wref的結果計算出接下來的n個擬合值,記為{Yj|j=1,2,…,n}。設Xj與Yj的誤差閾值為εpre。
將步長新機制定義為
(9)
其中,令j從1開始,順序判斷Xj與Yj誤差是否大于閾值εpre。若不大于閾值則認為該預測值Xj是可信的,繼續(xù)判斷下一時刻;當大于閾值,則認為當前及以后的預測值Xj不可信,退出判斷,并以累計小于閾值個數(shù)S作為下一采樣的步長。為提高采樣精度,引入最大變化步長jmax,使得S≤jmax。
自適應采樣算法在自適應通信算法的基礎上進行改進。自適應采樣算法流程如圖3所示。進入自適應采樣算法,終端節(jié)點將根據(jù)預設模式以最小的采樣頻率采樣nref次并上傳至上位機。終端節(jié)點維護歷史值序列Sed(i),上位機維護歷史值序列Scoor(i)。上位機通過參考值窗口Wref的值建立AR模型,并將模型參數(shù)p和φnn發(fā)送至終端節(jié)點。然后,上位機和終端節(jié)點將進行同步預測。
圖3 自適應采樣算法流程
進入步長更新機制,終端節(jié)點以最新數(shù)據(jù)生成Wref參考值窗口,利用最小二乘法擬合并得到未來j個擬合值,同時利用AR模型前向預測得到j個預測值。通過順序判斷誤差是否大于閾值εpre來確認更新的步長S。
更新步長S值后,終端節(jié)點將前向預測值{Xj|j=1,2,…,S}寫入序列Sed(t),同時設置下一次睡眠時間為S×Tcycle。在此次采樣周期結束后,終端節(jié)點在接下來的S個周期中都保持睡眠狀態(tài),直到被睡眠定時器喚醒。
同時,為減少預測模型的累計誤差,在預測算法中加入修正機制。設參數(shù)Nnotsend為修正上傳次數(shù),在節(jié)點的每個工作周期中累減1,并在等于0時重置為初試值。當Nnotsend達到0時,不論預測值誤差是否在設定閾值內,此周期采樣后都將強制上傳并存儲采樣值X′i+1。節(jié)點每次確定睡眠步長S時進行判定,S如果大于當前的Nnotsend值,則更改S為當前Nnotsend值,確保終端節(jié)點醒來采樣并上傳采樣值。
由于上位機與終端節(jié)點所維護的AR模型是一致的,雙方利用相同的數(shù)據(jù)進行同步預測,能夠確保雙方數(shù)據(jù)的一致性。同時,上位機在終端節(jié)點睡眠過程中,仍保持預設的采樣周期進行數(shù)據(jù)更新,能夠及時地反映數(shù)據(jù)走勢。
終端節(jié)點的自適應采樣算法如表1所示。
表1 終端節(jié)點自適應采樣算法偽代碼
如圖4所示,在船舶下水場景中,氣囊氣壓監(jiān)測系統(tǒng)的ZigBee網絡包含3種硬件節(jié)點類型,分別為協(xié)調器、路由節(jié)點和終端節(jié)點[12-13]。對每個氣囊安裝終端節(jié)點,由終端節(jié)點上的氣壓傳感器獲取氣壓數(shù)據(jù)??紤]從船舶起墩開始到最終成功下水,氣囊位置會不斷移動,因此部署多個無能量限制的路由節(jié)點以轉發(fā)數(shù)據(jù)包至協(xié)調器。協(xié)調器通過RS-232接口與上位機進行通信,實現(xiàn)氣壓數(shù)據(jù)上傳和網絡控制命令的轉發(fā)。
圖4 船舶下水氣囊氣壓監(jiān)測場景示意
如圖5所示,船舶氣囊下水氣壓監(jiān)測系統(tǒng)的功能結構分為上位機、ZigBee網絡和數(shù)據(jù)源。
圖5 監(jiān)測平臺功能結構
上位機為每個終端節(jié)點建立相應的抽象對象,以實現(xiàn)對所有終端節(jié)點進行單獨的采樣控制和數(shù)據(jù)處理。終端節(jié)點作為一種由電池供電、需要密封且頻繁移動的部件,是節(jié)能研究的關鍵對象。
終端節(jié)點有5種不同的運行模式,分為主動模式、空閑模式、PM1、PM2和PM3。設定終端節(jié)點的行為分為發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、空閑監(jiān)聽和休眠,分別對應發(fā)送狀態(tài)、接收狀態(tài)、監(jiān)聽狀態(tài)和休眠狀態(tài)。節(jié)點狀態(tài)轉換示意如圖6所示。考慮到空閑狀態(tài)除了CPU內核空閑,其他功能及能耗與主動模式一樣,PM2模式能夠由睡眠定時器喚醒,因此設定終端節(jié)點在發(fā)送狀態(tài)和接收狀態(tài)運行在空閑模式,監(jiān)聽狀態(tài)工作在主動模式,休眠狀態(tài)的運行模式為PM2。
圖6 節(jié)點狀態(tài)轉換示意
考慮到實際場景中不需要全網時間同步,且信標模式比非信標模式帶來額外的數(shù)據(jù)收發(fā),故采用非信標模式。在正常的周期采樣模式情況下,設定終端節(jié)點從睡眠狀態(tài)被喚醒將進入監(jiān)聽狀態(tài),在此狀態(tài)下激活氣壓傳感器進行采樣。采樣結束則進入發(fā)送狀態(tài)上傳數(shù)據(jù)包,然后進入接收狀態(tài)接收ACK數(shù)據(jù)包。在確認上傳數(shù)據(jù)成功后,終端節(jié)點設置監(jiān)聽一定時間,如果在監(jiān)聽期間接收到下傳的工作模式控制的數(shù)據(jù)包,將回復ACK數(shù)據(jù)包并且按照新分配的參數(shù)修改相關變量。隨后在無任務進行時進入睡眠狀態(tài),直至被定時器喚醒。
參考文獻[11]對終端節(jié)點進行能耗分析。在終端節(jié)點的能耗分析中,網絡中數(shù)據(jù)發(fā)送沖突或數(shù)據(jù)包丟失的情況與實際網絡狀態(tài)相關,因此忽略數(shù)據(jù)重傳、不定時的網絡維護造成的數(shù)據(jù)收發(fā)以及各個狀態(tài)間轉換造成的能耗。
定義氣壓傳感器的供電電壓為Vsensor,平均電流為Isensor,采集時間為Tsensor,則采集一次數(shù)據(jù),氣壓傳感器消耗掉能量可表示為
Esensor=Vsensor×Isensor×Tsensor
(10)
定義終端節(jié)點發(fā)送一個數(shù)據(jù)包的能耗為
Etx=Vsupply×Itx×Ttx
(11)
其中:Vsupply為芯片電路平均供電電壓;Itx為發(fā)送狀態(tài)的平均電流;Ttx為發(fā)送一個數(shù)據(jù)包的平均時間。同理可以得到接收能耗Erx、監(jiān)聽能耗Elisten、睡眠能耗Esleep如下式:
Erx=Vsupply×Irx×Trx
(12)
Elisten=Vsupply×Ilisten×Tlisten
(13)
Esleep=Vsupply×Isleep×Tsleep
(14)
假設一個運行周期為Tcycle,其中設發(fā)送次數(shù)為Ntx,接收次數(shù)為Nrx,采樣次數(shù)為Nsensor,則總能耗模型Etotal可以表示為
Etotal=EsensorNsensor+EtxNtx+ErxNrx+Elisten+Esleep
(15)
其中Tsleep=Tcycle-TtxNtx-TrxNrx-Tlisten。睡眠電流為最小,因此為達到節(jié)能目的,要盡可能減少采樣次數(shù)Nsensor和通信次數(shù)Ntx及Nrx,盡可能延長睡眠時間。查閱器件數(shù)據(jù)手冊,此實驗平臺的能耗模型參數(shù)如表2所示。
表2 功耗模型參數(shù)
采用Berkeley大學的Intel實驗室公開的傳感器數(shù)據(jù)集,及作者實驗室對船舶下水場景模擬所獲取的氣囊氣壓數(shù)據(jù)集,以驗證所述算法的節(jié)能效果。其中Berkeley公開數(shù)據(jù)集包含54個傳感器的溫濕度、亮度及電壓數(shù)據(jù),文中采用了編號為22的傳感節(jié)點在2004年3月20日的2 303個溫度數(shù)據(jù);作者實驗室模擬數(shù)據(jù)為氣囊的1 305個氣壓數(shù)據(jù)。將自適應通信算法記為算法1,基于多步預測的自適應采樣算法記為算法2。
取Berkeley數(shù)據(jù)集在此實驗平臺中仿真,算法1取參數(shù)nref=20,Tcycle=5 000 ms,εerror=0.07,nmax_err=5;算法2取參數(shù)nref=20,Tcycle=5 000 ms,εerror=0.03,εed=0.5,jmax=3,Nnotsend=8。圖7所示為Berkeley數(shù)據(jù)集在固定周期采樣、算法1和算法2下的能耗對比??梢钥闯觯合鄬τ诠潭ㄖ芷诓蓸拥姆绞?,算法1能夠節(jié)能15.137%,算法2能夠節(jié)能41.809%,算法2比算法1節(jié)能31.430%。
圖7 Berkeley數(shù)據(jù)集能耗
圖8所示為實驗室數(shù)據(jù)集在固定周期采樣、算法1和算法2下的能耗對比。其中算法1取參數(shù)nref=20,Tcycle=5 000 ms,εerror=0.25,nmax_err=5;算法2取參數(shù)nref=20,Tcycle=5 000 ms,εerror=0.08,εed=0.025,jmax=5,Nnotsend=8。仿真結果表明:相對于固定周期采樣的方式,算法1能夠節(jié)能12.770%,算法2相對于固定周期采樣的方式能夠節(jié)能36.252%,算法2比算法1節(jié)能26.912%。
圖8 實驗室數(shù)據(jù)集能耗
為驗證模型的預測精度,需對結果進行誤差分析。文中采用均方差根誤差RMSE(Root Mean Square Error)對實驗所獲取的數(shù)據(jù)進行統(tǒng)計分析。計算公式為
(16)
其中:ai為實際測量值;fi為協(xié)調器獲取的值;n為采樣次數(shù)。
圖9和圖10分別展示了利用Berkeley數(shù)據(jù)集和實驗室數(shù)據(jù)集,算法1和算法2與固定采樣周期采樣結果的誤差對比。為便于觀察,已將算法1和算法2的結果偏置。εRMSE值如表3所示,其中,實驗室數(shù)據(jù)集在算法2中的εRMSE值為0.089 2。
圖9 Berkeley數(shù)據(jù)集仿真效果
圖10 實驗室數(shù)據(jù)集仿真效果
如表3所示,RMSE結果表明:算法1與算法2能達到較好的數(shù)據(jù)精度;在精度相同的情況下,算法2的節(jié)能效果比算法1要好。
表3 各數(shù)據(jù)集在不同算法下的εRMSE值
為展示數(shù)據(jù)動態(tài)性對采樣次數(shù)的影響,以實驗室的數(shù)據(jù)集為例,將實際采樣數(shù)據(jù)中對應自適應采樣階段的數(shù)據(jù)進行一階差分。以25個采樣周期為窗口取一階差分結果的方差作為x,并取該窗口周期的總采樣次數(shù)作為y。從圖11可以看出:在數(shù)據(jù)動態(tài)性增大時總采樣次數(shù)增大,自適應采樣算法起到了很好的調整采樣步長的作用。
圖11 一階差分數(shù)據(jù)方差σ與采樣次數(shù)n的關系
文中提出了一種基于多步預測的無線傳感網絡自適應采樣算法,在確保較好數(shù)據(jù)精度的同時,實現(xiàn)了終端節(jié)點的有效節(jié)能。通過在上位機和終端節(jié)點間建立自回歸預測模型進行同步預測,并根據(jù)前向多步預測值與數(shù)據(jù)變化趨勢擬合值間的誤差,自適應地改變采樣步長。實驗結果表明,該算法在保證上位機和終端節(jié)點數(shù)據(jù)一致性以及上位機數(shù)據(jù)更新實時性的情況下,能達到較好的節(jié)能效果。