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,与在路由掉线时的协调器数据自动重传抓包:
mac ack
重传

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值