ZigBee组网

           

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


网络初始化:
Zigbee网络的创建是由网络协调器发起的,任何一个zigbee节点要组建一个网络必需要知足如下两点要求:
1.节点是FFD节点,具有zigbee协调器的能力;
2.节点尚未与其余网络链接,当节点已经与其余网络链接时,此节点只能做为该网络的子节点,由于一个zigbee网络中有且只有一个网络协调器。

网络初始化的流程以下:
1.肯定网络协调器,首先判断节点是不是FFD节点,接着判断此FFD节点是否在其余网络里或者网络里是否已经存在协调器。经过主动扫描,发送一个信标请求命令(Beacon request command),而后设置一个扫描期限(T_scan_duration),若是在扫描期限内都没有检测到信标,那么就认为FFD在其pos内没有协调器,那么此时就能够创建本身的zigbee网络,而且做为这个网络的协调器不断地产生信标并广播出去。
2.进行信道扫描过程。包括能量扫描和主动扫描两个过程:首先对指定的信道或者默认的信道进行能量检测,以免可能的干扰。以递增的方式对所测量的能量值进行信道排序,抛弃那么些能量值超出了可容许能量水平的信道,选择可容许能量水平的信道并标注这些信道是可用信道。接着进行主动扫描,搜索节点通讯半径内的网络信息。这些信息以信标帧的形式在网络中广播,节点经过主动信道扫描方式得到这些信标帧,而后根据这些信息,找到一个最好的、相对安静的信道,经过记录的结果,选择一个信道,该信道应存在最少的zigbee网络,最好是没有zigbee设备。在主动扫描期间,mac层将丢弃phy层数据服务接收到的除信标之外的全部帧。
3.设置网络ID。找到合适的信道后,协调器将为网络选定一个网络标识符(PAN ID,取值<=0x3FFF),这个ID在所使用的信道中必须是惟一的,也不能和其余zigbee网络冲突,并且不能为广播地址oxFFFF(此地址为保留地址,不能使用)。PAN ID能够经过侦听其余网络的ID而后选择一个不会冲突的ID的方式来获取,也能够人为的指定扫描的信道后来肯定不和其余网络冲突的PAN ID。在zigbee网络中有两种地址模式:扩展地址(64位)和短地址(16位),其中扩展地址由IEEE组织分配,用于惟一的设备标识;短地址用于本地网络中设备标识,在一个网络中,每一个设备的短地址必须惟一,当节点加入网络时由其父节点分配并经过使用短地址来通讯。对于协调器来讲,短地址一般设定为0x0000;
上面步骤完成后,就成功初始化了zigbee网状网络,以后就等待其余节点的加入。节点入网时将选择范围内信号最强的父节点(包括协调器)加入网络,成功后将获得一个网络短地址并经过这个地址进行数据的发送和接收,网络拓扑关系和地址就会保存在各自的flash中。
节点经过协调器加入网络:
当节点协调器肯定以后,节点首先须要和协调器创建链接加入网络。考虑到网络的容量和FFD/RFD的特色,本文只讨论FFD节点状况,FFD节点与协调器链接加入网络的流程图:

为了创建链接,FFD节点须要向协调器提出请求,协调器接收到节点的链接请求后根据状况决定是否容许其链接,而后对请求链接的节点作出响应,节点与协调器创建链接后,才能实现数据的收发。具体的流程能够分为下面的步骤:
1.查找网络协调器。首先会主动扫描查找周围网络的协调器,若是在扫描期限内检测到信标,那么将得到了协调器的有关信息,这时就向协调器发出链接请求。在选择合适的网络以后,上层将请求mac层对物理层和mac层的phyCurrentChannel、macPANID等PIB属性进行相应的设置。若是没有检测到,间隔一段时间后,节点从新发起扫描。
2.发送关联请求命令(Associate request command)。节点将关联请求命令发送给协调器,协调器收到后当即回复一个确认帧(ACK),同时向它的上层发送链接指示原语,表示已经收到节点的链接请求。可是这并不意味着已经创建链接,只表示协调器已经收到节点的链接请求。当协调器的mac层的上层接收到链接指示原语后,将根据本身的资源状况(存储空间和能量)决定是否赞成此节点的加入请求,而后给节点的mac层发送响应。
3.等待协调器处理。当节点收到协调器加入请求命令的ACK后,节点mac将等待一段时间,接受协调器的链接响应。在预约的时间内,若是接收到链接响应,它将这个响应向它的上层通告。而协调器给节点的mac层发送响应时会设置一个等待响应时间(T_ResponseWaitTime)来等待协调器对其加入请求命令的处理,若协调器的资源足够,协调器会给节点分配一个16位的短地址,并产生包含新地址和链接成功状态的链接响应命令,则此节点将成功的和协调器创建链接并能够开始通讯。若协调器资源不够,待加入的节点将从新发送请求信息,直接入网成功。
4.发送数据请求命令。若是协调器在响应时间内赞成节点加入,那么将产生关联响应命令(Associate response command)并存储这个命令。当响应时间事后,节点发送数据请求命令(Data request command)给协调器,协调器收到后当即回复ACK,而后将存储的关联响应命令发给节点。若是在响应时间到后,协调器尚未决定是否 赞成节点加入,那么节点将试图从协调器的信标帧中提取关联响应命令,成功的话就能够入网成功,不然从新发送请求信息直到入网成功。
5.回复。节点受到关联响应命令后,当即向协调器回复一个确认帧(ack),以确认接收到链接响应 命令,此时节点将保存协调器的短地址和扩展地址,而且节点的MLME向上层发送链接确认原语,通告关联加入成功的信息。
节点经过已有节点加入网络
当靠近协调器的FFD节点和协调器关联成功后,处于这个网络范围内的其余节点就以这些FFD节点做为父节点加入网络了,具体加入网络有两种方式,一种是经过关联(associate)方式,就是待加入的节点发起加入网络;另外一种是直接(direct)方式,就是待加入的节点具体加入到那个节点下,做为该节点的子节点。其中关联方式是zigbee网络中新节点加入网络的主要途径,

对于一个节点来讲只有没有加入过网络的才能进行加入网络。在这些节点中,有些是曾经加入过网络中,可是却与它的父节点失去联系(这样的被称为孤儿节点),而有些则是新节点。当是孤儿节点时,在它的相邻表中存有原父节点的信息,因而它能够直接给原父节点发送加入网络的请求信息。若是父节点有能力赞成它加入,因而直接告诉它的之前被 分配的网络地址,它便入网成功;若是此时它原来的父节点的网络中,子节点数已达到最大值,也就是说网络地址已经分配满,父节点便没法批准它加入,它只能以新节点身份从新寻找并加入网络。
而对于新节点来讲,他首先会在预先设定的一个或多个信道上经过主动或被动扫描周围它能够找到的网络,寻找有能批准本身加入网络的父节点,并把能够找到的父节点的资料存入本身的相邻表。存入相邻表的父节点的资料包括zigbee协议的版本、堆栈的规范、PAN ID和能够加入的信息。在相邻表中全部的父节点中选择一个深度最小的,并对其发出请求信息,若是出现相同最小深度的两个以上的父节点,那么随机选取一个发送请求。若是相邻表中没有合适的父节点的信息,那么表示入网失败,终止过程。若是发出的请求被批准,那么父节点同时会分配一个16位的网络地址,此时入网成功,子节点能够开始通讯。若是请求失败,那么从新查找相邻表,继续发送请求信息,直到加入网络或者相邻表中没有合适的父节点。
网络



转载自:http://www.hizigbee.com/forum.php?mod=viewthread&tid=964spa

相关文章
相关标签/搜索