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