TI中文支持网
TI专业的中文技术问题搜集分享网站

路由断电后重新上电,设备组不上网

各位大神,求助,急急急!
现在有20多个设备组网,1个协调器,2个路由器,剩下的都终端节点
设备组网成功后,我把路由关电,然后重新上电。
终端设备有时恢复网络失败,rejoin也偶尔失败(这个可能属于正常现象)
但是最严重的时候设备的flash都被改变了(比如ZCD_NV_STARTUP_OPTION),导致我就算重新上电,也无法恢复原有的网络,变成了重新加入网络。
Susan Yang:

请问是否预编译了NV_RESTORE?

jian li20:

回复 Susan Yang:

所有设备都开启的NV_RESTORE,我今天继续运行发现,好像是设备被复位了,但是为什么会被复位呢(频繁插拔路由器)

jian li20:

回复 jian li20:

另外我定义了xWDT_IN_PM1,所以应该不是看门狗

jian li20:

回复 jian li20:

if ( events & ZDO_DEVICE_RESET ) {#ifdef ZBA_FALLBACK_NWKKEY if ( devState == DEV_END_DEVICE_UNAUTH ) { ZDSecMgrFallbackNwkKey(); } else#endif { // Set the NV startup option to force a "new" join. zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE ); // The device has been in the UNAUTH state, so reset // Note: there will be no return from this call SystemResetSoft(); }

继续追踪发现,设备运行到这里了。强制恢复成一个新设备了。

这是什么原因导致的呢?我是否可以把zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE );

jian li20:

回复 jian li20:

继续追踪,发现设备给路由发送了很多的NWK REJOIN REQUEST,然后路由给设备发送了一个NWK LEAVE,设备收到NWK LEAVE之后,复位了设备。

我在路由上开启了CHILD_AGING功能,这会导致路由发送NWK LEAVE命令吗?

jian li20:

回复 jian li20:

求解答,各位大神。

jian li20:

回复 jian li20:

继续追踪发现,

我断开路由器之后,设备显示恢复成孤儿设备,没有其他路由和协调器接收该孤儿设备,

然后设备会去寻找可加入的网络,如果找到可以加入的网络,设备会发送rejoin命令,

此时协调器只能加入6台终端设备,但是有8台设备搜索到可以加入网络,并且都发送了nwk rejoin request,

前6台设备都收到了nwk rejoin response,后2台设备因为AssociatedDevList已满,所以协调器发送了nwk leave

而终端设备收到leave命令后改写了ZCD_NV_STARTUP_OPTION,然后执行了复位。

所以之后设备就按一个新的设备去加入网络了。而不是恢复网络了。

不知道理解是否正确,这是分析包看到的结果。

暂时的改善方法是:

// Set the NV startup option to force a "new" join. //zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE );   //屏蔽了这两句话 // The device has been in the UNAUTH state, so reset // Note: there will be no return from this call //SystemResetSoft();   //屏蔽了这两句话

暂时测试还没有问题。

赞(0)
未经允许不得转载:TI中文支持网 » 路由断电后重新上电,设备组不上网
分享到: 更多 (0)