基于ZigBee的自愈自組網的設計與應用
3.1 自組網的設計
ZigBee無線網絡中,只有一個節(jié)點作為協(xié)調器,其他節(jié)點都是路由器或終端。網絡中每個節(jié)點都有兩個地址:64位IEEE擴展地址和16位網絡地址。64位IEEE擴展地址類似于MAC地址,它唯一的標識著每一個設備。16位的網絡地址在節(jié)點加入網絡時由其父節(jié)點(協(xié)調器或路由器)動態(tài)分配,該地址僅在路由或者數(shù)據(jù)傳輸時使用。
ZigBee無線網絡有兩種地址模式,靜態(tài)地址分配和樹狀地址分配。協(xié)調器確定整個網絡節(jié)點數(shù)目,每個節(jié)點都擁有一個網絡深度,用以指示在其父子鏈路上數(shù)據(jù)傳輸?shù)絽f(xié)調器所需的最小跳數(shù)。協(xié)調器的深度為0,而它的孩子節(jié)點深度為1。可知,多跳網絡中深度大于1,網絡深度是由協(xié)調器來決定的。ZigBee網絡中,假設一個父節(jié)點有最大孩子節(jié)點數(shù)為Cm,網絡最大深度為Lm,一個父節(jié)點的最大路由數(shù)為Rm,可以計算網絡中每個節(jié)點的功能函數(shù)Cskip(d):
式中d是節(jié)點到協(xié)調器的深度。如果Cskip(d)的值為0,則表明此節(jié)點為葉子節(jié)點,而Cskip(d)的值大于0,則表明該節(jié)點可作為一個父節(jié)點,這個父節(jié)點可以接收子節(jié)點并根據(jù)它們是否具有路由能力來分配地址。具體過程是:首先一個子節(jié)點的地址被分配,子節(jié)點地址比父節(jié)點的地址多1,然后其余節(jié)點根據(jù)下式求出:
An=Aparent+Cskip(d)*Rm+n (2)
式中1≤n≤(Cm-Rm),Aparent代表父節(jié)點的地址。
ZigBee協(xié)調器在上電后,首先要建立一個無線網絡。在Z_Stack協(xié)議棧中,通過函數(shù)ZDApp_NetworkInit()進行網絡初始化,系統(tǒng)檢測到ZDP任務的ZDO_NETWORK_INIT事件,調用處理函數(shù)ZDO_StartDevice()啟動網絡的組建。通過變量logicalType判斷設備類型,如為協(xié)調器,則調用ZStatus_t NLME_NetworkFormationRequest()來完成網絡的組建,同時該函數(shù)產生一個回調函數(shù)ZDO_Network Formation ConfirmCB(),通過該函數(shù),根據(jù)系統(tǒng)消息判斷網絡組建是否成功。
當網絡建立完成并允許新設備加入時,子設備(即子節(jié)點)才可以請求加入網絡。在Z_Stack協(xié)議棧中,子節(jié)點上電后調用ZDApp_Networkl nit()進行網絡初始化,之后調用NLME_NetworkDiscovery Request()來尋找射頻范圍內存在的ZigBee網絡,該函數(shù)會產生回調函數(shù)ZDO_Netwo rk Discovery ConfirmCB(),系統(tǒng)就是通過該函數(shù)來得到發(fā)現(xiàn)的網絡信息。在發(fā)現(xiàn)有已經建好的ZigBee網絡后,調用NLME_JoinRequest()加入網絡,同時產生回調函數(shù)ZDO_JoinConfirmCB(),通過該函數(shù)判斷加入網絡是否成功。路由器在網絡中負責信息的轉發(fā),發(fā)現(xiàn)鄰居等,同時路由器必須在另一個路由的射頻范圍內,并且持續(xù)監(jiān)聽網絡內傳遞的新信息。終端節(jié)點負責各種數(shù)據(jù)的采集與上傳以及接收下傳命令并執(zhí)行,同時監(jiān)聽網絡。
3.2 自愈功能的實現(xiàn)
如果在網絡的正常運行情況下,有路由器因故障離網,導致原有的路由線路破壞。ZigBee提供了實現(xiàn)網絡自愈功能的基礎,在用戶研發(fā)的軟硬件配合下,可以實現(xiàn)強大的網絡自愈功能,使得整個網絡不因個別節(jié)點的變動而能持續(xù)工作。終端節(jié)點在這種情況下,又會再次啟動發(fā)現(xiàn)網絡加入網絡的過程。但,前提是在終端節(jié)點的射頻范圍內存在著可用的路由器。在Z_Stack協(xié)議棧中,通過調用zb_ReadConfiguration()可以訪問非易失性存儲器NV中的信息,其中包括節(jié)點的設備類型logicalType,節(jié)點的IEEE地址,節(jié)點的啟動模式startOptions等重要信息,同時也可以通過調用zh_WriteComqguration()來寫入這些設備信息,能夠在協(xié)議棧中靈活的配置網絡節(jié)點,實現(xiàn)整個網絡的自啟動、自組網以及自愈等功能,提高了網絡的穩(wěn)定性、健壯性也同時提高了網絡的工作效率。
3.3 所研發(fā)網絡的一個應用例子
在像無人值守通信基站(或局站)等重要場合,需對基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)實時監(jiān)控。采用本網絡對基站的各種參數(shù)進行采集,軟件設計主要在Z_Stack協(xié)議棧的應用層上實現(xiàn)。各種參數(shù)信號經過外部調理電路處理后連接到CC2530的模擬IO口,CC2530的ADC轉換模塊采集各個參數(shù)并在內部進行定標和各種運算處理。處理后的數(shù)據(jù)部分供給采集子節(jié)點本地使用;部分需上傳的數(shù)據(jù)經過CC2530的系統(tǒng)觸發(fā)數(shù)據(jù)傳送事件,調用afStatus_tAF_DataRequest()將數(shù)據(jù)無線發(fā)送給協(xié)調器。
協(xié)調器接收到各種測量參數(shù)對應的無線數(shù)據(jù)后直接發(fā)送至登記注冊過的端點。應用程序將通過AF_INCOMING_MSG_CMD OSAL消息事件處理接收到的數(shù)據(jù)包(包內主要有:數(shù)據(jù)組號group ID、發(fā)送節(jié)點的網絡地址、端點號、數(shù)據(jù)類型以及各種測量參數(shù)對應的數(shù)據(jù))。協(xié)調器通過對數(shù)據(jù)包的分析,準確的提取出所需要的節(jié)點號以及各種測量參數(shù)數(shù)據(jù),最后通過GPRS通信方式將采集的數(shù)據(jù)上傳到監(jiān)控中心,實現(xiàn)對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的實時監(jiān)控。
4 結束語
文中分析了ZigBee協(xié)議體系結構各層主要功能,以及ZigBee網絡中兩種網絡拓撲結構;研究分析了TI的Z_Stack協(xié)議棧的開發(fā)與工作流程,以及自組網、自愈組網的協(xié)議開發(fā)過程?;贑C2530無線單片機硬件平臺設計了一個具有自組網、自愈功能的ZigBee無線傳感器網絡,很好地實現(xiàn)了網絡的自組網和自愈功能,同時完成了對無人值守通信基站的交流電壓、電流和溫濕度環(huán)境等參數(shù)的實時監(jiān)控。該系統(tǒng)應用廣泛,還可以用在其他工業(yè)遠程測控、路燈遙測遙控以及環(huán)境監(jiān)測等無人值守領域,有非常好的應用前景和顯著的社會經濟效益。本文引用地址:http://m.butianyuan.cn/article/153494.htm
評論