微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZStack每级的最大路由器个数问题

ZStack每级的最大路由器个数问题

时间:10-02 整理:3721RD 点击:

我有个疑问,还请论坛的高手帮忙解答下,谢谢。

在ZStack的nwk_globals.c文件里面有如下定义:

#if ( STACK_PROFILE_ID == ZIGBEEPRO_PROFILE )
  uint8 CskipRtrs[1] = {0};
  uint8 CskipChldrn[1] = {0};
#elif ( STACK_PROFILE_ID == HOME_CONTROLS )
  uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0};
  uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};
#elif ( STACK_PROFILE_ID == GENERIC_STAR )
  uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
  uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
  uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
  uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#endif // STACK_PROFILE_ID

如果是HOME_CONTROLS时,默认的路由深度为5级,每级最多的路由节点数为6.

那如果profile为ZIGBEEPRO_PROFILE时,每级的最大路由节点数怎么确定呢?

还有ZStack里面的这个宏定义:#define NWK_MAX_ROUTERS           6也是表示每级最大路由器节点数为6,那这个宏与前面的数组有什么关系呢?

我实际测试:STACK_PROFILE_ID == ZIGBEEPRO_PROFILE的情况下,网络中有70多个路由器,协调器下就挂了18个路由器。从这个现象看#define NWK_MAX_ROUTERS           6这个宏定义好像没有作用。而且这种profile下的 路由器和子节点数组定义如下:

  uint8 CskipRtrs[1] = {0};
  uint8 CskipChldrn[1] = {0};

这是什么原因呢?

@bx da,

请问你的协议栈版本是多少?

目前协议协议栈里面,一个路由器下面最多可以接多少路由,就是最多能接多少个设备数了,

定义在nwk_globals.h 

// Maximum number in tables
#if !defined( NWK_MAX_DEVICE_LIST )
#define NWK_MAX_DEVICE_LIST 20 // Maximum number of devices in the
// Assoc/Device list.
#endif

VV你好,

谢谢你的解答,我现在用的协议栈版本是2.5.1.a,那是不是这个宏定义#define NWK_MAX_ROUTERS           6已经没有作用呢?

从下面这段代码看:

#if ( STACK_PROFILE_ID == ZIGBEEPRO_PROFILE )
  uint8 CskipRtrs[1] = {0};
  uint8 CskipChldrn[1] = {0};
#elif ( STACK_PROFILE_ID == HOME_CONTROLS )
  uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {6,6,6,6,6,0};
  uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {20,20,20,20,20,0};
#elif ( STACK_PROFILE_ID == GENERIC_STAR )
  uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
  uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
  uint8 CskipRtrs[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
  uint8 CskipChldrn[MAX_NODE_DEPTH+1] = {5,5,5,5,5,0};
#endif // STACK_PROFILE_ID

是不是我把STACK_PROFILE_ID设置为HOME_CONTROLS每个路由器下能挂载的最大路由器个数为6,最多设备数为20,MAX_NODE_DEPTH为5?

如果STACK_PROFILE_ID设置为ZIGBEEPRO_PROFILE,这些数组定义和NWK_MAX_ROUTERS就没有作用了?

是的 没有作用的

为什么我的程序里边连了16个就不行了  我的NWK_MAX_DEVICE_LIST就是20

可能是AssociatedDevList满了

最大路由级数一般多少合理?

VV,你好!

如果STACK_PROFILE_ID设置为ZIGBEEPRO_PROFILE话,能否设置每级EndDevice和Router的数量,我担心设备太多时,End把所有位置都占了,导致Router入不了网。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top