王凱
(天津博宜特科技有限公司,天津 300384)
TI提供的ZigBee協議棧定義了協議的網絡層、應用層和安全層,并采用IEEE 802.15.4的PHY層和MAC層作為其部分協議。此協議規定路由器要保持時刻工作,需要外接電源持續供電。在諸多工業應用的現場,鋪設供電線路難以實現,即使供電也難以保證穩定。鑒于此方案的局限,本文研究了路由器低功耗的優化方法,實現了路由器在電池供電狀態下長時間的工作,解決了復雜工業現場路由器供電困難的問題。
無線傳感器網絡中,路由器能耗主要包含三部分:監聽信道;接收數據;發送數據。而造成多余能耗的主要原因有以下兩點:
1)信號沖突:路由器作為父設備接收其所有子設備數據,但子設備之間并不能互相知道其他子設備的數量、喚醒時間和發送數據時間,如多個設備同時發送數據產生沖突,導致發送失敗,它們則會嘗試重新發送數據,路由器則會一直工作在接收數據狀態,導致高能耗。
2)空閑監聽:路由器為保證無線網絡內數據的及時轉發,避免電池供電的子設備找不到父設備,路由器需要時刻偵聽信道內數據,然而并非時刻都有數據需要接收,所以在無數據傳輸時的監聽消耗了大量的能量,造成多余的耗電。
以采用IEEE802.15.4/ZigBee標準的路由器為例,數據傳輸速度為250Kbps。當節點1s內轉發(接收并且發送)一個133字節滿楨報文(4字節前導信號+1字節分隔符+1字節報文長度+127字節數據),路由器僅需工作0.9%的時間,99%的通訊能耗用于空閑監聽。對路由設備不同工作狀態下的工作電流進行測試見表1:

表1 CC2530 無線收發工作電流
可見在無線傳感器網絡能量浪費的兩大原因中,空閑監聽所消耗的能量所占比重最大,因此盡可能的將空閑監聽轉換為休眠是最有效的解決方案。但讓路由器具備休眠模式,首先要解決的是終端設備和路由器喚醒的時間問題[1-2]。
目前,采用休眠策略通訊機制的協議中,路由器休眠策略有兩種調度方式:1)基于精確同步。此類協議需要在路由器和終端設備之間進行精確的時間同步,并約定在某一特定時間喚醒進行通訊。2)基于異步策略的通訊協議。此類協議并不要求路由和節點同時喚醒進行通訊,無需時間同步。為了避免設備因休眠而錯過接收數據,終端設備通常是在傳輸數據時,連續發送信號,直到路由器喚醒進行數據傳輸。或者終端設備保持監聽狀態,路由器在喚醒時發送一個信號報文,終端設備探測到父設備的信號時傳輸數據。
基于精確同步策略的通訊協議,在高度同步機制保障的基礎上極大的縮短了監聽時間,使得路由器的功耗明顯降低,但路由器和終端設備的物理時鐘是無法達到絕對同步的,越高的同步精度需要消耗設備更多的計算能力,產生更多的數據交換,這都要占用極為有限的系統資源。因此精確同步機制對設備來說負擔較大,過多的能量浪費在運算和數據交換上?;诋惒讲呗缘耐ㄓ崊f議,雖然減少了路由器空閑偵聽的能耗,但是大幅增加了終端設備的數據量和工作時間,導致終端設備功耗上升,對于整個系統的壽命來說,并沒有太大的意義[3]。
綜上所述,精確同步策略和異步策略都有一定的缺陷,并非完全適用于無線傳感器網絡,因此我們需要借鑒兩者優點制定一種路由休眠策略,在不影響網絡穩定和通訊質量的情況下,實現路由器的休眠,且計算量少,方式簡單,又不會對終端設備造成負擔。
首先路由器初始化時與協調器通訊取得系統時間,然后進入請求系統時間狀態,處理其子設備的系統時間請求,如圖1所示:

圖1 請求系統時間狀態機制
此時眾多的終端設備上電初始化,他們與路由器通訊的時刻無法確定,因此路由器將在此階段保持Ta的喚醒時間,等待終端設備與其取得通訊。終端設備與路由通訊后得到的系統時間,可以判斷出距路由休眠的時間Tcn,這樣此終端設備休眠的時間Twn可由Tcn和路由器的固定休眠時間Tb得到(Trandom為一個很小的隨機量,避免終端同時喚醒造成信號沖突):
Twn = Tcn + Tb + Trandom
路由器的請求系統時間狀態Ta結束后,進入時長為Tb的休眠,終端設備則在得到系統時間后進入時長為Twn的休眠;路由器和終端設備在取得系統時間的同時完成了同步,下次他們將在相對集中的一個時刻喚醒,因終端設備喚醒時間都增加了一個隨機量,為保證路由器能與所有終端通訊,路由器會有一個保持喚醒的時間Td;終端設備通訊完成計算出新一輪的休眠時間Twn后再次進入休眠,路由則在工作時間Td后進如休眠,此后他們將以這種方式進行周期性的工作,如圖2所示:

圖2 工作狀態機制
在設備初始化時請求得到的系統時間只是一個時間點,之后的計時完全是由自身設備的計時器來完成,由于設備本身計時器的誤差,經過數個這樣的周期后,終端設備和他們的路由有可能不再同步,為避免這樣的情況發生,我們規定每n個周期進入一次請求系統時間狀態,將終端設備和路由器的時間再次同步,如圖3所示:

圖3 多個周期后同步機制
以上情況我們只考慮了設備同時上電和初始化的情況,在實際的應用中,由于網絡環境的變化,連接在一個路由器的終端設備有可能改變通訊路徑,請求加入另一個路由器;或者某些外界因素導致終端設備重啟,需要重新建立與路由器的聯接;這些終端設備都會向路由器請求系統時間,且時間無法確定,為避免這些設備長時間入網請求得不到回應,路由器增加了一個Te時長的特殊狀態,如圖4所示:

圖4 新設備加入時間同步機制
這些新請求入網的終端設備會持續發送網絡加入請求信標直到路由器醒來將其加入網絡。而路由器喚醒后,在其正常工作時間Td內,如果收到這些新設備發來的網絡加入請求信標幀,會先將其加入網絡,正常工作時間結束再進入Te時長的特殊狀態予以時間同步,Te占用了路由器的休眠時間,路由器休眠時間變短,但不改變其下次喚醒的時刻,因此也不會打亂其他設備的同步[4-5]。
根據上述優化方式來看,終端設備僅增加了少量的時間計算和時間同步產生的少量數據,這樣并不會給終端設備帶來明顯的功耗增加,也不影響其正常休眠;而路由器則每個周期都加入了一個休眠時間Tb,大大降低了路由器功耗,在實際應用測試中,我們通常設定一個周期為180s,其中Td為5s,Tb為175s,結合表1中我們實測的電流數據,可以粗略計算出路由器使用休眠策略后要比不休眠持續工作節省97.15%的功耗。這樣路由器完全可以使用電池供電,不必再使用外部電源供電。
本文探討了zigbee網絡路由器低功耗的優化和實現,通過路由器的休眠極大的節省了空閑偵聽的功耗,同時也給出了一種同步方法,避免了精確同步造成的系統資源浪費,也避免了異步策略終端設備能耗過高的問題。