微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 终端节点运行不到10分钟然后掉线连不上协调器

终端节点运行不到10分钟然后掉线连不上协调器

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

ZStack-CC2530-2.5.1a。如题,本项目采用5*8的子网络,即有5个协调器,每个协调器在不同的信道以不同的PANID建立网络,每个协调器连接8个终端。每2s协调器会广播数据包至终端,终端收到数据包再上传数据至协调器。

为保证信息传输时延,设置-DRFD_RCVC_ALWAYS_ON=TRUE。

为保证网络恢复,设定当终端3秒没有接受到协调器的消息则切换网络(对终端开启NV_RESTORE和NV_INIT)。网络打开初始运行较稳定,即使通信质量不佳,终端也会切换至其他协调器的网络。运行不到10分钟,发现终端开始慢慢的掉线,且掉线后连接不上协调器。抓包只看到beacon request。将协调器和终端全部物理掉电然后再上电,网络能够重新建立,但8分钟左右又出现上述现象。请问这种现象发生的原因是什么?如何解决?谢谢

请问您现在是不需要终端的低功耗功能呢?另外开启了NV_RESTORE和NV_INIT之后还能加入其他协调器?

对,为了满足时延的要求,我暂时不打算使用终端的低功耗。加入其它协调器是这样的:我开启了NV_RESTORE和NV_INIT,然后开了定时器,倘若3秒没有接受到协调器的消息,我就通过修改zgConfigPANID参数、zgDefaultChannelList参数和zgExtendedPANID,并且将其写入NV中(ZCD_NV_PANID、ZCD_NV_CHANLIST和ZCD_NV_EXTENDED_PAN_ID),然后在重启终端。问题在于他正常运行不到10分钟就开始慢慢的掉线,且连接不上协调器,到20分钟的时候基本就没有几个还在网络里。这个问题是因为什么呀?如何解决这个问题啊?谢谢您

您好,这个问题的原因能和我说一下么?还有就是解决的办法?谢谢,有点急

请问掉线之后重启有没有rejoin请求。

有orphan notification数据包,但最后失联只有beacon request数据包和Frame control field的Type为BCN的包。最后基本掉线的数据抓包如附件,谢谢

根据您之前的描述,您重新选择协调器是否permit join 可以试着打开一下看看。

您好。非常感谢您的回复。我还有一些问题希望能够得到您的帮助,谢谢。

1.这个permit join怎么开启啊?在协调器代码里判断然后执行使用NLME_PermitJoiningRequest(0xff)函数?还是直接设置NLME_PermitJoining=TRUE么?还是使用 ZDP_MgmtPermitJoinReq()函数?或者其他?

2.最开始的时候所有的终端节点是连接上协调器的,那么这个时候permit join应该是允许的,为什么后面就不允许了呢?是因为ZDO_ProcessMgmtPermitJoinTimeout这个参数么?和密匙有没有关系? 会不会是内存不够,导致AssociatedDevList表装不下?

3.我这个网络最差情况下会有40个终端连接至1个协调器,这个情况协调器是否能够正常工作?且对于切换至其他Coordinator网络的终端节点,原协调器是否要清除其AssociatedDevList中的信息?

谢谢

Permit Joining Association (Z-Stack, ZigBee)

Q: FAQ: Permit Joining Association (Z-Stack, ZigBee)

Turning Permit Joining on / off and Beacon Request response when Permit Joining is turned off.

The NLME_PermitJoiningRequest() API is provided as a hook into the network layer that allows the application to control whether or not a Router (and likewise the Coordinator) will allow devices to join it at any given time. The parameter passed during this function call defines whether permit joining is turned on permanently, turned on for a specified amount of time, or turned off.

Permit Joining can be turned off by PermitJoin == FALSE using the NLME_PermitJoiningRequest().

Even if Permit Joining is turned off the device (Router or Coordinator) will continue to respond to Beacon Requests, announcing its presence to Routers or End Devices attempting to join the network.

To notify these joining devices that it is unable to become a parent it will set the Association field in the Beacon packet to 0, which tells the joining device that it cannot join this particular parent.

也就说你可以用NLME_PermitJoiningRequest来控制,permit join 是有时限的, 你如果要用40个终端建议加入router设备。如果切换的了协调器建议清除AssociatedDevList的信息。

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

网站地图

Top