总体上来说:在一个zigbee网络中,只有协调器(coordinator)设备可以建立网络,在建立网络过程中,所有的实现过程都是通过原语实现的(具体在程序中,如用c语言,就是调用一个一个函数,或者是一个一个任务来实现(不要刻意最求这句话的准确性,本来好的协议就是只要达到这样的结果,不管具体实现)),首先协调器设备的应用层调用NLME_NETWORK_FORMATION.request原语,发出建立网络请求,网络层收到这个原语,就要求MAC层执行信道能量扫描(在IEEEE802.15.4协议中规定,在2.4G频段,共有16个信道,每个信道的带宽为5M,深入理解,可以看协议和通信原理的相关资料)。这调用MLME_SCAN.request,主要找到信道能量低于设定能量值的信道,并且标注这些信道是可用信道,下一步就在可用信道中执行活动情况扫描(active scan),就是在可接受的信道搜寻zigbeee设备,找到一个最好的信道,通过记录的结果,选择一个信道,该信道存在最少的zigbee网络,最好是没有zigbee设备。

具体来说:zigbee组网过程
组网方案设计:组建一个完整的zigbee网状网络包括两个步骤:网络初始化、节点加入网络,其中节点加入网络又包括两个步骤:通过与协调器连接入网和通过已有父节点入网。
网络初始化:
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://xiebingsuccess.blog.163.com/blog/static/103178148201211109354184/

zigbee组网过程相关推荐

  1. zigbee组网过程概述

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

  2. zigbee组网过程浅析

    zigbee协议栈使用的是zstack版本,该协议栈的整体功能有点类似于操作系统.下面以SimpleApp例程为例,对协议栈的组网流程进行描述. 协议栈是用C语言实现的,由于C语言的入口都是main函 ...

  3. Zigbee组网过程分析

    参考博文 :zigbee组网过程_wu424602394的博客-CSDN博客_zigbee组网 1. 协调器未上电时, EndPoint不断发送请求包: 2. 协调器上电,无ENDPOINT时,大约1 ...

  4. ZigBee组网总结

    ZigBee组网 设备类型: 全功能设备(FFD),具备完善的功能,可以完成全部功能. 精简功能设备(RFD),功能较为简单,只具有部分功能,成本低 设备角色: 协调器(Coordinator),用于 ...

  5. ZigBee组网从未如此简单!

    想用ZigBee,想组网,不想看复杂的组网协议怎么办?看完这一篇就够了! ZigBee的前身是1998年由INTEL.lBM等产业巨头发起的"Homer flite"技术,随着我国 ...

  6. ZigBee组网详解

    ZigBee组网原理详解 https://blog.csdn.net/u012912039/article/details/52250253 1.组网概述 组建一个完整的zigbee网状网络包括两个步 ...

  7. ZigBee组网原理详解

    ZigBee组网原理详解 https://blog.csdn.net/u012912039/article/details/52250253 1.组网概述 组建一个完整的zigbee网状网络包括两个步 ...

  8. ZigBee组网原理分析

                                                                           ZigBee组网原理分析 原文链接:https://blo ...

  9. Zigbee组网方案

    ZigBee组网原理详解 1.组网概述 组建一个完整的zigbee网状网络包括两个步骤:网络初始化.节点加入网络.其中节点加入网络又包括两个步骤:通过与协调器连接入网和通过已有父节点入网. ZigBe ...

最新文章

  1. matlab方波假频现象分析,基于MATLAB 的信号时域采样及频率混叠现象分析
  2. 已知等势面如何画电场线_线段的三等分点怎么画?有多少画法?
  3. Android Studio-目录结构
  4. timedatectl使用
  5. 大数据下的质量体系建设
  6. [2020-11-30 contest]数列(矩阵加速),秘密通道(dijkstra最短路)小X游世界树(换根dp),划分(数学)
  7. [css] 能不能使用纯css使你的浏览器卡死?怎么实现?
  8. css在盒子中垂直居中和固定居中
  9. eigen库学习笔记
  10. C#学习笔记(十一):类和对象
  11. LIBRARY_PATH和LD_LIBRARY_PATH
  12. 美国计算机专业nlp大学排名,美国人工智能专业排名前7的一流学府 看看哪所院校最令你心动吧!...
  13. Ubuntu 16.04安装sogou拼音输入法
  14. Blazor Day in China来喽,还不来赶紧报名参与
  15. [SSL_CHX][2021-8-18]条件输出4
  16. 【CAN】CAN总线要点
  17. OSG中uniform变量
  18. 接口测试-使用Postman发送请求
  19. 过拟合的原因以及解决办法
  20. h5网页在微信客户端打开,上传图片不能调用相机

热门文章

  1. 阿里巴巴开发规范——代码格式
  2. 关于mysql的英文期刊_[转载]口腔英文杂志、收录数据库、参考信息汇总
  3. 做了8年游戏开发的程序员对未来的忧虑
  4. BCJC:45晶体管计算机优点
  5. 瞬态热传导matlab程序,瞬态热传导的奇异边界法及其MATLAB实现
  6. 港科百创 | 玻色量子完成新一轮亿元级融资,开启实用化量子计算新征程
  7. 三维可视化建模-园区3d可视化-3d数字孪生系统建设
  8. TTL电平与RS232电平的区别
  9. NOR与NAND闪存对比
  10. 连锁不平衡及基因组关联分析(植物相关)