TI中文支持网
TI专业的中文技术问题搜集分享网站

终端设备疑似网络层出错,突然停止发送data request及任何信息

协议栈:Z-Stack Home 1.2.2s

CPU:CC2530

测试节点:1个协调器,1个终端

测试环境:两个设备供电正常,距离2-3米,正常工作时通讯良好

终端节点程序修改及配置:

1.开启低功耗

2.每2s钟发送一次data Request

3.开启CHILD_AGING功能 

4.按照VV大神建议,

    在ZDApp.c的ZDApp_NetworkInit()中,增加:

  if ( devStartMode == MODE_REJOIN )

  {

    _tmpRejoinState = true;

  }

5.曾发现过 startMode为MODE_REJOIN,而_NIB.nwkState为NWK_ENDDEVICE 的状态机错误情况,因此

在ZDObject.c的ZDO_StartDevice()中,增加:
#include "OnBoard.h"
  if ( ret != ZSuccess )
  {
+   if( ret == ZNwkInvalidRequest ){    // 状态机出现错误
+    SystemResetSoft();  //复位,重新加入网络
+    }
    osal_start_timerEx(ZDAppTaskID, ZDO_NETWORK_INIT, NWK_RETRY_DELAY );
  }
故障描述:
1.通过抓包发现,终端设备运行一段时间后(几小时-几天)会出现停止发送data request及任何信息(无离网,重加网等任何信息),且设备无法进入低功耗状态(电池电压快速下降)。
2.发现问题后,在应用层增加“每10分钟主动复位”的定时任务,没有再出现该问题,初步判断网络层运行异常,而应用层运行良好。
请问:
1.应用层有没有方法判断最近一次data request是否正常发送?这样在问题出现时才复位,而不是定时复位,降低复位功耗
2.有无根本上解决这个问题的方法?
谢谢
VV:

应该是2s钟发送一次 Data Request吧,不是beacon request。

1,如果在出现问题的时候,只是简单Reset设备,终端是否可以恢复正常? 恢复时是通过Rejoin还是Association加网的?

2,测试环境下是否有其他的网络在运行的,有没有可能加到其他网络了,下面红色代码可以屏蔽下。

ZDApp_ProcessNetworkJoin()

if ( devStartMode == MODE_RESUME ) { if ( ++retryCnt <= MAX_RESUME_RETRY ) { if ( _NIB.nwkPanId == 0xFFFF ) devStartMode = MODE_JOIN; else { devStartMode = MODE_REJOIN; _tmpRejoinState = true; prevDevState = DEV_NWK_SEC_REJOIN_CURR_CHANNEL; } } // Do a normal join to the network after certain times of rejoin retries else if( AIB_apsUseInsecureJoin == true ) { devStartMode = MODE_JOIN; } }

sinan chen:

回复 VV:

@VV 大神这么晚还在回复辛苦了。

是data request,标题写错了。

1.简单reset可以恢复工作,通过rejoin加网;

2.测试环境有其他信道的网络在运行。

   我看您标红的代码应该是rejoin到达最多次数后,恢复到join状态。但是我抓包观察到的是data request突然中断,之前没有尝试过任何的rejoin;

JINHANG CHEN:

回复 sinan chen:

兄弟,请问你的问题解决了吗,我也遇到相同的问题

sinan chen:

回复 JINHANG CHEN:

@JINHANG CHEN

没解决。

现在还是在应用层定时重启一下,避免网络层出错。

user4707539:

回复 sinan chen:

貌似与开启CHILD_AGING功能有关

guangpeng lao:

回复 user4707539:

我也开启了CHILD_AGING功能,也出现你说的这个情况,但是我的设备是低功耗设备,没办法做到定时重启一下。

YiKai Chen:

回复 guangpeng lao:

guangpeng lao 請問你Z-Stack 的版本?

sinan chen:

回复 guangpeng lao:

你是担心重启增加功耗吗?

guangpeng lao:

回复 YiKai Chen:

我使用的是zstack home 1.2.2a

guangpeng lao:

回复 sinan chen:

是的,担心功耗的增加,现在的解决方案是 自己重新做心跳包连接。

赞(0)
未经允许不得转载:TI中文支持网 » 终端设备疑似网络层出错,突然停止发送data request及任何信息
分享到: 更多 (0)