微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > zigbee 协调器无法给终端发送数据,但终端可以给协调器发送数据

zigbee 协调器无法给终端发送数据,但终端可以给协调器发送数据

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

各位TI的大侠zigbee高手,我在使用z-stack home1.2.2a.44539开发自己的应用时遇到如下莫名其妙的问题 

硬件:1个协调器+ 1个终端设备+应用软件 

工作时,首先通过串口发送建立网络命令。网络建立起来后,如果收到终端设备的报警信息,则使用串口上传到应用软件,软件处理后发送清除报警信息的命令,经过协调器发送给对应的终端设备,终端设备再将处理结果发送到协调器,协调器将其转发到应用软件。

开始的时候一切正常,但是如果我一直发送报警数据,过了一段时间后发现软件上可以显示收到了报警,但是无法清除报警。 抓包显示,协调器没有将清除报警信息的命令发送给对应的终端设备,而是一直会发送NWK link status 和 NWK Route Request。

调试程序发现,AssociatedDevList中关于终端的设备信息已经被清除了,可是抓包中还是能够发现终端发送的数据和DataRequest。除非终端rejoin或者direct入网,否则协调器就一直无法给终端发送数据。

抓包中从第7220帧之后开始出现问题。

问题应该就出在协调器把子设备从关联表里面删除了。

问下你复现问题的时候节点上报数据的频率多快,另外节点的poll rate是多少?

您好

谢谢您的回复, 有以下两个问题

1,什么情况下协调器会把设备从关联表里删除呢?

2,删除之后,终端是否会收到通知?

pollrate 1s  上报是500ms定时测试的,发现问题的时候是个按键,中断方式。快按一会就不能通信了。

上一个版本z-stack 2.6.2(home 1.2.1和mesh 1.0.0)中,协调器的AssocList删除EndDevice后,如果收到EndDevice发来的MAC Data Request命令会回复一个NWK Leave Req给EndDevice,这个NWK Leave Req不带EndDevice的IEEE地址,因此为无效操作,EndDevice在收到无效Leave Req时应该采用rejoin的方式重新连接父节点。

home 1.2.2a中,貌似是自动处理。

你的解释是真的吗?

终端收到leave req的代码处理是会判断是否rejoin的,但是前面协调器删除asscolist后如果还能收到终端的datarequest会恢复leaverequest而不带ieee地址,我没有找到相关代码啊?能指出来在哪里吗?

我好对比一下新旧协议栈的差别啊,我现在使用2.5.1a版本协议栈发生的这个问题,无法处理掉啊。1.2.2的就不会了吗?

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

网站地图

Top