引言
工业领域在现代化的进程中通过引入各种先进技术,实现了劳动生产率的提高和生产成本的下降。在这些技术中,最典型的就是数字化技术和现代通信技术。在现代工业数字化的基础上,工业生产监控早已突破了单回路控制与监视的功能。随着计算机软硬件技术、网络技术和工业综合自动化系统整合水平的不断发展,对数据接口的开放性、数据传输的实时性、数据连接的安全性等方面提出了更高的要求。许多大型企业其生产地域分散,业务分工复杂,往往设有一个或者多个控制中心,以及大量的现场数据采集点。这些采集点因分散而需要通过一定的通信手段来实现与中心控制单元间的数据交互,进而实现生产过程的自动化。由于传统有线网络本身的局限性,许多特殊环境下的网络覆盖和网络支持仍然是个难题。比如在某些工业现场,一些工业环境禁止或使用电缆,而在其他一些工业环境要求完全把电缆屏蔽起来以高度防止来自大多数工业设施中的机器或其它无线电控制设备的干扰,更有一些高速旋转的设备根本无法通过电缆来传输数据信息。而无线广域网、无线局域网和无个人网技术却能有效地提供对这些问题的解决方案。在现有的无线网络技术发展条件下,无线标准增加了灵活性,并降低了集成专利无线通信的风险。在工控场合的应用条件下,短距离的无线传输尤其受到瞩目。在最近的几年中,人们不断探索,形成了当今令人眼花缭乱的无线通信协议和产品。最流行的短距离无线数据通信的标准有蓝牙( Bluetooth )、Wi-Fi(IEEE802.11)、IrDA 以及极具发展潜力、已被众多业界认可的ZigBee(IEEE802.15.4)等。
1 几种无线传输技术及其比较
1 .1 蓝牙(BlueTooth)
蓝牙(BlueTooth)最早是爱立信在1994 年开始研究的一种能使手机与其附件(如耳机)之间互相通信的无线模块。1998 年,爱立信、诺基亚、IBM 等公司共同推出了蓝牙技术,主要用于通信和信息设备的无线连接。
它的工作频率为2.4GHz,有效范围大约在10m 半径内。Bluetooth 列入了IEEE802.15.1,规定了包括PHY、MAC、网络和应用层等集成协议栈。为对语音和特定网络提供支持,需要协议栈提供250kB 系统开销,从而增加了系统成本和集成复杂性。另外,Bluetooth 对每个“Piconet”(微微网)有只能配置7 个节点的,制约了其在大型传感器网络开发中的应用。
1 .2 Wi-Fi(IEEE802 .11)
Wi-Fi(Wireless Fidelity,无线高保真)也是一种无线通信协议。IEEE802 . 11 的最初规范是在1997 年提出的。主要目的是提供WLAN 接入,也是目前WLAN 的主要技术标准,其工作频率也是2.4GHz。目前,IEEE802 .11 标准还没有被工业界广泛接受。
IEEE802 .11 流行的几个版本包括“a”(在5.8GHz 波段带宽为54MBps)、“b”(波段2.4GHz 带宽为11MBps)、“g”(波段2.4GHz 带宽为22MBps)。这种复杂性为用户选择标准化无线平台增加了困难。Wi-Fi 规定了协议的物理(PHY)层和媒体接入控制(MAC)层,并依赖TCP/ IP 作为网络层。由于其优异的带宽是以大的功耗为代价等,因此大多数便携Wi-Fi 装置都需要常规充电。这些特点了它在工业场合的推广和应用。
1 .3 IrDA
红外线数据协会IrDA(Infrared DataAssociation)成立于1993 年。IrDA 是一种利用红外线进行点对点通信的技术。IrDA 标准的无线设备传输速率已从115.2kbps 逐步发展到4Mbps、16Mbps。目前,支持它的软硬件技术都很成熟,在小型移动设备(如PDA、手机)上被广泛使用。它具有移动通信所需的体积小、功耗低、连接方便、简单易用成本低廉的特点。IrDA 用于工业网络上的最大问题在于只能在2 台设备之间连接,并且存在有视距角度等问题。
1 .4 ZigBee
ZigBee(IEEE802.15.4)技术是最近发展起来的一种短距离无线通信技术,功耗低,被业界认为是最有可能应用在工控场合的无线方式。它同样使用2.4GHz波段,采用跳频技术和扩频技术。另外,它可与254 个节点联网。节点可以包括仪器和家庭自动化应用设备。它本身的特点使得其在工业监控、传感器网络、家庭监控、安全系统等领域有很大的发展空间。
几种常用无线传输方式的主要性能比较见表1。
2 ZigBee 的技术内容及特点
ZigBee 是最新确定的商业名称,在以前曾被发起者以“HomeRF lite”、“Firefly”和“RF-EasyLink”等命名。
为了满足类似于传感器的小型、低成本设备无线联网的要求,2000 年12 月IEEE 成立了IEEE802.15.4 工作组,致力于定义一种供廉价的固定、便携或移动设备使用,且复杂度、成本和功耗均很低的低速率无线连接技术。
ZigBee 联盟成立于2001 年8 月。到目前为止,除了Invensys、三菱电子、摩托罗拉、三星和飞利浦等国际知名的大公司外,该联盟大约已有百余家成员企业,并在迅速发展壮大。其中涵盖了半导体生产商、IP 服务提供商、消费类电子厂商及OEM 商等,例如Honeywell、Eaton 和Invensys MeteringSystems 等工业控制和家用自动化公司,甚至还有像Mattel 之类的玩具公司。所有这些公司都参加了负责开发ZigBee 物理和媒体控制层技术标准的IEEE802.15.4 工作组。在工业、农业、车载电子系统、家用网络、医疗传感器和伺服执行机构等领域,对于无线网络的要求与民用场合有很大区别。它通常对数据吞吐量的要求很低,功率消耗要低。此外,简单方便、可以随意使用的无线装置大量涌现,需要布置大量的无线接入点,而低廉的价格将起着关键作用。所以ZigBee 标准要解决的问题是设计一个维持最小流量的通信链路和低复杂度的无线收发信机。要考虑的核心问题是低功耗和低价格的设计,这就要求该标准应提供低带宽、低数据传输率的应用。
2 .1 ZigBee 的特点
① 低功耗:由于ZigBee 的传输速率低,发射功率仅为1mW,而且采用了休眠模式,功耗低,因此ZigBee设备非常省电。据估算,ZigBee 设备仅靠两节5 号电池就可以维持长达6 个月到2 年左右的使用时间,这是其它无线设备望尘莫及的。
② 成本低:ZigBee 模块的初始成本在6 美元左右,估计很快就能降到1.5 ~ 2.5 美元,并且ZigBee 协议是免专利费的。低成本对于ZigBee 也是一个关键的因素。
③ 时延短:通信时延和从休眠状态激活的时延都非常短,典型的搜索设备时延为30ms,休眠激活的时延是15ms,活动设备信道接入的时延为15ms。因此ZigBee 技术适用于对时延要求苛刻的无线控制(如工业控制场合等)应用。
④ 网络容量大:一个星型结构的ZigBee 网络最多可以容纳254 个从设备和一个主设备,而且网络组成灵活。
⑤ 可靠:采取了碰撞避免策略,同时为需要固定带宽的通信业务预留了专用时隙,避开了发送数据的竞争和冲突。MAC 层采用了完全确认的数据传输模式,每个发送的数据包都必须等待接收方的确认信息。如果传输过程中出现问题可以进行重发。
⑥ 安全:ZigBee 提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证,采用了AES - 128 的加密算法,各个应用可以灵活确定其安全属性。
2 .2 ZigBee 与IEEE802.15.4 的联系 人们常会把ZigBee 和IEEE802.15.4 等同起来,其实两者之间还是有所区别的:
① ZigBee 完整、充分地利用了IEEE802.15.4 定义的功能强大的物理特性的优点;
② ZigBee 增加了逻辑网络和应用软件;
③ ZigBee 基于IEEE802.15.4 射频标准,同时Zig-Bee 联盟通过与IEEE 紧密工作来确保一个集成的完整的市场解决方案;
④ 802.15.4 工作组主要负责制定物理层(PHY)和媒体访问控制(MAC)层标准,而ZigBee 负责网络层和应用层的开发。
图1 示意了ZigBee 的结构和分工。
2 .3 802.15.4 协议架构及其技术特点
IEEE802.15.4 满足国际标准组织(ISO)开放系统互连(OSI)参考模式,定义了单一的MAC 层和多样的物理层。ZigBee 联盟制定了MAC 层以上协议,其协议套件由高层应用规范、应用汇聚层、网络层、数据链路层和物理层组成。
2 .3 .1 物理层
IEEE802.15.4 提供了图2 所示的两种物理层的选择(868 / 915MHz 和2.4GHz),物理层与MAC 层的协作扩大了网络应用的范畴。这两种物理层都采用直接序列扩频(DSSS)技术,降低了数字集成电路的成本,并且都使用相同的帧结构,以便低作业周期、低功耗地运作。
图2 两种不同的物理层
2.4G 物理层的数据传输率为250kbps,868 / 915MHz物理层的数据传输率分别是20kbps、40kbps。2.4GHz物理层的较高速率主要归因于基于DSSS 方法(16 个状态)的准正交调制技术。来自物理层收敛协议数据单元(PPDU)的二进制数据被依次(按字节从低到高)组成4 位二进制数据符号,每种数据符号(对应16 状态组中的一组)被映射成32 位伪噪音码片,以便传输。然后采用最小移位键控方式MSKI 对这个连续的伪噪音码片序列进行调制,即采用半正弦脉冲波形的偏移四相移相键控(O - QPSK)方式调制。868 / 915MHz 物理层使用简单DSSS 方法,每个PPDU 数据传输位被最大长为15 的码片序列(m- 序列)所扩展。不同的数据传输率适用于不同的场合,如868 / 915MHz 物理层的低速率换取了较好的灵敏度( - 85dbm/ 2.4G,- 92dbm/ 868,915MHz)和较大的覆盖面积,从而减少了覆盖给定物理区域所需的节点数;而2.4G 物理层的较高速率适用于较高的数据吞吐量、低延时或低作业周期的场合。
2 .3 .2 介质访问层
ZigBeeMAC 层的设计需要考虑到降低成本、容易实现、可靠的数据传输、短距离操作及非常低的功耗等要求,为此采用了如下所示的简单且灵活的协议:
① 采用IEEE 标准 - bit 和16 - bit 短地址;
② 基本网络容量可以达到254 节点;
③ 可以配置使用大于65,000(216)节点的本地简单网络,而且开销不大;
④ 网络协调器、全功能设备(FFD)和简化功能设备(RFD)等3 种指定设备;
⑤ 简化帧结构;
⑥ 可靠的数据传输;
⑦ 联合/ 分离;
⑧ AES - 128 安全机制;
⑨ CSMA - CA 通道;
⑩ 可选的使用信标的超级帧结构。
IEEE802.15.4MAC 子层定义了广播帧、数据帧、确认帧和MAC 命令帧等4 种帧类型。只有广播帧和数据帧包含了高层控制命令或者数据,确认帧和MAC 命令帧则用于ZigBee 设备间MAC 子层功能实体间控制信息的收发。广播帧和确认帧不需要接收方的确认,而数据帧和MAC 命令帧的帧头包含帧控制域,指示收到的帧是否需要确认,如果需要确认,并且已经通过了CRC 校验,接收方将立即发送确认帧。若发送方在一定时间内收不到确认帧,将自动重传该帧。这就是MAC 子层可靠传输的基本过程。MAC 层的通用帧格式如图3 所示。
2 .3 .3 网络层
网络层包括逻辑链路控制子层。802.2 标准定义了LLC,并且通用于诸如802.3、802.11 及802.15.1 等ZigBee 无线通信技术及其应用探讨周怡窹,等802 系列标准中,而MAC 子层与硬件联系较为紧密,并随不同物理层的实现而变化。网络层负责拓扑结构的建立和维护、命名和绑定服务,它们协同完成寻址、路由及安全这些不可或缺的任务。
IEEE802.15.4 标准草案支持多种网络拓扑结构,包括图4 所示的新型网状网络(Mesh)。计算机外围设备等要求低延迟等待接入的应用一般采用星型网络结构,而其它一些应用,如周边安全等可能要求大面积网状网络的覆盖。多址的形式包括IEEE 标准 位和短地址8 位。
3 结束语
ZigBee 是一个针对传感器网络、建筑自动化等应用的短距离无线技术规范。ZigBee 是近距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术,主要适用于自动控制和远程控制领域,是为满足小型、廉价设备的无线联网和控制而制定的。它按高度省电要求设计,因此低功耗和较低数据传输率意味着不会和Wi - Fi 等其它无线技术竞争,而是作为传感路网络等应用的性价比较高的方案。业界对它在上述领域的应用进展充满信心。
1、前言
ZigBee(IEEE802.15.4)是一种低速率(2~200kbps)WPAN IEEE标准,传输速率只有100kbps;同时,它又具有功耗低、架构简单、成本低的特点,满足多种无线要求,尤其在工控(监视器、传感器和自动控制设备)等领域更是显示出其独有的优势。
随着射频技术、集成电路技术的发展,无线通信功能的实现越来越容易,数据传输速度也越来越快。本文在分析了ZigBee网络特点的基础上,对ZigBee通信协议栈实现中的内存,时钟管理等关键技术进行了研究,并提出了相应的实现方案。
2、ZigBee技术及其优势
ZigBee技术是一种近距离、低复杂度、低功耗、低数据速率低成本的双向无线通信技术,主要适合于自动控制和远程控制领域,可以嵌入各种设备中,同时支持地理定位功能。
2.1 ZigBee协议栈结构
图1 ZigBee的体系结构
ZigBee Protocol Stack体系结构如图1所示,它主要有5层体系组成。由ZigBee联盟与IEEE 802. 15.4的任务小组来共同担任标准的制定。其中物理层、MAC层标准主要由IEEE802. 15. 4的任务小组完成.而数据链路接层,以及传输过程中的网络层、还有与用户的接口是由ZigBee联盟主导。
在这个通信协议层次中,IEEE802.15.4/ZigBee各层协议的功能如下:
◆ 物理层。IEEE802.15.4运行在2.4 GHz ISM频段。采用直接序列扩频DSSS(Direct Sequence SpreadSpectrum)调制方式,以降低数字集成电路的成本,并且都使用相同的包结构,以便低作业周期、低功耗地运作。
◆ MAC层。负责处理所有的物理无线信道访问,并产生网络信号和同步信号,支持PAN连接和分离,提供两个对等MAC实体之间可靠的链路等。
◆ 网络接口层。负责处理ZigBee网络路由,实现网络地址和MAC地址的相互转换。
◆ 应用层。为用户应用进程间数据通信提供的接口。
发送时,ZIGBEE应用进程在调用应用层服务时,应该提供所有服务所需的参数;然后由应用层服务将数据经过编码后,传给网络接口层对象,调用网络层数据传输服务把数据发送出去。
接收时,应用层收到来自通信端口的数据后,上传给应用层服务;由应用层服务根据服务报文中的目的应用进程标识ID,将接收到的数据传送到应用层中相应的用户应用进程,由用户应用进程对相应的参量进行更新和进一步的处理。
2.2 Zigbee技术的主要优点
1) 省电。由于工作周期很短、收发信息功耗较低、并且采用了休眠模式, Zigbee技术可以确保2节五号电池支持长达6个月到2年左右的使用时间,当然不同的应用功耗是不同的。
2) 可靠。采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突.MAC层采用了完全确认的数据传输机制,每个发送的数据包都必须等待接收方的确认信息。
3) 成本低。模块的初始成本估计在6美元左右,很快就能降到1. 5美元到2. 5美元之间,且Zigbee协议是免专利费的。
4) 时延短。针对时延敏感的应用做了优化,通信时延和从休眠状态激活的时延都非常短,设备搜索时延典型值为30 ms,休眠激活时延典型值是15 ms,活动设备信道接入时延为15 ms。
5) 网络容量大。一个ZigBee网络可以容纳最多254个从设备和一个主设备,一个区域内可以同时存在最多100个ZigBee网络。
6) 安全。ZigBee提供了数据完整性检查和鉴权功能,加密算法采用AES-128,同时各个应用可以灵活确定其安全属性。
3、ZIGBEE协议中的内存管理
嵌入式系统软件设计中采取的内存管理方案有两种――静态分配和动态分配。一般来说,嵌入式系统总是两种方案的组合,纯粹的静态分配一般只使用在不计成本来保证严格实时性的场合,而且静态分配容易使系统失去灵活性。考虑到ZigBee协议栈主要应用于低速率低传输量的网络设备中,所以我们在ZigBee协议栈设计中主要采用动态内存管理方式。动态内存管理机制在嵌入式软件设计是难点,也是直接关系到整个系统性能的关键,它必须满足以下几个特性:
快速性:为保证实时性,要求简单,快速地分配内存,有时候不需要过于复杂和完善。
可靠性:内存分配地请求必须得到满足,内存分配失败可能带来灾难性的的后果。
高效性:在嵌入式系统中,内存资源有限,所以必须高效的利用系统中有限的内存资源。
在ZigBee协议栈设计中,针对网络部分和非网络部分的内存需求,我们把整个系统内存分成报文缓冲区和通用缓冲区两个不同的区域。先从系统申请固定大小的静态内存做为报文缓冲区和通用缓冲区,在每块内存区上定义自身的内存分配和回收算法,通过这种设计,能够确保网络系统不使用系统全部可用内存,应用程序也不会使用网络已用内存,从而实现了内存区域隔离,也防止了协议栈耗尽所有系统内存,提高了系统的稳定性和可靠性。
3.1 报文缓冲区
ZigBee协议中用户数据从本地嵌入式设备传输到远程设备的过程中,要经过各层协议,对消息的封装,去封装和拷贝操作几乎是不可避免的。而通常所采用的用一段连续的内存区来存储,传递数据的做法会有一下的缺陷:
(1)当从上层向下层传递数据时,下层协议需要对数据进行封装,而上层在申请内存时不会考虑到下层的需要。这样就会导致下层协议处理时需要重新申请内存并进行内存拷贝,从而影响程序的效率。
(2)当从下层向上层传递数据时,下层协议专有的数据结构赢得对上层协议不可见。因此也需要重新申请内存进行拷贝。
(3)随着数据的逐层处理,其内容可能有所增删,而连续内存很难处理这样动态的数据增删。
因此,必须要有一种能适应数据动态增删,而在逻辑上又呈现连续性的数据结构,以满足各层之间的数据传递,而不是进行内存拷贝。因此在ZigBee协议栈设计中采取的报文内存管理方案必须满足以下要求:
(1)适合存放不同长度的数据。
(2)方便地操作变长缓存。
(3)尽量减少为完成这些操作所做的数据拷贝。
综合考虑系统效率和ZigBee网络报文的特点,在ZigBee协议栈设计中,我们设计的每个缓冲块的长度固定,大小以满足ZigBee网络中的大多数报文的长度为标准,这里我们设置每个缓冲块的长度为128字节,大于这个长度的报文,就用多个缓冲块形成的缓冲链来满足。
ZIGBEE_BUFFER类型的缓冲区是报文缓冲区,其内部结构如图2所示,该结构包括两个指针,两个长度域,其中next 域指针指向下一个ZIGBEE_BUFFER的缓冲块,pdata域指向ZIGBEE_BUFFER中的数据起始位,tot_len域包括整个数据链的数据长度,len域包含该缓冲块中的数据长度。ZIGBEE_BUFFER整个结构的大小取决域所使用的处理器体系结构中一个指针的大小及可能的最小alignment的大小。在带有32位指针和4个字节alignment的体系结构,整个的大小为16字节。
图2 ZIGBEE_BUFFER报文缓冲区
一个ZIGBEE_BUFFER链,如图3所示:
图3 ZIGBEE_BUFFER链结构
缓冲区的操作函数:
void buf_init( void );
zigbee_buf_t * buf_alloc( void );
zigbee_buf_t * buf_new(u16_t tot_len);
void buf_delete(zigbee_buf_t *buffer);
zigbee_buf_t * buf_adjust(zigbee_buf_t *buffer, s16_t flen, s16_t blen);
void buf_read(zigbee_buf_t *buffer, u8_t *pdata, u16_t *len);
void buf_write(zigbee_buf_t *buffer, u8_t *pdata, u16_t *len);
对报文缓冲区使用这种设计方法,能够实现从中断发送,到协议处理,用户接收等整个过程中,数据只需要一次拷贝,减少了对数据空间需求(不用频繁地进行数据硬复制),从而提高了ZIGBEE协议处理地实时性。
3.2 通用缓冲区
在ZigBee协议栈设计中,通用缓冲区管理的实现很简单,它分配和回收邻近的内存区域并且调整已分配的内存块。它使用系统中全部内存的特定区域, ZIGBEE_MEM类型的缓冲区是通用缓冲区,主要满足协议栈中与报文无关的内存需求。
在ZIGBEE_RAM内部,内存管理通过将一种小的结构放置在每一个被分配的内存块的顶端上来追踪分配的内存,这个结构(图4)设置两个指针指向内存中下一个和前一个分配块,还有一个flag标志用来指示这个内存块是否已经被分配。使用最先适用的原则,通过搜索一个未使用的内存块来分配内存。当一个内存块被释放时,flag标志被设为0,为了防止碎片,检测下一个和上一个内存块的flag标志,如果它们还没有被使用,几个块合并成一个大的未使用的块。
图4 ZIGBEE_RAM结构
4、ZigBee协议中的时钟管理
在ZigBee协议栈设计中,定时器的有效管理尤为重要,能不能对定时器进行合理的管理往往成为提高整个协议栈实时性能的瓶颈。对定时器的组织和管理最简单的方式是采取先进先出(FIFO)方式的链表单队列,这种组织管理方式会有一下两个问题:
(1)定时队列太长,找到所有到点定时器的时间开销难以接受;
(2)当定时器中断发生时要对所有的定时器的时长域进行减法操作,该部分时间性开销也很大。
另外,在实现ZigBee协议的芯片中,外设资源相对有限,为了使该协议栈能够广泛的应用于多种硬件平台,我们使用一个硬件定时器为基准时钟,然后在其基础上设计了简单递增时钟队列,以满足ZigBee系统对时间的要求。
在系统中,为每个任务分配申请一个简单相对递增时钟队列,队列中的定时节点按照定时时长排列有序,时长短的靠前,如图5所示,定时节点1的时长为5 ticks, 定时节点2的时长为2ticks, 定时节点3的时长为4ticks, 在队列中,定时节点的时长值改为相对前一定时节点时长的差值,即相对时长。当时钟中断发生时,只需对队头的时长域进行减1操作,所有的到点定时节点也均集中于队列的前面。
每个队列中又可以有多个时钟节点。逻辑时钟队列中,每个定时节点的数据结构如下所示:
typedef void (* timer_fun)(void *arg);
struct timer_node{
struct timer_node *next; /* 指向下一个定时节点 */
u32 time; /* 定时时间 */
timer_fun hander; /* 定时时间到后执行的函数 */
void *arg; /* 定时时间到后执行函数的参数 */
}
一个时钟队列如下图所示:
图5 ZIGBEE时钟队列
逻辑时钟队列的处理函数有:
void time_queue_init( void );
u8_t time_task_add(u32_t msec, time_fun hander, void *arg);
u8_t time_task_delete(time_fun hander, void *arg);
在ZIGBEE协议栈设计中,利用此种定时队列,能够使用一个基准定时器就可以简单,有效的实现确定性调度和时间同步所需的定时功能。
5、结论
本协议栈设计采用标准C进行开发,并在chipcon公司出产的cc2430芯片上进行了测试,测试结果表明:采用分类链式内存管理和相对递增时钟队列的内存和时钟管理方法的ZigBee通信协议栈通信过程稳定,速度快。下载本文