ZigBee网络基础试验报告数据库
本报告经过Sample App这个例子实现数据在ZigBee网络中的简单传输。要求掌握网络组建及协议分析仪的使用方法。编程
1 设备的分类网络
ZigBee网络只支持两种设备:spa
1)全功能设备(FFD Full Function Device)排序
2)精简功能设备(也叫半功能设备 Reduced Function Device)接口
二者的比较:ci
其中FFD设备可以提供MAC层的全部服务,可充当任何ZigBee节点,不只能够接收放送数据,还具备路由功能,所以能够接收子节点;而RFD只能提供部分的MAC层服务,只能充当子节点,只负责将采集到的数据发送给协调器和路由器节点,自己并不具备路由功能,所以不能接收子节点信息,RFD之间的通讯只能经过FFD来完成。资源
ZigBee标准在此基础上定义了三中节点:路由
ZigBee协调器(Coordinator)、ZigBee路由器(Routers)、ZigBee终端(End Device)it
2 所使用的设备
所用的ZigBee设备都具备链接网络和断块网路的功能。
ZigBee协调器和路由器都具备如下附加功能:
1)容许设备以以下方式链接网路:
① MAC(Medium Access Control)层的链接命令。
② 应用层的链接请求
2)容许设备以以下方式断开网络;
① MAC层的断开命令
② 应用层的断开命令
③ 对逻辑网络地址的分配
④ 维护邻居设备
3 组建网络
组建一个网状的ZigBee网络包括两个步骤:网络的初始化和节点加入网络;而节点加入网络又有两个步骤:经过协调器加入网络和经过已有节点入网。
1)网络的初始化
ZigBee网络的创建是由协调器(Coordinator)发起的,任何一个节点想创建一个网络必须知足两个条件:
① 节点是FFD节点,具备协调器功能;
② 节点尚未和其余网络链接(一个网络中只许有一个协调器)
网络初始化过程:
图1:网络初始化流程
网络初始化流程以下:
1)肯定网络协调器。首先判断节点是不是FFD节点,接着判断次节点是不是其余网络里的网络协调器(经过编程设定其节点属性)。经过主动扫描,发送一个信标请求命令(Beacon request command),而后还要设置一个扫描期限时间(T_scan_duration),若是在扫描期内没有检测到信标,那么此FFD便可创建本身ZigBee网络,而且做为这个网络的协调器不断产生信标并广播出去。
2)进行信道扫描。包括能量扫描和主动扫描。
首先对指定的信道或默认的信道进行能量扫描,以免可能的干扰。为实现能量检测扫描,设备网络层经过发送扫描类型(ScanType)参数设置为能量检测扫描的MLME-SCAN.request原语到MAC层进行信道能量检测扫描扫描结果经过MLME-SCAN.confirm原语返回。当网络层关联实体收到成功的能量检测扫描结果后,将以递增的方式对所测的能量值进行信道排序,而且抛弃那些能量值超出了可容许能量水平的信道,选择可容许能量水平的信道做下一步处理
而后,网络管理实体将经过发送MLME-SCAN.Request原语进行主动扫描,其中该原语的ScanType参数设置为主动扫描。搜索节点通讯半径内的网络信息。这些信息以网络信标帧的形式在网络中广播,节点经过主动扫描形势接收这些信标帧,而后根据这些信息,找到一个较好的,相对安静的信道,该信道存在最少的ZigBee网络(最好也没有ZigBee设备)。
3)设置网络ID。找到合适的网络后,协调器将为这个新网络选择一个PAN标识符(PAN ID,取值≦0x3FFF),这个ID在所使用的信道中必须是惟一的。PAN ID能够经过监听通道内其余网络的ID来选择一个不会冲突的ID的方式来获取,也能够人为的指定。
在ZigBee网络中有两种地址模式:扩展地址(64位)和短地址(16位),其中扩展地址有IEEE组织分配,用于惟一的设备标识;短地址用于本地网络中的设备标识,在一个网络中,每一个设备的短地址必须惟一,当节点加入网络时由其父节点分配并经过使用短地址进行通讯。对于协调器来讲,短地址一般设定为0X0000;
网络初始化包括两方面的内容:肯定初始化参数和选定参数配置到节点中。节点须要初始化的参数以下:操做信道LogicChannel、PAN ID、节点自身短地址macShorAddress、信标周期BeaconOrder、超帧激活周期SuperframeOrder等。在肯定网络的初始化参数以后,将经过调用MAC层的MLNE-SAP接口的设置原语(MLME-SET)和开始原语(MLME-START)将选定的参数配置到节点的MAC中。
图1所对应的创建网络流程:
图2 创建一个新网络
4 节点经过协调器加入网络
当ZigBee协调器肯定之后,节点首先须要和协调器创建链接加入网络。
图3 节点(FFD)与协调器链接加入网络的流程图
为了创建链接,FFD节点须要向协调器提出链接请求,协调器接收到节点的链接请求后根据状况决定是否容许其链接,而后对请求链接的节点作出响应,节点与协调器创建链接之后,才能实现数据的收发。具体的流程能够分为如下几步:
1)查找网络协调器。首先会主动扫描查找周围网络的协调器,若是在扫描期限内检测到信标,那么将得到协调器的有关信息,这时就向协调器发送链接请求,在选择合适的网络后,上层将请求MAC层对物理层和MAC层的phyCurrentChannel、macPANID等PIB(数据库)属性进行相应的设置。若是没有检测到,间隔一段时间后,节点从新发送扫描。
2)发送关联请求命令(Associate request commmand)。节点将关联请求命令发给协调器,协调器收到后当即回复一个确认帧(ACK),同时向它的上层发送链接指示原语,表示已经收到节点的链接请求。但这并不意味着已经创建链接,只表示协调器已经收到节点的链接请求。当协调器的MAC层的上层接收到链接指示原语后,将根据本身的资源状况(存储空间和能量)决定是否赞成此节点加入请求,而后给节点MAC层发送响应。
3)等待协调器处理。当节点收到协调器加入请求命令的ACK后,节点的MAC将等待一段时间,接收协调器的链接响应。在预约的时间内,若是接收到链接响应,它将这个响应向它的上层通告。而协调器给节点的MAC层发送响应时会设置一个等待响应时间(T_ResponseWaitTime)来等待协调器对其加入请求命令的处理,若协调器资源足够,协调器会给节点分配一个16位的短地址,并产生包含新地址和链接成功状态的链接响应命令,则此节点将成功的和协调器创建链接并能够开始通讯。若协调器资源不够,待加入的节点将从新发送请求信息,直到入网成功。
4)发送数据请求命令。若是协调器在响应时间内赞成节点加入,那么将产生关联响应命令(Associate reponse command)并先存储这个命令。当响应时间事后,节点发送数据请求命令(Data request command)给协调器,协调器收到后当即回复ACK,而后将存储的关联响应命令发给节点。若是在响应时间到后,协议器尚未决定是否赞成节点加入,那么节点将试图从协议器的信标帧中提取关联响应命令,成功的话就能够入网成功,不然从新发送请求信息直到入网成功。
5)回复。节点收到关联响应命令后,当即向协调器回复一个确认帧(ACK),以确认接收到链接响应命令,此时节点将保存协调器的短地址和扩展地址,而且节点的MLME向上层发送链接确认原语,通告关联加入成功的信息。
上面的完成之后,等待加入网络的节点应该已经收到协调器的加入请求回复。若是该请求经过,该节点将成功和协调器创建链接并得到网络地址和其余节点进行通讯。在上述链接过程当中,请求创建链接的节点的上层生成链接请求原语发送给节点的MAC层。MAC层的MLME接收到这个原语后,先向物理层发送和原语更新phyCurrentchannel和macPANID的值,而后生成一个含有创建链接请求的命令帧发送给指定的协调器。节点在发送命令帧时使用CSMA-CA(载波侦听多址接入—冲突避免)。
链接过程原语时序图(引用):
图4 节点与协调器链接原语时序图
5 节点经过已有节点加入网络
当靠近协调器的FFD节点和协调器关联成功后,处于这个网络范围内的其余节点就以这些FFD节点做为父节点加入网络了,具体加入网络的方式有两种:
①经过关联(association)方式,就是待加入节点发起加入网络;也就是子设备用MAC链接程序来加入网络
②直接方式(direct)方式,子设备直接同一个预先所指定的父设备链接来加入网络。
其中关联方式是ZigBee网络中新节点加入网络的主要途径
对于一个节点来讲,只有没有加入网络的才能进行加入网络。在这些节点中,有些是曾经加入过网络,可是却与父节点失去联系(这样的节点称为孤儿节点),而有些则是新节点。当是孤儿节点时,在它的相邻表中存有原父节点的信息,因而它能够直接给源父节点发送加入网络的请求信息。若是父节点有能量赞成它加入,因而直接告知它的之前被分配的网络地址,它便入网成功;若是此时它原来的父节点的网络中,子节点数已经达到最大值,也就是说网络地址已经分配满,父节点便没法批准它加入,它只能以新节点身份从新寻找并加入网络。
而对于新节点来讲,它首先会在预先设定的一个或多个信道上经过主动或被动扫描周围它可找到的网络,寻找有能批准本身加入网络的父节点,并把能够找到的全部父节点的资料存入本身的相邻表。存入相邻表的父节点的资料包括:ZigBee协议的版本、堆栈的规范、PANID和能够加入的信息。在相邻表中全部的父节点中选择一个发送请求。若是发送的请求被批准,那么父节点同时会被分配给它一个16为的网络地址,此时入网成功,子节点能够开始通讯。若是请求失败,那么从新查找相邻表,继续发送请求信息,直到加入网络或者相邻表中没有了合适的父节点。
6 协议分析仪分析ZigBee数据包:
协议分析仪只是存在一个侦听的做用,它只能侦听设备发送的数据
如下是利用协议分析仪分析创建ZigBee网络,节点加入及发送数据的试验过程。
图5 ZigBee信道扫描
从第三行开始此FFD节点对信道进行扫描(主动扫描),途中看出此节点发送广播帧,一个信标请求命令(Beacon request),在第四行中此节点获得相应的网络信息:MAC层将接收到PHY层数据服务接收到的信标。在此,ZigBee内部设置了扫描期限,在此时间内,将重复以上的动
在这里能够看到在网络管理实体一旦选择了一个PAN标识符,就会马上选择一个等于0X0000的16位网络地址。
在第17行中,源地址是路由器的物理地址0XDDFFFFFFFFFFFFFF,它的PANID没有肯定为0XFFFFF。这时的路由器尚未加入网络,因此尚未网络地址;目的地址为协调器的网络地址0X0000,它的PANID为0X0000;它的命令是联合方式加入请求。因此该行表示的意思是向协调器发送联合方式加入请求,发送完成后将获得一个应答(参见第18行)。
收到应答之后,路由器开始加入网络(第19行),在收到应答之后(第20行),协调器开始为路由器分配网络地址。从第21行能够看出,路由器分配到的网络地址为0X000。这样就往常了整个创建、加入网络的过程。