《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > Zigbee技术规范与协议栈分析

Zigbee技术规范与协议栈分析

2009-05-25
作者:李战明,刘 宝,骆东松

??? 摘 要: 以Zigbee 2006協(xié)議棧為對象,研究其技術(shù)規(guī)范,使用串口調(diào)試助手及數(shù)據(jù)分析儀解讀其協(xié)議棧程序,詳細(xì)解釋OSAL(操作系統(tǒng))的工作流程及整個協(xié)議棧的實(shí)現(xiàn)過程,以達(dá)到提高Zigbee源代碼的可讀性和可操作性的目的。
??? 關(guān)鍵詞:技術(shù)規(guī)范;Zigbee協(xié)議棧;串口調(diào)試助手;數(shù)據(jù)分析議;OSAL

?

??? 伴隨無線傳感器網(wǎng)絡(luò)的迅猛發(fā)展,Zigbee技術(shù)作為最近發(fā)展起來的一種短距離無線通信技術(shù),以其低功耗、自組織、安全可靠、支持大量節(jié)點(diǎn)等優(yōu)勢,被業(yè)界認(rèn)為是最有可能應(yīng)用在工控場合的無線方式。到目前為止,節(jié)點(diǎn)已經(jīng)應(yīng)用于工業(yè)監(jiān)控、智能家庭、安全醫(yī)療等多個領(lǐng)域,具有很大的發(fā)展空間。
??? Zigbee協(xié)議棧(Z-STACK)作為Zigbee技術(shù)的核心,是開發(fā)802.15.4/Zigbee必須掌握的關(guān)鍵技術(shù)。協(xié)議棧發(fā)展至今已有四種版本(見表1),盡管實(shí)現(xiàn)功能越發(fā)完善,但是并未移植標(biāo)準(zhǔn)的操作系統(tǒng)統(tǒng)一任務(wù)調(diào)度,嵌套相當(dāng)復(fù)雜,而顯得源代碼的可讀性和可操作性較差,開發(fā)者在理解和實(shí)現(xiàn)協(xié)議的過程中仍會遇到很多困難。本文通過對最典型的、起到承上啟下作用的Zigbee-2006協(xié)議棧的解讀,對協(xié)議程序的運(yùn)行過程提供一種準(zhǔn)確的解釋分析,降低開發(fā)者的閱讀難度和工作量,為協(xié)議棧自身的發(fā)展、Zigbee設(shè)備的開發(fā)及應(yīng)用的推廣提供強(qiáng)有力的技術(shù)支持。

?


1 協(xié)議棧體系結(jié)構(gòu)及規(guī)范
??? Zigbee協(xié)議棧體系結(jié)構(gòu)如圖1所示[1],協(xié)議棧的層與層之間通過服務(wù)接入點(diǎn)(SAP)進(jìn)行通信。SAP是某一特定層提供的服務(wù)與上層之間的接口。大多數(shù)層有兩個接口:數(shù)據(jù)實(shí)體接口和管理實(shí)體接口。數(shù)據(jù)實(shí)體接口的目標(biāo)是向上層提供所需的常規(guī)數(shù)據(jù)服務(wù);管理實(shí)體接口的目標(biāo)是向上層提供訪問內(nèi)部層參數(shù)、配置和管理數(shù)據(jù)的服務(wù)[2]。

?


1.1 物理層服務(wù)規(guī)范
??? 物理層通過射頻固件和硬件提供MAC層與物理無線信道之間的接口。從概念上說,物理層還應(yīng)包括物理層管理實(shí)體(PLME),以提供調(diào)用物理層管理功能的管理服務(wù)接口;同時PLME還負(fù)責(zé)維護(hù)物理層PAN信息庫(PHY PIB)。物理層通過物理層數(shù)據(jù)服務(wù)接入點(diǎn)(PD-SAP)提供物理層數(shù)據(jù)服務(wù);通過物理層管理實(shí)體服務(wù)接入點(diǎn)(PLME-SAP)提供物理層管理服務(wù)。
1.2 MAC層服務(wù)規(guī)范
??? MAC層提供特定服務(wù)會聚子層(SSCS)和物理層之間的接口。從概念上說,MAC層還應(yīng)包括MAC層管理實(shí)體(MLME),以提供調(diào)用MAC層管理功能的管理服務(wù)接口;同時MLME還負(fù)責(zé)維護(hù)MAC PAN信息庫(MAC PIB)。MAC層通過MAC公共部分子層(MCPS)的數(shù)據(jù)SAP(MCPS-SAP)提供MAC數(shù)據(jù)服務(wù);通過MLME-SAP提供MAC管理服務(wù)。這兩種服務(wù)通過物理層PD-SAP和PLME-SAP提供了SSCS和PHY之間的接口。除了這些外部接口外,MCPS和MLME之間還隱含了一個內(nèi)部接口,用于MLME調(diào)用MAC數(shù)據(jù)服務(wù)。
1.3 應(yīng)用層規(guī)范
??? Zigbee應(yīng)用層包括APS子層、ZDO(包含ZDO管理平臺)和廠商定義的應(yīng)用對象。應(yīng)用支持子層(APS)提供了網(wǎng)絡(luò)層(NWK)和應(yīng)用層(APL)之間的接口,功能是通過ZDO和廠商定義的應(yīng)用對象都可以使用的一組服務(wù)來實(shí)現(xiàn)。數(shù)據(jù)和管理實(shí)體分別由APSDE-SAP和APSME-SAP提供。APSDE提供的數(shù)據(jù)傳輸服務(wù)在同一網(wǎng)絡(luò)的兩個或多個設(shè)備之間傳輸應(yīng)用層PDU;APSME提供設(shè)備發(fā)現(xiàn)和綁定服務(wù),并維護(hù)管理對象數(shù)據(jù)庫——APS信息庫(AIB)。
1.4 網(wǎng)絡(luò)層規(guī)范
??? 網(wǎng)絡(luò)層應(yīng)提供保證IEEE 802.15.4 MAC層正確工作的能力并為應(yīng)用層提供合適的服務(wù)接口。數(shù)據(jù)和管理實(shí)體分別由NLDE-SAP和NLME-SAP提供。具體來說,NLDE提供的服務(wù):一是在應(yīng)用支持子層PDU基礎(chǔ)上添加適當(dāng)?shù)膮f(xié)議頭產(chǎn)生網(wǎng)絡(luò)協(xié)議數(shù)據(jù)單元(NPDU);二是根據(jù)路由拓?fù)?,把NPDU發(fā)送到通信鏈路的目的地址設(shè)備或通信鏈路的下一跳。而NLME提供的服務(wù)包括配置新設(shè)備、創(chuàng)建新網(wǎng)絡(luò)、設(shè)備請求加入/離開網(wǎng)絡(luò)和Zigbee協(xié)調(diào)器或路由器請求設(shè)備離開網(wǎng)絡(luò)、尋址、近鄰發(fā)現(xiàn)、路由發(fā)現(xiàn)、接收控制等。網(wǎng)絡(luò)層的數(shù)據(jù)和管理服務(wù)由MCPS-SAP和MLME-SAP提供了應(yīng)用層和MAC子層之間的接口。除了這些外部接口,在NWK內(nèi)部NLME和NLDE之間還有一個同隱含接口,允許NLME使用NWK數(shù)據(jù)服務(wù)。
2 協(xié)議棧程序分析
2.1 運(yùn)行環(huán)境

??? 軟件環(huán)境:IAR 7.20、串口調(diào)試工具、數(shù)據(jù)分析儀以及各硬件驅(qū)動軟件等。
??? 硬件環(huán)境:PC(.NET 1.1 架構(gòu), Windows 98以上,1個串口,1個USB接口)、CC2430 ZigBee開發(fā)板(至少包括一個網(wǎng)絡(luò)協(xié)調(diào)器和一個終端設(shè)備,驗(yàn)證階段可省略路由設(shè)備)等。
2.2 程序流程
??? 將各開發(fā)板與PC正確連接,運(yùn)行各軟件,當(dāng)程序燒至開發(fā)板后,啟動即調(diào)用主函數(shù)ZSEG int main( void )。主函數(shù)的主要工作流程如圖2所示。需要注意的是,Zigbee協(xié)議棧的精華在于操作系統(tǒng)OSAL的任務(wù)調(diào)度,因此,在進(jìn)入主循環(huán)處理函數(shù)之前的準(zhǔn)備工作中,操作系統(tǒng)的初始化尤為重要。osalTaskInit()、osalAddTasks()、osalInitTasks()三個函數(shù)的調(diào)用構(gòu)成了協(xié)議棧的七大任務(wù)列表,其具體實(shí)現(xiàn)結(jié)果如圖3。

?

?


??? 進(jìn)入主循環(huán)處理函數(shù)以后,始終周期掃描此任務(wù)列表,這7個任務(wù)由taskID和taskPriority來決定掃描和處理順序。在循環(huán)掃描的過程中,數(shù)據(jù)的傳輸使用直接存取(DMA)控制器進(jìn)行操作,可以減輕8051CPU核傳送數(shù)據(jù)時的負(fù)擔(dān),實(shí)現(xiàn)CC2430在高效利用電源條件下得高性能,其操作流程如圖4所示。

?


??? 作為協(xié)調(diào)器,如果程序使用了串口調(diào)試助手,則DMA將上位機(jī)的數(shù)據(jù)按照一個字節(jié)波特率加一個字節(jié)數(shù)據(jù)的形式組裝到cfg->rxBuf中供其他函數(shù)調(diào)用,并且通過回調(diào)函數(shù)SPIMgr_ProcessZToolData ( uint8 port, uint8 event )將任務(wù)的ID和強(qiáng)制事件發(fā)送到任務(wù)列表中,供主循環(huán)處理函數(shù)掃描;作為終端節(jié)點(diǎn)和路由設(shè)備,無法使用串口調(diào)試助手,則通過回調(diào)函數(shù)SPIMgr_ProcessZAppData ( uint8 port, uint8 event ) 將任務(wù)的ID和強(qiáng)制事件發(fā)送到任務(wù)列表中。當(dāng)掃描至參數(shù)events=1,則進(jìn)入相應(yīng)層的處理程序進(jìn)行任務(wù)ID和events的約定比對,完成相應(yīng)的功能,具體流程如圖5所示。

?


2.3 組網(wǎng)
??? 利用數(shù)據(jù)分析儀[3]記錄監(jiān)控協(xié)調(diào)器與終端設(shè)備的組網(wǎng)過程如圖6所示。

?


??? 首先,Zigbee協(xié)調(diào)器上電以后,不斷周期發(fā)送空的數(shù)據(jù)包,在允許的通道內(nèi)搜索其他的Zigbee協(xié)調(diào)器,并基于每個允許通道中所檢測到的通道能量及網(wǎng)絡(luò)號,選擇惟一的16位PAN ID,建立自己的網(wǎng)絡(luò)[4]。一旦一個新網(wǎng)絡(luò)被建立,Zigbee路由器與終端設(shè)備就可以加入到網(wǎng)絡(luò)中了。而終端設(shè)備上電以后,重復(fù)發(fā)送信標(biāo)請求,要求加入到最近的網(wǎng)絡(luò)中。當(dāng)協(xié)調(diào)器發(fā)現(xiàn)終端設(shè)備發(fā)出的信標(biāo)請求,則響應(yīng)一個超幀結(jié)構(gòu),用于設(shè)備間的同步,一旦同步成功,則實(shí)現(xiàn)圖5中的關(guān)聯(lián)過程,由終端設(shè)備向協(xié)調(diào)器發(fā)送關(guān)聯(lián)請求,協(xié)調(diào)器同意則回應(yīng)終端設(shè)備并自動分配16位的短地址,至此,兩者組網(wǎng)成功。
??? 網(wǎng)絡(luò)形成后,可能會出現(xiàn)網(wǎng)絡(luò)重疊及PAN ID沖突的現(xiàn)象。協(xié)調(diào)器可以初始化PAN ID沖突解決程序,改變一個協(xié)調(diào)器的PAN ID與信道,同時相應(yīng)修改其所有的子設(shè)備。通常,Zigbee設(shè)備會將網(wǎng)絡(luò)中其他節(jié)點(diǎn)信息存儲在一個非易失性的存儲空間——鄰居表中。加電后,若子設(shè)備曾加入過網(wǎng)絡(luò),則該設(shè)備會執(zhí)行孤兒通知程序來鎖定先前加入的網(wǎng)絡(luò)。接收到孤兒通知的設(shè)備檢查它的鄰居表,并確定設(shè)備是否是它的子,若是,設(shè)備會通知子設(shè)備它在網(wǎng)絡(luò)中的位置,否則子設(shè)備將作為一個新設(shè)備來加入網(wǎng)絡(luò)。而后,該子設(shè)備將產(chǎn)生一個潛在雙親表,并盡量以合適的深度加入到現(xiàn)存的網(wǎng)絡(luò)中[5]。
??? 通常,設(shè)備檢測通道能量所花費(fèi)的時間與每個通道可利用的網(wǎng)絡(luò)可通過ScanDuration 掃描持續(xù)參數(shù)來確定,一般設(shè)備要花費(fèi)1 min的時間來執(zhí)行一個掃描請求,對于Zigbee路由器與終端設(shè)備來說,只需要執(zhí)行一次掃描即可確定加入的網(wǎng)絡(luò)。而協(xié)調(diào)器則需要掃描兩次,一次采樣通道能量,另一次則用于確定存在的網(wǎng)絡(luò)。
??? 限于篇幅,本文沒有列出各種幀結(jié)構(gòu)以及消息的處理過程,對于Zigbee協(xié)議的具體應(yīng)用即是對數(shù)據(jù)包的封裝與分解,這些分析、學(xué)習(xí)對于編寫上位機(jī)軟件,開發(fā)通過Zigbee協(xié)議與上位機(jī)進(jìn)行交互的輕量級的現(xiàn)場設(shè)備,都是有意義的。已經(jīng)據(jù)此以C++開發(fā)出用戶自定義的上位機(jī)程序,實(shí)現(xiàn)對傳感器數(shù)據(jù)的監(jiān)視和現(xiàn)場采集、數(shù)據(jù)庫入庫、趨勢圖等功能。
參考文獻(xiàn)
[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.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容