文志勇
在多节点无线数据采集系统的时间同步技术当中,有多种时间同步模型[1],如参考广播同步(RBS)、传感器网络时间同步(TPSN)和洪泛时钟同步(FTSP)等[2],这些时间同步模型是根据实际情况设计无线传感器时间同步方法的基础。多节点无线数据采集系统在实际使用当中,需要较低的功耗、能够快速连接网络、且时间同步精确度高,所以时间同步机制直接影响着多节点无线数据采集系统的整体性能。系统在工作过程中,每个数据采集节点的时间基准都使用本地晶体振荡器提供,相互之间完全不存在同步关系。由于晶体振荡器之间不可避免地存在细微的频率偏差和时钟漂移,即使进行了初始同步,在经过一定时间的运行后也将出现明显的时间偏差,从而影响数据同步采集的精度。这就需要基于上位机和下位机之间的通讯研究多节点无线传感器的时间同步算法,利用多线程的无线通讯对各个节点的时钟进行周期性的校正,可以保证所有数据采集节点的时间不断对齐,最终实现系统的时间同步。
目前市面上有多种多通道无线传感器同步采集设备,同步误差基本都在1 ms 以下[3]。本文的工作是探讨影响无线时间同步性能的因素,并利用这些因素来分析现有的时间同步协议方法,讨论它们在WLAN 中的优势和不足,最终以802.11 通讯协议为基础为多节点无线数据采集系统设计精确的时间同步方法。
对多节点无线数据采集系统进行时间同步的工作分为两个步骤,第一个步骤是通过上位机与下位机的指令交换控制所有节点同步启动采集,第二个步骤是在所有节点稳定运行之后对它们进行时间同步修正,这一章分析的无线传感网络时间同步技术主要是分析设计同步方法时需要解决的需求。
基本时间同步模型主要可分为两类:一类基于发送者-接收者(Sender-Receiver,SR)机制,另一类基于接收者-接收者(Receiver-Receiver,RR)机制。基于SR 机制的模型以洪泛时钟同步协议(Flooding Time Synchronization Protocol,FTSP)为代表,在该模型中,发送者会定期广播包含自身时间戳的同步消息,而接收者会记录同步消息中的时间戳以及接收到消息时自身的时间戳,并计算二者的偏差,与此同时,接收者还需根据偏移位数与接收速率计算得到位偏移,根据和即可计算出接收者相对于发送者的时间偏移,从而完成同步[4]。该模型采用了线性回归分析方法,对节点的时钟漂移进行了补偿。而基于RR 机制的模型以参考广播同步协议(Reference Broadcast Synchronization,RBS)为代表,该模型的使用一个参考节点周期性地向接收者广播同步信息,这个同步报文中不包含参考节点的时间信息,节点接收到此同步信息后,分别记录并交换接收到信息时的时间戳,从而可以通过各节点之间接收到信息的时间差值调整节点的时钟以实现同步[5]。
根据上述介绍,RR 机制与SR 机制的核心区别在于发送者发送给接收者的消息中是否包含发送者的时间信息。其中,接收者-接收者机制适用于只需要节点间进行时间同步的情况,算法开销较小,运行速度较快。因此本文设计的同步方法的基础是接收者接收者机制。另外,在系统长时间运行的时间同步方案中,结合了FTSP 模型中的线性回归的思想,对系统硬件时钟漂移进行修正。
不同节点之间的时间同步,需要依靠无线传输同步消息,因此时间同步的精度与消息传输的时延有关,这些时延具有不确定性,因此是影响时间同步精度的重要因素。无线消息传输时间延迟被分为6 个部分[6],具体结构见图1。
图1 无线传输消息时延结构
其中,发送、访问、传输时延为消息在发送者中产生直至完全发送所消耗的时间;传播时延仅与无线传输介质有关;接收、处理时延为接收者接收到消息并完成相应动作所消耗的时间。接下来将具体介绍基于接收者-接收者机制的时间同步方法以及同步效果。
系统中多节点的启动均通过上位机发送启动命令控制,而节点从接受命令到初始化再到启动采集这一系列过程中消耗的时间不一致,这就导致各节点的初始时间会存在差异,影响同步性能,另外,节点稳定运行后,外部晶振作为时间来源,会存在微小的抖动漂移,长时间运行后可能会积累出较大的误差。综上,在时间同步方法的设计中,主要包括两个部分,一是实现两个平台的同步采集,二是在采集过程中对微小的时钟漂移进行修正。
图2 同步启动采集流程
在系统初始启动的过程中,上位机的子线程通过指定IP地址和端口的单播方式向两个数据采集平台发送启动命令,从该命令发出到各平台发送出第一个数据包的过程中,会存在传播、接收以及处理时延,其中传播时延可以忽略不计,从而必须实现同步启动采集以消除接收时延和处理时延。上位机通过两个子线程单播指令控制两个数据采集平台完成同步启动采集的具体实现流程如图2 所示,流程解释如下。
(1)首先,上位机向各节点发送初始化命令,节点接收到命令后开始初始化需要用到的外设,之后节点如果完成初始化会返回初始化成功的状态标志,如果上位机收到初始化错误的状态标志则会停止工作,并需要根据错误信息检查设备,如果在5 s 内有未收到的状态标志,则需要向未返回状态标志的平台重新发送初始化命令,直至各节点均完成初始化。这一过程是为了确保各节点的外设正常工作且消除初始化工作带来的部分处理时延。
(2)然后,上位机向各节点发送采集测试命令,节点接收到命令后采集一次相应数据并打上时间戳,打包成数据包后发送至上位机,若上位机接收到的数据包中有空包,则向返回空包的节点重新发送采集测试命令,若发送三次后仍返回空包,则需要检查节点的数据采集功能。这一过程是为了确保采集功能正常工作。
(3)最后,上位机控制各节点启动采集,每个数据包均打上时间戳,此时依然会有各节点发送第一个数据包的时间不一致的情况,因此,上位机先接收到数据的子线程暂时不做记录,并将该线程标记为正在接收,等到其他线程也标记为正在接收后,主线程得到子线程接收到第一个数据包的时间差序列,并用该时间差调整先发送数据节点的初始时间戳,使其与后发送数据节点的初始时间戳一致。这一过程能够消除节点接收启动命令产生的接收时延以及启动采集带来的部分处理时延。
在实践中,使用上述实现同步启动采集的方法,可以将各节点初始时间戳的误差控制在1 ms(即毫秒级最小级采样周期)以内,因此,该方法通过上位机与节点之间指令和状态信息的多次互换,实现了各节点数据采集的同步启动。
系统中各节点的晶振在持续运行的过程当中,会产生微小的抖动或漂移,这样的抖动或偏移在长时间运行的场景中,节点之间的时间误差会持续累积,从而造成时间上的不同步,因此要对时钟漂移带来的时间误差进行修正。
一元线性回归模型是一种常用的统计模型,用以描述一个变量跟随另一个变量的变化情况,本文将上位机系统时间作为参考时间,设为自变量x,下位机时间戳设为因变量t,则二者的一元线性样本回归模型表示如式1 所示。
该模型中,ei表示随机误差,通常假ei定的均值为0,xi和ti为上位机系统时间和时间戳的样本观测值,假设有n 组,表示时钟偏移,β0表示时钟频率,β1均为未知参数。本文采用普通最小二 乘法(OLS)对未知参数进行估计,该方法只关注因变量方向上的误差,且算法复杂度适中,适用于本系统的情况。设时间戳估计值为,则因变量的平方损失函数表示如式2 所示。
平方损失函数取得最小值的点,即为使得偏导数方程为0的点,令上述方程组等于0,解得式4。
因此,在获得上位机系统时间和时间戳的观测值和之后,可以将某一时间段内各平台的时钟偏移和时钟频率计算出来,从而得到唯一的拟合直线。
利用一元线性最小二乘回归模型对各节点进行时间同步的具体流程如图3 所示。
(1)同步启动的方法在3.1 小节中进行了具体的介绍,该步骤同步启动了两个平台的计时,目的是消除时间同步过程中存在的接收时延以及处理时延,提升时间同步的精度。
(2)在下位机向上位机发送数据的过程当中,丢包是不可避免的现象,由于节点的采样频率可能为毫秒级,数据量较大,在网络状况较好的情况下,丢包对数据的影响可以忽略不计,但时间戳的丢失会影响时间同步的精度,因此需要对丢失数据包的时间戳进行补偿。上位机使用多个子线程接收各节点的数据,每接收到一个数据包会记录上位机系统时间,通过对相邻系统时间做差比较,若时间差值大于相应平台的采样周期,则说明有数据包丢失,上位机会根据差值情况补齐丢失的时间戳。
(3)在对下位机时钟漂移实际测试的过程中,发现最快在一分钟左右两个平台的时间戳偏差会累积到1 ms,为了保证时间同步误差小于1 ms,需要在一分钟内完成一次线性回归的参数计算,每次线性回归之间的时间差即为时间同步周期。考虑到数据量和计算量,本文将同步精度测试时的时间同步周期定为10 s(该周期可根据具体需求改变),上位机每10 s 对下位机时间戳分别进行线性回归计算,算出各自的f 和offset 之后对相应的下位机进行时间戳补偿,依此循环,保证在长时间运行的情况下各节点的数据一直保持时间同步。
本文的同步控制方案采用的是中心对各节点(Centerpoint-point,CPP)的方式,该方法需要一个主节点作为AP,其他子节点都通过该AP 来进行通讯。本文使用两个独立的无线采集平台对时间同步方法的同步效果进行验证,两个平台的采样频率分别为1ms 和10ms,因此,无线传感器时间同步网络由上位机、路由器以及两个无线数据采集平台组成。上位机算出各平台的时钟频率f 和时钟偏移offset 之后再对硬件时间戳进行补偿。
为验证时间同步方法的有效性,本文进行了持续500s 的数据采集实验,在数据采集的过程当中,上位机每10s 对各平台数据包中的时间戳进行时间同步计算,并调整各平台的时间戳,采集到的数据和时间戳均保存成txt 文件。
对两个平台同步后的时间戳进行同步误差分析,以确定时间同步的效果,两个平台同步后的时间戳与上位机参考时间之间的差值如图5 所示,横坐标均表示上位机参考时间,纵坐标均表示对应信号采集平台同步后的时间戳与参考时间之间的差值。从图4 中可以看出,经过时间同步后,两个平台的时间戳与参考时间之间的误差均在0.2 ms 以内,小于1 ms。
测试的最终目标是完成两个平台之间的时间同步,因此重点关注的是时间同步后两个平台间的时间误差,对两个平台进行时间同步后,平台硬件时间戳之间的差值在-0.04 ms~0.06 ms之间,为微秒级的误差,由于表面肌电信号采集平台的采样周期为1 ms,要实现两个平台之间的时间同步,需要时间误差在1 ms 以下,因此,本文的时间同步方法精度较高,且很好地满足了时间同步的需求。
图4 数据采集平台时间同步后相对参考时间的误差
图5 同步后两个平台间时间偏差示意
本文详细介绍了用于多节点无线传感系统基于接收者-接收者机制的时间同步方法,该方法主要分为两个部分,一是实现多节点的同步启动,该部分的工作通过上位机的各子线程在局域网上建立端口,再与各节点之间进行指令和状态信息的多次互换来完成,可以将各节点初始时间戳的误差控制在1ms以内;二是对运行过程中的时钟偏移进行补偿,该部分工作采用了线性最小二乘回归模型,将上位机的系统参考时间作为自变量,在同步周期内进行同步计算,分别对多节点的时间戳进行补偿,从而完成时间同步。最后对本文设计的时间同步方法进行了实验效果验证,结果表明,使用本文设计的方法对采样频率不同的两个数据采集平台进行时间同步,可以将两个平台之间的时间误差控制在-0.04ms~0.06ms,即微秒级别的误差,同步精度较高,能够很好的满足时间同步的需求,从而应用于多节点无线数据采集系统的时间同步。