zigbee单播丢包测试(CC2530,ZSTACK)

  之前写过一个zigbee数据测试,由于当时对zigbee理解的很浅,所以写的代码丢包严重。最近为了提高数据传输的可靠性,改进了一下通信的方式,结果还不错。
  之前:协调器+普通终端节点,协调器广播,节点接收广播消息。
  现在:协调器+路由节点,协调器记录路由的网络短地址进行点播(单播)。
  这样改进的原因是:
  1.如果普通终端节点接收数据,那么由于节点默认会定期进入休眠,所以会在休眠唤醒的时候向父节点发送Data Request来看一看在休眠期间有没有发给自己的数据,如此便会增加父节点的通信负担,也会造成更多的CSMA/CA的避让,因此改为路由节点并且不休眠。
  2.单播比广播稳定,原因是单播可以使用ZSTACK自带的数据重传机制。协调器通过单播的方式把数据发给路由节点之后,那么路由节点会在几毫秒的时间内就发送一个MAC ACK。如果协调器没有收到MAC ACK,就会自动以5毫秒左右的间隔进行多次(默认为8次)数据重传。MAC ACK跟APS ACK相比,速度更快。
  本次测试的设备连接:
PC串口助手—-通过串口线定时给————-协调器发送数据
协调器———-通过zigbee网络给———–路由节点发送数据
路由节点——-通过串口线把数据发送给—–另一个PC串口助手
  如此一来就可以根据串口助手统计收和发数据的数量,来测试丢包率。
  注,由于真正测试丢包只需要看节点收到多少数据,而这个方法还会通过串口这样多余的路径,所以实际上更苛刻。
  两个节点距离90厘米,天线全功率(0xF5),无干扰,有效16个字节,结果如下:
1000ms间隔:
  发31584字节,收31024字节,包接收率98.2%
500ms间隔:
  发18992字节,收18720字节,包接收率98.6%(比1000ms还高,,,,不太理解)
总的来说,单播的通信方式还是比较可靠的。
附,路由回复的MAC ACK,与在路由掉线时的协调器数据自动重传抓包:

重传

来源:yummy说电子

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年10月26日
下一篇 2016年10月26日

相关推荐