微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 串口和孤儿节点

串口和孤儿节点

时间:10-02 整理:3721RD 点击:
我使用树莓派和Zigbee Coordinator串口相连,Zigbee Coordinator与7个节点组成子网。通过树莓派周期性的通过串口给Coordinator心跳,然后Coordinator在接受到该串口数据之后给EndDevice发心跳包。在该前提下,我在终端节点中开启定时器,定时的向Coordinator发送ADC采集数据包,然后发现这个过程中终端节点频繁的变成Orphan节点;
但我通过在Coordinator中用定时器发送心跳数据包给EndDevice时,Coordinator可以很稳定的通过串口转发EndDevice上传的ADC采集数据包给树莓派,且Zigbee网络非常稳定,没有出现终端节点变成Orphan的情况。
用的CC2530芯片,ZStack-CC2530-2.5.1a协议栈,且-DRFD_RCVC_ALWAYS_ON=TRUE
谢谢

使用CC2530芯片,ZStack-CC2530-2.5.1a协议栈。为了减少Zigbee终端和协调器间的时延,将Zigbee终端设置为一直接受消息,即在f8w.Config.cfg中设置了-DRFD_RCVC_ALWAYS_ON=TRUE,其他不修改。
我发现在主控计算机不停的通过串口发心跳包给Coordinator,Coordinator再通过无线转发心跳数据包给EndDevice,然后EndDevice通过无线发心跳回复包给Coordinator,Coordinator再将该数据包通过串口发送给主控计算机。在该情况下,如果EndDevice再开启定时器不停的给Coordinator发ADC数据采集包,Coordinator再通过串口发送ADC数据采集包给主控计算机,那么就会频繁的出现orphan notification或者beacon,然后EndDevice再以孤儿的形式重新入网。

(该情况下,

Coordinator作用:

1.通过串口接受主控计算机发来的心跳包,并将该心跳包通过广播发送给EndDevice;

2.接受EndDevice的心跳回复包,并将该心跳回复包串口转发给主控计算机;

3.接受EndDevice的ADC数据采集宝,并将该ADC数据采集包通过串口转发给主控计算机。

EndDevice作用:

1.接受Coordinator发来的心跳数据包,并回复心跳回复包给Coordinator;

2.通过定时器,每几秒发送一次ADC采集数据包给Coordinator。



但如果心跳包是Coordinator中通过定时器不停的发给EndDevice的哈,那么即便EndDevice开启定时器不停的给Coordinator发ADC数据采集包,Coordinator再通过串口发送ADC数据采集包给主控计算机。如果是这个情况,那么网络状态比较稳定。



该情况下,

Coordinator作用:

1.开启定时器,每5s广播一个心跳包给所有EndDevice;

2.接受EndDevice的心跳回复包,并将该心跳回复包串口转发给主控计算机;

3.接受EndDevice的ADC数据采集宝,并将该ADC数据采集包通过串口转发给主控计算机。

EndDevice作用:

1.接受Coordinator发来的心跳数据包,并回复心跳回复包给Coordinator;

2.通过定时器,每几秒发送一次ADC采集数据包给Coordinator。



所以,是因为主控计算机和Coordinator频繁的串口通信导致的终端频繁成孤儿节点么?如果不是,那么为什么会出现第一种的情况?第一种情况的抓包情况如图所示

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

网站地图

Top