第三讲:
zigbee术语
射频收发器:如cc2420
一个节点可以对应多个设备
一个设备包含多个端点
每个端点又有很多群集(输出群集、输入群集)
每个群集有一个或多个属性
属性 Attribute 是一个反映物理数量或状态的数据值,比如开关值(On/Off) ,温度值、百
分比等。
群集(簇) Cluster 是包含一个或多个属性(attribute)的群组。简单的说,群集就是属性的集合。
每个群集都被分配一个唯一的群集 ID 且每个群集最多有 65536 个属性
设备描述 Device Description 是指一个大型目标应用的一部分,包括一个或多个群集,并且
指定群集是输入还是输出。描述符有:节点描述符、电源描述符、简单描述符、端点描述符。
重点使用:简单描述符,端点描述符
描述符在c语言上的体现就是一个结构体,定义在应用层下的SampleApp.h下
端点
端点 EndPoint 是协议栈应用层的入口,也可以理解应用对象(Application Object)存在的
地方,它是为实现一个设备描述而定义的一组群集。每个 ZigBee 设备可以最多支持 240 这样
的端点, 这也意味着在每个设备上可以定义 240 个应用对象。 端点 0 被保留用于与 ZDO 接口,
这是每个 ZigBee 设备必须使用的端点,而端点 255 被保留用于广播,端点 241-254 则被保留用
于将来做扩展使用。
节点
节点 Node 也可以理解为一个容器,包含一组 ZigBee 设备,分享一个无线信道。每个节点
有且只有一个无线信道使用。
绑定
在 zigaee 协议中定义了一种特殊的操作, 叫做绑定(binding)操作。 它能够通过使用 ClusterID
为不同节点上的独立端点建立一个逻辑上的连接。
网络中的两个节点分别为 Z1 和 Z2,其中 Zl 节点中包含两个独立端点分别是
EP3 和 EP21,它们分别表示开关 1 和开关 2。Z2 节点中有 EP5、EP7、EP8、EPl7 四个端点分
别表示从 l 到 4 这四盏灯。在网络中,通过建立 ZigBee 绑定操作,可以将 EP3 和 EP5、EP7、
EP8 进行绑定,将 EP21 和 EPl7 进行绑定。这样开关 I 便可以同时控制电灯 l、2、3,开关 2
便可以控制电灯 4。利用绑定操作,还可以更改开关和电灯之间的绑定关系,从而形成不同
的控制关系。从这个例子,可以看出绑定操作能够使用户的应用变得更加方便灵活。
要实现绑定操作,端点必须向协调器发送绑定请求,协调器在有限的时间间隔内接收到两
个端点的绑定请求后, 便通过建立端点之间的绑定表在这两个不同的端点之间形成了一个逻辑
链路。因此,在绑定后的两个端点之间进行消息传送的过程属于消息的间接传送。其中一个端
点首先会将信息发送到 ZigBee 协调器中,ZigBee 协调器在接收到消息后会通过查找绑定表,
将消息发送到与这个端点相绑定的所有端点中,从而实现了绑定端点之间的通信。
路由
路由对与应用层来说是完全透明的。应用程序只需简单的向下发送去往任何设备的数据到
栈中,栈会负责寻找路径。这种方法,应用程序不知道操作是在一个多跳的网络当中的。
路由还能够自愈 ZigBee 网络, 如果某个无线连接断开了, 路由功能又能自动寻找一条新的
路径避开那个断开的网络连接。这就极大的提高了网络的可靠性,同时也是 ZigBee 网络的一
个关键特性。
.2 路由协议 (Routing Protocol)
ZigBee 执行基于用于 AODV 专用网络的路由协议。简化后用于传感器网络。ZigBee 路由
协议有助于网络环境有能力支持移动节点,连接失败和数据包丢失。
当路由器从他自身的应用程序或者别的设备那里收到一个单点发送的数据包,则网络层
(NWK Layer)根据一下程序将它继续传递下去。如果目标节点是它相邻路由器中的一个,则数
据包直接被传送给目标设备。否则,路由器将要检索它的路由表中与所要传送的数据包的目标
地址相符合的记录。如果存在与目标地址相符合的活动路由记录,则数据包将被发送到存储在
记录中的下一级地址中去。如果没有发现任何相关的路由记录,则路由器发起路径寻找,数据
包存储在缓冲区中知道路径寻找结束。
ZigBee 终端节点不执行任何路由功能。终端节点要向任何一个设备传送数据包,它只需简
单的将数据向上发送给它的父亲设备,由它的父亲设备以它自己的名义执行路由。同样的,任
何一个设备要给终端节点发送数据, 发起路由寻找, 终端节的的父亲节点都已它的名义来回应。
注意 ZigBee 地址分配方案使得对于任何一个目标设备,根据它的地址都可以得到一条路径。
在 Z-Stack 中,如果万一正常的路径寻找过程不能启动的话(通常由于缺少路由表空间),那么
Z-Stack 拥有自动回退机制。
此外,在 Z-Stack 中,执行的路由已经优化了路由表记录。通常,每一个目标设备都需要
一条路由表记录。但是,通过把一定父亲节点记录与其子所有子结点的记录合并,这样既可以
优化路径也可以不丧失任何功能。
ZigBee 路由器,包括协调器执行下面的路由函数:(i)路径发现和选择;(ii)路径保持维护;
(iii)路径期满。
路径的发现和选择 (Route Discovery and Selection)
路径发现是网络设备凭借网络相互协作发现和建立路径的一个过程。路由发现可以由任意
一个路由设备发起,并且对于某个特定的目标设备一直执行。路径发现机制寻找源地址和目标
地址之间的所有路径,并且试图选择可能的最好的路径。
路径选择就是选择出可能的最小成本的路径。每一个结点通常持有跟它所有邻接点的“连
接成本(link costs)” 。通常,连接成本的典型函数是接收到的信号的强度。沿着路径,求出所有
连接的连接成本总和,便可以得到整个路径的“路径成本” 。路由算法试图寻找到拥有最小路
径成本的路径。
路径通过一系列的请求和回复数据包被发现。源设备通过向它的所有邻接节点广播一个路
由请求数据包,来请求一个目标地址的路径。当一个节点接收到 RREQ 数据包,它依次转发
RREQ 数据包。但是在转发之前,它要加上最新的连接成本,然后更新 RREQ 数据包中的成本
值。这样,沿着所有它通过的连接,RREQ 数据包携带着连接成本的总和。这个过程一直持续
到 RREQ 数据包到达目标设备。通过不同的路由器,许多 RREQ 副本都将到达目标设备。目
标设备选择最好的RREQ数据包, 然后发回一个路径答复数据包(a Route Reply)RREP给源设备。
RREP 数据包是一个单点发送数据包,它沿着中间节点的相反路径传送直到它到达原来发送请
求的节点为止。
一旦一条路径被创建,数据包就可以发送了。当一个结点与它的下一级相邻节点失去了连
接(当它发送数据时,没有收到 MAC ACK),该节点向所有等待接收它的 RREQ 数据包的节点
发送一个 RERR 数据包,将它的路径设为无效。各个结点根据收到的数据包 RREQ、RREP 或
者 RERR 来更新它的路由表。
路径保持维护
网状网提供路径维护和网络自愈功能。中间节点沿着连接跟踪传送失败,如果一个连接被
认定是坏链,那么上游节点将针对所有使用这条连接的路径启动路径修复。节点发起重新发现
直到下一次数据包到达该节点,标志路径修复完成。如果不能够启动路径发现或者由于某种原
因失败了,节点则向数据包的源节点发送一个路径错误包(RERR),它将负责启动新路径的发
现。这两种方法,路径都自动重建。
路径期满 (Route expiry)
路由表为已经建立连接路径的节点维护路径记录。如果在一定的时间周期内,没有数据通
过沿着这条路径发送,这条路径将被表示为期满。期满的路径一直保留到它所占用的空间要被
使用为止。这样,路径在绝对不使用之前不会被删除掉的。在配臵文件 f8wConfig.cfg 文件中配
臵自动路径期满时间。设臵 ROUTE_EXPIRY_TIME 为期满时间,单位为秒。如果设臵为 0,
则表示关闭自动期满功能。
ZigBee 原语
ZigBee 协议按照开放系统互联的 7 层模型将协议分成了一系列的层结构,各层之间通过相
应的服务访问点来提供服务。 这样使得处于协议中的不同层能够根据各自的功能进行独立的运
作,从而使整个协议栈的结构变得清晰明朗。另一方面,由于 ZigBee 协议栈是一个有机的整
体,任何 ZigBee 设备要能够正确无误的工作,就要求协议栈各层之间共同协作。因此,层与
层之问的信息交互就显得十分重要。 ZigBee 协议为了实现层与层之间的关联, 采用了称为服务
“原语"的操作
服务由 N 用户和 N 层之问信息流的描述来指定。这个信息流由离散瞬时事件构成,以提
供服务的特征。每个事件由服务原语组成,它将在一个用户的某一
层,通过与该层相关联的层服务访问 A(SAP)与建立对等连接的用户的相同层之
问传送。层与层之间的原语一般情况下可以分为 4 种类型:
◆ 请求:请求原语从 NI 用户发送到它的 N 层,请求发起一个服务。
◆ 指示:指示原语从 N 层到 N2 用户,指示一个对 N2 用户有重要意义外部 N
层事件。这个事件可能与一个远程的服务请求有关,或者由内部事件产生。
◆ 响应:响应原语由 N2 用户向它的 N 层传递,用来响应上一个由指示原语引
起的过程。
◆ 确认:确认原语由 N 层向 Nl 用户传递,用来传递与前面一个或多个服务请
求相关的执行结果。