ZigBee组网原理详解

ZigBee组网原理详解

1.组网概述html

    组建一个完整的zigbee网状网络包括两个步骤:网络初始化、节点加入网络。其中节点加入网络又包括两个步骤:经过与协调器链接入网和经过已有父节点入网。网络

    ZigBee网络中的节点主要包含三个:终端节点、路由器节点、PAN协调器节点
    节点功能:
    协调器节点:ZigBee协调器是网络各节点信息的汇聚点,是网络的核心节点,负责组建、维护和管理网络,并经过串口实现各节点与上位机的数据传递;ZigBee协调器有较强的通讯能力、处理能力和发射能力,可以把数据发送至远程控制端。
    路由器节点:负责转发数据资料包,进行数据的路由路径寻找和路由维护,容许节点加入网络并辅助其子节点通讯;路由器节点是终端节点和协调器节点的中继,它为终端节点和协调器节点之间的通讯进行接力。
    终端节点:终端节点能够直接与协调器节点相连,也能够经过路由器节点与协调器节点相连。

2. 网络初始化预备app

    Zigbee网络的创建是由网络协调器发起的,任何一个zigbee节点要组建一个网络必需要知足如下两点要求:分布式

    (1)节点是FFD节点,具有zigbee协调器的能力;flex

   (2)节点尚未与其余网络链接,当节点已经与其余网络链接时,此节点只能做为该网络的子节点,由于一个zigbee网络中有且只有一个网络协调器。spa

FFD:Full Function Device 全功能节点.net

RFD:Reduced FunctionDevice 半功能节点3d

    全功能设备(FFD):设备可提供所有的IEEE 802.15.4 MAC服务,可充当热河ZigBee设备,所以FFD设备不只能够发送和接收数据,还具有路由功能。
    精简功能设备(RFD):设备只提供部分的IEEE 802.15.4 MAC服务,智能充当终端节点,不能充当协调点和路由节点,所以它只负责将采集的数据信息发送给协调点和路由点,并不具有数据转发、路由发现和路由维护等功能。

3.网络初始化流程htm

    ZigBee网络初始化只能是由网络协调器发起的,在组建网络前,须要判断本节点还没与其余网络链接,若是节点已经与其余网络链接时,此节点只能做为该网络的子节点。一个ZigBee网络中有且仅有一个ZigBee协调器,一旦网络创建好了,协调器就退化成路由器的角色,甚至是能够去掉协调器的,这一切得益于ZigBee网络的分布式特性。blog

3.1 肯定网络协调器:

    首先判断节点是不是FFD节点,接着判断此FFD节点是否在其余网络里或者网络里是否已经存在协调器。经过主动扫描,发送一个信标请求命令(Beaconrequest command),而后设置一个扫描期限(T_scan_duration),若是在扫描期限内都没有检测到信标,那么就认为FFD在其pos内没有协调器,那么此时就能够创建本身的zigbee网络,而且做为这个网络的协调器不断地产生信标并广播出去。

注意:一个网络里,有且只能有一个协调器(coordinator)。

3.2 进行信道扫描过程。

    包括能量扫描和主动扫描两个过程:首先对指定的信道或者默认的信道进行能量检测,以免可能的干扰。以递增的方式对所测量的能量值进行信道排序,抛弃那么些能量值超出了可容许能量水平的信道,选择可容许能量水平的信道并标注这些信道是可用信道。接着进行主动扫描,搜索节点通讯半径内的网络信息。这些信息以信标帧的形式在网络中广播,节点经过主动信道扫描方式得到这些信标帧,而后根据这些信息,找到一个最好的、相对安静的信道,经过记录的结果,选择一个信道,该信道应存在最少的zigbee网络,最好是没有zigbee设备。在主动扫描期间,MAC层将丢弃PHY层数据服务接收到的除信标之外的全部帧。

3.3 设置网络ID。

 找到合适的信道后,协调器将为网络选定一个网络标识符(PAN ID,取值《=0x3FFF),这个ID在所使用的信道中必须是惟一的,也不能和其余zigbee网络冲突,并且不能为广播地址0xFFFF(此地址为保留地址,不能使用)。PAN ID能够经过侦听其余网络的ID而后选择一个不会冲突的ID的方式来获取,也能够人为的指定扫描的信道后,来肯定不和其余网络冲突的PAN ID。

在zigbee网络中有两种地址模式:扩展地址(64位)和短地址(16位),其中扩展地址由IEEE组织分配,用于惟一的设备标识;短地址用于本地网络中设备标识,在一个网络中,每一个设备的短地址必须惟一,当节点加入网络时由其父节点分配并经过使用短地址来通讯。对于协调器来讲,短地址一般设定为0x0000。

    上面步骤完成后,就成功初始化了zigbee网状网络,以后就等待其余节点的加入。节点入网时将选择范围内信号最强的父节点(包括协调器)加入网络,成功后将获得一个网络短地址并经过这个地址进行数据的发送和接收,网络拓扑关系和地址就会保存在各自的flash中。


4.节点经过协调器加入网络

    当节点协调器肯定以后,节点首先须要和协调器创建链接加入网络。

    为了创建链接,FFD节点须要向协调器提出请求,协调器接收到节点的链接请求后根据状况决定是否容许其链接,而后对请求链接的节点作出响应,节点与协调器创建链接后,才能实现数据的收发。节点加入网络的具体流程能够分为下面的步骤:

4.1 查找网络协调器。

    首先会主动扫描查找周围网络的协调器,若是在扫描期限内检测到信 标,那么将得到了协调器的有关信息,这时就向协调器发出链接请求。在选择合适的网络以后,上层将请求MAC层对物理层PHY和MAC层的phyCurrentChannel、macPANID等PIB属性进行相应的设置。若是没有检测到,间隔一段时间后,节点从新发起扫描。

4.2 发送关联请求命令(Associaterequest command)。

    节点将关联请求命令发送给协调器,协调器收到后当即回复一个确认帧(ACK),同时向它的上层发送链接指示原语,表示已经收到节点的链接请求。可是这并不意味着已经创建链接,只表示协调器已经收到节点的链接请求。当协调器的mac层的上层接收到链接指示原语后,将根据本身的资源状况(存储空间和能量)决定是否赞成此节点的加入请求,而后给节点的mac层发送响应。

4.3 等待协调器处理。

    当节点收到协调器加入关联请求命令的ACK后,节点mac将等待一段时间,接受协调器的链接响应。在预约的时间内,若是接收到链接响应,它将这个响应向它的上层通告。而协调器给节点的mac层发送响应时会设置一个等待响应时间(T_ResponseWaitTime)来等待协调器对其加入请求命令的处理,若协调器的资源足够,协调器会给节点分配一个16位的短地址,并产生包含新地址和链接成功状态的链接响应命令,则此节点将成功的和协调器创建链接并能够开始通讯。若协调器资源不够,待加入的节点将从新发送请求信息,直接入网成功。

4.4 发送数据请求命令。

若是协调器在响应时间内赞成节点加入,那么将产生关联响应命令(Associateresponse command)并存储这个命令。当响应时间事后,节点发送数据请求命令(Datarequest command)给协调器,协调器收到后当即回复ACK,而后将存储的关联响应命令发给节点。若是在响应时间到后,协调器尚未决定是否赞成节点加入,那么节点将试图从协调器的信标帧中提取关联响应命令,成功的话就能够入网成功,不然从新发送请求信息直到入网成功。

4.5 回复。

    节点收到关联响应命令后,当即向协调器回复一个确认帧(ACK),以确认接收到链接响应命令,此时节点将保存协调器的短地址和扩展地址,而且节点的MLME向上层发送链接确认原语,通告关联加入成功的信息。




5.节点经过已有节点加入网络

    当靠近协调器的FFD节点和协调器关联成功后,处于这个网络范围内的其余节点就以这些FFD节点做为父节点加入网络了,具体加入网络有两种方式,一种是经过关联(associate)方式,就是待加入的节点发起加入网络;另外一种是直接(direct)方式,就是待加入的节点具体加入到那个节点下,做为该节点的子节点。其中关联方式是zigbee网络中新节点加入网络的主要途径。

    对于一个节点来讲只有没有加入过网络的才能进行加入网络。在这些节点中,有些是曾经加入过网络中,可是却与它的父节点失去联系(这样的被称为孤儿节点),而有些则是新节点。当是孤儿节点时,在它的相邻表中存有原父节点的信息,因而它能够直接给原父节点发送加入网络的请求信息。若是父节点有能力赞成它加入,因而直接告诉它的之前被分配的网络地址,它便入网成功;若是此时它原来的父节点的网络中,子节点数已达到最大值,也就是说网络地址已经分配满,父节点便没法批准它加入,它只能以新节点身份从新寻找并加入网络。

    而对于新节点来讲,他首先会在预先设定的一个或多个信道上经过主动或被动扫描周围它能够找到的网络,寻找有能力批准本身加入网络的父节点,并把能够找到的父节点的资料存入本身的相邻表。存入相邻表的父节点的资料包括zigbee协议的版本、协议栈的规范、PAN ID和能够加入的信息。在相邻表中全部的父节点中选择一个深度最小的,并对其发出请求信息,若是出现相同最小深度的两个以上的父节点,那么随机选取一个发送请求。若是相邻表中没有合适的父节点的信息,那么表示入网失败,终止过程。若是发出的请求被批准,那么父节点同时会分配一个16位的网络地址,此时入网成功,子节点能够开始通讯。若是请求失败,那么从新查找相邻表,继续发送请求信息,直到加入网络。

6.ZigBee分离流程

    正常的分离过程:

    1).协调器主动要求设备分离

    协调器向设备发送接触链接命令,无论设备是否有ACK回应,协调器都认为该设备已经分离

    2).已链接设备主动分离

    设备主动向协调器发送接触链接命令,无论有没有收到协调器的ACK回应,设备都认为本身已经分离

    3).异常分离过程

    因为设备忽然断电或者被阻挡覆盖,而形成的分离。前一种,在重启后,会发起孤儿请求链接。后一种,设备会尝试重试重传并等待ACK响应,若是没有响应,设备则为认为本身已经失去联系,间隔一段时间(默认为1s)后,节点从新而且不断的发起扫描。