ZigBee網絡地址的分配
一、ZigBee 有兩種類型的地址:一種是 64 位 IEEE 地址,即 MAC 地址, 另一種是 16 位的網絡地址。
?。?) 64 位的IEEE地址是一個全球唯一的地址,一經分配就將跟隨設備一生。它通常由制造商或者被安裝時設置。這些地址由 IEEE 組織來維護和分配。
問題:用Z-stack 協議棧編程,64位IEEE地址是否是芯片自帶的,還是需要在編程時給予賦值?這點需要繼續(xù)深入研究后找出答案
?。?) 16 位網絡地址是當設備加入網絡后分配的, 它在網絡中是唯一的,用來在網絡中鑒別設備和發(fā)送數據。
二、網絡地址的分配
?。?) ZigBee使用分布式尋址方案來分配網絡地址。 這個方案保證整個網絡中所有分配出去的地址都是唯一的,同時,這個尋址算法本身的分布特性保證設備只能與它的父輩設備通訊來接收一個唯一的網絡地址。
(2) 在每個路由加入之前,尋址方案需要知道和配置一些參數,這些參數是: MAX_DEPTH, MAX_ROUTERS, MAX_CHILDREN。 這些參數是協議棧的一部分,在ZigBee2006中MAX_DEPTH = 5,MAX_ROUTERS = 6, MAX_CHILDREN = 20。
?。╝) MAX_DEPTH 決定了網絡的最大深度, 協調器位于深度0 , 其子設備位于深度1, 其子子設備位于深度2 ……
?。╞) MAX_CHILDREN 決定了一個路由或者一個協調器節(jié)點可以處理的子節(jié)點的最大個數
?。╟) MAX_ROUTERS 決定了一個路由或者協調器節(jié)點可以處理的具有路由功能的子節(jié)點的最大個數,這個參數是 MAX_CHILDREN 的一個子集。
?。?) 如果開發(fā)時想改變這些值, 需完成以下幾個步驟:
?。╝) 首先要保證這些參數的新植要合法,整個地址空間不能超過 2^16, 這就限制的參數能設置的最大值。可以使用 projectStack ools文件夾下的CSkip.xls文件來確認這些值是否合法。當表格中設置的數據不合法時,就會出現錯誤提示。
(b) 其次,還要保證不再使用標準的棧配置, 取而代之的是使用網絡自定義的棧配置(例如:在 nwk_globals.h中將STACK_PROFILE_ID改為 NETWORK_SPECIFIC),然后設置nwk_globals.h文件中的MAX_DEPTH參數為一個適當的值。
(c) 最后,還要設置 nwk_golbals.c文件中的Cskipchldrn數組和CskipRtrs數組,這些數組的值由MAX_ROUTERS, MAX_CHILDREN構成。