硬件平台是CC2530,协议栈是Z-Stack Home 1.2.2a.44539。主要问题是终端节点采用电池供电。当网络中的协调器和路由节点均断电的情况下,终端节点的电池会很快耗完。为了解决这个问题,我想要了解终端节点发现自己掉网的过程。通过实验发现下面的现象:
1、当终端节点未与其他节点绑定,且poll rate为默认的1000ms的时候,当网络中的其他节点均断电后,终端节点在发出5次DATA REQUEST(每次会重复发出4个包,应该是MAC的重传)请求后,会认为自己掉网,重新启动加入网络过程,发送beacon request.
2、当终端节点与其他节点绑定,poll rate为默认的1000ms的时候,当网络中的其他节点均断电后,终端节点会持续发出几百次DATA REQUEST(每次会重复发出4个包,应该是MAC的重传),等了不到10分钟,终端节点也未重新启动加入网络过程,只是不断的每秒发送一次DATA REQUEST
3、当终端节点与其他节点绑定,poll rate改为3分钟时,当网络中的其他节点均断电后,终端节点会发出2次DATA REQUEST(每次也会重复发出3到4个不等的包),然后就不再有任何包发出。
问题如下:
1、判定自身掉网的条件在与其它节点绑定与否上是否有区别?
2、POLL RATE设为3分钟,会造成判定掉网出现问题吗?
3、在没有协调器和其它路由节点的情况下,应该如何避免终端节点不断发送BEACON REQUEST而导致耗完电源
xiaohui bu:
1、判断自身掉网,就是连续几次发送失败。节点就认为自身掉网。一般就是data request发送几次没有收到父节点的ack。这个次数是可以配置的。
2、POLL RATE设为3分钟。这个时间太长,一般小于7S。不过你可以调用POLL RATE相关函数去手动发送Data Request。
3、当节点掉线后,可以加大发送beacon rquest的时间间隔。或者有start \ stop函数开始\停止。这个都是有相关参数和接口可以实现的。
希望可以帮助你!
suowei wu1:
回复 xiaohui bu:
谢谢你的帮助。
1、给出的是节点掉网判断机制,具体代码在哪里能告知吗?
2、不小于7S的依据能告知吗?
xiaohui bu:
回复 suowei wu1:
在配置文件f8wconfig.cfg里面
1、-DNWK_INDIRECT_MSG_TIMEOUT=7
2、-DMAX_POLL_FAILURE_RETRIES=2