高 翔,鄧永莉,呂愿愿,陸起涌
(復旦大學電子工程系,上海 200433)
?
基于Z-Stack協議棧的ZigBee網絡節能算法的研究*
高 翔,鄧永莉,呂愿愿,陸起涌*
(復旦大學電子工程系,上海 200433)
ZigBee技術是實現無線傳感器網絡的重要技術手段之一,其中,Z-Stack協議棧是TI公司推出的一種實現ZigBee技術的軟件架構,已被廣泛使用。以CC2530為硬件平臺,Z-Stack協議棧為軟件平臺,通過對Z-Stack協議棧的分析研究,指出了現有的Z-Stack協議棧在實際應用條件下存在的功耗問題,提出了相應的節能算法:針對終端節點的功率優化調節算法和針對路由器節點的低功耗算法,并通過實驗進行驗證。實驗結果表明,與原始的Z-Stack協議相比,本文提出的基于Z-Stack協議棧的節能算法可以有效地減少節點在工作過程中的能耗,從而提高網絡的整體壽命。
無線傳感器網絡;ZigBee網絡;Z-Stack協議棧;低功耗
無線傳感器網絡(WSN)是由部署在監測區域內大量的廉價微型傳感器節點組成,通過無線通信方式形成的一個多跳的自組織的網絡系統[1],從而將感知區域內對象的信息傳送給觀察者。2003年2月,美國著名的《技術評論》雜志將無線傳感器網絡列為對人類生活產生深遠影響的十大新興技術之首[2]。ZigBee是一種低速無線個域網技術,它適用于通信數據量不大,數據傳輸速率相對較低,分布范圍較小,但對數據的可靠性、成本和功耗有要求的場合[3]。由于ZigBee技術廣闊的應用前景,使得世界各大半導體生產廠商紛紛提出了不同的ZigBee解決方案。其中,Z-Stack協議棧是TI(德州儀器)公司開發的ZigBee協議棧,并且經過了ZigBee聯盟的認可而為全球眾多開發商所廣泛采用。TI的Z-Stack協議棧的源碼總體上由三個部分組成:硬件抽象層、操作系統抽象層和ZigBee協議各層[4]。硬件抽象層提供定時器、I/O口、串口等資源的API;操作系統抽象層負責任務管理;ZigBee協議各層集成所有任務事件[5]。操作系統抽象層提供一種支持多任務運作的系統資源分配機制負責調度各個任務的運行,如果有事件發生了,則會調用相應的事件處理函數進行處理。因此,僅從程序運行的角度而言,對于Z-Stack協議棧的理解,可以認為是操作系統執行的過程。本文通過對Z-Stack協議棧的分析研究,指出現有Z-Stack協議棧在實際使用中的局限性,并提出相應的改進算法,包括針對終端的節點功率優化調節算法和針對路由器節點的低功耗路由算法。這兩種算法均能減少基于Z-Stack協議棧的ZigBee節點的整體能耗。本文所研究的Z-Stack協議棧版本為ZStack-CC2530-2.3.0-1.4.0,基于CC2530[6]硬件平臺,符合ZigBee2007[7]規范,具有研究和實際應用價值。
1.1 算法提出的背景
ZigBee終端節點在Z-Stack中采用默認的發射功率進行數據發送,而根據Friis傳輸公式[8],當節點的接收靈敏度一定時,假設終端節點與協調器(或者路由器)之間的距離比較近或者系統損耗較小的時候,發射功率可以適當減小,以減少不必要的功率損耗。正是由于這種考慮,當ZigBee網絡中節點的布局范圍比較小的時候,原始Z-Stack協議棧中固定功率的配置還有進一步改進的空間。基于此,本文提出了基于Z-Stack協議棧的終端節點功率優化調節算法。
1.2 算法描述
本文提出的基于Z-Stack協議棧的功率調節優化算法工作于網絡的初始化階段,算法將功率等級的劃分為16級,其中等級1對應的是最低發射功率-22 dBm,等級16對應的是最高發射功率4.5 dBm。

圖1 Z-Stack協議棧中功率優化調節算法流程
算法采用功率探測數據包的方式,如圖1所示,ZigBee終端節點在入網成功之后,按照功率等級發送不同等級的功率數據包,從最低等級(level 1)開始,并開啟輪詢,等待協調器節點的響應。若發送的功率探測數據包在若干個輪詢周期內(可以設置為5~10個周期)未得到響應,則提高一個功率等級繼續發送,直至協調器返回了數據包的功率等級數值。為了進一步提高功率調節后網絡的可靠性,終端節點需要檢測協調器返回的Data_level_n數據包的RSSI值是否大于-85 dBm,若協調器返回的確認功率等級數據包的RSSI值大于-85 dBm,才可以認定此功率數值為最低可靠發射功率等級。之后,終端節點可以進入睡眠,待喚醒時間到則可以采用最低可靠功率發送所需數據。
1.3 算法驗證
算法驗證在CC2530最小系統下進行,其硬件結構如圖2所示,測試用鋰電池電容量約為210 mA·h。

圖2 算法驗證測試ZigBee節點
在本節的算法驗證中,節點的拓撲結構和放置的位置如圖3所示。其中,測試環境為室內,圖中所示位置1與協調器節點距離約為20 cm(中間無障礙物),圖中所示位置2與協調器節點的距離約為4 m~5 m(中間有墻體和障礙物)。網絡拓撲結構為星型拓撲結構,節點初始化之后運行功率調節優化算法并進入低功耗模式,之后定時喚醒并發送”Hello”測試數據包。測試過程中終端節點的喚醒周期為T=100 ms。

圖3 功率優化調節算法測試網絡結構

圖4 功率優化調節算法的驗證
最終功率優化調節算法的測試結果如圖4所示,通過監測測試節點工作過程中鋰電池電容量與時間的關系可以看到,即使終端節點離協調器節點的距離很近(位置1),未運行功率優化調節算法的終端節點的功耗也是最大的,而運行了功率優化調節算法的終端的功耗與該終端節點和其父節點的距離相關,距離越大,其功耗越大,故優化功率終端2的功耗比優化功率終端1的功耗大,但二者均較未優化功率的節點更節能。
測試結果表明,在終端節點與其父節點(包括路由器節點和協調器節點)的距離較近的時候,使用了功率調節優化算法的終端節點可以更有效地節能。在同一位置的節點工作17 h后,運行了功率調節優化算法的終端節點可以較未運行功率調節優化算法的終端節點節省4%的電量。
2.1 算法提出的背景
在ZigBee網絡的實際應用過程中,協調器節點是整個無線傳感器網絡的匯聚中心,可以由穩壓電源進行供電;而終端節點由于可以采用低功耗模式進行工作,能達到較長的工作壽命。但是,在多跳網絡中,整體網絡壽命的瓶頸就在于路由器節點的工作時間。而現有的ZigBee協議中并不支持路由器的低功耗,也即RF開關始終處于打開狀態。因而,如何解決ZigBee網絡中路由器節點的低功耗路由是一個重要的并且具有現實意義的問題。
目前,關于ZigBee網絡低功耗路由的具體機制仍在討論之中,在最新的ZigBee 2007協議中,雖然也提及了低功耗的路由器,但缺乏具體功能的定義和具體實現的方法。低功耗路由勢必是ZigBee網絡將來的一個至關重要的特性,也是ZigBee網絡演進的重要方向之一。
2.2 算法流程
本文提出的低功耗路由算法流程如圖5所示,該算法適用于非信標使能的ZigBee網絡。其中,事件A為定時器事件,事件B是按鍵觸發事件。初始階段,協調器節點作為網絡的中心,需要先啟動,之后路由器節點和終端節點陸續啟動并入網。此時,協調器節點觸發事件A,向全網絡廣播ANN_REQ命令。剛入網的終端節點和路由器節點均處于喚醒狀態,能收到廣播數據包。路由器節點和終端節點在接收到ANN_REQ命令之后,為避免大量擁塞和沖突現象的發生,需要等待隨機時隙后進行響應,一般時隙選擇為1ms,隨機時隙的上限值由網絡規模決定。而路由器節點和終端節點響應ANN_REQ命令的命令號和信息格式均有所不同。

圖5 Z-Stack協議棧低功耗路由算法流程
其中,路由器節點的響應命令為ANN_MSG_R,為點播消息,其中包含了本節點的基本信息,主要包括本節點的源地址信息和梯度信息,即該路由器節點到協調器節點的路由跳數,其目的地址為本節點的下一跳節點,其他的鄰居路由器節點收到ANN_MSG_R消息后將命令中梯度值加一,然后原封不動地轉發該命令,直至消息到達協調器節點。協調器節點收到ANN_MSG_R的命令之后,提取消息中的源地址信息,將其作為目的地址,同樣通過點播方式發送ANN_RSP命令,將已上傳消息的路由器節點的梯度信息反饋給該路由器節點,作為喚醒時間的一個修正量。對于終端節點而言,收到ANN_REQ命令后,等待隨機時隙后發送響應命令ANN_MSG_E,該命令包含本終端節點的網絡地址信息,用于網絡管理。協調器節點在收到ANN_MSG_E命令后不需要響應,從命令中提取該終端節點的網絡地址,將其加入網絡地址鏈表。協調器節點需要統一維護一張該網絡中所有終端節點和路由器節點的地址鏈表,用于網絡管理和喚醒統計。
之后,事件B便可以被觸發,協調器節點廣播同步指令SYN_MSG,該命令中包含本次各個節點同時睡眠的統一時間值。同步指令到達路由器節點之后,路由器節點需要繼續維持路由信息和轉發數據,等待一定的時間t0,然后根據SYN_MSG消息中的統一睡眠時間值配置睡眠定時器,設置定時喚醒時間為t1,再進入睡眠模式。
而終端節點收到SYN_MSG命令之后將關閉Data Poll,設置定時喚醒的時間為t2(該時間也即網絡周期性采集數據時間),直接進入睡眠模式,在終端節點喚醒之前,無法收到任何的來自其他節點的消息。至此,網絡中除了協調器以外的所有節點都進入了低功耗模式。
在低功耗路由算法中,需要保證的原則是:路由器節點先于終端節點喚醒,晚于終端節點睡眠。睡眠喚醒后的路由器節點需要通過軟件重啟恢復與其父節點的連接,為了減少重新入網的通信開銷,在算法中采用了Z-Stack協議棧中的NV(Non Volatile)啟動方式。NV指的是非易失性存儲器,也即系統斷電后,存儲在該存儲器中的數據也不會丟失。在Z-Stack協議棧中,NV存儲器主要用于保存網絡的配置參數,如網絡地址等。因此,在低功耗路由算法中的路由器可以通過NV啟動的方式保持其網絡狀態與喚醒前一致。
需要強調的是,在低功耗路由算法中,每個路由器節點計算出的t1的值是不同的,本文給出其公式,如式(1)所示:
t1=t2+n·T-ξ(ξ≥nmax·T+δ)
(1)
其中,n表示該節點的梯度值,為網絡的最大梯度,T表示一個梯度補償周期,ξ表示最大的誤差補償,稱為最大前向失步補償因子,δ則用來彌補各個節點之間的時鐘誤差,稱為最小前向失步補償因子。一般而言,最小前向失步補償因子越大,越能提高低功耗路由的可靠性,同時會帶來一定路由器節點的能量損耗。但若最小前向失步補償因子設置過小,則可能會引起網絡中某些時鐘過快的節點成為孤兒節點。同時,最小前向失步補償因子的設定決定了網絡中新節點入網的信標請求周期。若一個終端節點或者路由器節點需要加入網絡,而此時正好處于網絡的睡眠周期,在原始的Z-Stack協議棧下,節點將耗費大量的功耗,直至網絡的睡眠周期結束。事實上,這樣的請求數據包發送的頻率過于頻繁,低功耗路由延長了其信標請求的時間。但是,如果這個信標請求的周期過長,甚至大于上一級路由器節點的喚醒時間的話,則將無法保證新節點在第一個同步周期內入網,從而會加大新節點入網的時間并降低新節點成功入網的概率。因而在低功耗路由算法下,新節點的信標請求周期應遵循(2)式,以保證新節點在下一個喚醒周期內可以入網。
Tnew≤δ
(2)
2.3 算法驗證
低功耗路由算法驗證的測試節點和鋰電池同本文1.3節中描述的一致。在本節的算法驗證中,事件A定義為定時觸發,時間為30 s;事件B定義為按鍵觸發,即需要網絡管理員通過按鍵啟動整個網絡的休眠過程和時間同步。其中,t0設置為5 s,t2設置為10 min,最小前向失步補償因子錯誤!未找到引用源。設置為1 min,梯度補償周期T=10 s。算法驗證采用1個協調器節點、2個路由器節點和2個終端節點,構建如圖6所示的ZigBee鏈狀網絡進行低功耗路由算法的測試。

圖6 低功耗路由算法驗證的ZigBee網絡結構
本文提出的低功耗路由算法測試結果如圖7所示。

圖7 低功耗路由算法的驗證
從圖中可以看到,低功耗路由器節點1和低功耗路由節點2的功耗均遠小于普通低功耗路由器節點的功耗,而這兩個低功耗路由節點的功耗差別來源于梯度補償周期產生的額外功耗。最后,測試結果得到了普通路由器、低功耗路由器1和低功耗路由器2三者的電量耗盡時間。其中,普通路由器7 h耗盡所有測試電池電量,低功耗路由器1使用了20 h耗盡測試電池電量,而低功耗路由器2使用了21 h耗盡測試電池電量。算法驗證結果表明,本文提出的低功耗路由算法可以有效地減少路由器節點的功耗,從而達到網絡節能的目的。
2.4 對比實驗
現有關注ZigBee低功耗路由算法的文獻多數引入節點能量代價來改進無線傳感器網絡中的中轉路徑,從而達到低功耗路由的目的[9-11]。其中,參考文獻[10-11]均提出并通過仿真驗證了傳統Ad-hoc網絡中的MMBCR(Min-Max Battery Cost Routing)算法[12]應用于ZigBee網絡的可行性,該算法將節點的剩余電池電量作為路徑選擇的依據,并使用能量路徑選擇的方法延長ZigBee網絡中節點的工作時間。本節將該算法在CC2530平臺上進行模擬,假設與工作路由器節點平行的備選路由器節點個數為3個,剩余電池電量采用文獻[13]和[14]提出的電壓在線測量方法,網絡根據路由器最大剩余能量的原則為終端節點分配路由器,不工作的路由器則可以進入低功耗模式,依次進行輪換。實驗時睡眠路由器節點的電量估計周期為10 s,路由選擇的時間周期為3 min,將MMBCR算法得到的功耗曲線和本文提出的低功耗路由算法進行對比,得到的結果如圖8所示。

圖8 對比實驗的結果
對比實驗的結果表明,基于同步休眠機制的低功耗路由算法比基于能量選擇機制的低功耗路由算法在對局部路由器節點的節能效果更有效。事實上,MMBCR算法解決了網絡中節點能量分布不均衡的問題,從而避免了網絡中出現局部“熱點”;而本文提出的低功耗路由算法則充分利用了網絡節點周期喚醒的特性,通過使路由器節點定時睡眠來節省能耗,具有更好的節能效果。
本文通過對現有Z-Stack協議棧的分析研究,指出了現有Z-Stack協議棧中存在著發射功率固定和無法實現低功耗路由的問題,并進行了改進,提出了針對終端節點的功率優化調節算法和針對路由器節點的低功耗路由算法,并在CC2530平臺上進行了這兩種節能算法的驗證,實驗結果證明了本文提出的算法可以有效地減少基于Z-Stack協議棧的ZigBee節點的能耗,從而延長網絡壽命。本文提出的算法易于實現且具有通用性,具有實用價值。
[1] 孫利民,李建中,陳渝,等. 無線傳感器網絡[M]. 北京:清華大學出版社,2005:4-5.
[2]Wade R,Mitchell W M,Petter F. Ten Emerging Technologies that Will Change the World[J]. Technology Review,2003,106(1):22-49.[3]郭淵博,楊奎武,趙儉,等. ZigBee技術與應用[M]. 北京:國防工業出版社,2010:6-10.
[4]張奇松,尹航. Z-Stack剖析及其在無線測溫網絡中的應用[J]. 計算機系統應用,2009,18(2):103-105.
[5]曾寶國. Z-STACK協議棧應用開發分析[J]. 物聯網技術,2011(5):71-73.
[6]Texas Instruments. CC2530 Datasheet[EB/OL]. http://www.ti.com.cn/cn/lit/ds/symlink/cc2530.pdf,2010-10-05.
[7]ZigBee Alliance. ZigBee Specification 2007[EB/OL]. http://www.ZigBee.org,2008.
[8]Theodore S Rappaport. Wireless Communications:Principles and Practice(Second Edition)[M]. Prentice Hall,2002:73-74.
[9]董亮,張靈,陳云華. 基于限制廣播的ZigBee分布式動態能量均衡協議[J]. 傳感技術學報,2014,27(8):1120-1124.
[10]Tekbiyik N,Uysal-Biyikoglu E. Energy Efficient Wireless Unicast Routing Alternatives for Machine-to-Machine Networks[J]. Journal of Network and Computer Applications,2011,34(5):1587-1614.[11]Zhang Z,Zhou F,Liang Y. ZigBee Routing Alorithm Based on Energy Awareness and Energybalance[C]//Consumer Electronics,Communicat-ions and Networks(CECNet),2012 2nd International Conference on. IEEE,2012:747-750.
[12]Toh C K. Maximum Battery Life Routing to Support Ubiquitous Mobile Computing in Wireless Ad Hoc Networks[J]. Communications Magazine,IEEE,2001,39(6):138-147.
[13]呂濤,施偉斌,范坤坤,等. WSN節點電池供電性能測試研究[J]. 傳感技術學報,2013,26(10):1457-1462.
[14]唐慧強,李超. 基于CC2530的鋰電池電量檢測系統的設計[J]. 化工自動化及儀表,2011(3):350-353.

高翔(1989-),男,上海人,復旦大學碩士研究生,主要從事數字系統與通信、無線傳感器網絡方面的研究,vernegao@163.com;

陸起涌(1966-),男,江蘇太倉人,復旦大學教授,碩士生導師,主要從事智能控制、嵌入式系統、物聯網技術等方面的研究,lqyong@fudan.edu.cn。
ResearchonPower-SavingAlgorithmsinZigBeeNetworkBasedonZ-Stack*
GAOXiang,DENGYongli,LüYuanyuan,LUQiyong*
(Department of Electronic Engineering,Fudan University,Shanghai 200433,China)
ZigBee technology is one of the important techniques for wireless sensor network. Among the implements of ZigBee,Z-Stack is one of the software architecture released by TI Corporation,which has been widely used. The article used CC2530 as hardware platform and Z-Stack as software platform to analyze Z-Stack. It points out that there is power consumption issue on current Z-Stack in practical use. The corresponding power-saving algorithms are also put forward. They are power optimization algorithm for end-device nodes and low power consumption routing algorithm for router nodes. Both algorithms are verified by experiments. The results show that the power-saving algorithms based on Z-Stack proposed in the article can save power consumption effectively when the nodes work and then improve the overall life of the network.
wireless sensor network;ZigBee network;Z-Stack;low power consumption
項目來源:國家863計劃項目(2011AA100701)
2014-06-23修改日期:2014-10-04
10.3969/j.issn.1004-1699.2014.11.017
TN915
:A
:1004-1699(2014)11-1534-05