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.

关于大量ZED断网后无法重新入网的问题,求救!

Other Parts Discussed in Thread: CC2530

       1. 我有一个网络是CC2530, 2.5.1a的协议栈。
       2. 其中1个协调器C,3个路由器R,47个终端节点E;
       3. 通信模式:周期性7.5s:C发送广播报文,然后路由器R和终端E接收到广播后,按照各自的间隔(大概140ms)发送报文给C;采用MTO模式。
       4. 正常运行。PANID: 1601, CH: 16信道;
       问题:
       1. 当C挂掉(或者重新更新了里面的程序),重新将C接入网络后,PADID自动为1602 ;R和C无法重新入网。
           将R全部断点,剩余47个E,将E做退网处理,重新发起beacon,持续发送beacon,C有回复(并且开启允许入网),但是极难入网,非常难得可以加入1~3个。
附件是无法入网的报文,请专家们帮忙看看。
无法入网报文0330.psd
  • 你的设备是使能了NV_RESTORE的,所以所有设备都保存了网络参数。 

    当你的协调器重新烧写过程序以后,相关的网络参数被擦除了。

    在组网的时候首先去信道里面检测有没有和自己设备的PANID一样的网络存在,发现有1601,因为路由器还在正常工作。所以检测和自己要建立的网络PANID冲突的网络存在。

    所以变成了PANID+1的情况,对应的代码是

    /*********************************************************************
     * @fn      ZDApp_CoordStartPANIDConflictCB()
     *
     * @brief   Returns a PAN ID for the network layer to use during
     *          a coordinator start and there is another network with
     *          the intended PANID.
     *
     * @param   panid - the intended PAN ID
     *
     * @return  PANID to try
     */
    uint16 ZDApp_CoordStartPANIDConflictCB( uint16 panid )
    {
      return ( panid + 1 );
    }

    对你断网的节点的来说,一直在尝试着加到原先网络里面其他的设备上面去,但是发现两个路由已经被加满了。

    // 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

    如果协调器在更新过程序以后原先的网络通信的话,如果在网络没有加密的情况下,把PANID,信道,还有ExtendPANID,保存下来写到新的设备上面去。

  • 谢谢VV,确实有漏网的R没有断电,导致原先的网络还存在。