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

mesh1.0终端长时间休眠,唤醒后被退网

第一个问题:请问为什么终端长时间休眠,唤醒后协调器会对其发出leave?

第二个问题:在抓包文件中第16行,可以看到协调器发出的leave是带有rejoin。可是终端并没有执行rejoin步骤,请问是否是休眠功能影响到了rejoin。

附件:

休眠后醒来被退网.rar

Viki Shi:

协调器长时间没有收到节点的应答包,认为该节点已经断线。  更正,你的协议栈是MESH 1.0,这个版本没有childaging

你的poll rate 设置为多少?

Alvin Chen:

1.不会
2.你ZC发送Leave时你的ZED没有收到。

你设备如果在低功耗下时无法接收ZC的数据包的。
此外你应该看看你的ZC时由于什么发出Leave

user5032796:

回复 Viki Shi:

终端休眠的时候poll rate是0;
我通过开关选择消息上报速率:第一级:每隔10s醒来上报一次数据。第二级:完全不上报数据。
由第一级切换到第二级后,终端进入长时间休眠(测试大约8分钟)。
再通过开关由第二级切换到第一级,终端上报一条信息,然后就被leave了。
休眠部分代码:NLME_SetPollRate( 0 );NLME_SetQueuedPollRate( 0);NLME_SetResponseRate( 0 );ZDApp_StopJoiningCycle();osal_pwrmgr_device(PWRMGR_BATTERY);
唤醒部分代码:osal_pwrmgr_device(PWRMGR_ALWAYS_ON);NLME_SetPollRate( 500 );NLME_SetQueuedPollRate( 100);NLME_SetResponseRate( 100 );

Alvin Chen:

回复 user5032796:

你自己有没有做终端管理的机制,你上报和leave 没有太大关系,此外有个问题,你已经在网络中为什么要调用下面的函数:
ZDApp_StopJoiningCycle();
ZDApp_startJoiningCycle();

我怀疑是你这个造成的。
你设备两端是否开启了NV restore? . 请移除这两个函数再去试一下。

user5032796:

回复 Alvin Chen:

管理机制已经我屏蔽掉了。两端都是有开启NV的。
我注释掉这两个函数,再测试下。

yong zhou3:

回复 user5032796:

我也遇到了

赞(0)
未经允许不得转载:TI中文支持网 » mesh1.0终端长时间休眠,唤醒后被退网
分享到: 更多 (0)