无线通信中丢包重传数据通信应用里面一项非常重要的功能,是无线通信模块选型的一项主要参考指标。前文详细的介绍了什么是网络丢包、数据丢包是如何检测及系统层数据丢包重传机制、数据丢包有哪些解决办法等,本文接着介绍通信协议中数据通信丢包重传是如何实现的,具体实现丢包重传功能如下:
系统层的重传,无论是CSMA/CA,还是MAC重传,还是APS重传,都是机械呆板的策略。系统层的重传机制,特点就是重传2~3次,如果重传失败就通过“AF Data Confirm”向应用层报告发送失败。
但是应用层是无线传输中智能化程度最高的,也是可以进行重传策略设计的层级。应用层应该根据应用环境,消息的重要性设计丢包重传的策略。我们以zigbee的应用为例,来设计重传策略。
通常zigbee设备出现CSMA/CA失败,要么是环境干扰太强,要么是同时发送消息的zigbee设备数量太多超过了CSMA/CA的最大窗口。
如果是同时发送消息的设备数量太多,这个时候就要加入“手动避让”机制。比如很多节点同时向协调器上传消息,某个节点通过“AF Data Confirm”检测到载波冲突丢包。这时候可以把丢包的消息记下来,然后同样延时一段随机时间,错开发送高峰进行重传。当然这个随机时间范围就要比MAC层的CSMA/CA的随机时间大得多。应用层的重传可以随机1~4秒进行重传,以0.1秒为最小单位,如果再次发生载波冲突可以加倍随机时间范围。特别是zigbee网络应用中节点数量是一个动态可变的因素,在节点数量多的时候可以不用在乎数据的实时性,而是要保证每个节点的消息都能被收到,而且“设备越多耗时越多”这个逻辑也是科学合理的道理。
Zigbee系统提供的冲突检测机制,只能检测冲突,但是无法区分是传输冲突还是恶意的信号干扰。因此有可能会出现应用层一直在重传,“AF Data Confirm”一直在报告载波冲突。这个时候应用层就要做“聪明”一点,有可能是zigbee设备遇到了持续的干扰信号。对于持续的干扰信号只能通过暴力手段解决,可以通过无线电定位设备找到干扰源并摧毁它。
系统应答丢包,包括MAC-ACK丢包和APS-ACK丢包,可以采用以下策略。ZigBee的系统层具有Mesh路由设计,数据传输时会寻找一条最短的路由路径。在出现MAC-ACK丢包且MAC重传失败时,zigbee的路由算法会计算出一条新的路径。而APS-ACK是最终目标丢包,出现这种情况极大可能就是最终目标坏掉,或者这个最终目标根本就不存在。另外如果最终目标不需要进过路由,zigbee系统直接发送MAC帧,也就直接报告MAC-ACK丢包。
出现应答丢包且重传失败,因为系统层已经做了MAC重传和APS重传。因此可以不用立即重传,可以等待一段时间(10秒~1分钟)再继续重传。如果重传成功则说明目标设备是好的,只是刚才出了点意外;如果重传失败则可以怀疑目标设备出问题了,以后就不要再向出问题的目标设备发送任何消息。在zigbee网络中如果有故障设备,其它设备向他发送消息都会消耗网络资源对其进行路由寻址,不但会有很长的时延,而且还没有好的结果。因此一旦网络中有故障设备,应用层就应该避免向故障设备发送任何消息。
系统层重传的应答机制仅能表示发送的消息是否到达目标,应用层的应答除了表示消息到达目标外,还有表示对消息的执行结果的功能。系统层的应答的英文叫做“acknowledge”简写“ACK”而应用层应答则叫做“response”简写“RSP”。ACK是目标设备收到消息后立即产生的,RSP则是目标设备处理完消息后再回复的,其等待时间要加上目标设备处理消息的时间,这个时间具有很高的不可预测性。因此通常在zigbee的控制应用中,发送短发送消息时只使能MAC-ACK而不使能APS-ACK,然后等待RSP。RSP除了可以用来判断是否丢包,还可以判断一下次该发送什么消息,这样就可以形成一个闭环控制系统。
闭环负反馈系统,RSP应答可以作为负反馈通道
而接收端收到消息后向发送端发送RSP应答时,为了保证RSP能到达发送端,通常反而会开启APS-ACK。这样即使RSP应答丢包了,传输层的重传机制也会自动让RSP应答重传。另外在zigbee 3.0中规定zigbee设备可以用自己的任意状态值作为心跳包报告给另一个设备,心跳包什么时候发出去也是系统层控制不受应用层干预,应用层也不会去干涉心跳包是否丢包。因此心跳包在传送的时候通常也使能APS-ACK而不使能RSP。
今天的分享就到这里啦,EBYTE人每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的太阳集团tcy8722官网进行了解,还有客服小姐姐在线答疑哦!
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 杭州办事处戴经理:17512568697
常州办事处崔经理:15906110783 南京办事处葛经理:17626012283
业务邮箱:support@cdhanzaichips.com
全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都太阳集团tcy8722电子科技有限公司【版权所有】 蜀ICP备27697263号-3