zigbee网络建立与加入
Zigbee建网和入网过程实验
6.2 Zigbee建网和入网过程实验本实验通过Sample App这个例子实现数据在ZigBee网络中的简单传输。
要求掌握网络组建及协议分析仪的使用方法。
6.2.1 实验目的与器材1)实验目的◆熟悉zigbee协议的三种设备建网时所担任的角色;◆学习Z-Stack2007/PRO协议栈中协调器如何建立网络;◆学习Z-Stack2007/PRO协议栈中路由和终端如何加入网络;◆学习TI官方提供的抓包工具(Sniffer)的应用及协议分析。
2)实验器材◆3个CC2530开发套件(1个协调器模块,2个路由器模块);6.2.2 实验原理与步骤1)硬件介绍CC2530开发套件如实验一中的硬件介绍,这里就不再陈述。
2)实验原理1 设备的分类ZigBee网络只支持两种设备:1)全功能设备(FFD Full Function Device)2)精简功能设备(也叫半功能设备 Reduced Function Device)两者的比较:其中FFD设备能够提供MAC层的所有服务,可充当任何ZigBee节点,不仅可以接收发送数据,还具有路由功能,因此可以接收子节点;而RFD只能提供部分的MAC层服务,只能充当子节点,只负责将采集到的数据发送给协调器和路由器节点,本身并不具有路由功能,因此不能接收子节点信息,RFD之间的通信只能通过FFD来完成。
ZigBee标准在此基础上定义了三种节点:ZigBee协调器(Coordinator)、ZigBee路由器(Routers)、ZigBee终端(End Device)2 所使用的设备所用的ZigBee设备都具有连接网络和断块网路的功能。
ZigBee协调器和路由器都具有以下附加功能:1)允许设备以如下方式连接网路:① MAC(Medium Access Control)层的连接命令。
②应用层的连接请求2)允许设备以如下方式断开网络;① MAC层的断开命令②应用层的断开命令③对逻辑网络地址的分配④维护邻居设备3 组建网络组建一个网状的ZigBee网络包括两个步骤:网络的初始化和节点加入网络;而节点加入网络又有两个步骤:通过协调器加入网络和通过已有节点入网。
Zigbee组网流程——理论
星形网络和树型网络可以看成是网状网络的一个特殊子集,所以接下来分析如何组建一个Zigbee网状网络。
组建一个完整的Zigbee网络分为两步:第一步是协调器初始化一个网络;第二步是路由器或终端加入网络。
加入网络又有两种方法,一种是子设备通过使用MAC层的连接进程加入网络,另一种是子设备通过与一个先前指定的父设备直接加入网络。
一、协调器初始化网络协调器建立一个新网络的流程如图1所示。
图1 协调器建立一个新网络1、检测协调器建立一个新的网络是通过原语NLME_NETWORK_FORMATION.request发起的,但发起NLME_NETWORK_FORMATION.request原语的节点必须具备两个条件,一是这个节点具有ZigBee协调器功能,二是这个节点没有加入到其它网络中。
任何不满足这两个条件的节点发起建立一个新网络的进程都会被网络层管理实体终止,网络层管理实体将通过参数值为INVALID_REQUEST的NLME_NETWORK_FORMATION.confirm的原语来通知上层这是一个非法请求。
2、信道扫描协调器发起建立一个新网络的进程后,网络层管理实体将请求MAC子层对信道进行扫描。
信道扫描包括能量扫描和主动扫描两个过程。
首先对用户指定的信道或物理层所有默认的信道进行一个能量扫描,以排除干扰。
网络层管理实体将根据信道能量测量值对信道进行一个递增排序,并且抛弃能量值超过了可允许能量值的信道,保留可允许能量值内的信道等待进一步处理。
接着在可允许能量值内的信道执行主动扫描,网络层管理实体通过审查返回的PAN描述符列表,确定一个用于建立新网络的信道,该信道中现有的网络数目是最少的,网络层管理实体将优先选择没有网络的信道。
如果没有扫描到一个合适的信道,进程将被终止,网络层管理实体通过参数仠为STARTUP_FAILURE的NLME_NETWORK_FORMATION.confirm的原语来通知上层初始化启动网络失败。
zigbee的工作原理
zigbee的工作原理Zigbee是一种低功耗、短距离无线通信技术,主要用于物联网设备之间的通信。
它基于IEEE 802.15.4标准,并在其基础上添加了网络层和应用层协议。
Zigbee网络由一个协调器(Coordinator)和多个设备(Device)组成,协调器负责网络的管理和控制。
Zigbee的通信距离一般在几十米到几百米之间,传输速率较低,可达到250kbps。
它采用的是低功耗的射频技术,以确保设备的电池寿命较长。
此外,Zigbee使用的是mesh网状网络拓扑,设备之间可以通过多跳传输进行通信,提高了网络的覆盖范围和稳定性。
Zigbee的工作原理如下:1.设备加入网络:当设备加入Zigbee网络时,它会发送一个加入请求,协调器验证设备的身份后,将其分配给合适的网络节点。
设备可以是有源设备(Powered Device,PD)或无源设备(End Device,ED)。
有源设备可以直接与协调器通信,而无源设备需要通过其他设备进行中继。
2.建立网络拓扑:Zigbee网络采用mesh网状拓扑结构,其中每个设备都可以是路由器(Router),即可以进行中继的节点,或终端设备(End Device),即不能进行中继的节点。
设备之间可以通过多跳传输进行通信,数据可以沿着多个路径传递,提高了网络的可靠性和覆盖范围。
3.网络管理与路由选择:协调器负责网络的管理和控制,它会维护网络拓扑结构,并执行路由选择算法。
路由选择算法决定了数据传输的最佳路径,通过选择具有最佳信号强度和跳数的路由器进行数据传输,保证了数据的快速传递和可靠性。
4.数据传输和通信:设备之间可以通过两种方式进行通信,即直接通信和间接通信。
直接通信是指设备直接发送数据给目标设备,而间接通信是指设备通过中继节点进行数据传输。
设备可以根据需求选择合适的通信方式,以达到最佳的传输效果。
总的来说,Zigbee通过建立mesh网状网络拓扑,利用低功耗的射频技术实现设备之间的无线通信。
Zigbee组网流程
1、网络形成组网开始时,网络层首先向MAC层请求分配协议所规定的信道,或者由PHY层进行有效信道扫描,网络层管理实体等待信道扫描结果,然后根据扫描结果选择可允许能量水平的信道。
找到合适的信道后,为这个新的网络选择一个个域网标识符(PANID)。
PANID可由网络形成请求时指定,也可以随机选择一个PANID(除广播PANID固定为0xFFFF外),PANID 在所选信道中应该是唯一的。
PANID一旦选定,无线网关将选择16位网络地址0x0000作为自身短地址,同时进行相关设置。
完成设置后,通过MAC层发出网络启动请求,返回网络形成状态。
2、网络维护网络维护网络维护主要包括设备加入网络和离开网络过程。
当网络形成后,通过网络管理实体设定MAC层连接许可标志来判断是否允许其他设备加设备初始化为协调器入网络。
加入方式有联合方式和直接方式,在协议实现中采取直接加入网络方式。
这种方式下由待加入的设备发送请求加入信标帧,网关接收到后,网络管理实体首先判断这个设备是否已存在于网络。
存在,则使其加入网络;若不存在,则向设备发送信标帧,为这个设备分配一个网络中唯一的16位的短地址。
这里的信标帧是由网关无线协议MAC层生成作为PHY层载荷,它包含PANID、加入时隙分配等信息。
网内设备也可以请求断开网络。
当网关收到设备断开连接请求后,MAC层向网络层发送报告,开始执行断开流程,从设备列表中删除该设备相关信息。
网络层上层请求网络层发现当前在运行的网络:NLME NETWORK DISCOVERY.request(ScanChannels,ScanDuration)ScanChannels:高5为保留(b27~b31),低27为分别表示27个有效信道,该位为1,表示扫描;为0不扫描。
ScanDuration:扫描时间,aBaseSuperframeDuration*(2^n+1),n为ScanDuration值。
网络层在家收到该原语后,将通过检查ScanChannels参数发现网络,如果该设备为一个FFD 设备,则执行主动的扫描。
ZigBee智能开关的连接网络教程
ZigBee智能开关的连接网络教程
步骤一:添加网关,若已经添加本步骤可忽略
手机在华为市场或应用宝中下载并安装对应的APP,打开并登陆后点击的右上角的“+”键添加设备,选择“网关中控”,根据网关类型在右侧区域找到“无线网关(ZigBee)”、“有线网关(ZigBee)”等类型,点击后进入WiFi配置界面。
手机要确保连接对应房间的2.4G 无线wifi网络。
步骤二:添加成功后可在对应的APP“我的家”页面查看该设备,点击新增的ZigBee网关名称,进入设备页面。
该页面的右上角可设置属性,修改设备名称。
点击页面正下方的“添加子设备”,或在“我的家”页面点击的右上角的“+”键添加设备,选择“电工”,点击“开关(ZigBee)”(根据开关类型不同选择。
)
步骤三:长按开关按键7-10秒左右,开关指示灯出现闪烁状态,然后勾选app界面下方的“确认指示灯在快闪”,点击“下一步” ,等待App添加设备完成。
步骤四:成功找到设备后会进入“添加成功”界面,在该界面可以点击设备名称进行重命名,之后点击完成。
配网完成后可在app中查看或控制设备状态。
构建zigbee网络总结
构建 ZigBee 网络总结概述ZigBee 是一种基于 IEEE 802.15.4 标准的无线通信协议,旨在提供低功耗、低数据率的短距离无线通信解决方案。
ZigBee 网络由一个或多个 ZigBee 设备组成,这些设备通过 ZigBee 协调器进行协调和管理。
本文将探讨构建 ZigBee 网络的关键步骤和注意事项。
步骤一:选择合适的硬件设备构建 ZigBee 网络的第一步是选择合适的硬件设备。
ZigBee 网络的设备分为三类:协调器(Coordinator)、路由器(Router)和终端设备(End Device)。
协调器是网络的主节点,负责组织和管理整个网络。
路由器允许设备之间进行中继和转发数据。
终端设备是网络中的最终节点,负责与其他设备进行通信。
在选择硬件设备时,需要考虑以下因素: - 功耗:如果是低功耗应用,选择低功耗的设备非常重要。
- 通信范围:根据项目需求选择合适的通信范围。
- 可靠性:确保设备的稳定性和可靠性。
- 成本:根据项目预算选择合适的硬件设备。
步骤二:设计网络拓扑结构在ZigBee 网络中,网络拓扑结构的设计非常重要。
常见的拓扑结构包括星型、网状和链状。
不同的拓扑结构适用于不同的应用场景。
星型拓扑结构星型拓扑结构是最简单和最常见的ZigBee 网络拓扑结构。
在星型拓扑结构中,所有设备都通过协调器进行通信。
该拓扑结构适用于需要集中管理的应用,例如家庭自动化系统。
网状拓扑结构网状拓扑结构允许设备之间进行多跳通信,提供了更强大的网络覆盖能力。
在网状拓扑结构中,路由器负责转发数据,并确保数据能够可靠地从源设备传输到目标设备。
该拓扑结构适用于需要大范围通信的应用,例如智能城市和工业自动化系统。
链状拓扑结构链状拓扑结构是一种特殊的网状拓扑结构,它只允许设备之间进行单向通信。
链状拓扑结构适用于需要按序传输数据的应用,例如传感器网络。
在设计网络拓扑结构时,需要考虑以下因素: - 设备位置:根据设备的位置选择合适的拓扑结构。
ZIGBee组网流程
ZIGBee组网流程第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络//第一步:Z-Stack 由main()函数开始执行,main()函数共做了2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统int main( void ){.......// Initialize the operating systemosal_init_system(); //第二步,操作系统初始化......osal_start_system(); //初始化完系统任务事件后,正式开始执行操作系统......}//第二步,进入osal_init_system()函数,执行操作系统初始化uint8 osal_init_system( void ) //初始化操作系统,其中最重要的是,初始化操作系统的任务{// Initialize the Memory Allocation Systemosal_mem_init();// Initialize the message queueosal_qHead = NULL;// Initialize the timersosalTimerInit();// Initialize the Power Management Systemosal_pwrmgr_init();// Initialize the system tasks.osalInitTasks(); //第三步,执行操作系统任务初始化函数// Setup efficient search for the first free block of heap.osal_mem_kick();return ( SUCCESS );}//第三步,进入osalInitTasks()函数,执行操作系统任务初始化void osalInitTasks( void ) //第三步,初始化操作系统任务{uint8 taskID = 0;tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));//任务优先级由高向低依次排列,高优先级对应taskID 的值反而小macTaskInit( taskID++ ); //不需要用户考虑nwk_init( taskID++ ); //不需要用户考虑Hal_Init( taskID++ ); //硬件抽象层初始化,需要我们考虑#if defined( MT_TASK )MT_TaskInit( taskID++ );#endifAPS_Init( taskID++ ); //不需要用户考虑#if defined ( ZIGBEE_FRAGMENTATION )APSF_Init( taskID++ );#endifZDApp_Init( taskID++ ); //第四步,ZDApp层,初始化,执行ZDApp_init函数后,如果是协调器将建立网络,如果是终端设备将加入网络。
zigbee网络建立过程简介
星形网络和树型网络可以看成是网状网络的一个特殊子集,所以接下来分析如何组建一个Zigbee网状网络。
组建一个完整的Zigbee网络分为两步:第一步是协调器初始化一个网络;第二步是路由器或终端加入网络。
加入网络又有两种方法,一种是子设备通过使用MAC层的连接进程加入网络,另一种是子设备通过与一个先前指定的父设备直接加入网络。
一、协调器初始化网络协调器建立一个新网络的流程如图1所示。
图1 协调器建立一个新网络1、检测协调器建立一个新的网络是通过原语发起的,但发起原语的节点必须具备两个条件,一是这个节点具有ZigBee协调器功能,二是这个节点没有加入到其它网络中。
任何不满足这两个条件的节点发起建立一个新网络的进程都会被网络层管理实体终止,网络层管理实体将通过参数值为INVALID_REQUEST的的原语来通知上层这是一个非法请求。
2、信道扫描协调器发起建立一个新网络的进程后,网络层管理实体将请求MAC子层对信道进行扫描。
信道扫描包括能量扫描和主动扫描两个过程。
首先对用户指定的信道或物理层所有默认的信道进行一个能量扫描,以排除干扰。
网络层管理实体将根据信道能量测量值对信道进行一个递增排序,并且抛弃能量值超过了可允许能量值的信道,保留可允许能量值内的信道等待进一步处理。
接着在可允许能量值内的信道执行主动扫描,网络层管理实体通过审查返回的PAN描述符列表,确定一个用于建立新网络的信道,该信道中现有的网络数目是最少的,网络层管理实体将优先选择没有网络的信道。
如果没有扫描到一个合适的信道,进程将被终止,网络层管理实体通过参数仠为STARTUP_FAILURE的的原语来通知上层初始化启动网络失败。
3、配置网络参数如果扫描到一个合适的信道,网络层管理实体将为新网络选择一个PAN描述符,该PAN描述符可以是由设备随机选择的,也可以是在里指定的,但必须满足PAN描述符小于或等于0x3fff,不等于0xffff,并且在所选信道内是唯一的PAN描述符,没有任何其它PAN描述符与之是重复的。
ZigBee设备入网流程之关联方式
ZigBee设备⼊⽹流程之关联⽅式ZigBee设备⼊⽹流程ZigBee设备⼊⽹有关联⽅式和直接⽅式两种,我所熟悉的是关联⽅式,这也是最常⽤的⽅式。
关联⽅式step1 设备发出Beacon Request设备会在预先设置的⼏个信道⾥⾯按照指定的顺序逐信道发出这个包,看到Dest PAN ID,Dest Address都是0xFFFF,说明这是个⼴播包,在这些信道⾥⾯的⽹络都会收到它。
step2 route节点发出Beacon回复这个回复⾥⾯有五个关键的值Source PAN ID :回复Beacon的这个设备所处⽹络的PAN IDSource Address:回复Beacon的这个设备所处⽹络的短地址Association Permit:关联许可是否开放Router Capacity:可否接⼊Route节点End Device Capacity:可否接⼊End Device能收到⼊⽹设备发出的Beacon Request的⽹络都会回复Beacon,并且同⼀个⽹络⾥⾯能收到⼊⽹设备Beacon Request的FFD设备都会回复Beacon。
这样⼀来,⼀般⼊⽹设备会受到多个Beacon回复。
那么它会按照下列的顺序,并且结合这帧Beacon的Link Quality来进⾏下⼀步动作:1. ⼊⽹设备⾸先判断Association Permit是否开放,这个是需要协调器发出全⽹⼴播,通知所有route节点这个许可开放了。
2. 如果关联许可是开放的,再根据⾃⼰所属的设备类型来判断Router Capacity、End Device Capacity。
3. 如果可以接⼊,再筛选最佳Link Quality的设备发出Association Request,这个时候就需要⽤Beacon⾥⾯的Source PAN ID和SourceAddress发出⼀个MAC层的单播包。
step3 设备发出Association Requeststep4 route发出Association Responsestep5 秘钥传输step5 Device AnnounceDevice Announce的⼴播数据主要是通知全⽹相关节点有⼀个新设备进来了,给⼤家做个⾃我介绍,⼤家刷新下路由表这类的信息。
zigbee 原理
zigbee 原理
Zigbee是一种无线通信协议,专门用于低功耗、短距离通信。
它基于IEEE 802.15.4标准,并且通过射频通信进行数据传输。
Zigbee的原理如下:
1. 网络拓扑:Zigbee网络由一个或多个设备组成,这些设备可以是传感器、控制器、终端设备等。
这些设备按照不同的拓扑结构组成网络,常见的拓扑结构包括星型、网状和树状结构。
2. 节点角色:在Zigbee网络中,不同的设备扮演不同的角色。
其中,协调器(Coordinator)是网络的核心,负责管理网络节
点和协调通信。
路由器(Router)用于转发数据,扩展网络范围。
终端设备(End Device)通常是最简单的设备,用于与其
他设备进行通信。
3. 数据通信:Zigbee使用无线射频通信方式,在2.4GHz频段
进行数据传输。
通信过程中,设备通过发送和接收数据帧进行交互。
数据帧中包含了一些必要的信息,如发送者、接收者、数据内容等。
4. 网络组建:Zigbee网络的组建过程通常包括扫描、加入和路由等步骤。
设备首先进行扫描,查找网络中可用的节点。
然后,设备可以加入到网络中,成为网络的一部分。
路由器设备可以通过建立多个路径,实现节点之间的数据传输。
5. 低功耗设计:Zigbee在设计上非常注重低功耗,以满足无线传感器网络的需求。
设备可以进入睡眠模式以节省能源,并且
可以通过唤醒信号来重新激活。
总的来说,Zigbee的原理是基于低功耗、短距离的无线通信,通过网络拓扑、节点角色、数据通信和低功耗设计等要素,实现设备之间的数据传输和协作。
Zigbee组网实验报告
Zigbee组网实验一.实验目的1.了解zigbee网络2.掌握zigbee节点程序下载方式3.掌握如何组建zigbee星状网络二.实验意义通过实验了解zibee网络的特点,体会其组网及通信过程三.实验环境PC机一台(内安装IAR环境)智能网关一个ZigBee节点ZigBee仿真器一套四.实验原理每一个星状网络中只有一个协调器,当协调器被激活后,它就会建立一个自己的网络。
其它位于协调器附近的zigbee节点,如果与该协调器处于同一信道,则会自动加入到该网络当中。
五.实验步骤一、认识实验设备以及下载设备连接连接线路如图所示:二、Zigbee网络组建1、协调器下载协调器在本套智能家居系统中担任信息收集与传输的工作,它和每个ZigBee模块进行无线通讯,并将信息传送给智能网关,同时也将网关的控制指令发送给各个模块。
我们首先将一个ZigBee模块下载成协调器,具体步骤如下:(1)打开“\实验程序\协调器\Projects\zstack\Samples\collector SimpleApp 1.25\ CC2430DB\SimpleApp.eww”。
如图1-6所示:(2)不同的实验小组选择自己所分配的信道。
点击左侧的文件导航栏,找到tools文件夹,打开其中的文件f8wConfig.cfg,找到自己小组的信道,将行的注释去掉,并且确认其他各个信道代码均为注释状态。
更改完信道之后,在菜单栏中选择Project\Rebuild All进行编译,编译完成后生成的HEX 文件保存在\实验程序\协调器\Projects\zstack\Samples\collectorSimpleApp1.25\CC2430DB\SimpleCollectorEB\Exe 中。
(3)更改完信道之后,在菜单栏中选择Project\Rebuild All进行编译,编译完成后生成的HEX文件保存在\实验程序\协调器\Projects\zstack\Samples\collectorSimpleApp1.25\CC2430DB\SimpleCollec torEB\Exe中;(4)打开smartRF下载软件,如图所示,按照图将下载设备的各个线连接好,之后按一下下载器(也就是白色盒子)上面的黑色按钮,则下载界面中将会识别到要与下载器相连接的zigbee模块芯片,如图所示,对相关条件进行勾选;2.其它zigbee终端节点的下载Zigbee终端节点在上电后自动加入到处于同一信道的zigbee协调器所组建的zigbee网络当中。
zigbee组网实验报告
zigbee组网实验报告ZigBee组网实验报告引言:ZigBee是一种低功耗、低速率、低成本的无线通信技术,被广泛应用于物联网领域。
本实验旨在通过搭建ZigBee网络,探索其组网原理和应用。
一、实验背景随着物联网的快速发展,各种智能设备的出现使得人们的生活更加便捷和智能化。
而ZigBee作为一种独特的无线通信技术,具有低功耗、低成本和可靠性强的特点,成为物联网领域的重要组成部分。
二、实验目的1.了解ZigBee组网的基本原理和拓扑结构;2.搭建ZigBee网络,实现设备之间的通信;3.探索ZigBee在物联网领域的应用。
三、实验步骤1.准备工作在实验开始前,需要准备一些硬件设备,包括ZigBee模块、开发板、传感器等。
同时,还需要安装相应的软件开发环境。
2.搭建ZigBee网络首先,将ZigBee模块插入开发板,连接电源并进行初始化设置。
然后,通过软件开发环境,配置网络参数,包括网络ID、信道等。
接下来,将各个设备逐一加入网络,形成一个完整的ZigBee网络。
3.通信测试完成网络搭建后,进行通信测试。
通过发送指令或传感器数据,验证设备之间的通信是否正常。
同时,还可以进行数据传输速率测试,评估网络的性能。
四、实验结果与分析经过实验,成功搭建了一个ZigBee网络,并实现了设备之间的通信。
通过测试发现,ZigBee网络具有较低的功耗和较高的可靠性,适用于物联网领域的各种应用场景。
五、实验总结ZigBee作为一种重要的无线通信技术,具有广泛的应用前景。
通过本次实验,我们深入了解了ZigBee组网的原理和应用,并通过实际操作掌握了搭建ZigBee网络的方法。
这对我们进一步研究和应用物联网技术具有重要意义。
六、展望在未来,随着物联网的不断发展,ZigBee网络将在更多的领域得到应用。
例如智能家居、智能医疗、智能交通等,ZigBee技术将为这些领域带来更多的便利和创新。
结语:通过本次实验,我们对ZigBee组网技术有了更深入的了解,并体验了其在物联网领域的应用。
ZigBee网络配置
ZigBee⽹络配置低数据速率的WPAN中包括两种⽆线设备:全功能设备(FFD)和精简功能设备(RFD)。
其中,FFD可以和FFD、RFD通信,⽽RFD只能和FFD通信,RFD之间是⽆法通信的。
RFD的应⽤相对简单,例如在传感器⽹络中,它们只负责将采集的数据信息发送给它的协调点,并不具备数据转发、路由发现和路由维护等功能。
RFD占⽤资源少,需要的存储容量也⼩,成本⽐较低。
在⼀个ZigBee⽹络中,⾄少存在⼀个FFD充当整个⽹络的协调器,即PAN协调器,ZigBee中也称作ZigBee协调器。
⼀个ZigBee⽹络只有⼀个PAN协调器。
通常,PAN协调器是⼀个特殊的FFD,它具有较强⼤的功能,是整个⽹络的主要控制者,它负责建⽴新的⽹络、发送⽹络信标、管理⽹络中的节点以及存储⽹络信息等。
FFD和RFD都可以作为终端节点加⼊ZigBee⽹络。
此外,普通FFD也可以在它的个⼈操作空间(POS)中充当协调器(路由),但它仍然受PAN协调点的控制。
ZigBee中每个协调点最多可连接255个节点,⼀个ZigBee⽹络最多可容纳65535个节点。
ZigBee⽹络的拓扑结构ZigBee⽹络的拓扑结构主要有三种,星型⽹、⽹状(mesh)⽹和混合⽹。
星型⽹是由⼀个PAN协调点和⼀个或多个终端节点组成的。
PAN协调点必须是FFD,它负责发起建⽴和管理整个⽹络,其它的节点(终端节点)⼀般为RFD,分布在PAN协调点的覆盖范围内,直接与PAN协调点进⾏通信。
星型⽹通常⽤于节点数量较少的场合。
Mesh⽹⼀般是由若⼲个FFD连接在⼀起形成,它们之间是完全的对等通信,每个节点都可以与它的⽆线通信范围内的其它节点通信。
Mesh⽹中,⼀般将发起建⽴⽹络的FFD节点作为PAN协调点。
Mesh⽹是⼀种⾼可靠性⽹络,具有“⾃恢复”能⼒,它可为传输的数据包提供多条路径,⼀旦⼀条路径出现故障,则存在另⼀条或多条路径可供选择。
Mesh⽹可以通过FFD扩展⽹络,组成Mesh⽹与星型⽹构成的混合⽹。
Zigbee网络
Zigbee网络优点:1)低功耗:在非工作状态下,ZigBee 节点会处于休眠模式,耗能很低,两节五号干电池可以支持一个节点工作 6-24 个月,甚至更久;在工作模式下,由于ZigBee 技术的数据传输速率低,传输的数据量很小,因此信号作用的时间很短。
再加上设备的休眠激活、搜索和信道接入时延都比较短,这使得 ZigBee 节点更加省电[1]。
2)延时短:ZigBee 的响应速度很快,通信时从休眠状态转换到激活的时延都非常短,一般只需 15ms,节点连接进入网络所需要的时间仅为 30ms,进一步减少了能源消耗[2]。
3)低成本:因为ZigBee网络的数据传输速率低,协议简单,所以大大降低了硬件开发成本,并且 ZigBee 协议免收专利费用和免执照频段[2]。
4)安全性高:ZigBee 提供了数据完整性检查和鉴权功能,在数据传输中提供了三级安全性。
第一级实际是无安全方式,对于某种应用,如果安全并不重要或者上层已经提供足够的安全保护,器件就可以选择这种方式来转移数据。
对于第二级安全级别,器件可以使用接入控制清单(ACL)来防止非法器件获取数据,在这一级不采取加密措施。
第三级安全级别在数据转移中采用属于高级加密标准(AES)的对称密码。
AES可以用来保护数据净荷(一帧中传输的用户数据部分)和防止攻击者冒充合法器件[3]。
5)网络容量大:一个星型结构的 ZigBee 网络最多可以容纳 254 个从设备和一个主设备,网络构成灵活,在一个单独的 ZigBee 网络内可以支持超过 65000 个ZigBee网络节点[2]。
6)免执照频率:ZigBee 技术有三种传输频率段,分别为 868MHz(欧洲1个信道,数据传输速率为20kb/s),915MHz(美国10个信道,数据传输速率为40kb/s)和2.4GHz(16个信道,全球统一无需申请的ISM频段,有助于ZigBee设备的推广和生产成本的降低)频率段为全球免费使用频段,传输速率达到250KB/s。
Zigbee设备入网过程
Zigbee设备加入网络过程---关联加入在一个zigbee协调器设备建立网络后,路由器设备或者终端设备(end device),可以加入协调器建立的网络,具体加入网络有两种方式,一种是通过关联(association)方式,就是待加入的设备发起加入网络,具体实现方式后面讨论,另一中是直接(direct)方式,就是待加入的设备具体加入到那个设备下,作为该设备的子节点,由以前网络中的设备,想待加入的设备作为其子设备决定。
下面重点讨论第一种方式,也是实际中用的最多的方式通过关联方式加入一个网络:加入一个设备,是两个设备的事,即子设备和待定父设备对于子设备,首先子设备调用NLME-NETWORK-DISCOVERY.request 原语,设定待扫描的信道,以及每个信道扫描的时间,网络层收到这个原语,将要求MAC层执行被动或主动扫描。
具体发送到设备外的是一个becon request 帧,当在这个信道中的设备收到该帧,将会发送becon帧,这是子设备通过BEACON-NOTIFY.indication 原语,告知该设备的MAC 层,该becon帧包含了发送该帧的地址信息,以及是否允许其他设备以其子节点的方式加入。
待加入的设备,在网络层,将检查该becon帧协议 ID是否是zigbee ID 。
如果不是,将忽略;如果是,该设备将复制收到每个becon帧的相关信息到其关联表中(neighbor tabl e)。
一旦MAC层完成了扫描,将发送 MLME-SCAN.confirm 原语,告知网络层,网络层将发送NLME-NETWORK-DISCOVERY.confirm 原语,告知应用层。
应用层收到该原语,应用层将根据情况,要么重新要求扫描,或者从关联表中选择所发现的网络加入。
调用NLME-JOIN.request 原语,原语中各个参数的设置参看协议(可以在本站下载栏找到)非常容易。
如果在关联表中找不到合适的准父节点,将调用原语告知应用层,如果由多个设备可以满足要求,将选择到协调器节点深度最低的设备,如果有几个设备的深度相同,且都是最小深度,将从中随机选择一个。
物联网ZigBee协议栈解析(加入网络)
开发平台:AR EW8051 7.51A 驱动软件: CP210x驱动包 例 程:文件包GenericApp
GenericApp
• “..\Samples CC2530\GenericApp\SX2530
不可更改或者移出 任务
代码分析2
不可移出任 务
• OS信息处理。 • 异常任务处理。
查看函数
组装系统
修改通道
• 为了方便大家集中学习,我们已经在每 套学习系统中标明了相关的通道与PanId 请各位严格使用自己的通道与PanId
修改PanId
• 为了方便大家集中学习,我们已经在每 套学习系统中标明了相关的通道与PanId 请各位严格使用自己的通道与PanId
GenericApp 形成或者加入一个网络
本章利用简单应用程序 GenericApp 实现ZigBee相关功能例程的讲解 在指定通道和pan上形成一个网络 设备加入指定特定参数的网络
实验准备
硬件清单
C51FF-PS-F V21仿真器一块 SMBD-V1.2 底板一块 SMBD-V11-1底板两块 RF-2530无线模块三块 Mini USB线2条 AAA电池8只
ZigBee工程
子工程
配置文件
链接配置文件
全局配置文
件
• ZigBee的大部分配置都放在相关的配置
节点设备文的件中
配置文件
协调器的配置 文件
路由器配置 文件
配置通道
通道选择
通道全 局变量
f8wConfig.cfg中配置PAN ID
• 如果 PAN_ID = 0xFFFF 设备类型是协调者
• 设备将使用物理地址最后两个字节作为PAN_ID
zigbee工程子工程配置文件zigbee的大部分配置都放在相关的配置文件中链接配置文件全局配置文协调器的配置文件节点设备的配置文件路由器配置文件配置通道通道全局变量通道选择f8wconfigcfg中配置panid0xffff设备类型是协调者0xffff设备类型是路由器或者终端节点设备0xffff设备类型是协调者0xffff设备类型是路由器或者终端节点设备设备将只能加入该panid指定的网络genericapp形成或者加入一个网络本章利用简单应用程序genericapp实现zigbee相关功能例程的讲解在指定通道和pan上形成一个网络设备加入指定特定参数的网络实验准备硬件清单c51ffpsfv21仿真器一块smbdv12底板一块smbdv111底板两块rf2530无线模块三块miniusb线2条aaa电池8只软件清单开发平台
工业级4G、3GDTU网络初始化和节点加入网络
Zigbee组建一个完整的网络包含两个步骤:网络初始化和节点加入网络。
其中,节点加入网络可以分为通过协调器直接连接入网和通过已有父节点入网。
下面来依次说明。
1. 网络初始化ZigBee网络初始化只能是由网络协调器发起的,在组建网络前,需要判断本节点还没与其他网络连接。
如果节点已经与其他网络连接时,此节点只能作为该网络的子节点。
一个ZigBee网络中有且仅有一个ZigBee协调器,一旦网络建立好了,协调器就退化成路由器的角色,甚至是可以去掉协调器的,这一切得益于ZigBee网络的分布式特性。
网络初始化流程图如下:每层详细解释:1 .协调器通过主动扫描,发送信标请求命令(Beacon request command),设置一个扫描期限(T_scan_duration),如果在期限内没检测到回应信标,则认为在其范围内没有其他协调器,那么此时可以建立自己的ZigBee网络,并且作为网络的协调器。
非信标网络的设备会等待请求,信标网络的设备会周期性的产生信标并且广播出去。
2.2.1 能量扫描对指定信道或者默认信道进行能量检测,以避免可能的干扰,以递增的方式对所检测的信道能量值进行排序,抛弃那些能量值超出范围的信道。
选择一系列可用信道。
2.2主动扫描接着通过主动扫描的方式,获取节点通讯半径内的网络信息,然后根据这些信息,找一个最好的、相对安静的信道。
最后选择的信道应该是存在最少的ZigBee网络,最好是没有ZigBee 网络。
3.在所选定的信道上,网络ID(PAN ID)必须是唯一的,不能和其他ZigBee网络冲突,不能为广播地址(0xFFFF)。
可以使用设定的PAN ID,也可以通过监听其他网络的ID来随机选择一个不会冲突的ID号.当路由节点或者设备入网时,协调器会给节点分配短地址来通讯。
对于协调器来说,网络地址始终为0x00002.ZigBee入网流程ZigBee设备的入网流程,详见下图:每层详细解释4节点入网将选择范围内信号最强的父节点加入网络,成功加入后,会得到一个网络短地址,并通过这个地址进行数据的收发。
zigbee数传电台快速建立zigbee网络的入门教程
zigbee数传电台快速建立zigbee网络的入门教程
为了让用户能快速熟悉基于zigbee3.0技术的zigbee数传电台,本文将引导用户结合上位机进行经过简单配置搭建一个ZigBee网络,包括节点类型配置、PANID设置、信道设置、发射功率设置。
1、快速入门建立一个ZigBee网络
结合上位机软件快速简单的建立一个ZigBee网络,具体步骤如下:
(1)将电台连接电脑,打开上位机软件“亿佰特ZigBee3.0上位机”,选择设备类型,选择串口号,选择串口波特率(默认115200kbps),点击打开串口。
(2)模组出厂为HEX指令配置模式,E180-DTU如果处于AT指令模式,需要切换至HEX指令模式,点击“读取参数”,消息框提示“读取参数成功”,主要的网络参数包括:长地址,电台类型默认为协调器(如果不是请设置成协调器),网络状态是"not have"(如果不是需要退出网络或恢复出厂)。
如果读取参数无效,有可能模组当前为传输模式,需要点击“进入配置模式”,消息框提示“进入配置状态成功”。
(3)点击“开始配网”,协调建立一个开放网络,协调器新建网络后会持续180秒开放网络,LINK灯1Hz闪烁,路由器和终端可以在这个时间内加入网络。
Zigbee设备入网过程
Zigbee设备加入网络过程---关联加入在一个zigbee协调器设备建立网络后,路由器设备或者终端设备(end device),可以加入协调器建立的网络,具体加入网络有两种方式,一种是通过关联(association)方式,就是待加入的设备发起加入网络,具体实现方式后面讨论,另一中是直接(direct)方式,就是待加入的设备具体加入到那个设备下,作为该设备的子节点,由以前网络中的设备,想待加入的设备作为其子设备决定。
下面重点讨论第一种方式,也是实际中用的最多的方式通过关联方式加入一个网络:加入一个设备,是两个设备的事,即子设备和待定父设备对于子设备,首先子设备调用NLME-NETWORK-DISCOVERY.request 原语,设定待扫描的信道,以及每个信道扫描的时间,网络层收到这个原语,将要求MAC层执行被动或主动扫描。
具体发送到设备外的是一个becon request 帧,当在这个信道中的设备收到该帧,将会发送becon帧,这是子设备通过BEACON-NOTIFY.indication 原语,告知该设备的MAC 层,该becon帧包含了发送该帧的地址信息,以及是否允许其他设备以其子节点的方式加入。
待加入的设备,在网络层,将检查该becon帧协议 ID是否是zigbee ID 。
如果不是,将忽略;如果是,该设备将复制收到每个becon帧的相关信息到其关联表中(neighbor tabl e)。
一旦MAC层完成了扫描,将发送 MLME-SCAN.confirm 原语,告知网络层,网络层将发送NLME-NETWORK-DISCOVERY.confirm 原语,告知应用层。
应用层收到该原语,应用层将根据情况,要么重新要求扫描,或者从关联表中选择所发现的网络加入。
调用NLME-JOIN.request 原语,原语中各个参数的设置参看协议(可以在本站下载栏找到)非常容易。
如果在关联表中找不到合适的准父节点,将调用原语告知应用层,如果由多个设备可以满足要求,将选择到协调器节点深度最低的设备,如果有几个设备的深度相同,且都是最小深度,将从中随机选择一个。
zigbee网络建立过程简介(G1)知识讲解
zi gbee 网络建立过程简介( G1)星形网络和树型网络可以看成是网状网络的一个特殊子集,所以接下来分析如何组建一个Zigbee网状网络。
组建一个完整的Zigbee网络分为两步:第一步是协调器初始化一个网络;第二步是路由器或终端加入网络。
加入网络又有两种方法,一种是子设备通过使用MAC层的连接进程加入网络,另一种是子设备通过与一个先前指定的父设备直接加入网络。
一、协调器初始化网络协调器建立一个新网络的流程如图1所示。
WliE-N ETWORK-FORW MION 啲TMJ^E-SCAN requestMLWE-SDAK confamMLME-SCAN.requestMLWE-SCAN contfni畝外站it PM ID.MUML-5C.1「eqestHL ME ShT cenfinnMLK1E-5TAr(T requestmiE-STARTanfirmNLM:'. NETWCftK-rORMMlON infirmAPL NWK MAC图1协调器建立一个新网络1、检测协调器建立一个新的网络是通过原语NLME_NETWORK_FORMATION.reqi发起的,但发起NLME_NETWORK_FORMATION.reqi原语的节点必须具备两个条件,一是这个节点具有ZigBee协调器功能,二是这个节点没有加入到其它网络中。
任何不满足这两个条件的节点发起建立一个新网络的进程都会被网络层管理实体终止,网络层管理实体将通过参数值为INVALID_REQUES的NLME_NETWORK_FORMATION.con的原语来通知上层这是一个非法请求。
2、信道扫描协调器发起建立一个新网络的进程后,网络层管理实体将请求MAC子层对信道进行扫描。
信道扫描包括能量扫描和主动扫描两个过程。
首先对用户指定的信道或物理层所有默认的信道进行一个能量扫描,以排除干扰。
网络层管理实体将根据信道能量测量值对信道进行一个递增排序,并且抛弃能量值超过了可允许能量值的信道,保留可允许能量值内的信道等待进一步处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
协议栈如何辨别设备类型?在上图中可以看到协调器建立网络的步骤以及路由器和终端加入网络的过程,但协议栈究竟如何区分设备类型,仅从图中无法看出。
在ZDApp.c文件中,ZDOInitDevice( uint16 startDelay )函数调用了ZDAppDetermineDeviceType()函数,函数原型:/********************************************************************** @fn ZDAppDetermineDeviceType()* @brief Determines the type of device to start.** Looks at zgDeviceLogicalType and determines what type of* device to start. The types are:* ZG_DEVICETYPE_COORDINATOR* ZG_DEVICETYPE_ROUTER* ZG_DEVICETYPE_ENDDEVICE** @param none* @return none*/void ZDAppDetermineDeviceType( void ){if ( zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR ){devStartMode = MODE_HARD; // Start as a coordinatorZDO_Config_Node_Descriptor.LogicalType = NODETYPE_COORDINATOR;}else{if ( zgDeviceLogicalType == ZG_DEVICETYPE_ROUTER )ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_ROUTER;else if ( zgDeviceLogicalType == ZG_DEVICETYPE_ENDDEVICE )ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_DEVICE;// If AIB_apsUseExtendedPANID is set to a non-zero value by commissioning// The device shall do rejoin the network. Otherwise, do normal joinif ( nwk_ExtPANIDValid( AIB_apsUseExtendedPANID ) == false ){devStartMode = MODE_JOIN; // Assume joining}else{devStartMode = MODE_REJOIN;}}}该函数中的关键句是if(zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR) ,其中,在ZGlobals,c文件中有如下定义:zgDeviceLogicalType = DEVICE_LOGICAL_TYPE 而在ZGlobals.h文件中有如下宏定义:#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_COORDINATOR,最终在sapi.h文件中,出现如下宏定义:#define ZG_DEVICETYPE_COORDINATOR 0x00 ,这样看来似乎绕了一圈又绕回了原点,其实并非如此,在ZGlobals.h文件中完整的宏定义代码:// Default Device Logical Type#if !defined ( DEVICE_LOGICAL_TYPE )#if ( ZG_BUILD_COORDINATOR_TYPE )// If capable, default to coordinator#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_COORDINATOR #elif ( ZG_BUILD_RTR_TYPE )#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ROUTER#elif ( ZG_BUILD_ENDDEVICE_TYPE )// Must be an end device#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ENDDEVICE#else#error ZSTACK_DEVICE_BUILD must be defined as something!#endif#endif可以看出,设备是协调器,路由器还是终端,都是在这里区别开来的。
区别的关键就变成了条件编译语句中的判断条件(高亮显示的三个语句),还是该头文件下,有以下条件编译:// Setup to work with the existing (old) compile flags#if !defined ( ZSTACK_DEVICE_BUILD )#if defined ( ZDO_COORDINATOR )#define ZSTACK_DEVICE_BUILD (DEVICE_BUILD_COORDINATOR) #elif defined ( RTR_NWK )#define ZSTACK_DEVICE_BUILD (DEVICE_BUILD_ROUTER)#else#define ZSTACK_DEVICE_BUILD (DEVICE_BUILD_ENDDEVICE)#endif#endif// Use the following to macros to make device type decisions#define ZG_BUILD_COORDINATOR_TYPE (ZSTACK_DEVICE_BUILD & DEVICE_BUILD_COORDINATOR)#define ZG_BUILD_RTR_TYPE (ZSTACK_DEVICE_BUILD & (DEVICE_BUILD_COORDINATOR | DEVICE_BUILD_ROUTER))#define ZG_BUILD_ENDDEVICE_TYPE (ZSTACK_DEVICE_BUILD & DEVICE_BUILD_ENDDEVICE)#define ZG_BUILD_RTRONLY_TYPE (ZSTACK_DEVICE_BUILD == DEVICE_BUILD_ROUTER)#define ZG_BUILD_JOINING_TYPE (ZSTACK_DEVICE_BUILD & (DEVICE_BUILD_ROUTER | DEVICE_BUILD_ENDDEVICE))#if ( ZSTACK_DEVICE_BUILD == DEVICE_BUILD_COORDINATOR )#define ZG_DEVICE_COORDINATOR_TYPE 1#else#define ZG_DEVICE_COORDINATOR_TYPE (zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR)#endif#if ( ZSTACK_DEVICE_BUILD == (DEVICE_BUILD_ROUTER | DEVICE_BUILD_COORDINATOR) )#define ZG_DEVICE_RTR_TYPE 1#else#define ZG_DEVICE_RTR_TYPE ((zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR) || (zgDeviceLogicalType == ZG_DEVICETYPE_ROUTER))#endif#if ( ZSTACK_DEVICE_BUILD == DEVICE_BUILD_ENDDEVICE )#define ZG_DEVICE_ENDDEVICE_TYPE 1#else#define ZG_DEVICE_ENDDEVICE_TYPE (zgDeviceLogicalType == ZG_DEVICETYPE_ENDDEVICE)#endif#define ZG_DEVICE_JOINING_TYPE ((zgDeviceLogicalType == ZG_DEVICETYPE_ROUTER) || (zgDeviceLogicalType == ZG_DEVICETYPE_ENDDEVICE))#if ( ZG_BUILD_RTR_TYPE )#if ( ZG_BUILD_ENDDEVICE_TYPE )#define ZSTACK_ROUTER_BUILD (ZG_BUILD_RTR_TYPE && ZG_DEVICE_RTR_TYPE)#else#define ZSTACK_ROUTER_BUILD 1#endif#else#define ZSTACK_ROUTER_BUILD 0#endif#if ( ZG_BUILD_ENDDEVICE_TYPE )#if ( ZG_BUILD_RTR_TYPE )#define ZSTACK_END_DEVICE_BUILD(ZG_BUILD_ENDDEVICE_TYPE && ZG_DEVICE_ENDDEVICE_TYPE)#else#define ZSTACK_END_DEVICE_BUILD 1#endif#else#define ZSTACK_END_DEVICE_BUILD 0#endif可以看到该段代码的解释Use the following to macros to make device type decisions,使用下列宏来决定设备类型。
其实,整个文件都是一些宏定义和条件编译语句,都是涉及如何区别设备类型,但鉴于代码太难读,又是初学,所以无法再往下分析了。
总之,ZDOInitDevice( uint16 startDelay )函数调用ZDAppDetermineDeviceType()函数之后就已经确定了设备类型。
今天发现,设备类型的最终定义在Tools文件下的三个配置文件中,图1在f8wCoord.cfg、f8wEndev.cfg和f8wRouter.cfg三个配置文件中分别定义了协调器、路由器和终端各自所具有的的功能。