微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 终端设备网络自愈功能的问题

终端设备网络自愈功能的问题

时间:10-02 整理:3721RD 点击:

我在使用cc2530 ZStack的时候碰到这样一个问题,协议栈版本是2.5.1a:

网络中有3个设备,一个协调器,一个路由器,一个终端设备(终端设备为POWERSAVING模式)。

终端设备开始挂在路由器下面,此时3个设备之间通信正常。关闭路由器的电源,终端设备发现自己丢失父节点后会自动重新加入网络并选择协调器作为父节点(ZStack实现的),终端设备再次成功加入网络;打开路由器的电源,路由器正常加入网络;此时测试路由器单播数据到终端设备,终端设备收不到消息,因为路由器的associated device list里面仍然有终端设备的网络地址,所以路由器认为终端设备还是自己的子节点,单播不会发送到协调器,故而终端设备收不到消息。

为了解决这个问题,路由器上电之后,终端设备调用ZDApp_AnnounceNewAddress()函数向网络中的所有设备进行announce,路由器收到这个消息时判断终端设备已经跟换了父节点,会删除associated device list里面终端设备的地址。这样3个设备之间收发数据都正常了。

此时,再让协调器断电,终端设备发现丢失父节点,自动选择路由器作为父节点加入网络;协调器上电;终端设备再次announce;3个设备之间数据收发正常。但是再次让路由器断电,终端设备就不能选择协调器做为父节点加入网络,必须要路由器上电加入网络后,终端设备会选择路由器作为父节点加入网络,感觉像是父节点被固定了一样。

如果终端设备不调用ZDApp_AnnounceNewAddress()函数进行announce,协调器和路由器切换断电再上电,终端设备每次都能正确切换父节点加入网络;但是单播会有前面提到的问题。

请问TI的工程师或论坛里的高手能帮忙解答下,为什么协调器和路由器这样切换断电再上电,终端设备announce后自动加入网络功能就不正常呢?

谢谢!

请VV大神帮忙确认下这个问题吧,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top