前言
对于大多数人来说,使用DW1000相关测距例程,按着教程实现简单的一对一测距不会有什么大问题。但当应用到实际场景后,现场环境同时出现几台,几十台设备时就会发现整套系统会出现严重的丢包、通信不良问题。而这其中的原因,是因为DW1000芯片只提供了UWB PHY层的实现,只完成了设备之间的基本一对一收发通信功能。而对于数据链路的管理,则需要由用户自行在主控上实现更上层的协议,来自行对其进行分配和管理。
IEEE802系列标准把数据链路层分成LLC(Logical Link Control,逻辑链路控制)和MAC(Media Access Control,介质访问控制)两个子层。上面的LLC子层实现数据链路层与硬件无关的功能,比如流量控制、差错恢复等;较低的MAC子层提供LLC和物理层之间的接口,在IEEE802.15.4-2011规范中,对MAC层的功能定义如下:
- 如果设备是coordinator,则生成网络beacon
- 同步网络中的beacon
- 提供个人局域网(PAN)的组成和断开
- 提供设备安全
- 为信道访问提供CSMA-CA(带有冲突避免的载波侦听多路访问)机制
- 处理和维护GTS(可靠时隙)机制
- 为对端MAC实体提供可靠的连接
IEEE802.15.4规范中,对上述相关MAC功能的定义和说明长达数十页,本文并不想花大量的时间去做逐一介绍和分析,这里我只对MAC协议中一些我认为的关键功能做简要介绍,用于提供一个基本的入门分享,想了解的更详细的可以直接阅读IEEE协议原文。
数据链路管理
一般而言,对于UWB多设备通信,有如下几种的访问链路的方式
-
纯Aloha方式:即不作任何管理,设备有数据要发送就直接发送到链路中,不考虑与其他设备数据发生碰撞的可能
-
带CCA的Aloha方式:在aloha方式上加上信道评估(clear channel access),信道空闲才发数据到链路中去,避免去其他设备抢资源。
-
时分复用方式(Super Frame),由专门的设备作为coordinator,为其他设备划分好单独的信道使用时隙(Slot)。
对于第一种纯Aloha方式无需多言,特点便是实现简单,缺点便是解决不了多设备碰撞问题。
对于第二种带CCA的Aloha方式,只能保证正在通信的设备数据包不会被其他设备碰撞损坏,但对于通信时序要求高的测距应用来说,如果当根据时序要发送测距包时信道被占用,就会无法通信导致测距失败。当设备增多到一定程度时,还会出现信道一直被占用导致无法通信的问题。
对于这种方式,在DW1000中可以通过检查是否有收到前导码来确认信道是否干净。
而对于第三种使用时分复用的方式,是IEEE协议中使用的方式。整个信道资源按时间分成一片片的时隙(slot),由coordinator来分配各个设备的数据收发时隙,每个设备只能在分配给自己的是时隙里进行数据的收发,保证beacon之间不会相互干扰。
为什么不考虑频分复用呢,这是由于UWB带宽宽,信道少,没那么多信道做频分。那码分行不行,码分也是不行的,由于正交码数量有限,也是无法支持大规模节点部署
时分复用方式
超帧
通过使用时分复用技术,单一信道上的所有节点可通信的时间被逐一划分为一个个时隙(Slot),所有节点都完成一轮通信的时隙加起来便叫做超帧(SuperFrame)。即
\[Superframe = Slot_0+Slot_1+Slot_2+....+Slot_n \]时隙
一般而言,这种时分复用的系统中会包含coordinator(协调者)和beacon(节点)两个角色。coordinator对整个系统的时隙进行管理,规定每个beacon可以使用哪一个时隙进行通信。超帧中的时隙一般会分为两类:
- 控制时隙:用于Coordinator管理PAN系统中beacon的入网出网,时间同步等网络维护
- 普通时隙:用于对应beacon发起通信,一般有N个beacon就会有N个这样的时隙
时隙的大小决定了整个系统的容量,普通时隙约大,通信的时间越长,可以容纳的节点就越少。
而在这些时隙中又可以根据其属性分为竞争时隙和非竞争时隙。对于非竞争时隙可以很好理解,即由系统分配好的时隙,不会出现设备相关竞争的情况。而竞争时隙属于不受系统分配的时隙,会出现设备竞争的情况。对于整个系统,绝大多少时隙属于非竞争时隙,但只有在进行节点设备入网时会出现需要竞争时隙的情况。
在时隙中也会划分更细小的时间帧片段,用于节点设备的发送、接收、保护间隔。这里需要根据协议设计做进一步设计。
PAN的维护
一般而言对于Coordinator来说,维护PAN系统有如下基本工作:
- 新节点入网
- 旧节点出网
- 系统时间同步
入网指的是移动节点从独立状态加入到整个PAN系统的过程,在这个过程中新节点需要在合适的时隙中向Coordinator发起入网请求,让Coordinator评估好信道资源是否有空余后,准许新节点加入并分配对应的工作时隙。
出网和入网相反,但要注意的是入网是节点主动发起的,但出网既可以是节点主动发起的,也可以是被动离开的。这里的被动离开考虑的是当节点突然下线(比如没电、距离过远),Coordinator需要及时发现,并释放相关时隙的使用权,保证链路资源不会浪费。
TDMA系统以时间来划分链路资源,系统时间的准确是至关重要的。由于现实因素影响,设备长时间工作后时间逐渐偏移是很正常的,这种偏移会导致收发双方会在非对应时隙内发起通信,从而干扰到其他设备的正常运行。
参考设计
对于实际的UWB测距或者定位系统来说,实现一个可靠MAC层,可以大大提高系统的节点的容量和吞吐率,降低其丢包率。上述内容介绍只是一些简单介绍,对于更多功能例如自组网、移动节点漫游、加密鉴权等功能还需要更多协议的支持。目前对于UWB来说并没有和Wifi、蓝牙那样拥有成熟的公用协议可以直接使用,各个方案商更多的是根据实际应用场景来实现私有的MAC协议,也并非走的IEEE的标准。
对于想要自己实现自己私有的MAC协议的朋友来说,这里提供一些我看到的公开的MAC协议给大家参考:
1、由Qorvo官方基于DW1000+STM32做的一套TOF系统DEMO,包括软硬件,叫做TREK1000 EVK。其中软件实现一套MAC层协议,支持多节点测距以及定位功能。这套DEMO目前原厂已不再销售维护,但相关设计资料还是在流传,有兴趣的朋友可以到Qorvo官网上搜下。
2、github上有很多优秀的开源MAC协议,例如Z-MAC、S-MAC、AdHoc。这些协议有时分复用的、有基于CSMA/CA的Aloha的,有兴趣的可以到github官网上搜下有很多。
3、在知网上有看到一些论文也对UWB MAC技术做了分析。其中一些硕士论文写的很好,基本上把相关UWB MAC协议的各种实现方案描述的很清楚。例如一篇《基于TDMA的UWB高密度室内精准定位系统的设计与开发-张世锟》的,有兴趣的朋友可以到知网上搜下。
4、淘宝上有些类似于正点原子那种的工作室在卖开发板和资料,几百块就能拿到一套软硬件资料,做的东西看演示效果也挺不错的,拿来应付下大学生毕设可以,商用还要再做进一步开发。这里有兴趣的朋友可以上淘宝搜下。
4、钞能力解决一切,市场上有些专门方案公司,实在搞不定的就外包吧。这里有兴趣的朋友可以上百度搜下。
标签:浅谈,信道,MAC,时隙,UWB,节点,设备 From: https://www.cnblogs.com/simpleGao/p/17509718.html