無線傳感器網絡(WSN)由一些獨立、完全嵌入式操作的小體積低功耗節點組成,這些節點能夠檢測來自目標環境的數據或控制目標環境,并且相互間通過無線方式通信。檢測和控制是通過互連著的傳感器和激勵器完成的,而這些傳感器和激勵器或通過遠程、或通過嵌入式應用程序進行管理。這些節點的數量從十幾個到數千個不等,一個典型系統由數百個分布于整座大樓或室外空間的節點組成。
許多無線傳感器網絡采用私有標準實現無線組網,但最近的趨勢是逐漸向標準化的低功耗無線通信發展。基于著名的802.15.4規范的ZigBee就是一種用于無線檢測和控制的標準。雖然802.15.4文檔僅描述了協議的PHY和MAC層,但基于802.15.4構建的ZigBee還提供網絡和應用層規范。
ZigBee具有許多優點,包括可以實現多跳路由和數據發送的網格協議、安全規范和針對應用層互操作性的整套參數設置??傊琙igBee向嵌入式應用開發人員提供了管理網絡以及連接其它節點的更高抽象層次。
雖然本文主要討論的是ZigBee,但其中許多觀點和結論同樣也適用于采用802.15.4 MAC和PHY的其它標準。為了避免出現混亂,后文假設我們的目標設計涉及的是使用網格路由協議、802.15.4兼容調制方案和介質訪問協議的多跳網絡。本文還假設讀者對ZigBee和802.15.4規范已有基本了解。
網絡組織和規模
網絡組織和規模也許是最重要的設計選項,它往往對接下來的設計過程起著告知和指導作用。它還有約束作用,因為大型網絡通常更難設計和維護。幸運的是,如今已經有方法能輕松實現和維護非常大的網絡。
目前最先進的ZigBee網絡規模在300到500個節點之間。這個規??雌饋聿淮?,但試想一下,所有這些節點工作在同一物理信道上,彼此在同一時間發送數據,根據每個節點的行為路由數據,并在同一時間試圖保持整個網絡的完整性(通過發送周期性控制消息),這該是個很吵很擁擠的網絡。另外還要注意,ZigBee標準所依據的802.15.4規范使用了CSMA/CA(載波偵聽多址訪問/碰撞避免)協議,也就是說,在各自“聽力”范圍內沒有兩個節點能同時“說話”。如果同時“說話”,都會遭遇通信失敗,必須延遲一段時間后重試。如果網絡已經擁塞,那么這些重試將產生級聯傳輸故障,試圖發起空中訪問的節點將越來越多,從而加劇信道的擁擠。
事實上,在設計數百個節點以上的網絡時面臨的主要挑戰之一是如何有效地管理網絡擁塞(另外一個挑戰是在運行時優化用于存儲內部堆棧狀態的系統資源)。下面的小節將簡要介紹用于解決擁塞問題的三種不同策略。
圖1:基于802.15.4的ZigBee提供網絡層和應用層規范。
網絡密度
顯然,“300個節點的網絡”給我們提供的有關網絡組織的信息是很少的。由于存在上述沖突碰撞問題,網絡密度也是影響網絡健康的一個重要因素,也就是說在每個節點聽力范圍內存在多少個節點,或者換句話說,一個普通節點可以聽到多少個其它節點?專家建議是小于5個,因為這個數量支持冗余設計和相對無阻塞的通信介質。7個節點以上的網絡很可能出現嚴重擁塞的網段而加重網絡負擔。
一個相關的問題隨之而來,系統設計師該如何判斷有多少個節點能被聽到?一個顯而易見的策略是定制嵌入式應用程序。有關相鄰節點的信息實際上是ZigBee網絡中協議操作的一個重要部分。事實上,節點會主動廣播他們自己的信息,并且這些信息會被有效范圍內的每個其它節點接收到。相鄰表格可以被駐留程序查詢,并計算唯一性條目的數量。然后駐留程序再將這個診斷結果發送給指定節點。很明顯,這樣做只有在網絡密度仍能改變的網絡安裝過程中才有意義。一旦網絡安裝完畢并開始運行,密度信息將在故障排除過程中發揮顧問的作用。
請注意,如果相鄰表格的大小小于周圍節點的數量,ZigBee堆棧將強制周期性地撤消表格條目。這種撤消也可能負面影響總體網絡性能,因為即使路徑中沒有節點離線,也會強制路由被重新發現。因此,除了限制網絡密度以避免擁塞外,還必須根據系統資源(如相鄰表格的大小)確定網絡密度。
在節點的物理位置由于應用要求而被固定的情況下,網絡密度可以方便地通過降低擁塞區域中收發器的輸出功率來得到控制。從理論上講,降低輸出功率與增加節點間距離、使它們彼此聽到的可能性變小具有相同的效果。制造商傾向于將輸出功率設為最大值,以確保最大工作范圍和最佳鏈路質量。根據我們的經驗,在距離性能不很重要的室內應用場合,輸出功率可以很容易降低。根據經驗,輸出功率降低3dBm,有效距離范圍可以縮短1.5倍。
有關密度的最后一個考慮因素是,故障率增加到足夠高以致于觸發上述級聯故障效應的理論極限。當然,這個參數取決于應用程序本身發送的信息量。根據經驗,如果每個節點每秒發送一個最大長度的數據包,那么在各個節點的聽力范圍內這個極限值約為25個節點。密度極限似乎是不變的,與堆棧實現無關,這意味著密度極限與MAC層更基本的CSMA操作有關。例如,我們可以推斷每隔n秒發送一個包的節點的密度極限值,就是將最大密度乘以1.2n倍。這個近似值從來不應被用作網絡密度的精確指導值,因為實際值將取決于網絡中的路由器和終端設備的比例。
根據信道進行網絡劃分
在不能刪除節點或降低輸出功率的情況下,系統設計師可以選擇將工作在單個信道上的單一網絡劃分為工作在不同信道上的多個網絡來解決網絡擁塞問題。802.15.4在2.4GHz頻率范圍內規定了16個信道,在900MHz頻率范圍內另外還增加了10個信道。將網絡置于不同的信道上能夠完全隔離不同網絡間的相互影響,但根據需要,每個網絡可能需要使用協調器(coordinator),并需連接這些協調器,從而帶來額外的復雜性。
如果待分割的網絡邏輯上已經是分開的,那么根據信道進行網絡劃分的方法最有效果。例如,在大樓自動化應用中,讓每一樓層的網絡工作在各自的信道上通常是比較理想的。但如果每個樓層都有一個網絡協調器,那么不同樓層之間的節點相互通信就很麻煩,特別是這樣做可能會影響網絡性能(高密度網絡就是這種情況)。
同樣,還可以根據房間或辦公面積進行劃分。最重要的是,應該根據具體應用要求和可用信道數量來做出根據物理信道劃分網絡的決定。當多個子網絡中的節點需要相互通信時,這種劃分還會使總體設計變得更加復雜。
信道掩碼(就象收發器輸出功率一樣)是一個可設置的網絡參數。應用工程師可以給網絡協調器以及必須與該協調器建立連接的網絡設備分配一個合適的信道掩碼。作為一個標準步驟,協調器將執行能量檢測掃描,以便從信道掩碼中挑選出“活躍性最差”的信道。
值得注意的是,除了給掩碼分配單個信道外,沒有其它方法能強制協調器工作在特定信道上。不過強烈建議在信道掩碼中至少要保持兩個信道,因為來自WiFi網絡、藍牙耳機和其它電子設備的帶內干擾會臨時占用本來是空閑的特定信道,致使整個網絡癱瘓。在信道掩碼中留有多個信道不僅給協調器提供了信道選擇余地,今后還能讓它靈活地切換到擁塞程度較低的信道。
圖2:ZigBee網狀網拓撲。
根據PANID進行網絡劃分
最后一種策略是根據PANID劃分網絡,這種方法的效率公認要比根據物理信道劃分網絡的方法低。PANID是一個給定網絡中所有設備都知道的唯一標識符。使用不同PANID的設備之間是無法通信的,從而允許多個網絡共存于同一區域,而且其中一個網絡的數據不會在另外一個網絡中出現。事實上,具有不同PANID的多個網絡都可以使用相同的物理信道實現相互間的通信。
雖然根據PANID分割網絡不會影響空中擁塞程度,但可以通過在堆棧的較低層濾除來自相鄰網絡設備(具有另外一個PANID)的業務而減少每個節點處的處理開銷量。在大多數情況下,濾除工作可以由PHY層硬件自動完成,從而釋放更多的應用資源和時間。對于應用處理和路由開銷占主導的應用而言,根據PANID進行劃分的方法能夠非常有效地在給定區域內容納更多的節點。
基于PANID分段的一個好處是具有相對較多的可能唯一分段,準確地講可達216個。雖然只有26個物理信道,但PANID為實現分段提供了更靈活的方法,盡管效率較低。大多數無線系統將同時使用PANID分段和信道數量分段的組合策略。總之,在解決網絡擁塞問題時這種組合策略可以提供最佳的靈活性和效率折衷方案。
圖3:居民住宅樓內的無線抄表應用。
吞吐量
另外一個需要仔細考慮的設計因素是吞吐量。簡單地說,吞吐量指的是一個設備在單位時間內希望傳送的有用數據總量。許多系統工程師錯誤地認為系統具有比實際可用帶寬大得多的帶寬(有時甚至超出一個數量級),從而導致性能差或無法運行的設備和失敗的設計。
導致這個常見問題的原因是802.15.4網絡鏈路宣稱有250kbps的介質容量。實際上,這個數字指的是理論上的物理極限,也就是PHY層的有效帶寬。它忽略了物理層上其它堆棧層引起的協議延時、處理和解析每個數據包的開銷、介質訪問時間、數據確認機制和誤碼率。根據我們的經驗,在相隔一跳的兩個ZigBee節點之間建立的點到點鏈路的傳輸速率不超過110到120kbps。在引入確認機制后,這個速率還要下降近一半。在任一給定時間點有3到5個節點試圖訪問共享介質的典型網絡環境中,這個傳輸速率還將進一步降低到數十kbps。
顯然,20~40kbps與標準宣稱的最大250kbps有很大差異,而一個缺乏經驗的系統工程師往往不知道這種差異,直到悔之晚矣。關鍵是無線傳感器網絡從來沒有打算要支持高帶寬的應用。相反,其目標市場是具有低帶寬要求的相對大型網絡。如果有個傳感器是產生100kbps數據流的視頻攝像機,那么無線傳感器網絡和ZigBee肯定不是最好的選擇,市場上有其它無線技術能更好地完成這個工作。
盡管吞吐量期望值和某種技術能夠支持的指標不匹配很常見,但仍可以合理使用這種技術,并通過帶寬優化在目標環境中高效地運行。例如考慮每秒采樣100次的溫度傳感器。每次用一個數據包發送一個樣值將是一個較差的設計選擇。事實上,由于前面提到的網絡擁塞和級聯重傳故障問題,這樣做將給網絡健康帶來不良后果。一個更好的策略是,將多個樣值匯聚到一個數據包中,因為在大多數情況下,最大的數據包比較小的數據包更優。
當匯聚無法實現時,可以用本地處理來降低帶寬要求。讓我們考慮具有低門限和高門限的典型自動調溫器應用。只要這些溫度讀數落在可接受的溫度范圍內,那么絕對不需要發送瞬時溫度讀數。節點可以使用本地處理功能來判斷何時讀數超出規定范圍,并在需要時才發送數據以警示另一個遠程設備。減少待發送數據量的另一個策略是采用某種形式的數據求和或平均算法。
然而需要注意的是,當多個物理事件同時發生時,即使是高度優化的設備也會遭遇擁塞。如果整個樓層的溫度上升,可能會出現許多自動調溫器希望立即發送溫度讀數。對付這樣的帶寬峰值的一個實用方法是隨機化傳送延時。顯然,MAC層的重傳就是一種隨機化處理,但它無助于防止碰撞,它只在發生碰撞后起作用。應用層的延時如果做得好可以有效減少碰撞于發生之前。當每小時有數百個節點需要發送數據包,最佳設計會把傳送均勻分配在整個時段內,以盡量減少碰撞的機會。在有大量傳送的場合,強烈建議系統工程師采用這種策略。
評論
查看更多