引言
有人將ZigBee翻譯成「紫蜂」,為無線個人局域網絡(Wireless Personal Area Networks, WPAN)的標準之一,已于 2005年6月27日 公布。除了邏輯鏈路控制(Logic Link Control, LLC)層、媒介存取控制層(MAC),與物理層使用2003年10月公布的IEEE 802.15.4標準外,ZigBee標準協議制定了應用層與網絡層,及MAC、應用層與網絡層的安全加密服務標準。
以傳感器和自組織網絡為代表的無線應用并不需要較高的傳輸帶寬,但卻需要較低的傳輸延時和極低的功率消耗,使用戶能擁有較長的電池壽命和較多的器件陣列。目前迫切需要一種符合傳感器和低端的、面向控制的、應用簡單的專用標準,而Zigbee的出現正好解決了這一問題。Zigbee有著高通信效率、低復雜度、低功耗、低速率、低成本、高安全性以及全數字化等諸多優點。這些優點使得Zigbee和無線傳感器網絡完美地結合在一起。目前,基于Zigbee技術的無線傳感器網絡的研究和開發已得到越來越多的關注。
1 Zigbee協議術語
配置文件(profile):Zigbee協議的配置文件是對邏輯組件及其相關接口的描述,是面向某個應用類別的公約、準則.通常沒有程序代碼與配置文件相關聯.
屬性(attribute):設備之間通信的每一種數據像開關的狀態或溫度計值等皆可稱為屬性.每個屬性可得到唯一的ID值.
簇(cluster):多個屬性的匯集形成了簇,每個簇也擁有一個唯一的ID。雖然個體之間傳輸的通常是屬性信息,但所謂的邏輯組件的接口指的卻是簇一級的操作,而非屬性一級.
終端(endpoint):每個支持一個或多個簇的代碼功能塊稱為終端。不同的設備通過它們的終端及所支持的簇來進行通信。
配置文件定義了屬性ID與簇ID,使之看起來就像設備的某種特性.以家庭智能控制系統為例,燈配置文件設定了遠程控制設備的簇OnOffDRC含有一種屬性OnOff,且該屬性為無符號8位值,值0XFF意味著"開",0X00為關,0XF0則為無效。通常,配置文件也為設備定義了,哪些簇是強制托管的,哪些簇是可選擇的。另外,配置文件還定義了一些可選擇的Zigbee協議托管服務.
基于簇及配置所定義的服務,用戶可使用配置文件中定義的屬性編寫所需的函數.改寫自己的程序代碼.因此,配置文件使得ZigBee 設備可以互操作。任何遵循某一標準配置文件的節點都可以與其他實現相同配置文件的節點進行互操作。也就是說,在使用同一標準配置文件進行設計的基礎上,即使生產開關的廠家與生產控制器的廠家不同,他們生產的產品仍可實現協同操作.
以家庭智能系統中的燈光控制為例,燈配置文件定義了6個設備,協議棧通過帶有以下信息的報頭文件對此配置提供支持:配置(profile)ID,設備ID及版本,簇ID,屬性ID,屬性數據類型.
下圖(1)顯示了不同術語之間的關系,對于家庭智能控制系統的燈光配置,圖中給出了兩種設備.每種設備各有一個終端.負荷切換控制器的終端中僅有一個輸入簇,而遠程轉換控制終端則有兩個簇,且分別為一個輸入一個輸出.數據的傳輸基于簇而進行.
2 Zigbee協議棧結構
如圖(2)所示,ZigBee堆棧的不同層與802.15.4 MAC通過服務接入點(SAP)進行通信。SAP是某一特定層提供的服務與上層之間的接口。 ZigBee堆棧的大多數層有兩個接口:數據實體接口和管理實體接口。數據實體接口的目標是向上層提供所需的常規數據服務。管理實體接口的目標是向上層提供訪問內部層參數、配置和管理數據的服務。圖中的APSDE-SAP,NLDE-SAP即為數據實體接口,而APSME-SAP,NLME-SAP即為管理實體接口。
3 Zigbee協議的消息格式及幀格式
3.1 消息格式
一個Zigbee消息由127個字節組成,它主要包括以下幾個部分:
MAC報頭:該報頭包含當前被傳輸消息的源地址及目的地址.若消息被路由,則該地址有可能不是實際地址,產生及使用該報頭對于應用代碼是透明的.
NWK報頭:該報頭包含了消息的實際源地址及最終的目的地址,該報頭的產生及使用對于應用代碼是透明的.
APS報頭:該報頭包含了配置ID,簇ID及當前消息的目的終端.同樣,報頭的產生及使用是透明的.
有效載荷:該域包含了待應用層處理的Zigbee協議幀.
3.2 Zigbee協議幀格式
Zigbee協議定義了兩種幀格式:KVP關鍵值對及MSG消息幀.
KVP:是ZigBee 規范定義的特殊數據傳輸機制,通過一種規定來標準化數據傳輸格式和內容,主要用于傳輸較簡單的變量值格式。
MSG:是ZigBee 規范定義的特殊數據傳輸機制,其在數據傳輸格式和內容上并不作更多規定,主要用于專用的數據流或文件數據等數據量較大的傳輸機制。
KVP幀是專用的比較規范的信息格式,采用鍵值對的形式,按一種規定的格式進行數據傳輸.通常用于傳輸一個簡單的屬性變量值;而MSG幀還沒有一個具體格式上的規定,通常用于多信息,復雜信息的傳輸。KVP、MSG是通訊中的兩種數據格式。如果將幀比作一封郵件,那么信封、郵票、地址人名等信息都是幀頭、幀尾,里面的信件內容就是特定的數據格式KVP或MSG。根據具體應用的配置文件(Profile) ,KVP一般用于簡單屬性數據,MSG用于較復雜的,數據量較大信息。
4 尋址
4.1 Zigbee協議中的兩類地址
Zigbee網絡協議的每一個節點皆有兩個地址:64位的IEEE MAC地址及16位網絡地址.
每一個使用Zigbee協議通信的設備都有一個全球唯一的64位MAC地址,該地址由24位OUI與40位廠家分配地址組成,OUI可通過購買由IEEE分配得到,由于所有的OUI皆由IEEE指定,因此64位IEEE MAC地址具有全球唯一性.
當設備執行加入網絡操作時,他們會使用自己的擴展地址進行通信。成功加入Zigbee網絡后,網絡會為設備分配一個16位的網絡地址。由此,設備便可使用該地址與網絡中的其它設備進行通信.
4.2 尋址方式
單播:當單播一個消息時,數據包的MAC報頭中應含有目的節點的地址,只有知道了接收設備的地址,消息方可以單播方式進行發送。
廣播:要想通過廣播來發送消息,應將信息包MAC報頭中的目的地址域置為0XFF。此時,所有射頻收發使能的終端皆可接收到該信息。
該尋址方式可用于加入一個網絡、查找路由及執行ZigBee協議的其它查找功能。ZigBee協議對廣播信息包實現一種被動應答模式。即當一個設備產生或轉發一個廣播信息包時,它將偵聽所有鄰居的轉發情況。如果所有的鄰居都沒有在應答時限內復制數據包,設備將重復轉發信息包,直到它偵聽到該信息包已被所有鄰居轉發,或廣播傳輸時間被耗盡為止。
5 數據傳輸機制
對于非信標網絡,當一個設備想要發送一個數據幀時,它會等待信道空閑,直到檢測到信道為空后設備會傳輸該幀。
若目的設備為FFD全功能設備,它的接收器應始終保持開啟狀態,以便其它的設備可隨時向它傳輸數據。但是若設備為RFD精簡功能設備,無操作時設備將關閉收發器以節約能量。此時RFD設備無法接收到任何數據。因此,其它設備只能通過RFD的FFD雙親向RFD設備請求或發送數據。直到RFD上電RX收發器后,它會向雙親請求自己的信息數據,若雙親緩沖區中存有發給孩子的信息,則將該信息發給孩子設備。該操作模式可降低RFD的功耗,但相應的雙親FFD節點應擁有足夠的RAM空間,以便為孩子設備緩沖信息。若孩子設備沒有在規定的時間內請求信息,信息將被丟失。
6 Zigbee無線網絡的形成
首先,由Zigbee協調器建立一個新的Zigbee網絡。一開始,Zigbee協調器會在允許的通道內搜索其它的Zigbee協調器。并基于每個允許通道中所檢測到的通道能量及網絡號,選擇唯一的16位PAN ID,建立自己的網絡。一旦一個新網絡被建立,Zigbee路由器與終端設備就可以加入到網絡中了。
網絡形成后,可能會出現網絡重疊及PAN ID沖突的現象。協調器可以初始化PAN ID沖突解決程序,改變一個協調器的PAN ID 與信道,同時相應修改其所有的孩子設備。通常,Zigbee設備會將網絡中其它節點信息存儲在一個非易失性的存儲空間-鄰居表中。加電后,若孩子設備曾加入過網絡,則該設備會執行孤兒通知程序來鎖定先前加入的網絡。接收到孤兒通知的設備檢查它的鄰居表,并確定設備是否是它的孩子,若是,設備會通知孩子設備它在網絡中的位置,否則孩子設備將作為一個新設備來加入網絡。而后,孩子設備將產生一個潛在雙親表,并盡量以合適的深度加入到現存的網絡中。
通常,設備檢測通道能量所花費的時間與每個通道可利用的網絡可通過ScanDuration掃描持續參數來確定,一般設備要花費1分鐘的時間來執行一個掃描請求,對于Zigbee路由器與終端設備來說,只需要執行一次掃描即可確定加入的網絡。而協調器則需要掃描兩次,一次采樣通道能量,另一次則用于確定存在的網絡。