1、看了好多Zigbee模块的资料,说法不一致,Zigbee2006协议中相关的说法为,网络层有个常量是nwkcMaxDepth的值是0x0f,为什么只支持15级呢?
2、默认是5级,当每个路由的终端数都是最大值时,各个中断同时像协调器发送数据,会不会出现数据竞争,网络不稳定的情况?
3、是不是级数越大,对CC2530的内部RAM的需求就越大?现有的8K能支持15级么?
4、实现可靠通信,最多支持多少级路由?
VV:
1, 现在的ZigBee协议栈标准已经是ZigBee Pro了,ZigBee2006 是早期的协议标准。这个0x0F是指广播半径的深度,也就是一个广播数据可以最多转发的次数2*0x0F. 只是一个默认的参考值而已。
#if !defined ( DEF_NWK_RADIUS ) // the default network radius set twice the value of <nwkMaxDepth> #define DEF_NWK_RADIUS ( 2 * BEACON_MAX_DEPTH )#endif
2, 看同时发数据的设备个数,如果是同时刻竞争方式发数据的话,肯定会有问题。有大量的重发和丢包现象。
3, 只能说是有关系,CC2530的RAM在网络参数上,主要保存了子设备的信息,邻居表信息,路由表信息,那么你这些表格设的越大RAM开销也就越大。如果你的级数很大,但是只一个设备连另外一个设备的话,这样消耗的RAM也不会很大。
4,看实际应用的需求和实际应用场景
Emily:
回复 VV:
谢谢,那网络中,某个节点退出网络时(认为节点有故障),协调器能发现、定位故障节点吗?
VV:
回复 Emily:
如果是主动离开的,会发送leave消息出来。
如果是因为电池能量不足离开的,或者故障等离开,只能是应用层做相关的心跳机制了。
但是对于End device,现在Z-stack Home 1.2.0协议栈里面加入了child aging功能,如果节点长时间不跟父节点通信,父节点会把节点信息删除掉
Emily:
回复 VV:
谢谢,在这个网络中,都是协调器主动向目的设备发起数据,那End device 会不会主动向协调器或者父节点主动发送数据呢。
节点长时间不与父节点通信,父节点删除这个节点信息之前会进行一下消息确认吗?一般这个时间有多长呢?
我们在使用的时候,可能会 一天让节点执行两次,也会一个多月不去用它,让他工作在深度睡眠模式下,直到有个外部中断信号触发唤醒。
另外,即使父节点把这个节点信息删除,是不是等节点醒来还会自动加入网络?
VV:
回复 Emily:
// Child table Management timeout values
CONST uint16 gKEEPALIVE_TIMEOUT_MAX = KEEPALIVE_TIMEOUT_MAX; //在协议栈运行过程中,被初始化以后就不会变化了,用来表示节点最大的Age时间可以是60分钟
CONST uint16 gTIMEOUT_COUNTER_MAX = TIMEOUT_COUNTER_MAX;//在协议栈运行过程中是动态变化的,协议栈中有一个1分钟的循环timer event,当timer event触发的时候,会去检测在这个在一分钟是否有收到Data request,或者其他数据,如果没有的话就会把timeoutCounter减1,如果连续60分钟没有收到的话就把这个节点放到另外一个not child 的list里面去了,在中途只要收到一条来自这个节点的数据,这个counter立刻被Reset成初始化60,这个值就是通过endDevKaTimeout获得的。
当有新的RFD设备入网的时候,初始化RFD设备的Aging Timeout时间为60分钟。
ZDO_ProcessEndDeviceTimeoutReq 就是你说的功能。
gancheng:
回复 VV:
我知道路由的nwk_link_status包会重置age,这在2.6之前的core就有,最新的HA协议栈里面,终端节点发送的除了data request,其他任何数据都能重置age吗?
VV:
回复 gancheng:
发送数据的时候,必定会发送data request,用data request来做标记
gancheng:
回复 VV:
这个不一定吧,比如一种情况,终端设置成RxOnWhenIdle=true的时候。
VV:
回复 gancheng:
对的,如果把终端节点设置为Rx always on,那还不如设置成路由呢!
dongwei jiao:
回复 VV:
一个zigbee网络中,pan id应该是唯一的吧?
网络中一台A协调器连接N台路由设备,短地址是A协调器分配的?如果同一台路由设备连接到另外一台B协调器上,再次重新组网到A设备上,这时短地址应该是重新
分配?这个网络如果最多能连接20台设备,比如5台设备反复更换网络,会把地址沾满,导致A协调器不能在连接这5台设备?
如果上述问题存在,那又如何解决连接问题呢?
谢谢