基于ZigBee的自愈自組網(wǎng)的設(shè)計(jì)與應(yīng)用
3.1 自組網(wǎng)的設(shè)計(jì)
ZigBee無線網(wǎng)絡(luò)中,只有一個節(jié)點(diǎn)作為協(xié)調(diào)器,其他節(jié)點(diǎn)都是路由器或終端。網(wǎng)絡(luò)中每個節(jié)點(diǎn)都有兩個地址:64位IEEE擴(kuò)展地址和16位網(wǎng)絡(luò)地址。64位IEEE擴(kuò)展地址類似于MAC地址,它唯一的標(biāo)識著每一個設(shè)備。16位的網(wǎng)絡(luò)地址在節(jié)點(diǎn)加入網(wǎng)絡(luò)時由其父節(jié)點(diǎn)(協(xié)調(diào)器或路由器)動態(tài)分配,該地址僅在路由或者數(shù)據(jù)傳輸時使用。
ZigBee無線網(wǎng)絡(luò)有兩種地址模式,靜態(tài)地址分配和樹狀地址分配。協(xié)調(diào)器確定整個網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)目,每個節(jié)點(diǎn)都擁有一個網(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è)一個父節(jié)點(diǎn)有最大孩子節(jié)點(diǎn)數(shù)為Cm,網(wǎng)絡(luò)最大深度為Lm,一個父節(jié)點(diǎn)的最大路由數(shù)為Rm,可以計(jì)算網(wǎng)絡(luò)中每個節(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)可作為一個父節(jié)點(diǎn),這個父節(jié)點(diǎn)可以接收子節(jié)點(diǎn)并根據(jù)它們是否具有路由能力來分配地址。具體過程是:首先一個子節(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)器在上電后,首先要建立一個無線網(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ù)產(chǎn)生一個回調(diào)函數(shù)ZDO_Network Formation ConfirmCB(),通過該函數(shù),根據(jù)系統(tǒng)消息判斷網(wǎng)絡(luò)組建是否成功。
當(dāng)網(wǎng)絡(luò)建立完成并允許新設(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ò),同時產(chǎn)生回調(diào)函數(shù)ZDO_JoinConfirmCB(),通過該函數(shù)判斷加入網(wǎng)絡(luò)是否成功。路由器在網(wǎng)絡(luò)中負(fù)責(zé)信息的轉(zhuǎn)發(fā),發(fā)現(xiàn)鄰居等,同時路由器必須在另一個路由的射頻范圍內(nèi),并且持續(xù)監(jiān)聽網(wǎng)絡(luò)內(nèi)傳遞的新信息。終端節(jié)點(diǎn)負(fù)責(zé)各種數(shù)據(jù)的采集與上傳以及接收下傳命令并執(zhí)行,同時監(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ò)自愈功能,使得整個網(wǎng)絡(luò)不因個別節(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等重要信息,同時也可以通過調(diào)用zh_WriteComqguration()來寫入這些設(shè)備信息,能夠在協(xié)議棧中靈活的配置網(wǎng)絡(luò)節(jié)點(diǎn),實(shí)現(xiàn)整個網(wǎng)絡(luò)的自啟動、自組網(wǎng)以及自愈等功能,提高了網(wǎng)絡(luò)的穩(wěn)定性、健壯性也同時提高了網(wǎng)絡(luò)的工作效率。
3.3 所研發(fā)網(wǎng)絡(luò)的一個應(yīng)用例子
在像無人值守通信基站(或局站)等重要場合,需對基站的交流電壓、電流和溫濕度環(huán)境等參數(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)換模塊采集各個參數(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í)時監(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ì)了一個具有自組網(wǎng)、自愈功能的ZigBee無線傳感器網(wǎng)絡(luò),很好地實(shí)現(xiàn)了網(wǎng)絡(luò)的自組網(wǎng)和自愈功能,同時完成了對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的實(shí)時監(jiān)控。該系統(tǒng)應(yīng)用廣泛,還可以用在其他工業(yè)遠(yuǎn)程測控、路燈遙測遙控以及環(huán)境監(jiān)測等無人值守領(lǐng)域,有非常好的應(yīng)用前景和顯著的社會經(jīng)濟(jì)效益。本文引用地址:http://www.ex-cimer.com/article/153494.htm
評論