关于大量ZED断网后无法重新入网的问题,求救!
时间:10-02
整理:3721RD
点击:
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个。
附件是无法入网的报文,请专家们帮忙看看。
你的设备是使能了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没有断电,导致原先的网络还存在。