基于ZigBee的自愈自組網(wǎng)的設(shè)計(jì)與應(yīng)用
摘要:ZigBee技術(shù)為低功耗、低成本、低復(fù)雜度、適中數(shù)據(jù)傳榆率和且具有自組織功能的無線監(jiān)控網(wǎng)絡(luò)的組建提供了堅(jiān)實(shí)的技術(shù)基礎(chǔ)。為了增強(qiáng)無線網(wǎng)絡(luò)在無人值守、遠(yuǎn)程監(jiān)控等應(yīng)用中的穩(wěn)定性及智能化,本文在分析ZigBee協(xié)議體系結(jié)構(gòu)以及Z_Stack協(xié)議棧基礎(chǔ)上,研究了如何基于CC2530組建具有自組網(wǎng)、自愈特性的ZigBee無線網(wǎng)絡(luò),通過對無人值守的通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的遠(yuǎn)程實(shí)時(shí)監(jiān)控的試驗(yàn),實(shí)現(xiàn)了網(wǎng)絡(luò)的自組網(wǎng)與自愈功能,增強(qiáng)了網(wǎng)絡(luò)的穩(wěn)定性及智能化。
關(guān)鍵詞:ZigBee;自組網(wǎng);Z_Stack;CC2530
無線傳感器網(wǎng)絡(luò)(WSN,Wireless Sensor Network)是由分布在有效區(qū)域內(nèi)具有通訊功能的大量傳感器節(jié)點(diǎn)組成,通過無線方式自組織形成網(wǎng)絡(luò)系統(tǒng),節(jié)點(diǎn)采集信息并通過無線網(wǎng)絡(luò)逐級傳送到監(jiān)控中。ZigBee是一種介于IEEE 802.11無線局域網(wǎng)與藍(lán)牙技術(shù)之間的無線通信網(wǎng)絡(luò)協(xié)議,是基于IEEE 802.15.4無線標(biāo)準(zhǔn)研制開發(fā)的有關(guān)組網(wǎng)、應(yīng)用和安全方面的通信技術(shù)。ZigBee為用戶提供了一個(gè)低成本、低功耗、低
復(fù)雜度、適中的數(shù)據(jù)傳輸速率、高容量以及短距離通信等特性的技術(shù)平臺。依據(jù)該平臺,客戶通過創(chuàng)造性的研發(fā)工作,根據(jù)具體任務(wù)要求設(shè)計(jì)硬件系統(tǒng)和配備相應(yīng)的軟件,就可以出色地完成很多任務(wù)。
本文采用集成了ZigBee技術(shù)和增強(qiáng)型8051內(nèi)核的SOC芯片CC2530,配合相應(yīng)的軟硬件,構(gòu)建了一個(gè)無線測控網(wǎng)絡(luò)。
該無線測控網(wǎng)絡(luò)克服了目前一般無線網(wǎng)絡(luò)的穩(wěn)定性差易崩潰的缺點(diǎn),支持星型、樹型以及網(wǎng)狀網(wǎng)的拓?fù)浣Y(jié)構(gòu),除具有自組織功能外,還研發(fā)成功了自愈功能,對網(wǎng)絡(luò)的穩(wěn)定性、健壯性以及提高工作效率都有重大的意義。
下面首先簡述ZigBee協(xié)議和Z_Stack協(xié)議棧,重點(diǎn)論述自組網(wǎng)的設(shè)計(jì)實(shí)現(xiàn)、網(wǎng)絡(luò)自愈功能的研發(fā)與實(shí)現(xiàn)和該網(wǎng)絡(luò)的一個(gè)實(shí)際應(yīng)用例子:對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的遠(yuǎn)程實(shí)時(shí)監(jiān)控。
1 ZigBee協(xié)議體系結(jié)構(gòu)
ZigBee協(xié)議體系由稱為層的各模塊組成。每一層為其上層提供特定的服務(wù):
即由數(shù)據(jù)服務(wù)實(shí)體提供數(shù)據(jù)傳輸服務(wù);管理實(shí)體提供所有的其他服務(wù)。每個(gè)服務(wù)實(shí)體通過相應(yīng)的服務(wù)接入點(diǎn)(SAP)為其上層提供一個(gè)接口,每個(gè)服務(wù)接入點(diǎn)通過服務(wù)原語來完成所對應(yīng)的功能。ZigBee協(xié)議體系如圖1所示。
主要由應(yīng)用層(APL)、網(wǎng)絡(luò)層(NWK)、媒介訪問控制層(MAC)和物理層(PHY)組成,其中媒介訪問控制層和物理層是由IEEE 802.15.4標(biāo)準(zhǔn)定義的,ZigBee聯(lián)盟則定義了網(wǎng)絡(luò)層和應(yīng)用層架構(gòu)。物理層定義了物理無線信道和MAC子層之間的接口,提供物理層數(shù)據(jù)服務(wù)和物理層管理服務(wù)。媒介訪問控制層負(fù)責(zé)所有的物理無線信道的訪問,并產(chǎn)生網(wǎng)絡(luò)信號、同步信號;支持PAN連接和分離,提供2個(gè)對等(peer to peer)MAC之間可靠的鏈路。網(wǎng)絡(luò)層主要實(shí)現(xiàn)節(jié)點(diǎn)加入或離開網(wǎng)絡(luò)、接收或拋棄其他節(jié)點(diǎn)、路由查找及傳送數(shù)據(jù)等功能。應(yīng)用層框架包括應(yīng)用支持子層(APS)、ZigBee設(shè)備對象(ZDO)和制造商所定義的應(yīng)用對象。
基于ZigBee協(xié)議應(yīng)用開發(fā)中,用戶只需實(shí)現(xiàn)應(yīng)用層框架即可,應(yīng)更多的關(guān)注應(yīng)用層框架(創(chuàng)造性發(fā)揮也在這一層)。APS主要用于維持綁定表、在綁定設(shè)備之間傳送消息。ZDO主要定義設(shè)備在網(wǎng)絡(luò)中的角色(ZigBee協(xié)調(diào)器還是路由或者終端),發(fā)起和響應(yīng)綁定請求,在網(wǎng)絡(luò)設(shè)備之間建立安全機(jī)制等。
IEEE 802.15.4標(biāo)準(zhǔn)中定義了兩種設(shè)備類型,全功能設(shè)備(FYD)與精簡功能設(shè)備(RFD)。ZigBee協(xié)議也定義了這兩類設(shè)備,ZigBee協(xié)調(diào)器相當(dāng)于IEEE 802.15.4標(biāo)準(zhǔn)中的PAN協(xié)調(diào)器,ZigBee路由器擁有IEEE 802.15.4標(biāo)準(zhǔn)中協(xié)調(diào)器的功能,ZigBee終端是網(wǎng)絡(luò)中最便宜的設(shè)備,擁有最少的功能。全功能設(shè)備(FFD)在ZigBee網(wǎng)絡(luò)中能完成拓?fù)浣Y(jié)構(gòu)中任何功能,而精簡功能設(shè)備(RFD)在ZigBee網(wǎng)絡(luò)中只能作為終端,且只能與全功能設(shè)備(FTD)通信。全功能設(shè)備(FFD)與精簡功能設(shè)備(RFD)硬件配置是可以完全相同,但在軟件的配置上不同。
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)由ZigBee協(xié)議的網(wǎng)絡(luò)層決定,且必須是IEEE 802.15.4標(biāo)準(zhǔn)中定義的兩種類型之一:星型網(wǎng)絡(luò)和對等型網(wǎng)絡(luò)。在星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,協(xié)調(diào)器建網(wǎng)與路由數(shù)據(jù)的功能,終端節(jié)點(diǎn)通過協(xié)調(diào)器進(jìn)行通信。在對等網(wǎng)絡(luò)中,所有的節(jié)點(diǎn)在網(wǎng)絡(luò)范圍內(nèi)都可以進(jìn)行通信,所有的節(jié)點(diǎn)都參與數(shù)據(jù)傳遞。因此網(wǎng)絡(luò)能夠自組織以及通過多跳方式來進(jìn)行通信(這也為實(shí)現(xiàn)自愈功能提供了必要的基礎(chǔ))。
2 ZSTACK協(xié)議棧
CC2530是TI公司推出的一款兼容IEEE 802.15.4的SOC,集成了增強(qiáng)型8051內(nèi)核,結(jié)合上TI的Z_Stack協(xié)議棧軟件,可組建網(wǎng)絡(luò),同時(shí)加快開發(fā)周期,減小開發(fā)成本。
Z_Stack協(xié)議棧采用操作系統(tǒng)的思想來構(gòu)建,采用基于優(yōu)先級的事件輪循機(jī)制,當(dāng)各層初始化完成后進(jìn)入低功耗模式,事件發(fā)生時(shí),喚醒系統(tǒng)進(jìn)入中斷處理事件函數(shù),結(jié)束后繼續(xù)進(jìn)入低功耗模式。操作系統(tǒng)抽象層(OSAL)實(shí)現(xiàn)了一個(gè)易用的操作系統(tǒng)平臺,通過時(shí)間片輪轉(zhuǎn)函數(shù)實(shí)現(xiàn)任務(wù)調(diào)度,提供多任務(wù)處理機(jī)制。系統(tǒng)中tasksEvents數(shù)組中存放著每個(gè)任務(wù)標(biāo)志位,輪循判斷各任務(wù)標(biāo)志位來執(zhí)行對應(yīng)的任務(wù)。Z_Stack協(xié)議棧工作流程如圖2所示。
Z_Stack協(xié)議棧提供多種任務(wù)事件觸發(fā)機(jī)制,可以直接通過API函數(shù)osal_set_event()設(shè)置要觸發(fā)的任務(wù)標(biāo)志位;也可以通過設(shè)置一個(gè)軟件定時(shí)器osal_start_timeEx()函數(shù)等待溢出來觸發(fā);最后,也可以通過調(diào)用系統(tǒng)消息傳遞機(jī)制來觸發(fā)任務(wù)事件。在進(jìn)行應(yīng)用開發(fā)時(shí),需要在tasksEvents數(shù)組中添加相應(yīng)的任務(wù),確定任務(wù)的ID號。同時(shí)在初始化系統(tǒng)任務(wù)函數(shù)osalInitTasks()中添加任務(wù)的初始化函數(shù),在事件處理函數(shù)數(shù)組tasksArr[]中添加任務(wù)處理函數(shù)。每個(gè)任務(wù)的ID號是唯一的,系統(tǒng)按每次檢測到的任務(wù)ID號執(zhí)行相對應(yīng)的事件處理函數(shù)。
3 具有自愈功能的自組網(wǎng)設(shè)計(jì)與應(yīng)用
通過對ZigBee協(xié)議體系的研究,利用Z_Stack協(xié)議棧在CC2530平臺上,實(shí)現(xiàn)ZigBee自愈功能的自組網(wǎng),傳感器節(jié)點(diǎn)對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)進(jìn)行信號調(diào)理和采集后經(jīng)路由器節(jié)點(diǎn)、協(xié)調(diào)器,再通過GPRS通信方式傳遞到監(jiān)控中心,實(shí)現(xiàn)對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的實(shí)時(shí)監(jiān)控結(jié)構(gòu)如圖3所示。
3.1 自組網(wǎng)的設(shè)計(jì)
ZigBee無線網(wǎng)絡(luò)中,只有一個(gè)節(jié)點(diǎn)作為協(xié)調(diào)器,其他節(jié)點(diǎn)都是路由器或終端。網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都有兩個(gè)地址:64位IEEE擴(kuò)展地址和16位網(wǎng)絡(luò)地址。64位IEEE擴(kuò)展地址類似于MAC地址,它唯一的標(biāo)識著每一個(gè)設(shè)備。16位的網(wǎng)絡(luò)地址在節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí)由其父節(jié)點(diǎn)(協(xié)調(diào)器或路由器)動態(tài)分配,該地址僅在路由或者數(shù)據(jù)傳輸時(shí)使用。
ZigBee無線網(wǎng)絡(luò)有兩種地址模式,靜態(tài)地址分配和樹狀地址分配。協(xié)調(diào)器確定整個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)目,每個(gè)節(jié)點(diǎn)都擁有一個(gè)網(wǎng)絡(luò)深度,用以指示在其父子鏈路上數(shù)據(jù)傳輸?shù)絽f(xié)調(diào)器所需的最小跳數(shù)。協(xié)調(diào)器的深度為0,而它的孩子節(jié)點(diǎn)深度為1。可知,多跳網(wǎng)絡(luò)中深度大于1,網(wǎng)絡(luò)深度是由協(xié)調(diào)器來決定的。ZigBee網(wǎng)絡(luò)中,假設(shè)一個(gè)父節(jié)點(diǎn)有最大孩子節(jié)點(diǎn)數(shù)為Cm,網(wǎng)絡(luò)最大深度為Lm,一個(gè)父節(jié)點(diǎn)的最大路由數(shù)為Rm,可以計(jì)算網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的功能函數(shù)Cskip(d):
式中d是節(jié)點(diǎn)到協(xié)調(diào)器的深度。如果Cskip(d)的值為0,則表明此節(jié)點(diǎn)為葉子節(jié)點(diǎn),而Cskip(d)的值大于0,則表明該節(jié)點(diǎn)可作為一個(gè)父節(jié)點(diǎn),這個(gè)父節(jié)點(diǎn)可以接收子節(jié)點(diǎn)并根據(jù)它們是否具有路由能力來分配地址。具體過程是:首先一個(gè)子節(jié)點(diǎn)的地址被分配,子節(jié)點(diǎn)地址比父節(jié)點(diǎn)的地址多1,然后其余節(jié)點(diǎn)根據(jù)下式求出:
An=Aparent+Cskip(d)*Rm+n (2)
式中1≤n≤(Cm-Rm),Aparent代表父節(jié)點(diǎn)的地址。
ZigBee協(xié)調(diào)器在上電后,首先要建立一個(gè)無線網(wǎng)絡(luò)。在Z_Stack協(xié)議棧中,通過函數(shù)ZDApp_NetworkInit()進(jìn)行網(wǎng)絡(luò)初始化,系統(tǒng)檢測到ZDP任務(wù)的ZDO_NETWORK_INIT事件,調(diào)用處理函數(shù)ZDO_StartDevice()啟動網(wǎng)絡(luò)的組建。通過變量logicalType判斷設(shè)備類型,如為協(xié)調(diào)器,則調(diào)用ZStatus_t NLME_NetworkFormationRequest()來完成網(wǎng)絡(luò)的組建,同時(shí)該函數(shù)產(chǎn)生一個(gè)回調(diào)函數(shù)ZDO_Network Formation ConfirmCB(),通過該函數(shù),根據(jù)系統(tǒng)消息判斷網(wǎng)絡(luò)組建是否成功。
當(dāng)網(wǎng)絡(luò)建立完成并允許新設(shè)備加入時(shí),子設(shè)備(即子節(jié)點(diǎn))才可以請求加入網(wǎng)絡(luò)。在Z_Stack協(xié)議棧中,子節(jié)點(diǎn)上電后調(diào)用ZDApp_Networkl nit()進(jìn)行網(wǎng)絡(luò)初始化,之后調(diào)用NLME_NetworkDiscovery Request()來尋找射頻范圍內(nèi)存在的ZigBee網(wǎng)絡(luò),該函數(shù)會產(chǎn)生回調(diào)函數(shù)ZDO_Netwo rk Discovery ConfirmCB(),系統(tǒng)就是通過該函數(shù)來得到發(fā)現(xiàn)的網(wǎng)絡(luò)信息。在發(fā)現(xiàn)有已經(jīng)建好的ZigBee網(wǎng)絡(luò)后,調(diào)用NLME_JoinRequest()加入網(wǎng)絡(luò),同時(shí)產(chǎn)生回調(diào)函數(shù)ZDO_JoinConfirmCB(),通過該函數(shù)判斷加入網(wǎng)絡(luò)是否成功。路由器在網(wǎng)絡(luò)中負(fù)責(zé)信息的轉(zhuǎn)發(fā),發(fā)現(xiàn)鄰居等,同時(shí)路由器必須在另一個(gè)路由的射頻范圍內(nèi),并且持續(xù)監(jiān)聽網(wǎng)絡(luò)內(nèi)傳遞的新信息。終端節(jié)點(diǎn)負(fù)責(zé)各種數(shù)據(jù)的采集與上傳以及接收下傳命令并執(zhí)行,同時(shí)監(jiān)聽網(wǎng)絡(luò)。
3.2 自愈功能的實(shí)現(xiàn)
如果在網(wǎng)絡(luò)的正常運(yùn)行情況下,有路由器因故障離網(wǎng),導(dǎo)致原有的路由線路破壞。ZigBee提供了實(shí)現(xiàn)網(wǎng)絡(luò)自愈功能的基礎(chǔ),在用戶研發(fā)的軟硬件配合下,可以實(shí)現(xiàn)強(qiáng)大的網(wǎng)絡(luò)自愈功能,使得整個(gè)網(wǎng)絡(luò)不因個(gè)別節(jié)點(diǎn)的變動而能持續(xù)工作。終端節(jié)點(diǎn)在這種情況下,又會再次啟動發(fā)現(xiàn)網(wǎng)絡(luò)加入網(wǎng)絡(luò)的過程。但,前提是在終端節(jié)點(diǎn)的射頻范圍內(nèi)存在著可用的路由器。在Z_Stack協(xié)議棧中,通過調(diào)用zb_ReadConfiguration()可以訪問非易失性存儲器NV中的信息,其中包括節(jié)點(diǎn)的設(shè)備類型logicalType,節(jié)點(diǎn)的IEEE地址,節(jié)點(diǎn)的啟動模式startOptions等重要信息,同時(shí)也可以通過調(diào)用zh_WriteComqguration()來寫入這些設(shè)備信息,能夠在協(xié)議棧中靈活的配置網(wǎng)絡(luò)節(jié)點(diǎn),實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的自啟動、自組網(wǎng)以及自愈等功能,提高了網(wǎng)絡(luò)的穩(wěn)定性、健壯性也同時(shí)提高了網(wǎng)絡(luò)的工作效率。
3.3 所研發(fā)網(wǎng)絡(luò)的一個(gè)應(yīng)用例子
在像無人值守通信基站(或局站)等重要場合,需對基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)實(shí)時(shí)監(jiān)控。采用本網(wǎng)絡(luò)對基站的各種參數(shù)進(jìn)行采集,軟件設(shè)計(jì)主要在Z_Stack協(xié)議棧的應(yīng)用層上實(shí)現(xiàn)。各種參數(shù)信號經(jīng)過外部調(diào)理電路處理后連接到CC2530的模擬IO口,CC2530的ADC轉(zhuǎn)換模塊采集各個(gè)參數(shù)并在內(nèi)部進(jìn)行定標(biāo)和各種運(yùn)算處理。處理后的數(shù)據(jù)部分供給采集子節(jié)點(diǎn)本地使用;部分需上傳的數(shù)據(jù)經(jīng)過CC2530的系統(tǒng)觸發(fā)數(shù)據(jù)傳送事件,調(diào)用afStatus_tAF_DataRequest()將數(shù)據(jù)無線發(fā)送給協(xié)調(diào)器。
協(xié)調(diào)器接收到各種測量參數(shù)對應(yīng)的無線數(shù)據(jù)后直接發(fā)送至登記注冊過的端點(diǎn)。應(yīng)用程序?qū)⑼ㄟ^AF_INCOMING_MSG_CMD OSAL消息事件處理接收到的數(shù)據(jù)包(包內(nèi)主要有:數(shù)據(jù)組號group ID、發(fā)送節(jié)點(diǎn)的網(wǎng)絡(luò)地址、端點(diǎn)號、數(shù)據(jù)類型以及各種測量參數(shù)對應(yīng)的數(shù)據(jù))。協(xié)調(diào)器通過對數(shù)據(jù)包的分析,準(zhǔn)確的提取出所需要的節(jié)點(diǎn)號以及各種測量參數(shù)數(shù)據(jù),最后通過GPRS通信方式將采集的數(shù)據(jù)上傳到監(jiān)控中心,實(shí)現(xiàn)對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的實(shí)時(shí)監(jiān)控。
4 結(jié)束語
文中分析了ZigBee協(xié)議體系結(jié)構(gòu)各層主要功能,以及ZigBee網(wǎng)絡(luò)中兩種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);研究分析了TI的Z_Stack協(xié)議棧的開發(fā)與工作流程,以及自組網(wǎng)、自愈組網(wǎng)的協(xié)議開發(fā)過程?;贑C2530無線單片機(jī)硬件平臺設(shè)計(jì)了一個(gè)具有自組網(wǎng)、自愈功能的ZigBee無線傳感器網(wǎng)絡(luò),很好地實(shí)現(xiàn)了網(wǎng)絡(luò)的自組網(wǎng)和自愈功能,同時(shí)完成了對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的實(shí)時(shí)監(jiān)控。該系統(tǒng)應(yīng)用廣泛,還可以用在其他工業(yè)遠(yuǎn)程測控、路燈遙測遙控以及環(huán)境監(jiān)測等無人值守領(lǐng)域,有非常好的應(yīng)用前景和顯著的社會經(jīng)濟(jì)效益。