伴隨無線 傳感器網絡的迅猛發展,Zigbee技術作為最近發展起來的一種短距離無線通信技術,以其低功耗、自組織、安全可靠、支持大量節點等優勢,被業界
認為是最有可能應用在工控場合的無線方式。到目前為止,節點已經應用于工業監控、智能家庭、安全醫療等多個領域,具有很大的發展空間。
Zigbee協議棧(Z-STACK)作為Zigbee技術的核心,是開發802.15.4/Zigbee必須掌握的關鍵技術。協議棧發展至今已有四種版
本(見表1),盡管實現功能越發完善,但是并未移植標準的操作系統統一任務調度,嵌套相當復雜,而顯得源代碼的可讀性和可操作性較差,開發者在理解和實現
協議的過程中仍會遇到很多困難。本文通過對最典型的、起到承上啟下作用的Zigbee-2006協議棧的解讀,對協議程序的運行過程提供一種準確的解釋分
析,降低開發者的閱讀難度和工作量,為協議棧自身的發展、Zigbee設備的開發及應用的推廣提供強有力的技術支持。
1 協議棧體系結構及規范 Zigbee協議棧體系結構如圖1所示[1],
協議棧的層與層之間通過服務接入點(SAP)進行通信。SAP是某一特定層提供的服務與上層之間的接口。大多數層有兩個接口:數據實體接口和管理實體接
口。數據實體接口的目標是向上層提供所需的常規數據服務;管理實體接口的目標是向上層提供訪問內部層參數、配置和管理數據的服務[2]。
1.1 物理層服務規范
物理層通過射頻固件和硬件提供MAC層與物理無線信道之間的接口。從概念上說,物理層還應包括物理層管理實體(PLME),以提供調用物理層管理功能的管
理服務接口;同時PLME還負責維護物理層PAN信息庫(PHY
PIB)。物理層通過物理層數據服務接入點(PD-SAP)提供物理層數據服務;通過物理層管理實體服務接入點(PLME-SAP)提供物理層管理服務。 1.2 MAC層服務規范
MAC層提供特定服務會聚子層(SSCS)和物理層之間的接口。從概念上說,MAC層還應包括MAC層管理實體(MLME),以提供調用MAC層管理功能
的管理服務接口;同時MLME還負責維護MAC PAN信息庫(MAC
PIB)。MAC層通過MAC公共部分子層(MCPS)的數據SAP(MCPS-SAP)提供MAC數據服務;通過MLME-SAP提供MAC管理服務。
這兩種服務通過物理層PD-SAP和PLME-SAP提供了SSCS和PHY之間的接口。除了這些外部接口外,MCPS和MLME之間還隱含了一個內部接
口,用于MLME調用MAC數據服務。 1.3 應用層規范
Zigbee應用層包括APS子層、ZDO(包含ZDO管理平臺)和廠商定義的應用對象。應用支持子層(APS)提供了網絡層(NWK)和應用層
(APL)之間的接口,功能是通過ZDO和廠商定義的應用對象都可以使用的一組服務來實現。數據和管理實體分別由APSDE-SAP和APSME-SAP
提供。APSDE提供的數據傳輸服務在同一網絡的兩個或多個設備之間傳輸應用層PDU;APSME提供設備發現和綁定服務,并維護管理對象數據庫——
APS信息庫(AIB)。 1.4 網絡層規范 網絡層應提供保證IEEE 802.15.4
MAC層正確工作的能力并為應用層提供合適的服務接口。數據和管理實體分別由NLDE-SAP和NLME-SAP提供。具體來說,NLDE提供的服務:一
是在應用支持子層PDU基礎上添加適當的協議頭產生網絡協議數據單元(NPDU);二是根據路由拓撲,把NPDU發送到通信鏈路的目的地址設備或通信鏈路
的下一跳。而NLME提供的服務包括配置新設備、創建新網絡、設備請求加入/離開網絡和Zigbee協調器或路由器請求設備離開網絡、尋址、近鄰發現、路
由發現、接收控制等。網絡層的數據和管理服務由MCPS-SAP和MLME-SAP提供了應用層和MAC子層之間的接口。除了這些外部接口,在NWK內部
NLME和NLDE之間還有一個同隱含接口,允許NLME使用NWK數據服務。 2 協議棧程序分析 2.1 運行環境 軟件環境:IAR 7.20、串口調試工具、數據分析儀以及各硬件驅動軟件等。 硬件環境:PC(.NET 1.1 架構, Windows 98以上,1個串口,1個USB接口)、CC2430 ZigBee開發板(至少包括一個網絡協調器和一個終端設備,驗證階段可省略路由設備)等。 2.2 程序流程
將各開發板與PC正確連接,運行各軟件,當程序燒至開發板后,啟動即調用主函數ZSEG int main( void
)。主函數的主要工作流程如圖2所示。需要注意的是,Zigbee協議棧的精華在于操作系統OSAL的任務調度,因此,在進入主循環處理函數之前的準備工
作中,操作系統的初始化尤為重要。osalTaskInit()、osalAddTasks()、osalInitTasks()三個函數的調用構成了協
議棧的七大任務列表,其具體實現結果如圖3。
進入主循環處理函數以后,始終周期掃描此任務列表,這7個任務由taskID和taskPriority來決定掃描和處理順序。在循環掃描的過程中,數據
的傳輸使用直接存取(DMA)控制器進行操作,可以減輕8051CPU核傳送數據時的負擔,實現CC2430在高效利用電源條件下得高性能,其操作流程如
圖4所示。
作為協調器,如果程序使用了串口調試助手,則DMA將上位機的數據按照一個字節波特率加一個字節數據的形式組裝到cfg->rxBuf中供其他函數
調用,并且通過回調函數SPIMgr_ProcessZToolData ( uint8 port, uint8 event
)將任務的ID和強制事件發送到任務列表中,供主循環處理函數掃描;作為終端節點和路由設備,無法使用串口調試助手,則通過回調函數
SPIMgr_ProcessZAppData ( uint8 port, uint8 event )
將任務的ID和強制事件發送到任務列表中。當掃描至參數events=1,則進入相應層的處理程序進行任務ID和events的約定比對,完成相應的功
能,具體流程如圖5所示。
2.3 組網 利用數據分析儀[3]記錄監控協調器與終端設備的組網過程如圖6所示。
首先,Zigbee協調器上電以后,不斷周期發送空的數據包,在允許的通道內搜索其他的Zigbee協調器,并基于每個允許通道中所檢測到的通道能量及網絡號,選擇惟一的16位PAN ID,建立自己的網絡[4]。
一旦一個新網絡被建立,Zigbee路由器與終端設備就可以加入到網絡中了。而終端設備上電以后,重復發送信標請求,要求加入到最近的網絡中。當協調器發
現終端設備發出的信標請求,則響應一個超幀結構,用于設備間的同步,一旦同步成功,則實現圖5中的關聯過程,由終端設備向協調器發送關聯請求,協調器同意
則回應終端設備并自動分配16位的短地址,至此,兩者組網成功。 網絡形成后,可能會出現網絡重疊及PAN
ID沖突的現象。協調器可以初始化PAN ID沖突解決程序,改變一個協調器的PAN
ID與信道,同時相應修改其所有的子設備。通常,Zigbee設備會將網絡中其他節點信息存儲在一個非易失性的存儲空間——鄰居表中。加電后,若子設備曾
加入過網絡,則該設備會執行孤兒通知程序來鎖定先前加入的網絡。接收到孤兒通知的設備檢查它的鄰居表,并確定設備是否是它的子,若是,設備會通知子設備它
在網絡中的位置,否則子設備將作為一個新設備來加入網絡。而后,該子設備將產生一個潛在雙親表,并盡量以合適的深度加入到現存的網絡中[5]。
通常,設備檢測通道能量所花費的時間與每個通道可利用的網絡可通過ScanDuration 掃描持續參數來確定,一般設備要花費1
min的時間來執行一個掃描請求,對于Zigbee路由器與終端設備來說,只需要執行一次掃描即可確定加入的網絡。而協調器則需要掃描兩次,一次采樣通道
能量,另一次則用于確定存在的網絡。
限于篇幅,本文沒有列出各種幀結構以及消息的處理過程,對于Zigbee協議的具體應用即是對數據包的封裝與分解,這些分析、學習對于編寫上位機軟件,開
發通過Zigbee協議與上位機進行交互的輕量級的現場設備,都是有意義的。已經據此以C++開發出用戶自定義的上位機程序,實現對傳感器數據的監視和現
場采集、數據庫入庫、趨勢圖等功能。 參考文獻 [1] ZigBee Alliance. ZigBee Document 053474r13 [S]. December 1, 2006 [2] Zheng JianLiang, Lee Myung. A Comprehensive Performance Study of IEEE 802.15.4[M]. IEEE Press Book,2004. [3] Chipcon, Packet Sniffer for IEEE802. 15. 4 and Zigbee [S]. User Manual. Oslo, Norway, Oct. 2004. [4] KINNEY P. Zigbee Technology :Wireless Control that Simply Works [S] . Zigbee Alliance ,Oct . 2004. [5] Zigbee Alliance. Network Specification (Draft Version 1.0) [S] . 2004.
|