Zigbee設備地址分配

原文地址:點擊打開鏈接


Zigbee有兩種地址分配方式:分佈式分配機制和隨機分配機制。

 

1.隨機分配機制

隨機分配機制是指當NIB的nwkAddrAlloc值爲0x02 時,地址隨機選擇。在這種情況下nwkMaxRouter就無意義了。隨機地址分配應符合NIST測試中的描述 。當一個設備加入網絡使用的是Mac地址,其父設備應選擇一個尚未分配過的隨機地址。一旦設備已分配一個地址,它沒有理由放棄該地址,並應予以保留,除非它收到聲明,其地址與另一個設備衝突。此外,設備可能自我指派隨機地址,比如利用加入命令幀加入一個網絡。

 

2.分佈式分配機制

我們知道,每個zigbee設備應該擁有一個唯一的MAC地址。協調器(coordinator)在建立網絡以後使用0x0000做爲自己的短地址。在路由器(router)和終端(enddevice)加入網絡以後,使用父設備給它分配的16位的短地址來通訊。那麼這些短地址是如何分配的呢?

 

 

16位的地址意味着可以分配給65536個節點之多,地址的分配取決於整個網絡的架構,整個網絡的架構由這3個值決定:

 

    1.網絡的最大深度(Lm);

 

    2.每個父親設備擁有的孩子數(Cm);

 

    3.第2條的孩子設備當中有幾個是路由器(Rm)。

 

有了這3個值就可以根據下面的公式來算出某父設備的路由器子設備之間的地址間隔Cskip(d):

 

Cskip(d)計算公式

 

上面這個公式是用來計算位於深度d的父親設備的,它所分配的子路由器之間的短地址間隔。該父親設備分配的第1個路由器地址=父親設備地址+1,分配的第2個路由器地址=父親設備地址+1+Cskip(d),第3個路由器地址=父親設備地址+1+2×Cskip(d),依次類推。

 

計算終端地址:

 

enddevice短地址計算公式

 

這個公式是來計算Aparent這個父親設備分配的第n個終端設備的地址An。

 

 

來舉個簡單的例子,假設有一個Zigbee網絡,最大深度爲3,每個父親的最大孩子數是5,在孩子當中路由器數量是3,如圖所示:

 

 

 

Zigbee網絡結構示意圖

 

 

 

由圖可知,協調器的Cskip(d) = (1+5-3-5×3^(3-0-1))/(1-3) = 21,所以協調器的第一個路由器是1,第二個就是22,換算成十六進制就是0x0016。協調器的第1個終端地址 = 0x0000+21×3+1 = 64 = 0x0040、第2個就是0x0041。由此可見所有同一父親的終端設備的短地址都是連續的。

 

不難看出一旦Lm、Cm、Rm這3個值確定了,整個網絡設備的地址也就確定下來。所以知道了某個設備的短地址就可以計算出它的設備類型和它的父設備地址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章