IEEE 1588时间同步在ZigBee低功耗中的应用
2012-09-19邢伟伟白瑞林
邢伟伟 白瑞林
(江南大学智能控制研究所1,江苏 无锡 214122;轻工过程先进控制教育部重点实验室2,江苏 无锡 214122)
0 引言
时间同步是无线传感网络应用的重要支撑技术,低功耗是ZigBee技术的显著特点。在实际应用中,不仅终端节点需要低功耗设计,而且由于特殊场合供电不便,通信过程主干网络的中继路由节点需要进入休眠低功耗运行,所以将时间同步协议应用于无线传感网络低功耗方案具有实际意义。
针对无线网络时间同步和低功耗应用,文献[1]提出了一种在无线传感器网络的时间同步协议(timing-sync protocol for sensor networks,TPSN)中同时考虑节点时钟偏移和频率漂移率的改进算法,减少了通信成本;文献[2]提出了通过分析ZigBee协议的星型拓扑网络节点退避过程,减少了节点接收和空闲的时间,实现了低功耗;文献[3]在传统的TPSN算法的基础上,提出了适合ZigBee网络的先分簇再同步的时间同步算法。以上文献提出的时间同步方案均为传统的时间同步协议,这些算法运行于协议栈的应用层,往往由于协议层间延时而降低同步精度;而且由于传统休眠方案仅支持终端节点,不支持路由节点和协调器节点休眠,因此上述算法不适合本文系统。
针对上述同步算法的不足和协议的限制,提出利用实时时钟(real time colok,RTC)芯片的中断信号控制主控芯片CC2530的电源,实现主干网络的休眠。同时引入基于IEEE 1588的精确时钟同步协议(precision time protocol,PTP)实现在媒体控制访问层(media access control,MAC)读取时间戳,以减少协议层间延时、提高时间同步精度。经测试,时间同步精度达+50 μs,休眠状态工作电流仅为400 nA。
1 系统原理
现有无线设备的休眠均基于芯片内部的休眠机制完成设备的休眠和唤醒。IEEE 802.15.4和ZigBee协议规定路由和协调器设备需要时刻在线,不可进入休眠,且终端节点进入休眠时的功耗只能达到毫安级,故传统方法无法满足本系统要求。
在本设计方案中,系统利用RTC时钟芯片的中断信号控制主控芯片CC2530的电源,实现系统的休眠和唤醒。系统设计方案如图1所示。
图1 系统框图Fig.1 System scheme
图1中,RTC信号和电源开关配合是系统的关键。
硬件模拟开关电路及信号关系如图2所示。
图2 硬件模拟开关电路及信号关系图Fig.2 Hardware analog switching circuit and signal relation
本文选择的RTC模块型号为BL5372,其实际工作功耗只有400 nA,且具有一路中断信号。主控芯片通过IIC总线完成对RTC模块的配置。系统利用中断信号配合模拟开关控制主控芯片的工作和休眠,模拟开关由2个PNP三极管并联,分别连接RTC中断管脚和CC2530的电源管脚。RTC工作于记时状态和中断状态。当RTC中断之后,中断信号通过开关打开CC2530的电源,并由CC2530清除RTC中断,设置下次中断时间;此后RTC模块进入记时状态,并关闭CC2530的电源,完成一次通信。
2 算法分析与实现
2.1 同步算法对比
传统时间同步算法有RBS算法、TPSN算法、FTSP算法以及基于连通支配集的全局时钟同步算法等。这些算法均采用提高单跳同步精度、最短路径同步以减少跳数的算法,从而达到降低多跳误差累积的目的;这些算法都运行于ZigBee协议的应用层,层间时间消耗较大,同步精度会降低[4]。将以太网时间同步协议引入到ZigBee协议中,利用IEEE 1588的MAC层获取时间戳设置系统时间,并根据网络中各同步节点时间的特性改进上述算法中的层间时间消耗,从而改善了同步精度。
本文将PTP协议置于和ZigBee协议中NWK同级别的位置。由于PTP调用MAC层提供的服务完成数据收发,因此,为兼容原来协议标准,需要对ZigBee的MAC层进行扩展,在保留原功能的基础上增加对PTP协议数据的服务。
2.2 算法分析与实现
在系统软件架构中,添加的IEEE 1588协议由位于ZigBee协议的应用层的PTP协议和MAC层的时间戳模块两部分组成。系统软件架构如图3所示。
图3 系统软件架构Fig.3 Architecture of system software
2.2.1 应用层PTP协议
整个PTP协议流程如图4所示。
图4 PTP协议流程图Fig.4 Flowchart of PTP
应用层PTP协议主要用于实现IEEE 1588的Sync、Followup、DelayReq和DelayResp消息的产生和发送[5]。同步主要分为偏差测量、延时测量和时间调整3个阶段。
主时钟发送Sync通知从时钟,紧接着的报文为时钟同步报文,该报文不会读取硬件时间。在Sync报文发送完毕后,主时钟紧接着发送Followup报文,该报文在进入MAC层之后会触发一次读取硬件时间戳的动作,并将读取的时间信息插入报文中。从时钟接收到Followup报文后,在MAC层会对数据进行分析并触发一次读取硬件时间的动作,读取本地时间,同时根据报文主时钟时间Tm和从时钟硬件时间Ts。
主从时间差Toffset为:
由于传输过程中会有传输延时,为了增加同步精度,必须测试主从时钟的传输延时Tdelay。从时钟会主动发送DelayReq报文,该报文会触发从时钟的MAC层读取硬件时间戳,并记录在报文之中,记为Tsd。主时钟接收到DelayReq后,在MAC层直接读取硬件时间Tmd并立即回复给从时钟。
主从时钟传输延时Tdelay为:
从时钟得到Toffset和Tdelay之后,可以计算调整本地时钟Ts1,以达到和主时钟同步的目的。
2.2.2 MAC 层时间戳操作实现
MAC层的改进主要体现在协议服务和PTP帧格式的定义。
由于需要兼容现有协议,所以必须保持现有协议的服务和数据结构,同时增加PTP服务和RTC硬件时间戳的动作。
①帧服务定义
传统的PTP协议位于UDP协议的应用层,它与MAC层的读取和设置硬件时钟的动作结合使用,将使得协议的同步精度得到很大提升。本文将PTP协议引入IEEE 802.15.4的无线传感协议。
由于原有无线传感协议架构已经成型,因此,在不打断原始协议的情况下引入PTP的数据链路层特性显得尤为关键。
PTP协议贯穿整个应用层,由网络层直接向应用层提供服务,并使用IEEE 802.15.4的数据链路层提供的接口服务。
改进的MAC架构如图5所示。
图5 改进MAC架构Fig.5 Architecture of improved MAC
由图5可以看出,系统在原有的架构上添加了PTP-SAP接口。该接口连接的是PTP协议,由此接口进入的数据包会触发PTP-RTC的动作,进而读取硬件RTC时间戳信息。PTP-RTC的另一个作用是将RTC硬件时间戳信息加入到PTP协议包内。
启动服务接口函数为void PTP_Start(PTP_Period time);关闭服务接口函数为int PTP_Stop()。启动服务接口中的参数为重复时间同步协议的周期,该参数十分重要,决定了最终系统的时间同步精度和功耗。该值越大,同步精度越差而系统功耗越低,在实际使用过程中需作动态调整。
②帧格式定义
IEEE 802.15.4的数据链路层定义了4种不同的帧格式,分别是信标帧、数据帧、确认帧和数据链路层命令帧[6]。本文在保留4种帧格式的情况下,扩展了PTP时间帧macPTP_t,帧格式如表1所示。
表1 PTP时间戳的帧定义Tab.1 Frame definition of PTP timestamp
时间戳由数据结构PTP_time_t组成,主要包含了PTP完成一次同步所需要的4个时间戳信息。协议根据帧标志内容判断当前的操作类型,再决定是否读取RTC时钟。
3 系统测试
3.1 同步精度测试
节点的时间同步精度是本设计能否成功的关键因素之一[7-8]。本设计通过对本文算法和传统时间同步算法的同步结果进行对比来评估算法的同步精度。所有算法的同步频率均为每分钟一次,经过6 000次的采样,主从时间的误差结果如图6所示。
图6 时间同步误差图Fig.6 Error diagram of time synchronization
由图6可知,由于主从时间晶振的偏差逐步积累,如果不使用同步算法校正误差,将使主从时间误差越来越大;传统同步算法误差在100 ms左右,且算法开销大;本文引入的PTP时间同步协议由于采用了数据链路层读取时间戳的办法,使同步误差降低到50 μs左右,同步精度得到很大程度的提高。
3.2 系统功耗测试
本设计通过测量系统正常工作和休眠时的电流测试系统的功耗。将电路中的精密电阻串联,并通过示波器测量电阻两端的压差来指示系统的工作电流。测试分为完全工作和休眠2种模式,精密电阻阻值为2 kΩ。经测试,系统的完全工作电流为1.5 mA,而在休眠情况下只有400 nA,系统中采用的电池容量为400 mAh。如果调整工作和休眠的时间,可以延长节点的工作时间;调节系统的时间同步周期,将会降低系统的平均功耗。对某山顶水塔水位监测系统进行测试,每天采集一次水位数据,每小时进行一次时间同步,系统可连续运行3个月以上。
4 结束语
测试结果表明,PTP同步协议为无线网络的实时应用和提高时间同步精度提供了有效的解决方案,实现了ZigBee无线网络路由节点的休眠,节约了网络的平均功耗。通过在MAC层读取硬件时间戳,使PTP时间同步协议实现通信主干链路上的节点时间的同步精度高于传统同步方案,且通信开销小[9-10]。利用 RTC芯片的中断信号控制主控单元,改进了传统协议仅仅依靠终端节点实现低功耗运行的弊端。本方案尤其适用于节点工作时间和休眠时间比例比较大的场合。
时间同步协议在 ZigBee[11-15]无线传感网通信中的应用是目前技术人员研究的热点。试验表明,本文所述改进方案的同步精度更高、平均功耗更低,能耗和设备成本得到了降低,具有一定的实际意义。
[1]刘迪忻.无线传感器网络中基于时钟漂移补偿的时间同步技术[J].时间频率学报,2009(12):120 -127.
[2]吴伶锡,詹杰,李琳.无线传感器网络节点的低功耗研究[J].计算机工程与应用,2009,45(7):97 -99.
[3]谢琦,刘兰涛.用于ZigBee网络的同步休眠与唤醒算法[J].计算机应用,2010,30(6):12 -18.
[4]杨宗凯,赵大胜,王玉明.无线传感器网络时钟同步算法综述[J].计算机应用,2005(5):32 -38.
[5]Dirk S.IEEE 1588 precise time synchronization as the basis for real timeapplications in automation[J].IndustrialNetworking Solutions,2003(6):14 -19.
[6]桂本煊,刘锦华.IEEE 1588高精度同步算法的研究和实现[J].光电与控制,2006,13(5):90 -94.
[7]Li Qun,Daniela R.Gobal clock synchronization in sensor networks[J].IEEE Transactions on Comuputers,2006,55(Z1):214 -226.
[8]黄云水,冯玉光.IEEE 1588精密时钟同步分析[J].国外电子测量技术,2005(9):9 -12.
[9]彭伟,卢锡诚.一个新的分布式最小连通支配集近似算法[J].计算机学报,2001(3):58 -64.
[10]IEEE Instrumentation and Measurement Society.IEEE Std 15882 IEEE standard for a precision clock synchronization protocol for networked measurement and control system[S],2008.
[11]任秀丽,于海滨.ZigBee无线通信协议实现技术的研究[J].计算机工程与应用,2007(6):10 -12.
[12]李文仲,段朝玉.ZigBee无线网络技术入门与实战[M].北京:北京航天航空大学出版社,2007.
[13]乔大雷.基于ARM9的嵌入式ZigBee网关设计与实现[D].北京:中国矿业大学,2007.
[14]周玉.基于ZigBee协议的飞机无线嵌入式实时油液监测系统设计[J].计算机测量与控制,2010(10):45-46.
[15]陈莉.基于ZigBee协议的环境监测无线传感器网络测量节点的设计[D].上海:上海交通大学,2008.