蔡彬彬
摘要:ZigBee網(wǎng)絡(luò)層協(xié)議的核心內(nèi)容是協(xié)調(diào)設(shè)備組網(wǎng)和接收設(shè)備入網(wǎng),本文深入研究ZigBee網(wǎng)絡(luò)層協(xié)議,詳細分析了ZigBee網(wǎng)絡(luò)的組網(wǎng)流程和數(shù)據(jù)收發(fā)過程,采用一組ZigBee節(jié)點組建樹簇拓撲,對組網(wǎng)過程進行了測試,經(jīng)測試,節(jié)點可以靈活構(gòu)成無線傳感器網(wǎng)絡(luò),網(wǎng)絡(luò)性能穩(wěn)定。論文為基于ZigBee技術(shù)的應(yīng)用開發(fā)提供了技術(shù)參考依據(jù)。
關(guān)鍵詞:ZigBee;組網(wǎng);樹簇;網(wǎng)絡(luò)拓撲
中圖分類號:TP92? ? ? ? ?文獻標識碼: J
文章編號:1009-3044(2020)30-0013-03
Abstract: ZigBee network and receiving devices are the core contents of the ZigBee network layer protocol. The article was based on the further research of three network topology structure characteristics and the device type about ZigBee, and then put forward the networking process and data transceiver of the ZigBee network, which provided the technical reference for the application development based on ZigBee technology.
Key words: ZigBee; Networking; Tree Cluster; Network topology
1 引言
ZigBee是一種低復(fù)雜度、低功耗、低數(shù)據(jù)速率的無線通信技術(shù),采用ZigBee技術(shù)組建無線傳感器網(wǎng)絡(luò)具有可擴展性強、免布線的特點[1]。利用ZigBee技術(shù)構(gòu)建無線傳感網(wǎng)首先要確定拓撲結(jié)構(gòu),需要考慮網(wǎng)絡(luò)的節(jié)點功耗、網(wǎng)絡(luò)穩(wěn)定性等幾個方面,保證網(wǎng)內(nèi)的所有節(jié)點都能被訪問到。
本文深入研究ZigBee網(wǎng)絡(luò)層協(xié)議,詳細分析了ZigBee網(wǎng)絡(luò)的組網(wǎng)流程和數(shù)據(jù)收發(fā)過程,采用一組ZigBee節(jié)點組建樹簇拓撲,對組網(wǎng)過程進行了測試,經(jīng)測試,節(jié)點可以靈活構(gòu)成無線傳感器網(wǎng)絡(luò),網(wǎng)絡(luò)性能穩(wěn)定。論文為基于ZigBee技術(shù)的應(yīng)用開發(fā)提供了技術(shù)參考依據(jù)。
2 ZigBee網(wǎng)絡(luò)拓撲結(jié)構(gòu)分析[2]
ZigBee網(wǎng)絡(luò)層支持星型、樹簇型和點對點拓撲結(jié)構(gòu),見圖1。
如果一個ZigBee設(shè)備想加入一個ZigBee網(wǎng)絡(luò),應(yīng)首先和網(wǎng)絡(luò)中的一個設(shè)備發(fā)生關(guān)聯(lián),協(xié)調(diào)設(shè)備節(jié)點可通過發(fā)送信標幀為網(wǎng)絡(luò)中的其他設(shè)備提供同步服務(wù)。
3 協(xié)調(diào)節(jié)點組網(wǎng)過程分析[3,4]
3.1 協(xié)調(diào)節(jié)點組網(wǎng)
如圖2所示,協(xié)調(diào)節(jié)點通過在APL層、NWK層和MAC層之間發(fā)送ZigBee特點的原語方式來組建網(wǎng)絡(luò)。首先,ZigBee協(xié)調(diào)節(jié)點設(shè)備發(fā)送NLME-NETWORK-FORMATION.request原語,NWK層收到request請求原語后,發(fā)送請求掃描MLME-SCAN.request原語,收到該原語后,MAC層執(zhí)行能量檢測掃描任務(wù),搜索可能存在的干擾,掃描所有信道,排序并將不符合能量強度的信道去除。
接著,NWK層發(fā)送MLME-SCAN.request到MAC層,請求MAC層搜索鄰近的ZigBee節(jié)點設(shè)備,選擇網(wǎng)絡(luò)節(jié)點數(shù)最少的第一個信道來創(chuàng)建新的ZigBee網(wǎng)絡(luò),NWK層發(fā)送MLME-SET.Request原語,由MAC層將macPANID設(shè)定為PAN標識,將協(xié)調(diào)節(jié)點網(wǎng)絡(luò)地址設(shè)為0x0000。當(dāng)協(xié)調(diào)節(jié)點選定地址后,MAC層啟動新的PAN,NWK層收到PAN啟動狀態(tài)后,向APL層發(fā)送NLME-NETWORK-FORMATION.confirm證實原語,通過三層之間的交互,協(xié)調(diào)器成功創(chuàng)建一個新網(wǎng)絡(luò)。
3.2 協(xié)調(diào)節(jié)點允許設(shè)備加入網(wǎng)絡(luò)
如圖3所示,當(dāng)協(xié)調(diào)器節(jié)點成功組建新網(wǎng)絡(luò)后,通過NLME-PERMIT-JOINING.request原語來限時允許其他ZigBee設(shè)備加入ZigBee網(wǎng)絡(luò)。在ZigBee網(wǎng)絡(luò)中,只有ZigBee協(xié)調(diào)節(jié)點或路由節(jié)點才能夠允許其他ZigBee設(shè)備加入ZigBee網(wǎng)絡(luò)。當(dāng)設(shè)備成功進入網(wǎng)絡(luò)后,再次發(fā)送NLME-PERMIT-JOINING.request原語,把其中的PermitDuration參數(shù)設(shè)置為0x00,此時將禁止設(shè)備加入網(wǎng)絡(luò)。
3.3 協(xié)調(diào)節(jié)點接收設(shè)備入網(wǎng)
如圖4所示,ZigBee協(xié)調(diào)器發(fā)送MLME-ASSICIATE.indicationMAC原語把一個ZigBee節(jié)點設(shè)備加入網(wǎng)絡(luò)。協(xié)調(diào)節(jié)點為新加入節(jié)點分配一個唯一的16位網(wǎng)絡(luò)地址。并在近鄰表中為新加入的ZigBee子設(shè)備增加一條記錄,通過向MAC層發(fā)送響應(yīng)原語,指示設(shè)備關(guān)聯(lián)成功。NLME向APL層發(fā)送NLME-JOIN.indication原語,通知新節(jié)點設(shè)備已經(jīng)成功入網(wǎng)。
4 路由設(shè)備加入ZigBee網(wǎng)絡(luò)
如圖5所示,路由節(jié)點APL層向NWK層發(fā)送NLME-NETWORK-DISCOVERY.request原語,請求加入網(wǎng)絡(luò)。節(jié)點NWK層收到原語后,發(fā)送MLME-SCAN.request原語到MAC層,MAC執(zhí)行掃描,每收到一個有效信標幀后,就向NWK層發(fā)送一個MLME-BEACON-NOTIFY.indication指示原語。
路由設(shè)備將檢查協(xié)議ID字段,看它是否與自身的協(xié)議標識匹配。當(dāng)MAC層完成掃描向并發(fā)送MLME-SCAN.confirm原語后,NWK層向APL層發(fā)送NLME-NETWORK-DISCOVERY.confirm原語,把網(wǎng)絡(luò)描述信息發(fā)給節(jié)點設(shè)備應(yīng)用層。
路由設(shè)備應(yīng)用層接收到NLME-NETWORK-DISCOVERY.confirm原語后,即獲知了節(jié)點設(shè)備鄰近區(qū)域內(nèi)的網(wǎng)絡(luò)信息。此時,設(shè)備應(yīng)用層就向NLME發(fā)送NLME-JOIN.request原語,將RejoinNetwork參數(shù)設(shè)置為FALSE,JoinAsRouter參數(shù)設(shè)置為TURE。如路由節(jié)點成功入網(wǎng),則其NWK層將收到一個16位的邏輯地址號,路由節(jié)點即可使用該邏輯地址來通信。
5 終端節(jié)點設(shè)備加入ZigBee網(wǎng)絡(luò)
如圖6為終端節(jié)點加入ZigBee網(wǎng)絡(luò)的主流程。終端節(jié)點設(shè)備首先完成節(jié)點自身的各項初始化工作,包括芯片初始化evbInit()、協(xié)議棧初始化aplInit()等流程。完成各項初始化工作后,終端節(jié)點設(shè)備加入一個已存在的ZigBee網(wǎng)絡(luò)過程,該過程與路由節(jié)點入網(wǎng)過程基本類似,不同處在于因為終端節(jié)點設(shè)備的JoinAsRouter參數(shù)設(shè)置為FALSE。如果終端設(shè)備成功加入網(wǎng)絡(luò)中,NWK層將收到一個16位邏輯地址,則終端設(shè)備以后就可以使用該邏輯地址來通信。其NWK層還會設(shè)置相應(yīng)近鄰表記錄中的Relationship字段,指示該近鄰設(shè)備是它的父設(shè)備。
將ZigBee協(xié)調(diào)器節(jié)點與主機連接,通信方式為RS-232,采用串口調(diào)試助手觀察協(xié)調(diào)器組網(wǎng)的全過程信息。首先打開協(xié)調(diào)器電源,隨后協(xié)調(diào)節(jié)點的指示LED點亮,表示協(xié)調(diào)器組網(wǎng)成功,如圖7所示,串口調(diào)試助手顯示協(xié)調(diào)器的設(shè)備地址是0x0000000000000001,PANID是0x00001347。
然后打開其中一個路由器節(jié)點電源,此時路由器節(jié)點的紅色LED點亮,表明節(jié)點成功加入ZigBee網(wǎng)絡(luò),如圖8所示,串口調(diào)試助手顯示該路由器節(jié)點成功加入網(wǎng)絡(luò),分配得到的網(wǎng)絡(luò)短地址是0x1699,并顯示了其父設(shè)備(協(xié)調(diào)器節(jié)點)的相關(guān)信息。
最后打開某終端節(jié)點設(shè)備電源,如果成功加入網(wǎng)絡(luò),則相關(guān)信息也會反饋到主機。如圖8所示,顯示新加入的終端設(shè)備的長地址為0x0000000000000006,PANID為0x00001347。
7 總結(jié)
ZigBee網(wǎng)絡(luò)層協(xié)議的核心內(nèi)容是ZigBee組網(wǎng)和接收設(shè)備入網(wǎng),本文深入研究ZigBee協(xié)議原理,給出了ZigBee網(wǎng)絡(luò)的組網(wǎng)流程和數(shù)據(jù)收發(fā)過程,經(jīng)測試表明,節(jié)點可以靈活構(gòu)成無線傳感器網(wǎng)絡(luò),網(wǎng)絡(luò)性能穩(wěn)定,論文為基于ZigBee技術(shù)的應(yīng)用開發(fā)提供了技術(shù)參考依據(jù)。
參考文獻:
[1] 王翥,郝曉強,魏德寶.基于WSN和GPRS網(wǎng)絡(luò)的遠程水質(zhì)監(jiān)測系統(tǒng)[J].儀表技術(shù)與傳感器,2010(1):48-49,52.
[2] 楊萌,趙亮.基于ZigBee技術(shù)的無線傳感網(wǎng)絡(luò)研究[J].電子技術(shù)與軟件工程,2015(1):34.
[3] 薛艷亮,胡建萍,王江柱.基于分布式編址機制的ZigBee組網(wǎng)技術(shù)研究[J].杭州電子科技大學(xué)學(xué)報,2008,28(2):33-36.
[4] 吳許俊,王永利.基于兩跳鄰居的ZigBee網(wǎng)絡(luò)借地址分配算法[J].科學(xué)技術(shù)與工程,2013,13(28):8333-8338.
[5] 李鵬翔.ZigBee網(wǎng)絡(luò)分布式地址分配算法研究[D].重慶:重慶郵電大學(xué),2012.
[6] 尹甲,別紅霞.ZigBee地址分配算法及樹路由算法改進[J].軟件,2013,34(1):129-132.
【通聯(lián)編輯:梁書】