Zigbee协议栈中文说明

2019-07-20 17:02发布

1.概述

1.1解析ZigBee堆栈架构ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。
1.1.1ZigBee堆栈层
每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。
    设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件 图1-1 zigbe堆栈框架
从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。
端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象(ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。
所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。
APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。
1.1.2  802.15.4 MAC层
IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868/915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。
MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC层安全:它能提供二个设备之间的可靠链接。
1.1.3  关于服务接入点
ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。
ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。
1.1.4  ZigBee的安全性
安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。
每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用途。信任中心是在网络中分配安全钥匙的一种令人信任的设备。
1.1.5  ZigBee堆栈容量和ZigBee设备
根据ZigBee堆栈规定的所有功能和支持,我们很容易推测ZigBee堆栈实现需要用到设备中的大量存储器资源。 不过ZigBee规范定义了三种类型的设备,每种都有自己的功能要求:ZigBee协调器是启动和配置网络的一种设备。协调器可以保持间接寻址用的绑定表格,支持关联,同时还能设计信任中心和执行其它活动。一个ZigBee网络只允许有一个ZigBee协调器。
ZigBee路由器是一种支持关联的设备,能够将消息转发到其它设备。ZigBee网格或树型网络可以有多个ZigBee路由器。ZigBee星型网络不支持ZigBee路由器。
ZigBee端终设备可以执行它的相关功能,并使用ZigBee网络到达其它需要与其通信的设备。它的存储器容量要求最少。然而需要特别注意的是,网络的特定架构会戏剧性地影响设备所需的资源。NWK支持的网络拓扑有星型、树型和网格型。在这几种网络拓扑中,星型网络对资源的要求最低。
ZigBee堆栈应该可以提供ZigBee规范要求的所有功能,因此制造商的重点工作是开发实际的应用。为了更加容易实现,如果制造商使用某种公共模板,那么可用大多数现成的配置。如果没有合适的公共模板,则可以充分利用其它模板已经做过的工作创建自己的模板。
ZigBee协议栈体系包含一系列的层元件,其中有IEEE802.15.4 2003标准中的MAC层和PHY层,当然也包括ZigBee组织设计的NWK层。每个层的元件有其特定的服务功能。本说明描述内容涉及ZigBee协议栈的各层元件,但侧重于描述最具实际和理论探讨性的APL应用层和NWK网络层。图1-1为ZigBee栈结构框图。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
说书先生
2019-07-21 07:29
2.2.4.3.4.2 产生该原语由APSME产生作为APSME-UNBIND.request原语的响应发送给NHLE。如果请求成功,那么状态参数将表明一个成功的解除绑定请求。否则,状态参数则为错误码ILLEGAL_DEVICE、 ILLEGAL_REQUEST 或INVALID_BINDING。2.2.4.3.4.3 接收接收到该原语,上层就被通知其解除绑定请求的结果。如果解除绑定请求成功,状态参数设置为SUCCESS。否则,状态参数表明错误。2.2.4.4 信息库的维护这组原语定义了设备上层如何读取和写入AIB中的属性。2.2.4.4.1 APSME-GET.request该原语允许设备上层从AIB中读取属性值。2.2.4.4.1.1 服务原语的语法该原语的语法如下:
APSME-GET.request               {AIBAttribute}
表2.10描述了该原语的参数。
2.2.4.4.1.2 产生该原语由上层产生并发送给APSME来读取AIB中的属性。2.2.4.4.1.3 接收接收到该原语,APSME试图从数据库中得到AIB属性。如果在数据库中没有相应的AIB属性表标识符,APSME将发送状态参数为UNSUPPORTED_ATTRIBUTE的APSME-GET.confirm原语。如果成功得到了AIB属性,APSME将发送状态参数为SUCCESS,包含AIB属性标识符和属性值的APSME-GET.confirm原语。2.2.4.4.2 APSME-GET.confirm该原语向上层报告从AIB中读取属性值的结果。2.2.4.4.2.1 服务原语的语法该原语的语法如下:
APSME-GET.confirm               {                                  StatusAIBAttributeAIBAttributeLengthAIBAttributeValue}
表2.11描述了该原语的参数。
2.2.4.4.2.2 产生该原语由APSME产生,发送给上层作为对APSME-GET.request原语的响应。该原语返回状态SUCCESS,表明请求读取AIB属性请求成功,或者返回错误码UNSUPPORTED_ATTRIBUTE.这些状态在2.2.4.4.1.3小节进行了描述。2.2.4.4.2.3 接收接收到该原语,上层得知读取AIB属性请求的结果。如果读取AIB属性请求成功,状态参数设置为SUCCESS。否则,状态参数表明错误。2.2.4.4.3 ASPME-SET.request该原语允许设备上层将属性值写入AIB。2.2.4.4.3.1 服务原语的语法该原语的语法如下:APSME-SET.request               {AIBAttributeAIBAttributeLengthAIBAttributeValue}
表2.12描述了该原语的参数。
2.2.4.4.3.2 产生该原语由上层产生并发送给APSME在AIB中写入一个属性值。2.2.4.4.3.3 接收接收到该原语,APSME试图将给定的数据库中的值写入AIB属性。如果在数据库中没有AIB属性参数指定的属性,APSME将发送状态参数为UNSUPPORTED_ATTRIBUTE的APSME-SET.confirm原语。如果AIB属性值参数给定的值超过了有效的属性范围,APSME将发送状态参数为INVALID_PARAMETER的APSME-SET.confirm原语。如果成功写入了AIB属性,APSME将发送状态参数为SUCCESS的APSME-SET.confirm原语。2.2.4.4.4 APSME-SET.confirm该原语向上层报告向AIB属性中写入属性值的结果。2.2.4.4.4.1 服务原语的语法该原语的语法如下:
APSME-SET.confirm               {                                  StatusAIBAttribute}
表2.13描述了该原语的参数。
2.2.4.4.4.2 产生该原语由APSME产生,发送给上层作为对APSME-SET.request原语的响应。该原语返回状态SUCCESS,表明将属性值写入AIB属性的请求成功,或者返回错误码INVALID_PARAMETER或UNSUPPORTED_ATTRIBUTE.这些状态在2.2.4.4.3.3小节进行了描述。2.2.4.4.4.3 接收接收到该原语,上层得知写入AIB属性请求的结果。如果写入AIB属性请求成功,状态参数设置为SUCCESS。否则,状态参数表明错误。2.2.4.5 组管理这组原语允许上层在当前设备中通过在组表中添加和移除入口来管理每个端点的组关系。2.2.4.5.1 APSME-ADD-GROUP.request该原语允许上层请求一个特定的组的组关系加入到特定的端点。2.2.4.5.1.1 服务原语的语法该原语的语法如下:
APSME-ADD-GROUP.request          {                                 GroupAddressEndpoint}
表2.14描述了该原语的参数。
2.2.4.5.1.2 产生当上层要将一个特定组的关系加入一个端点时产生该原语,设置了组地址的帧将被传送给该端点。2.2.4.5.1.3 接收如果接收到该原语,其GroupAddress参数的值超出了有效范围,APSME将向上层发送状态参数为INVALID_PARAMETER的APSME-ADD-GROUP.condirm原语。同样,如果Endpoint参数值为0x00或当前设备的其它没有执行的端点,APSME将发送状态参数为INVALID_PARAMETER的APSME-ADD-GRROUP.confirm原语。完成上述参数检测后,APSME将检查组表中是否存在包含给定参数GroupAddress和Endpoint的入口。如果该入口已存在于组表中,APSME将向上层发送状态参数为SUCCESS的APSME-ADD-GROUP.confirm原语。如果没有该入口,表中还有入口空间,APSME将在组表中建立一个新的入口,其参数为给定的GroupAddress和Endpoint值。入口加入到APS组表后,APSME将发送NLME-SET.request原语来确保相应的网络层组表中的nwkGroupIDTable属性与APS子层中的组表包含的组地址列表相一致。一旦两个表一致了,APSME将向上层发送状态参数为SUCCESS的APSME-ADD-GROUP.confirm原语。如果没有给定参数GroupAddress和Endpoint的入口并且组表中没有建立另一个入口的空间,APSME将向上层发送状态参数为TABLE_FULL的APSME-ADD-GROUP.confirm原语。2.2.4.5.2 APSME-ADD-GROUP.confirm该原语使得设备得知其将一个组添加到端点的请求结果。2.2.4.5.2.1 服务原语的语法该原语的语法如下:
APSME-ADD-GROUP.confirm          {                                  StatusGroupAddressEndpoint}
表2.15描述了该原语的参数。
2.2.4.5.2.2 产生该原语由APSME产生并发送给上层作为对APSME-ADD-GROUP.request原语的响应。如果APSME-ADD-GROUP.request成功,那么状态参数值为SUCCESS。如果APSME-ADD-GROUP.request中的参数为无效值,那么状态产生设置为INVALID_PARAMETER。如果APSME试图加入一个组表入口,但表中已没有加入其它入口的空间,状态参数设置为TABLE_FULL。2.2.4.5.2.3 接收上层接收到该原语,则得知添加组请求的结果。状态参数值如上面所述。2.2.4.5.3 APSME-REMOVE-GROUP.request该原语允许上层请求将一个特定的组的组关系从特定的端点中移除。2.2.4.5.3.1 服务原语的语法该原语的语法如下:
APSME-REMOVE-GROUP.request       {GroupAddressEndpoint}
表2.16描述了该原语的参数。
2.2.4.5.3.2 产生当上层要将一个特定组的关系从一个端点中移除时产生该原语,设置了组地址的帧将不被传送给该端点。2.2.4.5.3.3 接收如果接收到该原语,其GroupAddress参数的值超出了有效范围,APSME将向上层发送状态参数为INVALID_PARAMETER的APSME-REMOVE-GROUP.condirm原语。同样,如果Endpoint参数值为0x00或当前设备的其它没有执行的端点,APSME将发送状态参数为INVALID_PARAMETER的APSME-REMOVE-GRROUP.confirm原语。完成上述参数检测后,APSME将检查组表中是否存在包含给定参数GroupAddress和Endpoint的入口。如果该入口已存在于组表中,该入口将被移除。APSME将发送NLME-SET.request原语来确保相应的网络层组表中的nwkGroupIDTable属性与APS子层中的组表包含的组地址列表相一致。一旦两个表一致了,APSME将向上层发送状态参数为SUCCESS的APSME-REMOVE-GROUP.confirm原语。如果没有该入口,APSME将向上层发送状态参数为SUCCESS的APSME-REMOVE-GROUP.confirm原语。2.2.4.5.4 APSME-REMOVE-GROUP.confirm该原语使得设备得知其将一个组从端点中移除的请求结果。2.2.4.5.4.1 服务原语的语法该原语的语法如下:
APSME-REMOVE-GROUP.confirm       {                                  StatusGroupAddressEndpoint}
表2.17描述了该原语的参数。
2.2.4.5.4.2 产生该原语由APSME产生并发送给上层作为对APSME-REMOVE-GROUP.request原语的响应。如果APSME-REMOVE-GROUP.request成功,那么状态参数值为SUCCESS。如果APSME-REMOVE-GROUP.request中有参数为无效值,那么状态产生设置为INVALID_PARAMETER。2.2.4.5.4.3 接收上层接收到该原语,则得知移除组请求的结果。状态参数值如上面所述。2.2.4.5.5 APSME-REMOVE-ALL-GROUP.request当上层想要将所有组中的关系从端点中移除时产生该原语,因此,没有组地址的帧传送给端点。2.2.4.5.5.1 服务原语的语法该原语的语法如下:
APSME-REMOVE-ALL-GROUPS.request   {Endpoint}
表2.18描述了该原语的参数。
2.2.4.5.5.2 产生当上层想要将所有组中的关系从端点中移除时产生该原语,因此,没有组地址的帧传送给端点。2.2.4.5.5.3 接收接收到该原语,如果Endpoint参数值为0x00或当前设备的其它没有执行的端点,APSME将发送状态参数为INVALID_PARAMETER的APSME-REMOVE-ALL-GRROUP.confirm原语。完成上述参数Endpoint检测后,APSME将从组表中移除所有与该端点相关的入口。APSME将发送NLME-SET.request原语来确保相应的网络层组表中的nwkGroupIDTable属性与APS子层中的组表包含的组地址列表相一致。一旦两个表一致了,APSME将向上层发送状态参数为SUCCESS的APSME-REMOVE-ALL-GROUP.confirm原语。2.2.4.5.6 APSME-REMOVE-ALL-GROUP.confirm该原语使得设备得知其从一个端点中移除所有组的请求结果。2.2.4.5.6.1 服务原语的语法该原语的语法如下:
表2.19描述了该原语的参数。
2.2.4.5.6.2 产生该原语由APSME产生并发送给上层作为对APSME-REMOVE-ALL-GROUP.request原语的响应。如果APSME-REMOVE-ALL-GROUP.request成功,那么状态参数值为SUCCESS。如果APSME-REMOVE-ALL-GROUP.request中有参数为无效值,那么状态产生设置为INVALID_PARAMETER。2.2.4.5.6.3 接收上层接收到该原语,则得知从端点中移除所有组请求的结果。状态参数值如上面所述。

一周热门 更多>