线传感器网络常用的通信协议(上)通信协议是无线传感器网络实现通信的基础,无线传感器网络通信协议的设计目的是为了使具体的无线传感器网络通信机制与上层应用分离,为传感器节点提供自组织的无线网络通信功能。
与传统无线网络相比,无线传感器网络的应用环境有诸多不同。
无线传感器网络是能量受限的网络,需要使用低功率、短距离的无线通信技术,以节省能源消耗,延长网络寿命。
无线传感器网络的通信协议可以采用自定义的通信协议,也可以采用已经形成标准的通信协议,如ZigBee、蓝牙、Wi-Fi,这三种无线通信技术标准都是短距离的无线通信,它们在各方面性能之间有较大差异,ZigBee、蓝牙、Wi-Fi.之间的比较见表5-6。
蓝牙技术所能通信的距离非常短,限制了其应用范围;Wi-Fi协议栈所占内存很大、功耗高使其在很多场合不实用。
究竟选用什么通信标准,还需要根据系统需求来定。
由表5-6得知,ZigBee是比较适合无线传感器网络应用的,简单阐述自定义通信协议并对ZigBee协议栈进行分析。
1. 自定义通信协议自定义的通信协议可以采用分层设计,参考OSI参考模型的结构,可以提高系统的灵活性,在保持各层协议之间接口不变的情况下,各层协议可以独立进行开发,并尝试不同的算法。
早期提出的一个协议栈包括物理层、数据链路层、网络层、传输层和应用层,另外还有能量管理平台、移动管理平台和任务管理平台,如图5-23所示。
如图524所示的网络协议栈对原始模型进行了改进,加入了定位和时间同步子层,并用倒L型描述这两个子层。
另外还增加了QoS管理及网络管理等功能。
2 ZigBee协议栈目前已经有多家公司推出支持ZigBee的无线收发芯片、ZigBee开发套件及ZigBee协议栈等,如Microchip的PICDEMZ Demo Kit及其ZigBee协议栈、飞思卡尔的MC13191/92开发者初级套件及其协议栈、Figure8的Z-Stack ZigBee 协议栈等,国内也涌现出了不少专门从事ZigBee开发的公司。
在此介绍Microchip的ZigBeel.0版协议栈。
1.Microchip ZigBee协议栈简介Microchip的ZigBee1.0版协议栈设计得可以随着ZigBee的发展而发展,它具有以下特点。
①基于ZigBee规范的0.8版本。
②使用Chipcon CC2420 RF收发器,支持2.4GHz频带。
③支持简化功能设备(Reduced Device,RFD)和协调器。
④在协调器节点中实现对邻接表和绑定表的非易失性存储。
⑤支持非时隙的星型网络。
⑥可以在大多数PICl8系列单片机之间进行移植。
⑦协同多任务处理架构。
⑧不依赖于RTOS和应用。
⑨支持Microchip MPLAB?C18和Hi-Tech PICC-18TM C编译器。
⑩易于添加或删除特定模块的模块化设计。
当然,该协议栈也不是完全支持ZigBee标准中的所有规范,它有以下限制。
①不完全符合ZigBee协议。
②不支持群集和点对点网络。
③无安全和访问控制功能。
④无路由器功能。
⑤不提供标准的配置文件,但是包含创建配置文件所必需的所有原始函数。
⑥.不支持一对多绑定。
2.Microchip ZigBee协议栈硬件支持Microchip协议栈设计为仅在Microchip PIC18F系列单片机上运行,它使用内部闪存程序存储器来存储可配置的MAC地址、网络表和绑定表,必须使用可自编程的闪存存储器单片机。
但是,可以修改非易失性存储器(NVM)程序来支持任何其他类型的NVM,而不使用可自编程的单片机。
该协议栈针对的硬件平台结构如图5-25所示,它拥有一片带SPI接口的PICl8F单片机、一个带有所需外部元件的无线收发器、一根天线,可以是PCB上的引线形成的天线或单极天线。
单片机通过SPI总线和一些离散控制信号与无线收发器相连,无线收发器采用Chipcon公司的CC2420。
单片机实现IEEE 802.15.4的媒体访问层和ZigBee协议层,另外还有一些特定的控制逻辑。
要掌握软件的实现,首先要知道硬件资源的分配,单片机与无线收发器之间的引脚对应关系见表5-7。
HCDEM Z演示工具包设计为用于演示Microchip ZigBee协议解决方案。
PICDEM Z工具包内含两个ZigBee节点,每个节点由两块板组成:一块母板和一块RF卡。
PICDEMZ母板设计为支持不同类型的无线收发器。
(1)PICDEM Z母板配置有一个单片机插槽(提供40引脚和28脚DIP插槽供用户插入所需Microchip PIC I 8单片机)、温度传感器TC77、两个用户自定义的LED、两个用户自定义按钮、Reset按钮、RJ-11模块化接头、RS-232接头、RF卡接头、实验布线区、板上电源、测量电路和节点II)等,其实物图如图5-26所示。
(2)PICDEM Z无线射频卡PICDEM Z母板设计为支持不同厂家无线收发器的无线射频卡。
PICDEM Z 2.4GHz无线射频卡用于演示Microchip针对ZigBee协议在2.4GHz频带的解决方案。
该卡使用Chipcon的CC2420无线收发器,带板上的PCB天线,其实物图如图5-27所示3.Microchip ZigBee协议栈分析(1)协议栈实现工具Microchip协议栈采用C语言编写,使用Microchip C 18或Hi-Tech PICC-18编译器编译,使用在MPLAB?IDE集成开发环境进行应用程序的开发。
源文件会自动根据所使用的编译器进行必要的更改。
(2)协议栈组成Microchip协议栈由多个源文件组成,所有源文件均位于Source目录下的子目录中,目录结构见表5-8。
DemoCoordApp的应用程序项目文件见表5-9,该演示应用程序的功能如下:·与PICDEM Z演示板配合使用;·使用RS-232终端驱动菜单命令来配置多个选项;·通过终端菜单命令对EF收发器的性能进行测试的功能;·创建非时隙的星型网络;·使用D2作为指示发送/接收操作的LED;·演示自定义绑定接口;·自动支持MPLAB C18和 Hi-Tech PICC-18编译器。
DemoRFDApp应用程序项目文件见表5-10,该演示应用程序的功能如下:·与PICDEM Z演示板一起使用;·使用系统休眠和看门狗功能演示低功耗功能;·使用RS-232终端驱动菜单命令来配置多个选项;·通过终端菜单命令对RF收发器的性能进行测试的功能;·在一个节点上可由用户配置的简单远程控制开关和LED应用程序;·使用D2作为指示发送接收操作的LED;·演示自定义绑定接口;·自动支持MPLAB C18和Hi-Tech PICC-18编译器。
(3)协议栈层次ZigBee规范定义的ZigBee协议栈的结构如图5-28所示,分为物理层、媒体访问层、网络层、应用层(包括应用支持子层、ZigBee设备对象及应用框架)和安全服务提供。
Microchip ZigBee协议栈根据ZigBee规范的定义将协议栈分为多个层,每个层为紧接着的上一层定义一组容易理解的函数,顶层总是通过定义完善的API和紧接着的下一层进行交互。
特定层的C头文件(如zAPS.h)定义该层所支持的所有API,其架构如图5-29所示。
实现每个层的代码位于一个独立的源文件中,而服务和应用程序接El(Application ProgramInterface,API)则在头文件中定义。
1.0版的协议栈不实现安全层。
Microchip协议栈由很多模块组成。
典型的应用程序总是与应用层(APL)和应用支持子层(APS)接口。
但是,如果需要的话,也可以简单地将应用程序与其他模块接口并根据需要对它们进行自定义。
1)应用层(Application Layer,APL)应用层模块提供高级协议栈管理功能。
用户应用程序使用此模块来管理协议栈。
zAPL.c文件实现了应用层逻辑,而zAPL.h文件定义应用层模块支持的API。
用户应用程序将包含zAPL.h头文件来访问其API。
2)应用支持子层(Application Support sublayer,APS)应用支持子层主要提供ZigBee端点接口。
应用程序将使用该层打开或关闭一个或多个端点并且获取或发送数据。
它还为键值对(Key Pair,KVP)和报文(MSG)数据传输提供了原语。
应用支持子层同样也有绑定表,绑定表提供了端点和网络中两个节点间的群集ID对之间的逻辑链路。
当首次对协调器编程时,绑定表为空。
主应用程序必须调用正确的绑定API来创建新的绑定项。
参阅DemoCoordApp和DemoRFDApp演示程序作为工作示例。
Microchip应用支持子层把绑定表存储到闪存存储器内。
闪存编程程序位于zNVM.c文件中。
如果需要,可以用您的特定NVM(非易失性存储器)程序代替NVM程序以支持不同类型的NVM。
应用支持子层还有一个“间接发送缓冲器”RAM,用来存储间接帧,直到目标接收者请求这些帧为止。
根据ZigBee规范,在星型网络中,RFD设备总会将这些数据帧转发到协调器中。
RFD设备可能不知道该数据帧的目标接收者。
数据帧的实际接收者由绑定表项决定。
协调器一旦接收到数据帧,它就会查找绑定表以确定目标接收者。
如果该数据帧有接收者,就会将该帧存储在间接发送帧缓冲器里,直到目标接收者明确请求该帧为止。
根据请求的频率,协调器必须将数据帧保存在间接发送帧缓冲器内。
zigbee.def文件中定义的MAC_MAX_DATA_REQ_PERIOD编译时间选项定义了确切的请求时间。
注意,节点请求数据时间越长,数据包需要保存在间接发送缓冲器里的时间也越长。
数据请求时间越长,需要的间接缓冲空间越大。
间接帧缓冲器包含一个设计时分配的、固定大小的RAM堆。
zigbee.def文件中MAX—HEAP_SIZE编译时间选项定义了缓冲器的大小。
可通过动态分配间接发送帧缓冲器的RAM来添加新的数据帧。
动态存储管理可充分利用间接发送帧缓冲空间,动态存储管理程序位于SRAlloc.c文件中。
3)网络层(Network Layer,NWK)网络层负责建立和维护网络连接,它独立处理传入数据请求、关联、解除关联和孤立通知请求,典型的应用不需要直接调用网络层。
4)ZigBee设备对象(ZigBee Device Object,ZDO)ZigBee设备对象打开和处理EP O接口,负责接收和处理远程设备的不同请求。
不同于其他的端点,EP O总是在启动时就被打开并假设绑定到任何发往EP O的输入数据帧。