ZigBee无线网络和收发器2.5.doc_第1页
ZigBee无线网络和收发器2.5.doc_第2页
ZigBee无线网络和收发器2.5.doc_第3页
ZigBee无线网络和收发器2.5.doc_第4页
ZigBee无线网络和收发器2.5.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第三章 ZigBee和IEEE 802.15.4协议层物理层的全部内容由outman翻译1.1 ZigBee和IEEE 802.15.4网络层1.2 ZigBee和IEEE 802.15.4物理层这个图含的信息量可能需要贯穿在我们的整个学习过程中了,此处先不详解,只是先作为“上方宝剑”挂出来,这个是整个这一章的脉络。不过,还是要来认识下这里面的几位关键“人物”的:第一位叫“PHY”物理层,他是最底层的员工,最终把这些“0”和“1”送到空气中的活就是他干的;第二位叫“MAC”介质读取控制层(这个家伙肯定是老外,连个像样的中文名都没有);第三位叫“NWK”网络层,这是个中层干部,属于实干家型(就是公司里电话最多的那种领导);第四位叫“APL”应用层,有同学问了,这层里面怎么这么复杂?说实话,我也还没弄明白呢,不过按常理来说,高层复杂是应该的,到我们的政府机关看看就知道啦另外,下面两层是由IEEE 802.15.4来定义的,而中层领导上的就是由Zigbee组织来定义的,那什么是我们定义的呢?就是这个“协议栈”上面的,那就是最高最高的领导啦第三章,第一层“PHY”物理层1.2.1 频率安排首先,我们从干活的这个小兄弟开始认识。他要把一个比特送到空中,是有几条航线可以选的,就这是所谓的“频道”,每一个频道对应一个频率,而每一个频道又有几种调制方式,我们可以理解为坐不同的“飞机”。下图是IEEE 802.15.4中对频道的安排:对于这里面的“频道页”的定义,不是太清楚为什么要这样定义,不过我觉得用前面说的“飞机”的概念,更容易理解些。有三种不同的飞机,每种飞机都可以走0-26,共27条航线,这就是“物理层”在送数据的时候要做出的选择。其中,0号航线的频率是868MHZ,915M上有10条航线,其频率可以通过下面公式计算:中心频率(MHz) 906 + 2 ( 频道号 1)同样,2.4G波段上的频率值为:中心频率(MHz) 2405 + 5 ( 频道号 1)1.2.2 能量检测ED就像航空公司一样,“比特”想要“飞”起来,也是有“航空管制”的,在起飞前要确认下航道有没有被占用,这可不能像开车,塞车了就等会,飞机要在空中停了,那不得掉下来(我小时候总这么想)。能量检测就是用来实现这个目的的,当然,这只是个“能量”检测,它不会去区分到底是谁在占用“航道”,它只检测有或者没有。当然,这也是物理层的上级MAC层给他的任务之一,不过允许他不用百分百准确,允许10db的误差,结果会以一个8比特的字节向上报告。1.2.3 载波检测CS载波检测也是检测当前频道能不能用的,但与ED不同,上面说了ED不会去区分到底是谁在占用“航道”,但是CS会的,它会根据载波的特征去判断当前占用“航道”的是不是与自己一样的IEEE 802.15.4物理层信号,如果是,那不管ED值是多少,都会返回一个“频道忙”的信息。1.2.4 连接质量指示LQI还记得电脑的WIFI指示吧,我也不了解WIFI协议,但我想这应该是相同的东西吧。在802.15.4中,有两种检测连接质量的方法,一个是检测“接收信号强度”RSS,另外一个是检测“信噪比”SNR。RSS值是通过检测接收到的信号的全部能量情况来判断的。又有人举手了?这位同学有什么问题?什么,这是怎么做到的?呃、这个我真不懂,不过我知道肯定有个寄存器来读的。至于这个值是怎么来的,你还是问下做IC的人,或者你找个不是那么忙的教授,说不定他知道不过这位小同学啊,看你问这个问题,我得多说你几句了。你这么“叫真”不好,倒不是打击你,我知道你说不定能成个人物,不过,学习是要讲“深度”和“广度”并举的,如果什么事情都一头钻进去,你会迷路的。我们继续,那“信噪比”SNR,顾名思义,就是信号除以噪声的比率了。当然,值越大表示信号质量越好。每一个接收到的数据包都会做一个LQI的测量,它至少有八个等级。这个测量是物理层很重要的一个任务,因为这个值不但他的直属领导MAC层要用到,他的上几层领导网络层和应用层都用得到。比如说网络层(NWK)在选择路由的时候,LQI就是一个很重要的指标,LQI值高的路径当然要优先考虑,当然,这也只是一个因素,比如说这个LQI高的路径里的设备都是电池供电的,那么在频繁选择这个路径的同时,必然会导致这些设备电池寿命缩短。所以,一定要多方面权衡这就体现了“领导”的作用。1.2.5 空闲频道评估CCA(注:本教程里的中文名称可能不符合标准,只是方便笔者说明问题,如对名称有异议,欢迎在本教程论坛中讨论)这里有一个很重要的名词叫“CSMA-CA”,听起来就像高科技,不知道和CDMA有没什么关系(做通讯的朋友开始扔砖头了)它有一个不太帅的中文名字叫“载波侦听多点接入/冲突避免”,笔者现在还无法对这个概念做个定义,不过倒是可以用“白话”翻译一下。在上文中我们看到,当我们的“PHY层”小弟要发送一个比特的时候,要面临那么多选择,走哪个航线,选什么样的飞机等等,那这么复杂的决策,“小弟”能搞得定吗?要两个“小弟”都在争一个位置,打架了怎么办?按社会常理来看,这应该不是哪个人决定的,而是有个“制度”,这样说,能理解不?当然,制度也是要人来执行的,一个最底层的工作叫“空闲频道评估”CCA,这个也是由我们的小弟“物理层”来做的。他要告诉MAC层,当前频率有没有被其它设备占用。而且这个工作不能只做一次就汇报,要检测8个符号周期。在IEEE 802.15.4物理层协议中,有三种CCA模式:1.只检测ED值。只要ED值高于一个门限就认为当前频道被占用。这个门限值可以由设计者来定义。2.只由CS结果来决定。只要CS的检测结果为: 当前频道被IEEE 802.15.4定义的设备占用,则返回频道忙。3.由上述两个值的“与”或者“或”逻辑来决定。也说是说ED值高于门限“并且”有802.15.4设备占用,则认为频道忙ED值高于门限“或者”有802.15.4设备占用,则认为频道忙那究竟采用哪种CCA模式呢?这个可以通过PHY属性值phyCCAMode来设置。这个值也是PHY-PIB值的一部分,下面的章节会对这个概念进行介绍。1.2.6 物理层常量和属性首先说明一下“常量”和“属性”这两个词,所谓的常量就是说在“编译”好之后不能变的量;而属性则是可以改变的。在Zigbee协议栈中,每一层都有自己的常量和属性。如表3.2所示,物理层中只有两个常量,aMaxPHYPacketSize指示“物理层服务数据单元”PSDU不能超过127字节;而aTurnaroundTime说明一个设备由接收状态转为发送状态的最大时间,也就是说一个接收器必须在12个符号周期内完成接收任务。同时要说明的一点是,PHY和MAC层的所有常量都有一个前缀“a”,这是Zigbee协议的规定,NWK和APL层分别以前缀“nwkc”和“apsc”开始。物理层的“属性”包含在“物理层PAN信息基准表”PHY-PIB中,这个表是专门用来管理物理层服务的,详细信息在表3.3中,其中有(+)标志的为只读属性,上层只可以对此类属性进行“读”操作,只有物理层自己才能“写”;而有(*)标志的属性,其个别指定位为“只读”;其余的属性则可读可写。后面章节会对每个属性详细阐述。1.2.7 物理层服务我们研究了半天物理层是怎么工作的,下面看下我们到底怎么“吩咐”他,他到底提供了哪些“服务”。物理层提供了两种类型的服务,一种是数据服务,一种叫物理层管理服务。顾名思义,数据服务通过无线电波对“物理协议层数据单元”PPDU进行发送和接收,说简单点就是收发数据;另外,物理层中包含了一个叫“物理层管理实体”PLME的一个管理单元,如下图所示,数据服务是通过PD-SAP实现的,而物理层管理服务是通过PLME-SAP来实现的,其中PLME也包含上文所述的PHY-PIB。 物理层数据服务咦,这个图是不是上错位置啦?怎么还是1.11呢?不会啦,像俺这么仔细的人,咋会犯这种低级错误呢感觉这个地方应该补补课了,这个图里面有一个很重要的概念,就是“Payload”,字面理解,就是要付费的信息,那其他的信息不用“付费”吗?恩,可以这样理解,除了Payload之外的信息都是些辅助信息,免费赠送啦PHY的Payload就是整个MAC层数据,MAC层的Payload就是整个NWK层数据,以此类推。从上图中我们也容易看出,每一层都会增加一些本层的辅助信息,然后传递给下层去传输。回到这节的主题,物理层的数据服务到底可以做哪些事情呢?简单地来说,就是为MAC层提供了“MAC协议层数据单元”MPDU的传输,这个名字不陌生吧,前面我们不是刚讲了一个PPDU吗?当然还会有NPDU和APDU啦,道理都一样,就不一一介绍啦。不过,不要忘记那些“免费赠送”的信息哦,那也是很重要的,比如LQI信息等等。如果传输服务失败,会返回下面几种原因之一1、 发送器工作不正常2、 发送器在接收模式,一个设备同时只能在接收和发送中的一种状态3、 发送器忙再上一个图来直观表示下各层间的通讯这个图貌似复杂,但谁让咱都是“炎黄子孙”呢,用老祖宗的一句话就能理解这个图了兵对兵,将对将。 物理层管理服务如图3.2,此服务名为PLME-SAP,它会在PLME和MLME中传递命令信息。它提供的服务有如下几种:1、空闲频道评估CCA2、能量检测ED3、打开/关闭发送器4、从PHY-PIB中获取信息5、设置PHY-PIB属性.1 空闲频道评估CCA其概念已在前面讲解过,这里看下它可能返回的结果:1. 发送器异常,那CCA就没意义了2. 频道空闲,可以传输3. 频道或者发送器忙,这两种情况PLME不再做区分,均返回“忙”.2 能量检测EDED检测请求由MLME发出,由PLME执行,最终结果返回MLME。.3 打开/关闭发送器MLME可以通过PLME让发送器进入以下三种状态之一:发送器关闭、发送器打开和接收器打开.4 从PHY-PIB中获取信息同样,读取请求由MLME发出,由PLME执行,最终属性返回MLME.5 设置PHY-PIB属性除了只读属性外,MLME可通过PLME设置PHYPIB的属性1.2.8 服务原语在802.15.4和Zigbee协议中,用“原语”的概念来描述相邻两个层间的服务,层间调用函数或者传递信息,都可以用原语来表示。虽然,在整个系统中,有很多不同的层,但是层间的通讯方式是非常相似的。比如PHY、MAC与NWK层都为他们的上一级提供数据服务,其请求数据服务的机制类似:高层通过DSAP向下级请求传输,下级传输成功后将状态返回给上级。正是由于这种相似性,才让“服务原语”这种方式显得格外重要。每一个原语要么执行一个指令,要么返回一个之前指令的运行结果。原语也会带着指令运行需要的参数。上图描述了某层为其上层提供服务的一般方法,如图所示,有四种类型的原语:请求、指示、响应和确认。换句话说,在802.15.4和Zigbee标准中的所有服务都可以归类为上述四种原语之一。原语用下面的格式来描述:(注:出于本文读者多数为现在或者未来的软件工程师,后面直接用英文名称来表述四种原语).request.indication.response.confirm首先,由N+1层向N层用request原语申请一个服务,比如说MAC层向PHY层请求一个MPDU传输服务,它必须要向PHY层申请一个PD-Data.request的原语。而N层会向其服务用户(经常是N+1层)发出一个indication的原语,用来指示一个对N+1层很重要的事件。比如说,PHY层接收到一组数据,需要将此数据传递给MAC层,那么它就向MAC层产生发出一个PD_Data.indication的原语,用来向其传递数据。如果这个indication原语要求对其做出响应,那么N+1层就会发出一个response原语。值得注意的是,PHY和NWK层没有任何response原语,而只有MAC和APL层有。而confirm原语是由N层发出,用来最终确认最初N+1层申请的request服务已经完成。比如在上例中,数据发送完成后,PHY层会告诉MAC层,传输已经成功完成。注:本文只是用一种浅显易懂的方式,让读者了解原语的基本概念,如果读者需要深入了解每层提供的原语细节,请直接阅读802.15.4和Zigbee的协议文档。1.2.9 物理层的数据包格式如图所示,PPDU主要包含三部分主要内容:同步头(SHR),PHY层头信息(PHR)和PHY层的“有效负载”-payload。我们一起来分析一下,这三部分里面具体包含了哪些内容。同步头SHR包含了接收时所需要的同步信息,以使得在接收端产生与发送端相同的同步信息,用以还原最初的比特流。PHR包含了数据桢的长度信息。PHY Payload是它的上层服务用户要求它发送的实际有效数据。SHR包含了一个“前导同步(preamble)”和一个“桢开始分隔符(SFD)”,Preamble用来让接收器获取同步信息的,其详细信息暂不做介绍,如果后续有需要再补上。SFD代表了SHR的结束与PHR的开始,除了ASK调制模式外,其他模式的SFD数据如下图所示:下一部分的数据是PHY数据包的桢长度,它代表了PHY的Payload(PSDU)的全部字节长度,其值的范围为1127(前述的PHY常量中可对其进行定义),但实际上它取决于802.15.42006的标准,如下图所示,当其值为5,表示的是这是一个MAC的“握手”桢,9127可以为任意的MPDU,而04,68暂为定义,为以后的扩展定义做保留。最后的部分PSDU是PHY层的实际“Payload”,它是由MAC层提供的,需要PHY层传输的有效数据。就是要付费的那部分另外,在802.15.4标准中,数据的传输顺序是这样的:SHR的低位首先传输,而PSDU的高位是最后传输的。1.2.10 物理层的职责总结PHY层这位“小弟”是直接跟无线电波打交道的,讲了这么多,最后让我们回头再来总结下,他到底要做些什么:1.激活、禁止无线电波传输2.发送、接收数据3.选择一个频道(发送器需要发送数据的准确频率)4.实现能量检测(ED)。ED检测是用来评估所要传输的频道的能量值,用以决定当前频道是否空闲,是否可用以传输数据。5.进行空闲频道评估CCA6.产生LQI值,用以衡量接收数据包的质量,指示信号强度第三章中以上部分由outman翻译/1.3 IEEE 802.15.4 MAC层(注意点:网络中的设备类型有三种,协调器,路由器,终端。有时又将路由器和终端统称为设备(Device),即非协调器。文中很多处使用“设备”一词,很多情况下,其意思不是指所有的设备,而是指除协调器外的其他设备类型,遇到“设备”一词时,请大家自己结合上下文具体理解“设备”的意思。)MAC层为其下一层和PHY层之间提供了接口,在zigbee无线网络中,这个“下一层”指的是NWK层。IEEE802.15.4不是专门为zigbee应用而开发的,因此“下一层”可以是任何网络协议层。在这边书中,主要讨论了MAC层和zigbee NWK层间的相互作用。图3.6显示了MAC子层参考模型。MAC层类似于PHY层,有一个管理实体叫MAC层管理实体(NLME), 它负责MAC管理服务。MLME与其在NWK层中的对应项(NWK层管理实体,或NLME)进行相互作用。MAC层也有其自己的数据库,叫做MAC PAN信息库(MAC-PIB)。所有的MAC常量都有一个通用的前缀a ,所有的MAC属性都有一个通用前缀mac 。MAC-PIB的大小比PHY-PIB要大。(“IEEE 802.15.4 standard document 2”中提供了MAC的常量和属性)。1.3.1 信标操作和超帧结构信标使能的网络优点之一就是具有保证时隙(GTS)。信标帧就是包含信标信息的MAC帧,例如信标间的时间间隔和GTS个数。信标帧格式在小节有介绍。在信标操作中,可能会使用一个超帧结构。如图3.7所示,一个超帧以两个信标帧为边界。在IEEE 802.15.4标准中,是否使用超帧结构是可选的。在一个超帧中可以有最多三种类型的时间段(Period):竞争时间段(CAP), 无竞争时间段(CFP)和非激活时间段(Inactive Period)。附上CAP英文解释:contention access period (CAP): The period of time immediately following a beacon frame during which devices wishing to transmit will compete for channel access using a slotted carrier sense multiple access with collision avoidance (CSMA-CA) mechanism.直接跟在信标帧后的这段时间内,想要发送信息的设备,将会使用CSMA-CA机制进行竞争,这段时间就是CAP。在CAP期间,所有想发送信息的设备需要使用CSMA-CA机制来访问一个频道。该频道对同网络中的所有设备同样有效,第一个开始使用一个有效频道的设备将会把该频道据为己有,直到它当前的发送完成。如果设备发现频道正忙,它会等待一段随机时间然后重新访问。对一个大网络中的多数设备来说,这是最可能的信道访问机制。MAC命令帧必须在CAP期间发送。在CAP期间,无法保证任意设备都能使用一个频道,而CFP则为特定的设备保证了一个时隙,因此,设备无需使用CSMA-CA机制来访问频道。这为许多低延迟应用,例如那些等待不起一段/随机和潜在的长时间/直到频道有效的应用,提供了一个很好的选择。CFP中不允许使用CSMA-CA。CAP和CFP合起来叫激活时间段(Active Period)。激活时间段被平均分成了16等份的时隙,信标帧总是开始于第一个时隙的开头。CFP中有最多7个GTS, 每个GTS占用一或多个时隙。超帧可以选择是否带有非激活时间段,非激活时间段允许设备进入省电模式。在省电模式期间,协调器可以关闭它的收发器线圈来节省电池能量。超帧结构由协调器定义,并且在网络层中使用MLME-START.request primitive请求原语进行配置。两个连续信标间的持续时间,时间间隔(BI), 由数值macBeaconOrder (BO)属性和aBaseSuperframeDuration常量使用下面的等式决定:BI = aBaseSuperframeDuration 2BO(symbols)例如,给出aBaseSuperframeDuration的值是960 Symbols, 而BO的值是2,那么信标间隔BI将会是3840 symbols. (“IEEE 802.15.4 standard document 2”中提供了MAC的常量和属性)。在一个信标使能的网络中,BO可以是0-14中的任何值,如果BO的值被设置为15,网络将被认为是非信标使能,并且不使用任何超帧。类似的,超帧激活时间段的长度叫做超帧持续时间(SD), 由下面等式计算得到:SD = aBaseSuperframeDuration 2SO(symbols)其中SO是macSuperframeOrder属性的值。超帧持续时间SD不能超出信标间隔BI,因此,SO的值总是小于或等于BO。在一个非信标使能的网络中(例如BO = 15时),协调器不发送信标,除非它从网络的某个设备接收到一个信标请求命令。设备使用信标请求命令来定位协调器的位置。.5小节提供了信标请求命令的格式。非信标网络中的PAN协调器设置SO的值为15。在信标使能网络中,除了PAN协调器,任何协调器都可以选择性的发送信标和创建自己的超帧。图3.8显示了当PAN协调器和网络中另一个协调器都在发送信标时所需要的时序。协调器只能在PAN协调器超帧的非激活时间段开始发送信标。PAN协调器信标被叫做“接收信标”,其他任何协调器的信标被叫做“发送信标”,两个超帧的激活时间段(Active Period)必须具有相等的长度。除了PAN 协调器,其他的协调器只能发送一个信标来表明其超帧的开始,而超帧的结束则可以和PAN协调器的结束相同。如果一个设备没有使用其GTS来获得一段延长时间,它的GTS将会终止,并且协调器可以把这个特定的GTS分配给一个不同的设备。非激活时间段能够导致GTS终止,它总是两个超帧长度的整数倍,这个倍数的值(n)取决于BO的值:n = 2(8 BO) if 0 = BO = 8n = 1 if 8 = BO = 14 例如,一个设备的BO为7,且在四个连续的超帧中没有使用它的GTS,那么它的GTS将会终止。1.3.2 帧间间隔从一个设备向另一个发送数据时,发送设备必须在两个连续发送的帧间进行简短的等待,以允许接收设备在下一帧到达前对接收到的帧进行处理,这被称作帧间间隔(IFS)。IFS的长度取决于发送帧的大小。小于或等于aMaxSIFSFramesSize的MPDU被当作短帧,而长帧则是长度大于 aMaxSIFSFramesSize个字节的MPDU。短帧后的等待阶段被称作是短IFS(SIFS),SIFS的最小值是 macMinSIFSPeriod。类似的,长帧后跟随一个长IFS(LIFS), 其最小长度是 macMinLIFSPeriod。 macMinSIFSPeriod和macMinLIFSPeriod的值分别是12和40 symbols。图3.9中显示了帧间间隔的两种情景。在第一个中,消息得到了应答,并且应答帧和下一帧间的等待时间是LIFS还是SIFS取决于帧的长度。从发送一帧到接收到应答帧间的时间段在图中用tACK表示。如果不需要应答帧,那么最小的帧间间隔开始于帧发送的时刻。1.3.3 CSMA-CAIEEE 802.15.4的MAC层所支持的信道访问机制是载波检测多点接入碰撞避免(CSMA-CA)。在CSMA-CA中,当设备想要发送信息时,它将执行一条CCA来确保信道没有被其他设备使用,然后设备开始发送自己的信号。第一章中对CSMA-CA进行了简单的概述,而本部分提供了更详细的内容。除了发送信标外,还有两种不使用CSMA-CA算法来访问信道的场合: 在CFP期间访问信道 应答一个数据请求命令后直接发送信息。换句话说,如果一个设备从协调器请求数据,协调器在数据后直接发送应答信息将不需要在这两个发送间执行CSMA-CA,即使是在CAP期间。CSMA-CA有两种类型:slotted和unslotted。Slotted CSMA-CA是当没有超帧结构在合适位置的时候,执行CSMA-CA。超帧将激活时间段划分为16等份时隙,CSMA-CA算法的等待阶段需要分配给下面讨论的特定时隙。Unslotted CSMA-CA 在没有超帧结构时使用,因此,等待时间段调整是没有必要的。非信道使能网络通常使用unslotted CSMA-CA算法访问信道。如果CCA表明信道忙,设备将等待一段随机时间然后重新尝试,在slotted和unslotted CAMA-CA中的这段等待时间是单位等待时间段的整数倍。而单位等待时间等于aUnitBackoffPeriod (一个MAC常量) symbols。图3.10(葵花宝典第53页,图太大没有截图)是CSMA-CA算法的流程图。在算法的第一步,需要选择使用slotted还是unslotted CSMA-CA。CSMA-CA算法使用了三个变量:等待幂(BE),等待次数(NB)和竞争窗口(CW)长度。每次算法遇到信道繁忙的时候,它等待随机的一段时间,这段时间的范围由BE决定。这段等待时间可以是0到2BE-1之间的任意整数乘以单位等待时间:Back-off = (0到2BE-1之间的任意整数) aUnitBackoffPeriod在一个unslotted CSMA-CA信道访问中,BE的初始值等于macMinBE。在一个slotted CSMA-CA中,超帧结构中电池寿命延长(BLE)选项的选择会影响BE的值。如果BLE选项被激活,协调器在紧跟信标帧发送的一段等于macBattLifeExtPeriods的时间段后,关闭其接收器来节省能量。这样,等待时间的范围就被限定在了2和macMinBE两个数中最小的一个:BE = min(2, macMinBE)如果BLE选项没有被选择,协调器在CAP期间处于激活状态,并且BE的值等于macMinBE(与unslotted CSMA-CA类似)。CCA每检测到一次信道繁忙,BE的值就会加一,但BE的值不能超出macMaxBE。NB是一个计数器,它跟踪设备等待并且重新尝试信道访问机制的次数。在算法开始时,NB等于0,每次设备由于遇到信道忙而等待时,NB的值加一。如果NB达到macMaxCSMABackoffs时信道访问仍然没有成功,CAMA-CA算法就会放弃,并且在NWK层报告信道访问失败。竞争窗口(CW)变量决定了等待次数,信道在开始发送信息前必须有效。例如,如果CW等于2,表明设备在两个连续等待后产生一个有效(空闲)信道。CW仅在slotted CSMA-CA算法中使用。若再运行的时间内发送没有完成,MAC会等待直到下一个CAP开始,并且再次尝试CSMA-CA信道访问算法。 隐藏和暴露节点问题CSMA-CA算法的一个缺点是隐藏节点(终端)问题。考虑一下图3.11a中显示的例子,在该例子中,节点A和C之间放置的太远而不能接收彼此的信号。然而,节点A和C都可以和节点B通信。在每个节点中,信号的能量随着天线间距离的增加而降低。当节点C发送信息时,节点C在A处信号能量的等级太弱,因此A的能量检测机制检测不到另一个信号的存在,并宣布频道有效(空闲)。类似的,节点C也检测不到节点A信号的存在。现在,如果节点A和C同时决定使用相同的频道发送数据包到节点B,他们可能会同时发现频道有效并且同时开始发送数据包。这将在节点B处产生冲突。解决这个问题的一个方法是改变节点的位置或者增加因此节点的输出功率,以确保节点A和C可以检测到彼此的信号。在软件层面上,IEEE 802.15.4 MAC层没有很好的来帮助解决隐藏节点的问题,例如,IEEE 802.15.4 没有普遍支持“请求到应答”/“空闲到发送”(RTS/CTS)握手机制,而该机制却被用在IEEE 802.11中来解决隐藏节点的问题。另一个相关的CSMA-CA的缺点是暴露节点(终端)问题。在图3.11b中,节点E想在节点F向G发送信息时向D发送信息。节点D在节点F的无线影响范围之外,因此,节点E和F可以同时发送信息而没有任何冲突。但是CSMA-CA将阻止节点E发送信息,因为节点E在F的无线影响范围内,因此当节点F发送信息时,由节点E执行的CCA将认为信道忙碌。这个不必要的阻止被叫做暴露节点问题。建议的解决暴露节点问题的方法有:改变节点位置,降低节点输出功率到维持可靠通信的最低要求,使用RTS/CTS握手机制。1.3.4 MAC服务MAC层提供两种类型的服务:MAC数据服务和MAC管理服务。MAC数据服务由NWK层数据实体(NLDE)通过MAC公共部分子层服务接入点(MCPS-SAP)来访问。MAC管理服务通过MLME-SAP来访问。全功能设备(FFD)必须使用整个MAC数据服务,但在MAC管理服务中有一些功能是可选的。在MAC数据和管理服务中有一些功能是FFD所必须具备的,但对半功能设备(RFD)来说却是可选的。在“IEEE 802.15.4 standard document 2”中,这些对RFD可选的功能(服务原语)用方块()表示,对RFD和FFD都可选的能力用星号(*)表示。 MAC数据服务MAC层为NWK层提供数据服务,需要发送的数据以NPDU的形式提供。NPDU被放在MAC payload中,叫做MSDU。NWK层通过MCPS-SAP产生数据发送请求并且提供NPDU。为了跟踪设备中不同的MSDU,每个MSDU与一个唯一的MSDU handle ( msduhandle )相联系。Msduhandle是鉴别MSDU的一个整数。例如,如果一个MSDU需要从事件队列中清除,MAC子层将试图在队列中找到相应的msduhandle。数据序列号(DSN)可以被用作msduhandle。DSN是一个MAC属性,存储在MAC-PIB(macDSN)中,macDSN的初始值是一个随机数。每次一个数据帧或MAC命令帧产生时,MAC子层把macDSN的值复制到外发帧中并将macDSN加一。数据发送有三个选择:1 应答或非应答发送。在一个应答发送中,发送设备请求数据接收设备在成功接收到数据时返回一个应答帧。在非应答发送中,接收设备不返回应答帧。一般来说,是否发送应答是可选的,除非信息发送方请求,否则数据接收设备不会返回应答。2 在GTS或CAP期间发送数据。在一个非信标使能网络中,该选项始终是CAP,因为非信标使能网络中没有GTS。3 直接或间接发送。从名字可以看出,在间接发送中,数据不是直接发送给接收设备的。而在信标使能网络中,数据可以存储在协调器中,而且接收设备还会被告知协调器中有数据等待它发送,此通知是定期发送的信标消息的一部分。在接收到该通知后,设备发送一个数据请求给协调器,以请求数据发送。只有协调器能够管理间接发送。NWK层可以请求将MSDU从事件队列中清除。MAC子层寻找和MSDU有关的msduhandle,如果它还未被发送,则将其清除。对RFD来说,该清除功能是可选的。先前讨论的数据服务是对想要发送数据的设备来说的,如果设备正在接收数据,MAC数据服务将把数据传给NWK层。除了数据本身外,在MPDU期间测量的LQI和数据接收时的时间(时间戳)也被提供给了NWK层。 MAC管理服务MAC管理服务通过MAC层管理实体服务接入点(MLME-SAP)来访问。MAC命令通常包括地址和安全信息等参数,并且以一个状态的形式向下一层报告一个请求的结果。该状态有多个选项,如成功(SUCCESS)或无效(INVALID)。.1 管理MAC PIBMAC层,类似于PHY层,有自己的常量和属性。MAC属性存储在MAC PAN信息库(MAC-PIB)中,能够访问NWK层。NWK层不仅可以从MAC-PIB中请求MLME来获得一个属性的值,而且可以从PHY-PIB中请求一个属性的值。在后者的情况中,MLME把请求向下传送给PLME,并且一从PLME中接收到结果就通知NWK层。NWK层可以通过MLME-SAP请求MLME将一个MAC-PIB或PHY-PIB设置为一个给定的值。NWK层不能改变MAC或PHY-PIB中的只读属性。PHY-PIB中改变一个属性的NWK请求由MLME通过PLME-SAP向下传送给PLME.2 MAC复位NWK层能够请求MLME将MAC子层复位到它的初始状态,并清楚所有的内部变量到它们的默认值,这被叫做MAC复位操作。NWK层还可以请求将MAC-PIB中的所有属性复位到它们的默认值。MAC使用PHY管理复位在复位内部变量之前屏蔽收发器。.3 设备加入网络(Association)和退出网络(Disassociation)Association是设备加入网络的过程,MAC层将association过程作为了对NWK的一项服务。管理网络形成的是NWK层。大多数情况下,在开始association过程前,设备必须执行一次MAC复位。在该部分中,使用了一个服务原语是如何帮助描述一个协议层功能的小例子来用服务原语解释association过程。MAC association过程有四种服务原语:请求:MLME-Associate.request指示:MLME-Associate.indication应答:MLME-Associate.response确认:MLME-Associate.confirm对RFD设备,指示和应答原语是可选的。设备的NWK层使用MLME-Associate.request请求原语请求加入一个协调器中。该请求还提供了请求加入网络的设备的功能列表,这个列表决定了设备是一个FFD还是RFD。.1小节介绍了完整的列表,且讨论了命令的格式。当想加入网络的设备的MAC层从它自己的NWK层接收到association请求时,它将把该命令作为一个MPDU向下传送给PHY层。MPDU变为PHY payload,并被无线发送给协调器设备。当协调器的应答返回该设备时,它的MAC层根据请求结果传送一个确认(MLME-Associate.confirm)给NWK层。在协调器这边,当协调器的MAC层接收到association请求后,它会使用MLME-Associate.indication指示原语来通知NWK层知道该请求。NWK层使用 MLME-Associate.response应答原语将其决定传送给自己的MAC层。协调器MLME不直接把决定发送回未加入网络的设备(Unassociated Device),相反,它使用间接发送。因此,数据将被存储在协调器中。未加入网络的设备在等待一段预先确定的从设备发送请求开始的时间后,发送数据请求给协调器。这段等待时间的长度以属性的形式存储在MAC PIB中(macResponseWaitTime)。Association过程的流程图见图3.12。MLME-COMM-STATUS.indication指示原语(下一小节有介绍)为NWK层提供了握手状态(成功或不成功)。成功加入网络的设备叫做associated设备。Disassociation是已加入网络的设备用来通知协调器该设备想要加入网络的一个过程。已经加入网络设备(Associated Device)的NWK层使用MLME-DISASSOCIATE.request请求原语产生disassociation请求给自己的MLME。然后该请求通过设备PHY层数据服务被发送给协调器。在disassociation请求中,设备提供了请求的原因,这些原因可以是下面之一:1 协调器希望设备离开PAN(个人区域网)。2 设备想要离开PAN。协调器对请求进行分析,如果请求的所有地址和安全信息都有效,协调器会给设备发回一个成功disassociation的确认信息,该确认信息可以使用直接或间接发送机制。首选的发送方法在MLME-DISASSOCIATE.request中有具体说明。协调器MLME根据从网络中某个设备中接收到的disassociation结果,使用 MLME-DISASSOCIATE.indication原语来通知它的NWK层。图3.13所示是disassociation过程的流程图。Disassociation请求可以通过设备或协调器进行初始化。图3.13a显示了设备初始化disassociation过程时的步骤。如果协调器在一个信标使能的网络中初始化disassociation时,使用间接发送方式。图3.13b中,协调器通知设备由数据正等待它发送,该数据被当做周期性广播信标的一部分。在接收到信标后,设备请求数据并且接收disassociation通知。 MLME-DISASSOCIATE.confirm通常用来通知请求disassociation的设备的NWK层接收的结果是什么。.4 通信状态MLME使用MLME-COMM-STATUS.indication原语来为NWK层提供发送状态等信息。该原语还被MLME用来报告接收数据包中与安全相关的错误。如果通信不成功,该原语还会提供失败的原因。安全特性不支持和信道访问失败是典型的通信不成功的原因。.5 使能和屏蔽接收器NWK层可以请求MLME使能接收器一段固定的时间,这段时间是由NWK层提供的,NWK层还可以请求关闭接收器。对RFD和FFD来说,这些功能都是可选的。使能和屏蔽请求对其他MLME功能来说是次要的。例如,如果MLME有一个冲突功能例如发送一个信标,MLME将会忽略关闭接收器的NWK层请求。MLME通常根据使能或屏蔽接收器请求的结果来通知NWK层。.6 GTS管理在信标使能网络中,有GTS供设备使用来发送信息,而无需使用CSMA-CA。设备的NWK层可以使用MAC管理服务来请求一个新GTS的分配。如果该设备已经有一个分配的GTS,现在不再需要它了,那么MLME可以请求PAN协调器来解除已经存在的分配。PAN协调器的NWK层还可以请求它的MLME来解除一个其网络中已经分配给某个设备的GTS。PAN协调器可以选择接受或者拒绝一个GTS请求。如果PAN协调器接受分配一个GTS,那么在它的应答中将包含GTS的特性,如它的长度。GTS请求原语是MLME-GTS.request,由NWK层发送给MLME。MLME使用MLME-GTS.confirm原语将GTS请求结果发送回它的NWK层。在PAN协调器中,无论何时PAN协调器根据从网络中任何设备接收到的请求分配或解除分配一个GTS,MLME都将使用MLME-GTS.indication原语来通知它的NWK层。如果该网络层已经请求了GTS分配或解除分配,那么它的MLME将会使用 MLME-GTS.confirm原语通知NWK层。图3.14显示了设备初始化时GTS分配的流程图。图3.15显示了两个不同的解除分配案例的流程图。图3.1a是当设备初始化该请求时的解除分配步骤。在图3.15b中,则是由PAN协调器初始化的步骤。解除一个GTS的分配时会在CAP中留下一个没有使用的gap。例如,在图3.16中,GTS2被解除分配时,时隙11到13没有被任何设备使用,这样的超帧被称为“破碎超帧”,为了修复该破碎问题并增长CAP,GTS2被移除,GTS3被重新分配到时隙12到13。重新分配GTS的结果就是CAP从9个时隙增长到了12个时隙。.7 更新超帧配置在一个信标使能网络中,NWK成可以向MLME请求开始一个超帧结构。NWK层会提供必要的参数,包括激活时间段的长度和信标发送的周期,但不仅限于此。超帧结构中的其中一个参数是BLE选项(见图3.17)。为了节省电池能量该选项允许支持信标的协调器在发送信标帧后,关闭其接收器一段等于macBattLifeExtPeriods的时间,这段时间是在发送任何帧后对IFS时间段的附加。如果BLE选项设为false,协调器必须保持其接收器在整个CAP阶段都处于激活状态。.8 孤立通知(Orphan Notification)一个设备必须加入网络来使其能与网络中其他设备通讯。先前加入了网络但是后来脱离网络范围的设备叫做“孤立设备”(Orphaned Device)。使用disassociation过程离开网络的设备不是孤立设备。如果某设备的NWK层遇到重复通信失败,它将判定该设备已经孤立了。例如,如果设备发送一帧信息后需要一个应答,但在等macAckWaitDuration symbols 长的时间后没有接收到应答,它可能重复发送数据。如果,在尝试macMaxFrameRetires次后,依然没有接收到应答,那么设备会将这记作“一次”通信失败,在声称该设备为孤儿前,这还是可以容忍的。孤立设备的NWK层可以指示它的MLME执行下面步骤之一:1 复位MAC然后执行association过程2 执行孤立设备重新调整步骤复位和association过程在之前的章节有过讨论,重新调整步骤(见图3.18)开始于

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论