ZigBee组网原理分析

原文链接:https://blog.csdn.net/chinsanyl/article/details/105113490

目录

1、简介

2、网络结构

3、准备工作

4、网络初始化

4.1确定网络协调器

4.2 进行信道扫描过程

4.3 设置网络ID

5、节点通过协调器加入网络

5.1 查找网络协调器

5.2 发送关联请求命令(Associaterequest Command)

5.3 等待协调器处理

5.4 发送数据请求命令

5.5回复

6、节点通过已有节点加入网络

1、简介

ZigBee是一种基于802.15.4物理层协议、支持自组网、多点中继,可实现网状拓扑的复杂的组网协议,加上其低功耗的特点,使得网络间的设备必须各司其职,有效地协同工作。

2、网络结构

在ZigBee网络中,有三种不同类型的设备,分别叫做:

1)协调器(Coordinator)

2)路由器(Router)

3)终端节点(End Device)

组建一个完整的ZigBee网状网络包括两个步骤:

1)网络初始化

2)节点加入网络

1通过与协调器连接入网

2通过已有父节点入网。

3、准备工作

ZigBee网络的建立是由网络协调器发起的,任何一个ZigBee节点要组建一个网络必须要满足以下两点要求:
  (1)节点是FFD节点,具备ZigBee协调器的能力;
  (2)节点还没有与其他网络连接,当节点已经与其他网络连接时,此节点只能作为该网络的子节点,因为一个ZigBee网络中有且只有一个网络协调器。
  FFD:Full Function Device 全功能节点
  RFD:Reduced Function Device半功能节点

4、网络初始化

4.1确定网络协调器

首先判断节点是否是FFD节点,接着判断此FFD节点是否在其他网络里或者网络里是否已经存在协调器。通过主动扫描,发送一个信标请求命令(Beaconrequest Command),然后设置一个扫描期限(T_scan_duration),如果在扫描期限内都没有检测到信标,那么就认为FFD在其pos内没有协调器,那么此时就可以建立自己的ZigBee网络,并且作为这个网络的协调器不断地产生信标并广播出去。
  注意:一个网络里,有且只能有一个协调器(coordinator)。

4.2 进行信道扫描过程

  包括能量扫描和主动扫描两个过程:

1) 能量扫描:对指定的信道或者默认的信道进行能量检测,以避免可能的干扰。以递增的方式对所测量的能量值进行信道排序,抛弃那么些能量值超出了可允许能量水平的信道,选择可允许能量水平的信道并标注这些信道是可用信道。

2) 主动扫描:搜索节点通信半径内的网络信息。这些信息以信标帧的形式在网络中广播,节点通过主动信道扫描方式获得这些信标帧,然后根据这些信息,找到一个最好的、相对安静的信道,通过记录的结果,选择一个信道,该信道应存在最少的ZigBee网络,最好是没有ZigBee设备。在主动扫描期间,MAC层将丢弃PHY层数据服务接收到的除信标以外的所有帧。

4.3 设置网络ID

  找到合适的信道后,协调器将为网络选定一个网络标识符(PAN ID,       取值《=0x3FFF),这个ID在所使用的信道中必须是唯一的,也不能和其他ZigBee网络冲突,而且不能为广播地址0xFFFF(此地址为保留地址,不能使用)。PAN ID可以通过侦听其他网络的ID然后选择一个不会冲突的ID的方式来获取,也可以人为的指定扫描的信道后,来确定不和其他网络冲突的PAN ID。
  在ZigBee网络中有两种地址模式:扩展地址(64位)和短地址(16位),其中扩展地址由IEEE组织分配,用于唯一的设备标识;短地址用于本地网络中设备标识,在一个网络中,每个设备的短地址必须唯一,当节点加入网络时由其父节点分配并通过使用短地址来通信。对于协调器来说,短地址通常设定为0x0000。

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

5、节点通过协调器加入网络

  当节点协调器确定之后,节点首先需要和协调器建立连接加入网络。为了建立连接,FFD节点需要向协调器提出请求,协调器接收到节点的连接请求后根据情况决定是否允许其连接,然后对请求连接的节点做出响应,节点与协调器建立连接后,才能实现数据的收发。节点加入网络的具体流程可以分为下面的步骤:

5.1 查找网络协调器

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

5.2 发送关联请求命令(Associaterequest Command)

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

5.3 等待协调器处理

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

5.4 发送数据请求命令

如果协调器在响应时间内同意节点加入,那么将产生关联响应命令(Associateresponse command)并存储这个命令。当响应时间过后,节点发送数据请求命令(Datarequest command)给协调器,协调器收到后立即回复ACK,然后将存储的关联响应命令发给节点。如果在响应时间到后,协调器还没有决定是否同意节点加入,那么节点将试图从协调器的信标帧中提取关联响应命令,成功的话就可以入网成功,否则重新发送请求信息直到入网成功。

5.5回复

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

6、节点通过已有节点加入网络

  当靠近协调器的FFD节点和协调器关联成功后,处于这个网络范围内的其他节点就以这些FFD节点作为父节点加入网络了,具体加入网络有两种方式:

1)一种是通过关联(associate)方式,就是待加入的节点发起加入网络;

2)另一种是直接(direct)方式,就是待加入的节点具体加入到那个节点下,作为该节点的子节点。

其中关联方式是zigbee网络中新节点加入网络的主要途径。

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

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

ZigBee组网原理分析相关推荐

  1. ZigBee组网原理详解

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

  2. 02、ZigBee组网原理Z-Stack协议栈工作机理

    文章目录 1.组网概述 2.网络初始化预备 3.网络初始化流程 3.1.确定网络协调器 3.2.进行信道扫描过程 3.3.设置网络ID 4.节点通过协调器加入网络 4.1.查找网络协调器 4.2.发送 ...

  3. ZigBee组网原理

    Zigbee组建一个完整的网络包含两个步骤:网络初始化和节点加入网络.其中,节点加入网络可以分为通过协调器直接连接入网和通过已有父节点入网.下面来依次说明. 1. 网络初始化 ZigBee网络初始化只 ...

  4. ZigBee组网详解

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

  5. Zigbee组网方案

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

  6. zigbee组网过程

    总体上来说:在一个zigbee网络中,只有协调器(coordinator)设备可以建立网络,在建立网络过程中,所有的实现过程都是通过原语实现的(具体在程序中,如用c语言,就是调用一个一个函数,或者是一 ...

  7. java signature 性能_Java常见bean mapper的性能及原理分析

    背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重复且繁琐,于是乎催生出很多工具来优雅,高效地完成这个操作,有BeanUtils.BeanCopier.Dozer. ...

  8. Select函数实现原理分析

    转载自 http://blog.chinaunix.net/uid-20643761-id-1594860.html select需要驱动程序的支持,驱动程序实现fops内的poll函数.select ...

  9. spring ioc原理分析

    spring ioc原理分析 spring ioc 的概念 简单工厂方法 spirng ioc实现原理 spring ioc的概念 ioc: 控制反转 将对象的创建由spring管理.比如,我们以前用 ...

最新文章

  1. C语言字符串哪个头文件,如果在程序中要使用C语言的字符串处理函数,应在程序中包含这哪个头文件。...
  2. java优先级目数_10.Java运算符+(优先级、目数)+
  3. Shell脚本编写与应用
  4. 项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
  5. 矩阵元算法科学家谢翔: Rosetta如何连接隐私计算与AI?
  6. linux nslookup脚本,Linux中nslookup命令起什么作用呢?
  7. KUDU--秒级查询的数据仓库
  8. Spring 核心容器类BeanFactory
  9. python一元三次方程拟合_一元三次方程的求根公式
  10. 服务器驱动停止响应,IE驱动程序的命令行服务器已停止工作
  11. oracle shrink space compact,oracle 学习笔记 Shrink 参数 compact
  12. php框架使用教程,php框架laravel excel包使用教程介绍
  13. var obj = eval(result); 解析json
  14. 你有遇到过最没良心的人吗?
  15. 排序算法积累(3)-----快速排序
  16. dsp 有fft程序吗_Python 中 FFT 快速傅里叶分析
  17. LinuxQQ自动崩溃退出的解决
  18. 怎样在Edge浏览器中开启IE兼容模式
  19. oracle 更改SLA状态,Oracle EBS SLA 详解
  20. h5(html5)入门

热门文章

  1. vue中emit的用法
  2. 520.1314用计算机怎么算出来的,来做个计算题 怎么算正确答案都是520.1314
  3. C语言中函数指针的主要应用场景
  4. Unity数据存储方法
  5. D2550安装Centos7
  6. Js自行封装一个 Storge第三方库.
  7. pic单片机c语言乘除法,PIC单片机C语言编程教程(1)
  8. Latex教程——插入文献
  9. 《蜘蛛侠3》人物关系图(部分剧透)
  10. linux扫描磁盘变化命令,Linux quotacheck命令:扫描文件系统并建立Quota记录文件