无线通信协议CSMA/CA的简单总结

以IEEE802.15.4的CSMA/CA为例,其实IEEE802.11的也是一样的原理。那个什么复杂的流程图可以不用看了。

最核心的就是随机,其实用ALOHA协议的无线系统也可以借鉴这种模式。

所谓随机,就是无线系统每次有发射(数据包)任务时,先来一个随机延时,当然第一次随机延时很短。

延时这段时间内,CCA检测信道空闲。刚好在这个延时到达点时检测到空闲(可能不是一个时间点,而是一个backoff时间片段),就发射,如果不空闲,则重试。重试也是一个随机时间,只是这个随机范围会扩大(2倍扩大)。

CSMA的三个关键值,MinBE,MaxBE和NB,以IEEE802.15.4的为例,MinBE=3,MaxBE=5,NB =4。一个backoff的单位时间320us(也就是无线传输20个半字节的时间,IEEE802.15.4的基本传输单位是半字节)。

NB=4,也就是最多有4次检测CCA的机会。超过4次,就会算信道检测失败,这包数据帧就该扔掉。

MinBE=3,这个和第一次CCA的延时时间相。(2^3-1)=7,即在发射任务开始后第一次CCA,是在一个1~7的随机时间倍数乘以320us得到一个延时值。如果这个延时后检测CCA信道空闲,就可以获得发送通道发送信号出去。通过计算可以得到随机延迟时间为0.32ms~2.24ms这个范围。通过对一些设备的实测,发射前的CCA侦听时间也就在1ms左右。

然后第二次CCA,BE值加1,那么随机倍数就扩大到(2^4-1)=15,即0.32ms~4.8ms。

第三次CCA,延时范围也就是(2^5-1)*0.32ms=9.92ms。

第四次,受限于MaxBE=5的限制,依然和第三次一样,是0.32ms~9.92ms。

当然,随机数最讲究的是一个人(gai)品(lv)问题。

在人品不好的情况下,要跑满4次CCA,每次都是最大时间,即2.24+4.8+9.92+9.92 = 26.88ms(要不要把每次CCA检测的0.32ms加上,请各位大神指正)。

最快的情况下,0.32ms就可以完成发射。

另外,有些非IEEE802.15.4的无线系统,甚至不支持CCA的无线系统,也可以借鉴这种方式。下列一个应用场景:

200盏电灯被同时打开,要把状态通过无线信号上传到网关。

首先,通电瞬间,全部的灯都上报一次状态,刚开始1秒内,可能只有不到10个电灯的状态上报成功,并收到网关的Acknowledge消息。(假设1秒内可以同时传输10个设备的消息)

然后,剩余的190盏电灯,随机延时1~4秒,上报状态。这个时候最多可能只有40个上传成功。那么还剩150个。

然后再随机延时1~8秒,80个又上传成功,还剩70个。

最后再随机延时1~16秒,剩下的传输完就不在话下了。

当然举例的有点不科学,但是随机时间采用2的指数倍扩大范围,整个系统可以随着设备数量增多,自适应的增加延迟时间。至少可以保证小网络系统可以有很好的实时性,不需要做成和大网络一样的通信延迟。

猜你喜欢

转载自blog.csdn.net/zigbee_luo/article/details/103228827
今日推荐