APP下载

基于WIA-PA 协议的时间同步算法的研究与实现

2014-02-23危炎广王浩星

关键词:字节报文时延

危炎广,王浩星,陈 晰,王 平

(1.重庆邮电大学工业物联网与网络化控制教育部重点实验室,重庆 400065;2.国网信息通信有限公司,北京 100761)

0 引言

WIA-PA协议的数据交互建立在时间同步的基础上,时间同步相关功能主要在数据链路层(data link layer,DLL)完成,WIA-PA 数据链路层兼容IEEE 802.15.4的超帧结构[1],并对其进行了扩展。同时WIA-PA数据链路层支持载波侦听多路访问(carrier sensemultiple access,CSMA)和时分多路访问(time division multiple access,TDMA)混合的信道访问机制、重传机制、基于时隙的跳频机制,保证传输的实时性和可靠性。

不论采用哪种硬件设备,在进行时间同步的时候,2个同步设备之间的晶振误差必然存在,设备之间的时钟漂移不可避免。为了保证基于TDMA的网络通信的可靠性,网络中的设备需要与时间源周期性地进行时间同步。但是,WIA-PA规范并没有提出具体的时间同步算法,本文通过分析WIA-PA协议以及现有时间同步算法的特点,提出了一种基于CC2530的WIA-PA协议的时间同步算法。

1 相关工作

1.1 WIA-PA协议时间同步方式

WIA-PA协议规定2种方法进行时间同步[2]:①利用WIA-PA协议专门设计的时间同步帧进行时间同步;②利用IEEE STD 802.15.4-2006的信标帧进行时间同步。协议采用了分布式和集中式相结合的管理方式,在集中式的网状结构中,网关节点作为时间源,所有的路由节点依据网关节点的时间信息进行时间同步;在分布式的星型结构中,路由节点作为时间源,所有的现场节点依据本簇的路由节点进行时间同步。WIA-PA协议对设备入网过程以及时间同步命令帧进行了详细的描述,并规定采用单向的同步方式进行时间同步,但对具体的时间同步算法并无相关描述。

1.2 现有时间同步算法

目前,提出了很多适用于无线传感网的时间同步算法[3],用于实现节点间同步或者全网同步。主要有基于接收者—发送者的单向时间同步算法,如DMTS(delaymeasurement time synchronization)协议、FTSP(flooding time synchronization protocol)协议;基于接收方—接收方的时间同步方法,如RBS(reference broadcast synchronization)协议[4];双向报文交换同步算法,如TPSN(timing-sync protocol for sensor networks)协议[5];分簇式的层次型拓扑结构算法,如 HRTS[6](hierarchy referencing time synchronization protocol)协议。

由于WIA-PA协议单向同步方式的特点,在上述同步算法中,DMTS和FTSP时间同步协议最符合WIA-PA协议规范要求。

1.2.1 DMTS时间同步算法

DMTS机制[7]是2003年由Su Ping等人提出的单向时间同步算法。该算法选择一个节点作为时间源,并在MAC信道接入后标记时间戳,以广播的形式发送该同步消息,接收节点首先估算消息传输时延t,然后,调整自身本地时间为同步消息所带时间与传输时延的和。其中,消息传输时延t等于发射时延t1加上接收处理时间,发射时延包括起始符和前导码发射所需的时间,等于起始字符与前导码相加的位数n乘以发射一位所需的时间t位,接收处理时间等于接收处理完成时间t3减去消息到达时间t4,得出公式:

虽然DMTS的单向时间同步的方式与WIA-PA标准规定的同步方式相吻合。但是DMTS在基于CC2530无线模块平台实现时,允许最晚添加时间戳的时刻是在同步报文构造之后STXON命令选通之前,而CC2530选通STXON命令之后并不会立即开始数据发送。所以,仅计算发射时延已经不能够满足对时延计算的需求。

1.2.2 FTSP时间同步算法

Branislav Kusy等[8]于2004年在 DMTS的基础上提出FTSP。与DMTS相比,该算法具有极高的同步精度,算法规定发送方在同步字节发射完成后,记录发送节点自身当前时间信息t,并嵌入到当前发送的报文中,然后接收节点记录接收到同步字节最后一个字节时接收节点自身的当前时间tr。接收完整个报文,接收节点首先计算与发送节点之间的位偏移,然后根据位偏移和接收速率计算字节对齐产生的时延tb。通过(2)式计算与发送节点之间的最终的时钟偏移量(offset),最后调节本地时钟与发送节点达到时间同步。同时FTSP还引入了线性回归的思想对时钟偏移进行拟合,以到达更高的时间同步精度。

在CC2530平台上,发送数据时需要通过SFR寄存器RFD写入TXFIFO寄存器,通过选通STXON命令开始无线发送操作。接收时,数据先写入RXFIFO寄存器,需要对数据进行操作时通过RFD从RXFIFO读取。FTSP要求在同步字节发射完成后,立即给正发送的时间同步报文标记上时间戳。可在CC2530平台上,选通STXON标志开始无线电发送过程之后,不能直接往TXFIFO中写入时间信息(即标记时间戳)。为了实现这样的功能,必须触发SFD中断来记录时间信息,这样做将会给系统带入SFD中断时延以及一部分缓冲时延。

2 适用于WIA-PA协议的时间同步算法

通过以上的研究分析,可知基于发送者—接收者的时间同步机制非常适合WIA-PA协议。但是,由于协议和实现平台的限制,并不能将现有时间同步机制完美地应用到系统中。为了减少发送带来的时间误差,方案中发送节点采取在同步消息构造完成后,在其尾部标记时间戳的方式。相比DMTS,该时间戳的嵌入方式带来了MAC(media access control)延时,即设备等待信道接入的时间[9]。然后,接收节点记录同步报文到达的时刻,由于大多数传感器节点在读取接收报文时会产生位偏移,所以,也会对同步精度产生影响。此外,设备读取自身时间信息和标记时间戳也带来一定的时延,该时延由硬件平台和信息长度决定。

为进一步分析上述不确定因素所带来的影响,本实验在基于CC2530的平台上,搭建了规模为50个节点的星型网络,其中,时间源节点1个作为父设备,49个同步节点作为子设备。

首先,配置定时器周期为32,则有1 ticks=32×1/32 000 000=1μs,从而时间的最小单位为1μs。与此同时设定一个超帧长为5 s,由500个时隙组成,每个时隙10 ms。在网络最开始阶段先让49个同步节点与时间源节点进行简单的时间同步:首先父设备在选通STXON命令之前的最近时刻加载时间戳t1,通过无线电广播给其他49个子设备,子设备接收完同步字符后记录自己的当前时间t2,等接收完整个报文后计算与父设备的时间误差,直接对当前时间tnow进行补偿:

然后,在接下来的一段时间内,父设备按照上述方法每1 s发送一次同步报文,子设备计算其与父设备的时间误差,但并不进行误差补偿。

最后,测得所有子设备与父设备的时间误差曲线如图1所示。由图1可以看出,在一定的时间内,同步节点与时间源之间的时间差大致呈递增的关系。

该时间差主要由以下几部分组成,如公式(4)。

(4)式中:tn是第n轮的时间差;tMAC为MAC层时延;Δt为每一轮发送同步报文期间,晶振所产生的时钟偏移;t'为在同步报文中嵌入时间戳t0所需时间;tb为位偏移产生的延迟;tTx为编码/解码时延。tMAC主要包括CC2530的缓冲时延和中断时延,缓冲时延是一个定值,中断时延是不定的变值,且远小于缓冲时延,所以,tMAC时延围绕着一个定值小幅度地上下波动。由CC2530振荡器的频率误差引起的晶振时延Δt在一定时间内呈现线性递增的趋势[10]。上述时延中除Δt之外,其他时延都可通过计算得出。结合图1可以推出tn呈线性递增的关系。

图1 子设备与父设备的时间误差曲线Fig.1 Time error curve between parents and kids

综合以上原因,本文参考FTSP时间同步算法,提出了一种适用于WIA-PA协议的时间同步算法。算法具体实现过程如图2所示。

图2 线性拟合时间同步算法流程图Fig.2 Linear fitting time synchronization algorithm flowchart

图2中具体算法流程如下。

1 )父设备按照图2中的CC2530标记时间戳方法加载时间信息t1后发送同步报文,子设备接收到同步字节后记录子设备自身当前的时间信息t2。

2 )子设备估算从标记t1到标记t2这一段时间中可计算时延t3的大小。

(5)式中:t4为启用STXON命令后父设备进行发送模式的缓存时间,经过查阅CC2530芯片手册,可以算出t4=192+2+12=206μs;t5为设备调制/解调的时间,此时延与数据包的长度有关,若数据包的长度为n,则t5=32n,其中,32为CC2530调制/解调的速度,单位为μs/字节,一般n只取前导码与同步字符的长度。在CC2530中两者的长度为5个字节,所以,t5为160μs;t6为设备之间的字节对齐时间,若字节偏移为k,则t6=32k,而CC2530采用了8位8 051芯片,CPU一次能读取一个字节大小的数据,但是接收的数据都是8位,本身不再需要字节对齐,所以,t6为0。这样就可以计算出t3为366μs。时间信息为7个字节,高位4个字节代表当前时间的整数部分,单位为s;低位3个字节表示当前时间的小数部分,单位为μs。

3 )子设备计算与父设备的时间误差为

此时,子设备并不利用此误差来进行时间同步,而是在接收 n次之后,生成 n个时间对{(x1,y1),(x2,y2),…,(xi,yi)}。其中,xi是第 i次接收同步报文子设备的当前时间,yi是第i次接收同步报文子设备与父设备的时间误差。

4 )将这n个时间对拟合成一条直线L:y'i=a+bxi,其中,b为回归系数,a为常数项。根据最小二乘法,要使得所有xi对应的|y'-yi|之和最小,由于绝对值比较麻烦,所以,先把差值做平方,然后求和,计算使得|y'-yi|平方和最大的a以及b的估计值a'与 b'。

5 )子设备与父设备进行时间同步的时候,只需导入自身的当前时间值t',然后,通过直线L计算自身与父设备的时间误差:T=a+bt',并对当前时间补偿得到同步后时间Tafter。

即可达到时间同步的效果。

3 实验结果分析

实验采用一个第3方设备和一台上位机作为测试工具来测试时间源和被测试设备间的时钟误差,通过对比节点间的误差来反映同步机制的优劣,时间误差测试原理如图3所示。

图3 第3方测试示意图Fig.3 Third-party testing schematic diagram

首先,第3方设备发送时间同步测试消息给待测试设备与时间源节点;待测试设备和时间源接收到测试消息后,同时记录当前时间,时间源直接上传时间信息T1至上位机,待测试设备的时间信息T2通过路由节点转发至上位机。时间误差T'=|T1-T2|。

在验证方案时,我们分别构建了基于信标帧直接同步(不采取补偿)、DMTS同步(估算延迟补偿)、线性拟合时间同步的网络进行时间误差测试。网络规模都为50个节点,一个中心节点,49个同步节点。其中,信标帧直接同步、DMTS同步算法每隔5 s根据信标帧进行同步一次。线性拟合的时间同步算法每隔3 s发送一次信标帧,并采用上述方法计算同步误差,等待接收5次之后,拟合一条直线,并在之后的2 min内每隔5 s进行一次时间补偿用于时间同步。在线性拟合的时间同步算法进入补偿阶段后,测试设备每隔2 s对网络中所有设备进行时间误差的测试,测试对比结果如图4所示,其中,横坐标为测试时间,纵坐标为相同同步机制下的49个节点的平均误差。由图4可以看出,单纯的信标帧同步方式的时间精度为500μs左右,加入了DMTS时间同步机制的网络中,节点的时间同步精度为200μs左右,而线性拟合同步算法的同步精度达到了50μs左右,同时我们可以发现晶振偏移带来的误差为10μs/s左右,而且线性拟合同步算法在拟合出直线,一次同步的时候,同步精度可以精确到10μs以下,但是随着同步次数的增加,同步精度越来越低,所以,线性拟合的方法需要周期性的更新计算公式。总之,基于线性拟合的时间同步算法比其他2种算法的时间同步精度高出几十到几百微秒。

图4 信标帧同步、DMTS同步、线性拟合同步时间误差对比Fig.4 Time error contrast of beacon frame synchronization、DMTS synchronization and linear fitting synchronization

4 结论

本文通过分析现有时间同步算法在WIA-PA协议实现中的特点与不足,并对CC2530无线通信时延进行分解,提出了一种基于线性拟合的时间同步算法。实验结果表明,在不改变WIA-PA协议单向时间同步特点的前提下,基于线性拟合的时间同步算法能达到更高的时间同步精度,从而满足对时间精度要求更高的WIA-PA协议应用系统的需求。

[1]电气和电子工程师协会,GB/T 15629.15-2010,信息技术系统间远程通信和信息交换第15部分:低速无线个域网(WPAN)媒体访问控制和物理层规范[S].美国:电气和电子工程师协会,2010.

Institute of Electrical and Electronics Engineers,GB/T 15629.15-2010, Telecommunications and Information Exchange between Systems Local and Metropolitan Area Networks Part 15:Wireless Medium Access Control and Physical Layer(PHY)Specification for Low Rate Wireless Personal Area Networks[S].American:Institute of E-lectrical and Electronics Engineers,2010.

[2]中国工业无线联盟,GB/T 26790.1—2011,工业无线网络WIA规范第1部分:用于过程自动化的WIA系统结构与通信规范[S].日内瓦,Switzerland:国际电工委员会,2011.

Chinese Wireless Industrial Union,GB/T 26790.1—2011,Industrialwireless networksWIA Specification Part1:WIA System Architecture and Communication Specification for Process Automation(WIA-PA)[S].Geneva,Switzerlan:International Electrotechnical Commission,2011.

[3]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005:162-176.

SUN Limin,LIJianzhong,CHEN Yu,et al.Wireless sensor networks[M].Beijing:Tsinghua University Press,2005:162-176.

[4]李文锋,王汝传,孙力娟.基于RBS的无线传感器网络时间同步算法[J].通信学报,2008,29(6):82-86.

LIWenfeng,WANG Ruchuan,SUN Lijuan.Proved wireless sensor networks time synchronization algorithm based on RBS[J].Journal on Communications,2008,29(6):82-86.

[5]SAURABH G,RAM K,MANIB S.Timin-g-sync Protocol for Sensor Networks[C]//Proceedings of the First International Conference on Embedded Networked Sensor Systems.Los Angeles:Embedded Networked sensor System,2003:138-149.

[6]DAIH,HAN R.TSync:A Lightweight Bidirectional Time Synchronization Service for Wireless Sensor Networks[C]//ACM SIGMOBILEMobile Computing and Communications Review.Colorado:Wireless PAN&Sensor Networks:2004:125139.

[7]PING S.Delaymeasurement time synchronization forwireless sensor networks[R].Santa Clara,USA:Intel Research Berkeley Lab,2003.

[8]MAROTIM,KUSY B,SIMON G,et al.The flooding time synchron-ization protocol[R].Nashville,USA:Vanderbilt University,2004.

[9]汪付强,曾鹏.无线传感器网络时间同步综述[J].计算机工程,2011,37(22):70-73.

WANG Fuqiang,ZENG Peng.Survey on Time Synchronization in Wireless Sensor Network[J].Computer Engineering,2011,37(22):70-73.

[10]汪付强,曾鹏.一种低开销的双向时间同步算法[J].仪器仪表学报,2011,32(6):1357-136.

WANG Fuqiang,ZENG Peng.Low overhead two-way time synchronization algorithm[J],Chinese Journal of Scientific Instrument,2011,32(6):1357-136.

(编辑:刘 勇)

猜你喜欢

字节报文时延
基于J1939 协议多包报文的时序研究及应用
No.8 字节跳动将推出独立出口电商APP
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
No.10 “字节跳动手机”要来了?
基于GCC-nearest时延估计的室内声源定位
基于改进二次相关算法的TDOA时延估计
简谈MC7字节码
FRFT在水声信道时延频移联合估计中的应用
ATS与列车通信报文分析