This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530 zstack2.5.1a 协调器挂大量节点,部分节点无法入网

Other Parts Discussed in Thread: CC2530, CC2538

大家好,我这边有个测试环境,用的是zstack2.5.1a,协调器下挂40个节点,NWK_MAX_DEVICE_LIST为40,前面两天做老化测试没有问题,第三天发现有两个节点一直无法加入网络,原本怀疑是关联表溢出导致,但是手动清除关联表后节点还是无法加入。抓包发现,reset关联表后两个节点的beacon超帧中的assoc为1,但是过一会儿又变成0,dev.cap也为0,Rtr_cap也为0.其他节点加入正常的时候assoc为1,dev.cap为1,Rtr_cap也为1.请问这几个参数是什么意思,还有这种情况是协调器方面禁止设备入网了吗?第一次发帖,不会截图,请多指教。下面上传的是抓包数据0361.40个灯掉线.psd

  • 大家好,我这边有个测试环境,用的是zstack2.5.1a,协调器下挂40个节点,NWK_MAX_DEVICE_LIST为40,前面两天做老化测试没有问题,第三天发现有两个节点一直无法加入网络,原本怀疑是关联表溢出导致,但是手动清除关联表后节点还是无法加入。抓包发现,reset关联表后两个节点的beacon超帧中的assoc为1,但是过一会儿又变成0,dev.cap也为0,Rtr_cap也为0.其他节点加入正常的时候assoc为1,dev.cap为1,Rtr_cap也为1.请问这几个参数是什么意思,还有这种情况是协调器方面禁止设备入网了吗?40个灯掉线.psd

  • 请问您的协调器是不是使能了NV_RESTORE,之前是不是有其他的设备加过,已经把协调器加满了?

    建议您重新擦除烧写协调器上的程序试试
  • 使能了NV_RESTORE,重新烧写协调器程序是可以,这个是测试节点数量最大化的场景,但是不希望通过烧写协调器程序来解决,还有别的办法不,我手动reset关联表之后第一次可以解决,后面出现的时候无法解决,需要reset后复位才能解决。现在定义NWK_MAX_DEVICE_LIST为40,设备数也是40。

  • 请问您现在的协调器用的是CC2530?协调器下直接挂40个终端节点作为子节点?
    The maximum number of devices that can be supported by one router or coordinator (i.e. associated devices) is 32. This is because we use a 32-bit bitmask to keep track of assigned addresses. Therefore, the NWK_MAX_DEVICE_LIST should be set to 32 maximum.
  • 是的,那意思是最多只能用32个节点作为测试了?那继续出现这个问题应该怎么解决,也是必须reset关联表后复位吗?其实问题现象是所有设备已经连上,两天后有几个设备无法加入网络。还有请教一下这个资料是哪个文件上写有的
  • 好像用MTO方案就不会有这个问题了,不然关联表岂不是限制了coordinator下面的设备数量? 再说了还有router呢
  • 谢谢,请教一下MTO方案具体是指什么,还有节点数量超过了32就是确定会出现无法入网的问题吗?具体原因是因为TI用的32位掩码去维护关联表,如果再出现该问题,那我应该多久reset这个关联表才合理呢。
  • 不是说超过32个就无法入网,而是一个router下面最多只能挂32个,那你想想32的n次方是多少个吧,MTO就是(many to one)方式,具体怎么打开参考一下AN123文档swra427c.pdf

  • 这里有个问题需要澄清下,他遇到的问题并不是说通信上的,而且网络的容量问题。
    你提到的MTO只是通信的路由算法,跟他遇到的加网问题还不太一样。
  • 现在遇到新的问题,把NWK_MAX_DEVICE_LIST定义为32个,一个协调器下面挂了32个终端,过了5天之后还是会掉线,并且一直连不上,抓包后发现rtr.cap,dev.cap都为0,assoc也是为0,然后手动用AssocRemove把不在线的终端清除很多次还是有一两个掉线,想知道为什么会掉线,什么原因导致dev.cap为0,是因为有非法设备申请入网导致协调器的关联表溢出吗?会不会也有可能是终端收不到mac ack然后掉线重连却加不进来了
  • 你好,

    终端为什么会掉线? 

    这个原因比较简单,节点发送数据给协调器连续几次没有收MAC ACK就会出现断线。 但是断线以后节点的状态是Rejoin状态,而且你的测试里面只有一个Coordinator可以作为父设备,所以即便在Coordinator回出来的Beacon里面,rtr.cap,dev.cap都为0,assoc也是为0都为0,节点也可以发送Rejoin Request去重新加网。

    所以这里你第一个需要验证的问题是,当你把AssocRemove以后,原先断线的节点是通过什么方式入网的?是通过Rejoin Request入网,还是通过Assocation Request 来入网的? 

    另外你的协调器在加完32个设备以后,有没有把Permit Join关掉,防止别的设备加进来。

  • 建议ZC和ZR更换为CC2538,ZED保持CC2530,CC2530速度慢,资源紧张。