ZigBee技术是物联网领域最常用的无线技术之一,如果我们要做基于ZigBee技术的物联网应用,最好对ZigBee协议栈有一个基本的了解。这篇文章对ZigBee协议栈做一个简单明了的介绍。
本文准备介绍的ZigBee协议栈是ZigBee2007,也是目前业界最常用的标准版本,对于ZigBee协议栈的演进历程,可以参加《5分钟了解Zigbee的前世今生》。
ZigBee协议栈可以分为四层:物理层(PHY)、媒体访问控制层(MAC)、网络层(NWK)及应用层(APL)。如图所示,粉色的部分是由IEEE标准中定义的,浅蓝色部分是由ZigBee联盟规定的,黄色部分是由设备厂商自行定义。
ZigBee协议栈图示
在ZigBee协议栈的图示中,我们还可以发现有很多圆角矩形,都带有SAP的字样。SAP的意思就是服务接入点(Service Access Point)的意思,是协议栈层与层之间的接口,协议栈都是分层结构的,接口就是层与层之间的沟通渠道。
协议栈相邻的上下层之间一般都有两个接口,也就是两个SAP。名字中带字母D的SAP是数据接口,负责层间数据传输;名字中带字母M的SAP是管理接口,供上层或协议栈的管理平面对该层进行控制,比如进行一些参数配置,或读取状态等。
ZigBee2007协议栈的物理层及MAC层都是IEEE802.5.14-2003标准中定义的。PHY层(物理层)规定了所使用的频段,以及所使用的编码、调制、扩频、调频等无线传输技术;有了物理层,就有了一个实现点到点之间的信号发射与接收的基础,没有物理层协议,设备间是根本没有办法通信的,有可能都不在一个频段上。
MAC层的主要作用规定了无线信道的访问控制机制,也就是规定各个设备按照什么规矩轮流使用信道;如果没有MAC层协议,节点一多,大家没有个规矩,就会发生信号冲突,谁都没法正常传输数据了。。
ZigBee协议栈在802.15.4协议基础上定义了网络层。网络层的主要作用是负责设备的连接和断开、在帧数据传递时采用的安全机制、路由发现和维护。简单说,就是保障设备之间的组网和网络节点间的数据传输。ZigBee技术支持多跳路由,可以实现星型拓扑、树型拓扑和网状拓扑等不同的网络拓扑结构。
PHY & MAC & NWK这三层协议,主要是为了上面的应用层服务的,在产品开发过程中,不需要深入涉及这三层协议的实现细节,应用层才是开发关注的部分。
ZigBee的应用层的内部又分了三个部分:包括应用框架、应用支持子层(APS)及ZigBee设备对象(ZDO)。应用框架中包含至少一个应用程序对象,也就是ZigBee设备的应用程序,是ZigBee产品开发人员所要实现的部分。
应用支持子层APS参考模型
除了接口,协议栈中还经常会碰到实体(Entity)的概念。所谓实体,就是在协议栈里面进行数据发送或接收的一个基本组成,可能是软件,也有可能是硬件,具体与协议的实现有关系。每一层协议都是由一个或多个实体组成的。
应用支持子层(APS)包括了数据实体(APSDE)与管理实体(APSME),作用就是向上层提供数据传输和管理配置的服务。应用支持子层隔离了应用框架与网络层,为应用程序的运行提供支撑。
APS与应用程序之间的数据接口是APSDE-SAP,最多可以支持240个应用程序对象,通过端点(EndPoint)来连接应用程序对象。每个端点都有一个编号,0号端点比较特殊,是连接ZDO的。应用程序的端点编号是从1号开始,一直到240号。一个ZigBee设备,比如无线开关、无线灯具之类的,一般会用到1~3个端点。
ZigBee设备对象(ZDO)可以认为是一个特殊的应用程序对象,满足了其他应用程序对象的一般性需求。
在一个ZigBee设备中,ZDO扮演着管家的作用,它管的事情横跨了好几层 。ZDO的任务包括:协议栈初始化,如APS和NWK层以及安全服务的初始化;还有应用程序要通过ZDO来执行设备发现、服务发现、安全管理、网络管理、绑定管理等管理工作。
上面说的ZigBee协议栈,是ZigBee联盟制定的协议规范。所有的ZigBee产业链内的厂商都要按照这个规范来开发产品,才能保证各自产品的兼容性,尤其是上游的芯片厂商。按照规范来做东西,才能让大家放心购买。
ZigBee芯片厂商一般也是开发工具链的提供者,同时也是ZigBee协议的开发者。ZigBee联盟只是告诉大家协议是怎么一回事,但并没有实现出来。ZigBee芯片厂商为了下游设备厂商更方便地开发产品,不仅要提供芯片,还要提供基于这个芯片的一整套ZigBee协议栈,还包括了协议栈的开发接口,也就是SDK。
比如TI公司的Z-Stack,就是ZigBee设备厂商早期使用最多的ZigBee协议栈。不过现在提供芯片和协议栈的公司也多了起来,除了TI,还有Freescale,Ember,Jennic等芯片厂商,每家芯片厂商都有自己独立实现的协议栈,设备厂商也有了更多的选择。
联系客服