Advertisement

ZigBee之基础概念2

阅读量:

设备类别

  1. 协调器 拥有相应的协调和路由功能
  2. 路由器 则主要负责网络中的路由操作
  3. 终端设备 无对应功能配置

Note. 在任何一个网络中仅此一个协调器存在;可以存在多个路由器以及终端节点。

该设备的主要职责是启动整个网络系统。此设备处于网络运行的起始位置。为了确保系统的正常运转, 该设备首先需选择可用信道, 并确定连接的局域网ID信息后才能开始工作。
此外, 该设备不仅可独立运行系统初始化流程, 并且在构建网络安全框架方面表现突出。
最后, 该设备展现出卓越的功能性和可靠性。

请注意其主要职责是负责网络的建立和设置。当所有步骤完成时(条件满足时),该系统的行为类似于一个功能完善的路由器;在完成之后,则会自然地退出/消失。得益于ZigBee自身的分布式架构特点,在此之后整个网络的操作将不再受其影响。

请注意其主要职责是负责网络的建立和设置。当所有步骤完成时(条件满足时),该系统的行为类似于一个功能完善的路由器;在完成之后,则会自然地退出/消失。得益于ZigBee自身的分布式架构特点,在此之后整个网络的操作将不再受其影响。

路由器的主要功能包括:支持其他设备接入网络,并通过多跳路由(作为信号中转和中继)以及协助自身用电源供电的终端设备实现通讯。一般情况下, 路由器应始终保持运行状态, 因此必须从主电源获取电力供应.然而, 当采用树状网络拓扑结构时, 可以每隔一定周期让路由器进行一次操作, 从而为其提供电池供电.

终端设备无需维护网络结构, 它处于休眠状态或被唤醒状态, 因此它可能是一个电池供电设备.通常来说,终端设备对于存储空间(尤其是RAM的需求)相对较小.

协议栈规范( Stack Profile)

ZigBee 联盟为协议栈规范制定了具体规定。在同一网络中的所有设备都必须遵循同一协议栈规范(即该标准下包含了两个版本:ZigBee 标准和 ZigBEE PRO 标准)。根据这一标准下所制定的两个版本:ZigBEE 标准和 Zigbee PRO 标准。所有的设备只要遵循该规范,则无论来自哪家厂商的设备都能形成网络。

当应用开发者修改其遵循 Zigbee 联盟制定的标准时

PRO 协议栈规范的标识码为 2。STACK_PROFILE_ID 被定义在 nwk_globals.h 中。

该系统遵循星形、树形和网形三种不同的网络架构模式。具体来说,它包括星形拓扑模式,树群组模式以及网形拓扑模式,如图所示。

星状网络基于一个PAN管理单元以及多个端点设备构建而成,在数据传输过程中仅限于PAN管理单元与端点之间的交互;而各端点间的通信则均依赖于PAN管理单元执行的数据中继处理

树状网络由主设备和一个或多个子网构成,在这种架构下,各设备除能够与其父节点或子节点进行点对点直接通信外,还必须通过树状路由完成消息传输。

网状网络基于树状网络实现。与树状网络不同的是,在其架构中允许所有具备路由功能的节点之间可以直接连接。该拓扑的优势在于降低了通信延迟,并且提升了系统的可靠性和稳定性。然而这种架构需要增加对存储资源的需求。

在 Z-Stack 中网络拓扑结构定义如下:

复制代码
 #define NWK_MODE_STAR 0

    
 #define NWK_MODE_TREE 1
    
 #define NWK_MODE_MESH 2
复制代码
 #if ( STACK_PROFILE_ID == ZIGBEEPRO_PROFILE )

    
 #define NWK_MODE NWK_MODE_MESH
    
 #elif ( STACK_PROFILE_ID == HOME_CONTROLS )
    
 #define NWK_MODE NWK_MODE_MESH
    
 #elif ( STACK_PROFILE_ID == GENERIC_STAR )
    
 #define NWK_MODE NWK_MODE_STAR
    
 #elif ( STACK_PROFILE_ID == NETWORK_SPECIFIC )
    
 #define NWK_MODE NWK_MODE_MESH
    
 #endif

信标与非信标模式

ZigBee网络的工作模式主要分为两种类型:一种是基于Beacon的模式(即Beacon模式),另一种是非Beacon型模式。在信标的运作过程中,协调器会定期发送固定频率的 Beacon帧到网络中。这种配置使得所有参与网络运行的设备能够实现同步运行与周期性休眠状态。通过这种方式可以实现最大限度地降低能耗水平。然而,在非Beacon型配置下,则仅限于终端节点可执行周期性休眠操作。作为网络管理的核心单元,在这种配置下,协调器以及所有路由器都必须始终保持激活状态。此外,在每两个连续的 Beacon帧之间相隔16个均匀分布的时间片,在此期间网络被划分为休眠区与活跃区两个功能区域。只有当节点处于活跃区的时间片内才能发送数据包。

在非认证型ZigBee标准下,在这种模式下,默认情况下每个子网中的主设备负责存储来自其子设备的数据,并且按照预定程序向其父节点请求获取这些数据。这样做的目的是确保主设备能够在预设的时间间隔内进入休眠状态(此时间间隔可自行设定)。在网络架构中,默认情况下每个父节点都需要负责管理属于自己的所有子网中的终端设备存储的数据包,并且在大部分时间里这些终端设备都保持休眠状态。为了验证身份并确认自己仍在当前网络连接中,默认情况下每个主设备会定期唤醒并与自己的父节点进行通信。当主设备从休眠状态切换到数据传输状态时通常只需要15毫秒的时间。(默认情况下使用的是非认证型)

地址
地址定义为:
ZigBee设备分为两种类型的地址定义:
一种是64位IEEE地址(全局唯一且由制造商在生产时就分配好了),即为MAC地址。
另一种则为16位网络地址。

该系统支持基于规则的网络地址自动分配方案。
ZigBee2014标准采用分布式寻址策略用于实现网络节点间的通信连接。
其中,Zigbee-PRO系列设备可选配置基于随机算法的动态IP地址分配机制。

分布式寻址方案确保在整个网络中所有分配的地址都是独一无二的。这一要求是必不可少的……该算法的设计使得设备仅与父辈设备通信以获取网络地址。无需整个网络范围内的通信就能实现地址分配……这样做的好处是可以显著提高网络可测量性

ZigBee 2007 PRO 协议采用了随机地址分配机制,在新节点加入时会为其分配随机号码。为了确保整个网络中不会出现重复Address的情况,在完成初始分配后会从剩余可用Random号码中选择其他号码进行补充配额。当一个新节点加入时……它会接收父Node赋予的RandomNetwork Address,并生成一个'设备声明'(包含其获得的Network Address和IEEE本地 address),然后发送这一信息至整个Network中的其他Node。如果另一个Node拥有相同的Network Address,则会通过Router广播'Network状态-冲突'信息给整个Network的所有成员。当发生Address冲突时……所有受影响Node会更改其使用的本地Address并重新发送'设备声明'以检测新的Network Address是否仍然存在冲突。

为了在ZigBee网络中向目标设备传输数据,应用程序通常会调用AF_DataRequest()函数。应用需通过AF_DataRequest()函数向ZComDef.h中定义的afAddrType_t类型的目标设备发送数据包。

复制代码
 typedef struct

    
 {
    
 	union//联合体
    
 	{
    
 		uint16 shortAddr;//短地址
    
 		ZLongAddr_t extAddr;//长地址
    
 	} addr;
    
 	afAddrMode_t addrMode;//地址类型
    
 	byte endPoint;//端点值
    
 	uint16 panId; // used for the INTER_PAN feature//个域网ID号
    
 } afAddrType_t;

请注意,在指定地址时,请确保除了网络地址之外还明确明确了地址模式参数。目标地址模式应设置为以下几种类型之一。

复制代码
 typedef enum

    
 {
    
 afAddrNotPresent = AddrNotPresent,
    
 afAddr16Bit = Addr16Bit,//16位短地址
    
 afAddr64Bit = Addr64Bit,//64位长地址
    
 afAddrGroup = AddrGroup,//组播地址
    
 afAddrBroadcast = AddrBroadcast//广播地址
    
 } afAddrMode_t;

在Zigbee协议中,支持单点传输、组内多播以及广播传播等多种数据传输方式。其中,在单点传输模式下,数据仅限于单一目标设备的通信;而在多播模式下,则需传递给同一组成员设备;最后,在广播模式下,则会发送至整个网络中的所有节点。这些不同传输方式所需采用的地址模式参数将根据具体的传输需求进行设置。这一部分将在后续内容中进行详细阐述。

说明

间接传送(Indirect)
当应用程序无法确定数据包的目的设备时所采用的方式。将这一模式配置为AddrNotPresent状态,并且未指定目标地址。替代这一模式的是通过发送设备栈中的绑定表查找目标设备的过程。这种现象通常被称为源绑定机制。
当数据向下发送至栈内时,系统会从中查找并使用指定的目标地址进行处理。这样做的结果是将数据转换为一个标准的单点传送数据包(SUTP)。若在某个情况下发现多个可能的目标存在,则会向每一个可能的目标发送一份拷贝。

广播传送(broadcast)
当应用程序希望向网络中的所有设备发送数据包时, 使用这种模式是必要的。此时, 地址模式应设置为
AddrBroadcast. 允许的目标地址可从下述广播地址中选择:

NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——该设置会将数据包传播给网络上的全部运行中的设备,并特别包括那些处于低功耗模式(即已进入深度休眠状态)的设备。在这些特定情况下(即当设备处于低功耗模式时),数据包会被保留在其父节点直至其查询成功或出现超时情况(如NWK_INDIRECT_MSG_TIMEOUT参数在f8wConfig.cfg文件中定义)。

NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——数据包会被传送至所有处于待机状态但 yet to receive data 的 RXONWHENIDLE 设备(RXONWHENIDLE),换句话说,除掉那些处于睡眠状态的所有设备。

NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——发送给所有接入的路由器的数据包信息,并包含管理协调器。

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

复制代码
 aps_Group_t group;

    
 // Assign yourself to group 1
    
 group.ID = 0x0001;
    
 group.name[0] = 0; // This could be a human readable string
    
 aps_AddGroup( SAMPLEAPP_ENDPOINT, &group );//SAMPLEAPP_ENDPOINT:端点号,&group :地址

重要系统配置 (Important System Configurations)

全部评论 (0)

还没有任何评论哟~