Zigbee基础知识笔记

Zigbee基础知识笔记

  • 平台
    • 协议 TI ZStack-CC2530-2.5.1a
  • zigbee 相关概念
    • 无线传感网络
    • 协议栈
    • IEEE 802.15.4标准概述
  • ZigBee协议体系结构
    • ZigBee协议
      • 物理层(PHY)
        • 物理层内容
      • 介质接入控制子层( MAC )
        • MAC层功能
      • 网络层(NWK)
        • 网络层功能:
      • 应用层( APL)
        • 应用支持层功能
        • ZigBee设备对象的功能
      • 应用程序框架( AF ):
  • Zigbee基本概念
    • 设备类型
      • Coordinator(协调器)
      • Router(路由器)
      • End-Device(终端设备)
      • NOTICE
    • 协议栈规范(Stack profile)
    • 拓扑结构
      • 星形拓扑
      • 树形拓扑
        • 通讯规则
        • 缺点
      • Mesh拓扑(网状拓扑)
    • 信标与非信标模式
      • 信标模式
      • 非信标模式下
    • 地址定义
      • 64位IEEE地址 即MAC地址
      • 16位网络地址
    • 寻址
      • 单点传送(Unicast)
      • 间接传送(Indirect)
      • 广播传送(broadcast)
        • NWK_ BROADCAST SHORTADDR_ DEVALL(OxFFFF)
        • NWK_ BROADCAST _SHORTADDR_ DEVRXON(0xFFFD)
        • NWK_ BROADCAST SHORTADDR_ DEVZCZR(0xFFFC)
      • 组寻址
    • 设备( device )
    • 重要设备地址(Important Device Addresses)

平台

协议 TI ZStack-CC2530-2.5.1a

zigbee 相关概念

无线传感网络

大规模,无线、自组织、多跳、无分区、无基础设施支持的网络.其中的节点是同构的、成本较低、体积较小,大部分节点不移动,被随意分布在工作区域,要求网络系统有尽可能长的工作时间。

协议栈

指网络中各层协议的总和,其形象的反映了-一个网络中文件传输的过程:由.上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,TELNET,DNS,EMAIL等),传输层(TCP,UDP),网络层(IP),链路层( WI-FI,以太网,令牌环,FDDI等),物理层。

IEEE 802.15.4标准概述

IEEE 802.15.4是一个低速率无线个人局域网(Low Rate Wireless PersonalAreaNetworks , LR-WPAN)标准。该标准定义了物理层(PHY)和个质访问控制层(MAC)。这种低速率无线个人局域网的网络结构简单、成本低廉、具有有限的功率和灵活的吞吐量。低速率无线个人局域网的主要目标是实现安装容易、数据传输可靠、短距离通信、极低的成本、合理的电池寿命,并且拥有一个简单而且灵活的通信网络协议。

ZigBee协议体系结构

ZigBee协议

ZigBee协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。 协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的, 进而实现无线数据收发。

ZigBee协议栈建立在IEEE 802 .15 4的PHY层和MAC子层规范之上。它实现了网络层(networklayer , NWK)和应用层(applicationlayer , APL)。在应用层内提供了应用支持子层(application support sub- -layer , APS)和ZigBee 设备对象(ZigBee DeviceObject , ZDO)。应用框架中则加入了用户自定义的应用对象。

物理层(PHY)

物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务和物理层管理服务。

物理层内容

1)ZigBee的激活;
2)当前信道的能量检测;
3)接收链路服务质量信息;
4)ZigBee信道接入方式;
5)信道频率选择;
6)数据传输和接收。

介质接入控制子层( MAC )

MAC层负责处理所有的物理无线信道访问,并产生网络信号、同步信号;支持PAN连接和分离,提供两个对等MAC实体之间可靠的链路。

MAC层功能

1 )网络协调器产生信标;
2)与信标同步;
3 )支持PAN(个域网)链路的建立和断开;
4 )为设备的安全性提供支持;
5 )信道接入方式采用免冲突载波检测多址接入(CSMA-CA)机制;
6 )处理和维护保护时隙(GTS)机制;
7 )在两个对等的MAC实体之间提供一个可靠的通信链路。

网络层(NWK)

ZigBee协议栈的核心部分在网络层。网络层主要实现节点加入或离开网络、接收或拋弃其
他节点、路由查找及传送数据等功能。

网络层功能:

1)网络发现;
2)网络形成;
3)允许设备连接;
4)路由器初始化;
5)设备同网络连接;
6)直接将设备同网络连接;
7)断开网络连接;
8)重新复位设备;
9)接收机同步;
10)信息库维护。

应用层( APL)

ZigBee应用层框架包括应用支持层(APS)、ZigBee 设备对象(ZDO)和制造商所定义的应用对象。

应用支持层功能

维持绑定表、在绑定的设备之间传送消息。

ZigBee设备对象的功能

1)定义设备在网络中的角色(如ZigBee协调器和终端设备)
2)发起和响应绑定请求
3)在网络设备之间建立安全机制
4)ZigBee 设备对象还负责发现网络中的设备,并且决定向他们提供何种应用服务。

ZigBee应用层除了提供一些必要函数以及为网络层提供合适的服务接口外,一个重要的功能是应用者可在这层定义自己的应用对象。

应用程序框架( AF ):

运行在ZigBee协议栈.上的应用程序实际上就是厂商自定义的应用对象,并且遵循规范(profile)行在端点1~ 240上。在ZigBee应用中提供2种标准服务类型键值对(KVP)或报文(MSG)ZigBee设备对象(ZDO)的功能包括负责定义网络中设备的角色,如:协调器或者终端设备。还包括对绑定请求的初始化或者响应,在网络设备之间建立安全联系等。实现这些功能,ZDO使用APS层的APSDE-SAP和网络层的NLME-SAP。ZDO是特殊的应用对象,它在端点(entire)0上实现。远程设备通过ZDO请求描述符信息,接收到这些请求时, ZDO会调用配置对象获取相应描述符值。

Zigbee基本概念

设备类型

Coordinator(协调器)

协调器负责启动整个网络。它也是网络的第一个设备。 协调器选择一个信道和一 个网络ID(也称之为PAN ID ,即Personal Area Network ID) ,随后启动整个网络。协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。注意,协调器的角色主要涉及网络的启动和配置。一旦这些都完成后,协调器的工作就像一个路由器(或者消失go away)。由于ZigBee网络本身的分布特性,因此接下来整个网络的操作就不在依赖协调器是否存在。

Router(路由器)

路由器允许其他设备加入网络,多跳路由和协助它自己的由电池供电的终端设备的通讯。通常,路由器希望是一-直处于 活动状态,因此它必须使用主电源供电。但是当使用树状网络拓扑结构时,允许路由间隔一定的周期操作- -次,这样就可以使用电池给其供电。

End-Device(终端设备)

终端设备没有特定的维持网络结构的责任,它可以睡眠或者唤醒, 因此它可以可以是一个电池供电设备。

NOTICE

ZigBee 网络由一个Coordinator 以及多个Router 和多个End_ Device 组成。
Zigbee基础知识笔记_第1张图片

协议栈规范(Stack profile)

协议栈规范由ZigBee联盟定义指定。在同-一个网络中的设备必须符合同一个协议栈规范(同一个网络中所有设备的协议栈规范必须一致)
ZigBee联盟为ZigBee协议栈2007定义了2个规范: ZigBee和ZigBee PRO。

所有的设备只要遵循该规范,即使在不同厂商买的不同设备同样可以形成网络。如果应用开发者改变了规范,那么他的产品将不能与遵循ZigBee联盟定义规范的产品组成网络,也就是说该开发者开发的产品具有特殊性,我们称之为"关闭的网络”, 也就是说它的设备只有在自己的产品中使用,不能与其他产品通信。更改后的规范可以称之为"特定网络”规范。

协议栈规范的ID号可以通过查询设备发送的beacon帧获得。在设备加入网络之前,首先需要确认协议栈规范的ID。"特定网络” 规范ID号为0 ; ZigBee协议栈规范的ID号为1 ; ZigBee PRO协议栈规范的ID号为2。协议栈规范的ID ( STACK_ PROFILE ID )在*nwk globals.h* 中定义:

// Controls various stack parameter settings
#define NETWORK_SPECIFIC      0
#define HOME_CONTROLS         1
#define ZIGBEEPRO_PROFILE     2
#define GENERIC_STAR          3
#define GENERIC_TREE          4

拓扑结构

星形拓扑

星形拓扑是最简单的一种拓扑形式,他包含-一个Coordinator (协调者)节点和一系列的End Device (终端)节点。每-个End Device节点只能和Coordinator节点进行通讯。如果需要在两个End Device节点之间进行通讯必须通过Coordinator节点进行信息的转发。
Zigbee基础知识笔记_第2张图片
这种拓扑形式的缺点是节点之间的数据路由只有唯一的一个路径。Coordinator (协调.者)有可能成为整个网络的瓶颈。实现星形网络拓扑不需要使用zigbee的网络层协议,因为本身IEEE 802.15.4的协议层就已经实现了星形拓扑形式,但是这需要开发者在应用层作更多的工作,包括自己处理信息的转发

树形拓扑

包括一个Coordinator (协调者)以及一系列的Router (路由器)和EndDevice (终端)节点。Coordinator 连接一系列的Router 和End Device,他的子节点的Router 也可以连接一系列的Router 和End Device. 这样可以重复多个层级。

Zigbee基础知识笔记_第3张图片

通讯规则

每一个节点都只能和他的父节点和子节点之间通讯。如果需要从一个节点向另一-个节点发送数据那么信息将沿着树的路径向上传递到最近的祖先节点然后再向下传递到目标节点。

缺点

这种拓扑方式的缺点就是信息只有唯一的路由通道。 另外信息的路由是由协议栈层处理的,整个的路由过程对于应用层是完全透明的。

Mesh拓扑(网状拓扑)

包含一个Coordinator和一系列的Router和End Device。
这种网络拓扑形式和树形拓扑相同;请参考上面所提到的树形网络拓扑。但是,网状网络拓扑具有更加灵活的信息路由规则,在可能的情况下,路由节点之间可以直接的通讯。这种路由机制使得信息的通讯变得更有效率,而且意味这一-旦- -个路由路径出现了问题,信息可以自动的沿着其他的路由路径进行传输。
Zigbee基础知识笔记_第4张图片
通常在支持网状网络的实现上,网络层会提供相应的路由探索功能,这一特性使得网络层可以找到信息传输的最优化的路径。 需要注意的是,以上所提到的特性都是由网络层来实现,应用层不需要进行任何的参与。

MESH网状网络拓扑结构的网络具有强大的功能,网络可以通过“ 多级跳”的方式来通信;该拓扑结构还可以组成极为复杂的网络;网络还具备自组织、自愈功能;星型和族树型网络适合点多多点、距离相对较近的应用。
nwk_ globals.h

// Controls the operational mode of network
#define NWK_MODE_STAR         0
#define NWK_MODE_TREE         1
#define NWK_MODE_MESH         2

信标与非信标模式

信标模式

实现了网络中所有设备的同步工作和同步休眠,以达到最大限度的功耗节省,而非信标模式则只允许终端设备进行周期性休眠,协调器和所有路由器设备必须长期处于工作状态。信标模式下,协调器负责以一定的间隔时间(一般在15ms-4mins之间)向网络广播信标帧,两个信标帧发送间隔之间有16个相同的时槽,这些时槽分为网络休眠区和网络活动区两个部分,消息只能在网络活动区的各时槽内发送。

非信标模式下

ZigBee标准采用父节点为终端设备子节点缓存数据,终端设备主动向其父节点提取数据的机制,实现终端设备的周期性(周期可设置)休眠。网络中所有父节点需为自己的终端设备子节点缓存数据帧所有终端设备子节点的大多数时间都处于休眠模式,周期性的醒来与父节点握手以确认自己仍处于网络中其从休眠模式转入数据传输模式一般只需要15ms。

地址定义

ZigBee设备有两种类型的地址。

64位IEEE地址 即MAC地址

64位地址使全球唯一的地址,设备将在它的生命周期中一直拥有它。它通常由制造商或者被安装时设置。这些地址由IEEE来维护和分配。

16位网络地址

16位网络地址是当设备加入网络后分配的。它在网络中是唯一的 ,用来在网络中鉴别设备和发送数据。其中,协调器的网络地址为0x00

// Network PAN Coordinator Address
#define NWK_PAN_COORD_ADDR 0x0000

ZigBee 2007 PRO使用的随机地址分配机制,对新加入的节点使用随机地址分配,为保证网络内地址分配不重复,使用其余的随机地址再进行分配。当一个节点加入时,将接收到父节点的随机分配地址,然后产生“设备声明”( 包含分配到的网络地址和IEEE地址)发送至网络中的其余节点。如果另一个节点有着同样的网络地址,则通过路由器广播“网络状态地址冲突”至网络中的所有节点。所有发生网络地址冲突的节点更改自己的网络地址,然后再发起“设备声明”检测新的网络地址是否冲突。终端设备不会广播“地址冲突”, 他们的父节点会帮助完成。如果一个终端设备发生 了“地址冲突”他们的父节点发送"重新加入”消息至终端设备并要求他们更改网络地址。然后,终端设备再发起“设备声明”检测新的网络地址是否冲突。当接收到“设备声明”后,关联表和绑定表将被更新使用新的网咯地址, 但是路由表不会被更新。

在每个路由加入网络之前,寻址方案需要知道和配置–些参数。这些参数是
MAX_ DEPTH (最大网络深度)
MAX ROUTERS (最多路由数)
MAX CHILDREN(最多子节点数)

#if ( STACK PROFILE ID == ZIGBEEPRO PROFILE )
uint8 CskipRtrs[1] = {0};
uint8 CskipChldrn[1] = {0};

Cm ( nwkMaxChildren ):每个父节点可以连接的子节点的总个数;
Rm ( nwkMaxRouters ):在Cm中,可以是路由节点的个数,Rm<=Cm ;
Lm :网络最大深度,协调器的深度为0
这三个参数的值在Z-stack 中分别由变量CskipChldrn、CskipRtrs、 MAX_ NODE_ DEPTH
决定。这三个变量可以在NWK中的nwk_ globals.c 和nwk_ _globals.h 两个文件中查找。

寻址

向一个在ZigBee网络中的设备发送数据应用程序通常使用AF_ DataRequest()函数。
数据包将要发送给一个zAddrType_ t(在ZComDef.h中定义)类型的目标设备。

.>>>>>

单点传送(Unicast)

Uicast是标准寻址模式,它将数据包发送给一个已经知道网络地址的网络设备。将
afAddrMode设置为Addr1 6Bit并且在数据包中携带目标设备地址。

间接传送(Indirect)

当应用程序不知道数据包的目标设备在哪里的时候使用的模式。将模式设为AddrNotPresent并且目标地址没有指定。取代它的是从发送设备的栈的绑定表中查找目标设备。这种特点称之为源绑定。当数据向下发送到达栈中,从绑定表中查找并且使用该目标地址。这样, 数据包将被处理成为一一个标准的单点传送数据包。如果在绑定表中找到多个设备,则向每个设备都发送一 个数据包的拷贝。

广播传送(broadcast)

当应用程序需要将数据包发送给网络的每一个设备时,使用这种模式。地址模式设置为
AddrBroadcast。目标地址可以设置为下面广播地址的一-种:

NWK_ BROADCAST SHORTADDR_ DEVALL(OxFFFF)

数据 包将被传送到网络上的所有设备,包括睡眠中的设备。对于睡眠中的设备, 数据包将被保留在其父亲节点直到查询到它,或者消息超时(NWK_ INDIRECT_ MSG _TIMEOUT在f8wConifg.cfg中)。

NWK_ BROADCAST SHORTADDR DEVRXON(0xFFFD)

数据包将被传送到网络上的所有在空闲时打开接收的设备(RXONWHENIDLE) ,也就是说,除了睡眠中的所有设备。

NWK_ BROADCAST SHORTADDR_ DEVZCZR(0xFFFC)

数据包发送给所有的路由器,包括协调器。

组寻址

当应用程序需要将数据包发送给网络上的一组设备时, 使用该模式。地址模式设置为afAddrGroup并且addr.shortAddr 设置为组ID。在使用这个功能呢之前必须在网络中定义组。(参见Z-stack API文档中的aps_ AddGroup()函数。注意组可以用来关联间接寻址。再绑定表中找到的目标地址可能是是单点传送或者是一个组地址。另外,广播发送可以看做是一-个组寻址的特例。下面的代码是一个设备怎样加入到一个ID为1的组当中:

设备( device )

一个节点就是一个设备,对应一个无线单片机( CC2530 ); 一个设备有一个射频端,具有唯一的IEEE地址( 64位)和网络地址( 16位)。在协议栈中不同的设备有相应的配置文件:
协调器配置:文件: f8wCoord.cfg
路由器配置文件: f8wRouter.cfg
终端设备配置文件: f8wEndev.cfg

重要设备地址(Important Device Addresses)

应用程序可能需要知道它的设备地址和父亲地址。使用下面的函数获取设备地址(在ZStack API中定义) :
NLME_ GetShortAddr()-返回本设备的16位网络地址
NLME GetExtAddr()–返回本设备的 64位扩展地址
使用下面的函数获取该设备的父亲设备的地址:
NLME_ GetCoordShortAddr()-返回本设备的父亲设备的 16位网络地址
NLME GetCoordExtAddr()–返回本设备的父亲设备的 64位扩展地址

你可能感兴趣的:(Zigbee)