一种应用于无线传感网的无误差累积的时钟同步系统的制作方法

文档序号:16096731发布日期:2018-11-27 23:40阅读:206来源:国知局

本发明属于时钟同步技术领域,具体涉及一种无线传感网中智能体设备之间的无误差累积的时钟同步系统。



背景技术:

无线传感网是一种典型的分布式网络系统,是具有交叉学科性质的军民两用的战略高技术。它广泛应用于国防军事、环境监测、电力系统调度、交通管理和灾害预测等领域,具有巨大的应用潜力和发展空间。对于无线传感网的众多基本功能,如事件时序判断、目标定位、数据融合、网络协同休眠等,都需要在全局公共时钟下完成。公共时钟的同步精度越高,网络的整体性能就越好。所以时钟同步是该类网络的一项基本支撑技术,甚至是众多实际应用与关键技术实施的先决条件。

时钟同步就是通过设计相应的协议和同步算法,对智能体设备的本地时钟进行校准,以使网络中所有设备都拥有一个全局的公共时钟。早在无线传感网出现之前,时钟同步问题就已被广泛研究,其中经典的解决方案有GPS授时法和基于IEEE1588协议的授时法。GPS授时法虽然具有同步精度高,覆盖范围广等优点,但它易受外界环境的影响而导致失锁。当GPS失锁后,同步精度只有毫秒级甚至更差,这显然不能满足无线传感网对时钟同步精度的要求。再就是GPS授时法功耗较高,每个智能体设备都要安装GPS接收器,这不适用于低功耗的无线传感网。还有就是对于一些智能体设备,它需要极强的隐蔽性,当采用GPS法授时时,该智能体设备就容易被暴露,所以GPS授时法的应用受到限制。基于IEEE1588协议的授时法,它对智能体设备的本地时钟的相位有进行补偿,但对本地时钟的斜率没有进行补偿,这使得时钟同步精度差,且同步效果不稳定。再就是该方法虽然补偿了传输时延,但也成倍增加了智能体设备发送数据包的次数,甚至还需要多次应答,增加了智能体设备之间的程序耦合度,使得网络通信效率变得很低。

基于一致性协议的时钟同步技术,由于不依赖既定的拓扑结构,也不依赖根节点或者参考节点,具有鲁棒性好,可扩展性强,节点管理方便等优点,并且一般可达到更高的同步精度,所以一经提出就受到广泛关注。目前,针对无线传感网,一些基于一致性协议的分布式时钟同步技术被陆续提出。Schenato和Fiorentin提出一种ATS(Average TimeSynch)算法,该算法是一种完全分布式的算法,对网络中的数据丢包和节点故障具有很好的鲁棒性,并且适应通讯拓扑变动和时钟斜率漂移。ATS算法假设通信拓扑连带连通,数据传输没有时延,当满足这一假设时,该算法被证明时钟同步精度以指数的形式收敛(L.Schenato and F.Fiorentin,“Average TimeSynch:a consensus-based protocol for clocksynchronization in wireless sensor networks,”Automatica,vol.47,no.9,pp.1878–1886,2011.)。Liao和Barooah针对无向马尔科夫跳变通信拓扑,给出了一种时钟同步算法。当假设相对测量噪声是对称时,该算法被证明时钟同步精度以均方收敛(C.Liao and P.Barooah,“Distributed clock skew and offset estimation from relative measurements in mobile networks with Markovian switching topology,”Automatica,vol.49,no.10,pp.3015–3022,2013.)。He,Cheng和Shi等提出一种WMTS(Weighted Maximum Time Synchronization)算法,该算法在假设通信拓扑时不变的情况下,对随机通信时延进行压制。理论分析表明,该算法的斜率补偿量的期望有限时间收敛,斜率补偿量渐进均方收敛(J.He,P.Cheng,L.Shi,J.Chen and Y.Sun,“Time synchronization in WSNs:a maximum-value-based consensus approach,”IEEE Transactions onAutomatic Control,vol.59,no.3,pp.660–675,2014.)。在实际工作中,智能体设备的通讯不可避免地伴随着随机有界的时延,并且网络的通信拓扑也是时变的。针对这一情况,Tian,Zong和Cao研究指出,上述提到的所有算法,被证明同步误差要么随时间无限累积,要么误差的均方随时间无限累积(Y.-P.Tian,S.H Zong and Q.Cao,“Structural modeling and convergence analysis of consensus-based time synchronization algorithms over networks:non-topological conditions,”Automatica,vol.65,no.3,pp.64-75,2016.)。这意味在无限长时间意义下,这些算法不能保证时钟同步误差有界,即使是在短时间内误差累积也会导致同步精度不高。

针对上述算法不能保证时钟同步误差有界这一问题,Tian提出了一种LSTS(Least Square Estimation BasedTime Synchronization)算法。该算法通过采用增大时间跨度的方法来压制时延的影响,在有向通信拓扑下,即使存在随机有界的时延,该算法也保证了时钟斜率渐近收敛和时钟同步误差有界收敛(Y.-P.Tian,”LSTS:a new time synchronization protocol for networks with random communication delays,”Proc.the 54th IEEE Conference on Decision and Control,pp.7404–7409,2015.)。但LSTS算法在对斜率补偿时采用了衰减增益,大幅度增加了算法的计算量,消耗了更多的计算资源。再就是智能体设备需存储不同邻居智能体设备的增益量,消耗了更多的存储资源,这对能量和硬件资源要求较高的无线传感网来说仍是很难承受的,从而限制了算法的应用。

此外,上述ATS,WMTS和LSTS算法未对传输时延进行补偿,这使得相位补偿量随时间无限增大,进而可能导致数据发生溢出,造成整个系统错误。最后,这些技术并没有把时钟同步算法转换成能对底层硬件直接同步授时的方式,使得同步授时过程十分繁琐,实用性不强。



技术实现要素:

发明目的:给无线传感网提供一种无误差累积的时钟同步系统,以克服现有的时钟同步系统的同步精度不高,未对斜率进行补偿,同步精度不稳定,计算量大,相位补偿量发散,智能体设备之间程序耦合度高,数据包传输时延未有效补偿,授时过程繁琐,系统功耗大,实用性差等缺陷。

技术方案:为实现上述目的,本发明提供一种应用于无线传感网的无误差累积的时钟同步系统,包括时钟同步算法和智能体设备,智能体设备是时钟同步算法的载体,时钟同步算法运行于智能体设备中,智能体设备之间通过无线网络连接。

时钟同步算法包括:相对斜率估计算法,根据数据包的时间戳计算智能体设备本地时钟之间的相对斜率量,并对其进行低通滤波处理;斜率补偿算法,计算智能体设备的本地时钟所需的斜率补偿量;相位补偿算法,计算智能体设备的虚拟时钟所需的相位补偿量;时延补偿算法,根据反馈的相位补偿量斜率信息计算时延补偿量;虚拟时钟产生算法,把智能体设备的本地时钟转换成虚拟时钟。智能体设备包括:数据收发模块,该模块是发送和接收数据包的执行机构,智能体设备之间通过这一模块建立通信连接;收发时间戳标记模块,标记数据收发模块发送和接收数据包时所对应的本地时钟;内核控制模块,控制数据收发模块的发送和接收,协同收发时间戳标记模块完成接收时间戳的标记,解析接收的数据包并完成数据的分发、存储和丢包等处理;算法计算模块,在智能体设备的硬件芯片中,编程计算时钟同步算法的各中间变量,这个模块与时钟同步算法对应;同步授时模块,计算和预测每次系统时钟上升沿到来时的虚拟时钟,并根据得到的虚拟时钟产生同步秒脉冲和同步虚拟时间。

进一步地,所述相对斜率估计算法为,智能体设备以伪周期形式广播自己的数据包,以智能体设备j和智能体设备i为例,当智能体设备j接收到邻居智能体设备i发送的数据包后,按照如下公式计算智能体设备j的相对斜率量

1)如果及τj(lid)-τj(0id)-gji>0,

2)其它情况

其中gji及hj是可人为取值的正常量,gji≥Mjiαj(Mji表示智能体设备i发送数据包到智能体设备j的传输时延的上确界,αj表示智能体设备j的本地时钟的斜率),hj>0,l表示智能体设备i所发数据包的序号,τi(li)和τi(0i)分别表示智能体设备i第l次和初次发送数据包时所标记的发送时间戳,τj(lid)和τj(0id)分别表示智能体设备j接收到智能体设备i发送的第l次和初次数据包时所记录的接收时间戳。

为降低测量噪声的影响,当智能体设备j在计算得到相对斜率量之后,按如下公式对其进行低通滤波处理,

其中增益ρe为常数,ρe∈(0,1),ηij(l)为相对斜率低通滤波后的量,ηij(0)=1。

进一步地,所述数据包包括:斜率补偿量,相位补偿量和发送时间戳。所述智能体设备一次发送数据包的内容包括:上述三个量,或者从上述三个量中选取一部分量。

进一步地,所述斜率补偿算法为,当智能体设备j对相对斜率量完成低通滤波处理后,按照如下公式计算斜率补偿量

其中增益ρα为常数,ρα∈(0,1),k为智能体设备j数据更新的次数,k≥l。对于所述智能体设备j,在所述斜率补偿算法,所述相位补偿算法和所述时延补偿算法中,计数器k均一样。

进一步地,所述相位补偿算法为,当智能体设备j接收到智能体设备i发送的数据包后,按照如下公式计算相位补偿量

其中增益ρβ为常数,

进一步地,所述时延补偿算法为,智能体设备j根据第k次和(k-1)次的相位补偿量的差值反馈计算时延补偿量Dj(k)。计算公式如下,

其中δ是一个正常数,表示无线传感网中斜率补偿量的最大值),Dj(0)=0。

进一步地,所述时延补偿算法还包括如下的变换形式,

进一步地,所述时延补偿算法包括,所有根据相位补偿量的斜率信息来反馈计算时延补偿量的算法。

进一步地,所述虚拟时钟产生算法为,智能体设备j以伪周期的形式标记一个时间戳然后读取存储的最新的斜率补偿量和相位补偿量按照如下公式计算虚拟时钟

其中n表示智能体设备j标记时间戳的次数。

进一步地,序列号更新模块,每次所述智能体设备开机后,都自动读取存储的序列号数据,该数据自动加1,得到新的数值后一方面覆盖原来存储的数据,另一方面被写入到数据包中,每次都随数据包一起发送。

进一步地,所述发送时间戳的标记根据要求发送数据包次数的不同,有两种不同的标记方法,分别为:

1)直接标记,所述数据包发送后,通过检测指示管脚的边沿信号(上升沿或下降沿)来标记发送时间戳。

2)间接标记,先标记一个发送时间戳,然后统计出该时间戳与指示管脚边沿信号之间的时间差,用先标记的时间戳加上这一时间差得到新的时间戳,以新的时间戳作为发送时间戳。

进一步地,所述接收时间戳的标记,采用先标记,后处理的方式完成。先标记是所述收发时间戳标记模块根据指示管脚的边沿信号预先标记一个接收时间戳。后处理是把预先标记的接收时间戳输出到所述内核控制模块,所述内核控制模块对指示管脚的边沿信号和对应的数据包的源地址进行分析,然后再做丢包或者保存等处理。

进一步地,所述内核控制模块可分为发送控制模块和接收控制模块。所述发送控制模块包括:控制数据收发模块完成数据包的发送。所述接收控制模块包括:控制数据收发模块完成数据包的接收;结合所述发送控制模块的状态和对数据包源地址的分析,完成接收时间戳的标记;执行邻居智能体设备开关机检测程序;完成数据分发,存储和丢包等处理。

进一步地,所述邻居智能体设备开关机检测程序为,所述智能体设备首次接收某个邻居所述智能体设备的数据包时,先保存数据包中的序列号和对应的初始收发时间戳。在后续接收数据包时,根据数据包中的序列号与存储的序列号是否相等来判断邻居所述智能体设备是否关机再开机。如果相等,则认为邻居智能体设备没有开机再关机;如果不相等,则认为邻居智能体设备开机再关机,这时智能体设备就会舍去存储的序列号和初始收发时间戳,然后以现在记录的序列号和收发时间戳作为新的序列号和初始收发时间戳被保存,确保系统的正常运行。

进一步地,所述预测计算是,所述智能体设备以虚拟时钟产生算法得到的虚拟时钟为基础,通过加法的形式预测出每次系统时钟上升沿到来时对应的虚拟时钟。

进一步地,所述产生同步秒脉冲是,所述虚拟时钟每记满一固定的数值a后,就产生一次同步秒脉冲。所述产生同步虚拟时间是,每产生一次所述同步秒脉冲之后,就标记一次所述虚拟时钟,用这个虚拟时钟除以数值a,取商的整数部分作为同步虚拟时间。数值a是一个可人为取值的正整数,包括但不限于,a取本地时钟记录1s长度所对应的数值。

进一步地,所述同步授时就是,所述同步秒脉冲通过芯片的一个管脚输出,所述同步虚拟时间在两个同步秒脉冲的中间时间区域,按照用户需要的协议(一般为UART串口协议)输出。用户通过检测同步秒脉冲和接收同步虚拟时间就可完成对时间的获取。

进一步地,所述本地时钟是智能体设备中的晶振驱动的计数器,也就是对晶振的上升沿或者下降沿进行计数,并输出数值。

有益效果:本发明与现有技术相比,提供一种应用于无线传感网的无误差累积的时钟同步系统,通过采用伪周期的形式进行通讯,使得整个系统的数据交换变得十分灵活。采用增大时间跨度的方法来压制传输时延对斜率补偿量的影响,使得各智能体设备的斜率补偿量渐进收敛,同步精度有界收敛。再就是采用常增益的方式,大幅度降低了整个算法的计算量,减少了硬件资源和能量的消耗。通过根据相位补偿量的斜率信息来反馈计算时延补偿量,对传输时延进行了补偿,使得各智能体设备的相位补偿量有界收敛。这从根本上消除了因相位补偿量发散导致的数据溢出这一问题。再就是这种通过斜率信息来反馈补偿时延的方式,并没有额外增加数据包的发送次数,使得智能体设备之间程序耦合度低。补偿的时延也进一步提高了虚拟时钟的同步精度。还有就是,通过把时钟同步算法转换成“同步秒脉冲+同步虚拟时间”的方式来提供授时,使得授时方式十分简单,很方便底层硬件的应用,提高了实用性。

由于提出的时钟同步系统对传输时延能有效压制和补偿,再就是该系统是基于切换网络拓扑结构,这使得系统能有效应对数据丢包,传输延迟等实际突发情况,提高了整个系统的稳定性和实用性。

附图说明

图1是本发明实施例的结构示意图;

图2是本发明实施例的时钟同步算法的计算流程图;

图3是本发明实施例的智能体设备的工作流程图;

图4是本发明实施例的智能体设备的硬件结构示意图;

图5是本发明实施例的产生“连续”的虚拟时钟的电路结构图。

具体实施方式

为使本领域的技术人员能更好地理解本发明的技术方案,下面结合附图和具体实施例对本发明作进一步的详细说明。

图1是本发明实施例的一种应用于无线传感网的无误差累积的时钟同步系统的结构示意图。该系统包括多个智能体设备,智能体设备是时钟同步算法运行的载体,每个设备中都运行相同的时钟同步算法。智能体设备之间通过无线网络进行通信。

本发明实施例中,智能体设备之间是通过无线网络连接的,但并不局限于无线网络这一种方式,也可以是有线网络连接,有线与无线网络混合连接等。

本发明实施例中,系统的通信拓扑为4*4的无向网格图,但并不局限于固定数量的节点和无向网格图这一种拓扑,可以是任意规模的节点组成的任意一致有根图这类拓扑。

首先介绍时钟同步算法,它一共包括相对斜率估计算法,斜率补偿算法,相位补偿算法,时延补偿算法和虚拟时钟产生算法。

在时钟同步的过程中,各智能体设备i(i∈N,是智能体设备编号的集合)以伪周期形式广播自己的数据包,该数据包包括斜率补偿量,相位补偿量和发送时间戳。当邻居智能体设备j接收到这个数据包时,就立刻标记自己的接收时间戳,并存储接收到的数据包,然后按照时钟同步算法产生虚拟时钟。

计算相对斜率量:智能体设备以伪周期形式广播自己的数据包,以智能体设备j和智能体设备i为例,当智能体设备j接收到邻居智能体设备i发送的数据包后,按照如下公式计算智能体设备j的相对斜率量

1)如果及τj(lid)-τj(0id)-gji>0,

2)其它情况

其中gji及hj是可人为取值的正常量,gji≥Mjiαj(Mji表示智能体设备i发送数据包到智能体设备j的传输时延的上确界,αj表示智能体设备j的本地时钟的斜率),hj>0,l表示智能体设备i所发数据包的序号,τi(li)和τi(0i)分别表示智能体设备i第l次和初次发送数据包时所标记的发送时间戳,τj(lid)和τj(0id)分别表示智能体设备j接收到智能体设备i发送的第l次和初次数据包时所记录的接收时间戳。

为降低测量噪声的影响,当智能体设备j在计算得到相对斜率量之后,按如下公式对其进行低通滤波处理,

其中增益ρe为常数,ρe∈(0,1),ηij(l)为相对斜率低通滤波后的量,ηij(0)=1。

计算斜率补偿量:当智能体设备j对相对斜率量完成低通滤波处理后,按照如下公式计算斜率补偿量

其中增益ρα为常数,ρα∈(0,1),k为智能体设备j数据更新的次数,k≥l。对于所述智能体设备j,斜率补偿算法,相位补偿算法和时延补偿算法中,计数器k均一样。

计算相位补偿量:当智能体设备j接收到智能体设备i发送的数据包后,按照如下公式计算相位补偿量

其中增益ρβ为常数,

计算时延补偿量:智能体设备j根据第k次和(k-1)次的相位补偿量的差值反馈计算时延补偿量Dj(k)。计算公式如下,

其中δ是一个正常数,表示无线传感网中斜率补偿量的最大值),Dj(0)=0。需要说明的是,上式只是计算时延补偿量的一种具体方法,它还有多种变换形式,如但根本思想都是利用相位补偿量的斜率信息来反馈计算时延补偿量。

计算虚拟时钟:智能体设备j以伪周期的形式标记一个时间戳然后读取存储的最新的斜率补偿量和相位补偿量按照如下公式计算虚拟时钟

其中n表示智能体设备j标记时间戳的次数。

接下来介绍智能体设备。智能体设备每次开机后,都自动更新序列号,更新后的序列号要覆盖原来的数据,并且每次都要随数据包一起发送。这是为了辅助邻居智能体设备检测该设备是否关机再开机。本发明提供的时钟同步算法为压制时延噪声的影响,采用固定初始时间戳的方式来计算相对斜率,所以需要寄存初始时间戳。当一个智能体设备关机后再重新打开,它的初始时间戳就发生了变化,但邻居智能体设备记录的初始时间戳并没有自动更新。这将会导致系统运行错误。为解决这一问题,采用对比序列号的方法来完成设计。

智能体设备主要包括数据收发模块,收发时间戳标记模块,内核控制模块,算法计算模块和同步授时模块。

数据收发模块:该模块受内核模块控制,是发送和接收数据包的执行机构,智能体设备之间通过该模块建立网络连接。

收发时间戳标记模块:该模块根据指示管脚的边沿信号,标记发送和接收数据包时所对应的本地时钟。智能体设备工作在不同功能时,标记时间戳有所不同。当工作在发送功能时,有两种不同的发送时间戳标记方法,分别如下:

1)直接标记法。数据包发送后,通过检测指示管脚的边沿信号(上升沿和下降沿)来标记发送时间戳。

2)间接标记法。先标记一个发送时间戳,然后统计出该时间戳与指示管脚边沿信号之间的时间差,用先标记的时间戳加上这一时间差得到新的时间戳,以新的时间戳作为发送时间戳。

直接标记法在第一次发送数据包时,因发送时间戳没有随数据包一起发送,所以还需要再发送一次发送时间戳,从而组成一份完整的数据包。直接标记法虽然标记精度高,但增加了数据包的发送次数,通信效率有所下降。间接标记法是通过统计的方法提前计算出发送时间戳,从而可使一次就能发送一份完整的数据包。这种方法虽然没有额外增加数据包的发送次数,保证了通信效率,但标记精度有所下降。实际设计时,可以根据应用环境来选择标记方法。

智能体设备标记接收时间戳,也是根据指示管脚的边沿信号来标记的。而发送数据包时,指示管脚同样会产生边沿信号。为防止漏标记,采用先标记,后处理的方式完成。先标记就是只要指示管脚有边沿信号产生,就预先标记一个接收时间戳。后处理是把预先标记的接收时间戳输出到内核控制模块,内核控制模块对该时间戳进行再处理。

内核控制模块:该模块的主要功能有,控制数据包的发送和接收;协同收发时间戳标记模块标记接收时间戳;解析接收的数据包,完成数据的分发、存储和丢包等处理。

内核模块按结构可分为发送控制模块和接收控制模块,这两个模块分别控制数据包的发送和接收,数据收发模块就是这两个模块的执行机构。当发送控制模块检测到伪周期发送命令后,该模块就进入预运行状态,然后判断接收控制模块这时是否正在运行。如果接收控制模块在运行,发送控制模块就等待该模块运行结束后再发送数据包。如果没有运行,发送控制模块就发送数据包。发送数据包就是发送控制模块把数据包输入到数据收发模块,然后启动发送命令。

对于接收控制模块,它由指示管脚的边沿信号触发。当该模块检测到边沿信号后,就判断发送控制模块是否在运行。如果在运行,表明边沿信号是由发送数据包产生的,接收控制模块就返回空闲状态,并释放收发时间戳标记模块输入的接收时间戳。如果没有运行,接收控制模块就读取数据收发模块中缓存的数据包。当读完数据包后,通过数据包中的源地址信息来判断,该数据包是否来自邻居智能体设备。如果是,则保存该数据包和接收时间戳。如果不是,则丢掉这个数据包和接收时间戳。

在把数据包和接收时间戳分发给算法计算模块之前,内核控制模块还要检测邻居智能体设备是否关机再开机。内核模块首次接收某个邻居智能体设备的数据包时,先保存数据包中的序列号和对应的初始收发时间戳。在后续接收数据包时,根据数据包中的序列号与存储的序列号是否相等来判断邻居智能体设备是否关机再开机。如果相等,则认为邻居智能体设备没有开机再关机,这时就把数据包和收发时间戳分发给算法计算模块;如果不相等,则认为邻居智能体设备开机再关机,这时智能体设备就会舍去之前存储的序列号和初始收发时间戳,并以现在记录的序列号和收发时间戳作为新的序列号和初始收发时间戳被保存,然后返回到空闲状态,等待下一次触发。

算法计算模块:该模块就是在智能体设备的硬件芯片中实现时钟同步算法,它的组成结构与同步算法一一对应。每个智能体设备都有一个本地时钟,它由一个系统时钟驱动的加法计数器来完成设计。当算法计算模块接收到内核控制模块分发的数据后,就开始在硬件中按照时钟同步算法的顺序,计算相对斜率量,对相对斜率量做低通滤波处理,计算斜率补偿量,计算相位补偿量,计算时延补偿量和计算虚拟时钟。当产生新的虚拟时钟后就发送给同步授时模块。

同步授时模块:该模块以算法计算模块输入的虚拟时钟为基础,通过加法的形式预测出每次系统时钟上升沿到来时的虚拟时钟,并根据得到的虚拟时钟产生同步秒脉冲和同步虚拟时间。

虚拟时钟产生模块只能得到某些特定时刻的虚拟时钟,要产生同步秒脉冲信号,就要计算出每次系统时钟上升沿到来时的虚拟时钟。由时钟同步算法可知,当系统时钟的上升沿到来时,本地时钟加1,对应的虚拟时钟就要加一个斜率补偿量的值。以算法计算模块输入的虚拟时钟为基础,每次系统时钟上升沿到来时就加最新存储的斜率补偿量,这样就得到了满足要求的虚拟时钟。每次算法计算模块完成计算后,同步授时模块就再以新的虚拟时钟为基础,按照上述的方法继续预测产生虚拟时钟。

产生同步秒脉冲是,虚拟时钟每记满一个固定数值a后(a一般选择本地时钟记录1s所表示的数值),就产生一次同步秒脉冲。产生同步虚拟时间是,每产生一次同步秒脉冲之后,同步授时模块就标记一次虚拟时钟,用这个虚拟时钟除以数值a,取商的整数部分作为同步虚拟时间。在提供授时服务时,同步秒脉冲通过芯片的一个管脚输出,同步虚拟时间在两个同步秒脉冲的中间时间区域,按照用户需要的协议(一般为UART串口协议)输出。用户通过检测同步秒脉冲和接收同步虚拟时间就可完成对时间的获取。这种通过“同步秒脉冲+同步虚拟时间”的方式来提供授时,使得授时协议十分简单,很方便底层硬件的应用,具有实用性强等优点。

图2是本发明实施例提供的时钟同步算法的计算流程图,当智能体设备完成数据包的接收后,就按照图2的时钟同步算法流程计算虚拟时钟。参考图2,该算法包括:

相对斜率估计算法;

低通滤波算法;

斜率补偿算法;

相位补偿算法;

时延补偿算法;

虚拟时钟产生算法。

当斜率补偿量和相位补偿量计算完成后,就覆盖原来保存的数据。虚拟时钟产生算法以伪周期的形式标记本地时钟,然后读取保存的斜率补偿量和相位补偿量计算虚拟时钟,并把得到的虚拟时钟输出到同步授时模块。

图3是本发明实施例的智能体设备的工作流程图,需要说明,图3的左边模块(步骤15对应的程序)与右边模块(步骤14对应的程序)不是选择运行的关系,而是相互独立的。智能移动设备的工作流程具体如下:

步骤1,智能体设备上电启动。

步骤2,初始化智能体设备。初始化包括对一些变量设置初始值,复位存储器等。

步骤3,执行序列号更新程序。每次智能体设备开机初始化之后,就自动读取存储的序列号数据,该数据自动加1,得到新的数值后一方面覆盖原来存储的数据,另一方面被写入到数据包中,每次数据包发送时,都把它一起发送。

步骤4,返回空闲状态。当智能体设备完成初始化之后,再就是不收发数据和不计算时,智能体设备就都返回到空闲状态。

步骤5,判断是否为发送命令。如果是发明命令,则进入步骤6。如果不是发送命令,则返回到步骤4。

步骤6,判断接收数据包线程是否运行。如果接收数据包线程没有运行,则表明智能体设备可以发送数据包,进入步骤8。如果接收数据包线程正在运行,则表明智能体设备暂时不能发送数据包,进入步骤7。

步骤7,等待接收线程结束。

步骤8,使能标记发送时间戳。在发送数据之前,先标记一个发送时间戳。

步骤9,计算新的发送时间戳。读取存储的时间差,在发送数据包之前完成时间戳的计算,并把计算后的时间戳作为发送时间戳。

步骤10,向TXFIFO中装载发送数据包。把发送时间戳,斜率补偿量,相位补偿量写入到射频芯片的TXFIFO中。

步骤11,判断指示管脚是否为高电平。在发送数据包之前,通过判断指示管脚是否为高电平来确定射频芯片的工作状态。如果为高电平,表明射频芯片工作在接收状态,则进入步骤12;如果为低电平,表明射频芯片处于空闲状态,则进入步骤13。

步骤12,清除TXFIFO中装载的数据包。如果智能体设备这时处于接收状态,表明此次发送是无效的,所以要清除TXFIFO中的数据包,终止此次发送,并进入步骤18。

步骤13,启动发送数据包。

步骤14,判断指示管脚是否有边沿信号产生。如果有边沿信号产生,则进入步骤15,如果没有上升沿信号产生,则进入步骤4继续等待。智能体设备不仅在接收数据包时,指示管脚会产生边沿信号,在完成发送数据包后,指示管脚也会产生边沿类信号。所以需要判断产生边沿信号的机理。

步骤15,标记接收时间戳。当有边沿信号产生时,表明可能有数据包接收,也可能没有。为防止漏标记接受时间戳,采用的是先标记,后判断的方法。

步骤16,判断发送线程是否启动。如果已启动,则进入步骤17;如果没有,则进入步骤19。

步骤17,判断是否已经启动TXFIFO中的数据发送。如果是,则进入步骤28,返回空闲状态;如果不是,则进入步骤18。数据包的发送状态分前后两半部分。前半部分是未启动TXFIFO中数据包的发送,后半部分是已启动TXFIFO中数据包的发送。当发送状态处于前半部分时,可以确定指示管脚的边沿信号是由接收数据包产生,并且接收的数据包被缓存到RXFIFO中,但这时智能体设备处于发送状态,不能立即读取RXFIFO中的数据。当发送状态处于后半部分时,可以确定指示管脚的边沿信号是由发送数据包产生。

步骤18,等待发送线程结束。

步骤19,等待数据包接收完成。

步骤20,判断RXFIFO是否发生数据溢出。如果射频芯片的RXFIFO发生数据溢出,则进入步骤21;如果没有溢出,则进入步骤22。

步骤21,执行数据溢出程序。就是把RXFIFO中未溢出的数据读出并保存,已溢出的数据则被清除,然后重新启动射频芯片。

步骤22,读取数据。从RXFIFO中读出数据包并保存。

步骤23,判断数据包是否来邻居智能体设备。如果是,则进入步骤24;如果不是,则丢掉该数据包,并进入步骤28,等待下一次的数据接收。

步骤24,判断序列号是否相等。智能体设备首次接收某个邻居智能体设备的数据包时,除了要保存初始时间戳,还要保存数据包中的序列号。在后续接收数据包时,根据数据包中的序列号与存储的序列号是否相等来判断邻居智能体设备是否关机再开机。如果相等,则认为邻居智能体设备没有关机再开机,进入步骤26;如果不相等,则认为邻居智能体设备关机再开机,进入步骤25。

步骤25,重新存储序列号和时间戳。智能体设备舍去存储的序列号和初始时间戳,然后以现在记录的序列号和时间戳作为新的序列号和初始时间戳被保存。

步骤26,同步算法计算。计算时钟同步算法的各中间变量,完成虚拟时钟的计算。

步骤27,同步授时。以产生的虚拟时钟为基础,预测出每次系统时钟上升沿到来时的虚拟时钟,并用得到的虚拟时钟产生同步秒脉冲和同步虚拟时间,从而完成同步授时。

步骤28,返回。就是返回到步骤4,等待下一次的触发。

具体而言,图4示出了本发明实施例的智能体设备的具体硬件结构。如图4所示,智能体设备由射频芯片和FPGA芯片组成。智能体设备之间通过射频芯片组建无线网络,从而完成数据的通信。射频芯片有点对点和广播两种通信模式。点对点模式就是一个智能体设备发送数据包到预先设定的目标地址的智能体设备,其它地址的智能体设备则不接受该数据包。广播模式就是一个智能体设备发送数据包,这时只要处在该智能体设备发送半径内的其它智能体设备都可以接收数据包,而不用再匹配地址。本实例以广播模式发送数据包。

SPI1收发器与射频芯片一起组成数据收发模块。不管是SPI1收发器还是SPI2收发器,FPGA都是主设备,射频芯片和Flash存储器都是从设备。FPGA在与这两个从设备进行通信时,都是采用SPI总线协议。SPI1收发器在向射频芯片发送数据的时候,是发送一份预先设定好的固定长度的数据包,数据包包括斜率补偿量,相位补偿量和发送时间戳。但在接收数据时,SPI1收发器读取的数据长度不固定,而是随接收数据包长度的变化而变化。这是因为网络中,每个智能体设备都是以伪周期的形式广播数据包,当智能体设备比较多时,它们发送数据的时间段会出现重合,这时就会产生信道竞争,容易引起数据丢失。当数据包有数据丢失后,这个数据包就是一个无效的数据包,所以需要从射频芯片的缓存模块RXFIFO中把这一数据包精确读出并剔除。

智能体设备在发送和接收数据包时,射频芯片的SFD管脚(发送/接收指示管脚)都会产生一个上升沿信号。在具体实施中,发送和接收时间戳的标记会有一些不同。

发送时间戳的标记。有两种不同的发送时间戳标记方法,分别如下:

1)直接标记法。数据包发送后,通过检测SFD管脚的上升沿信号来标记发送时间戳。由于发送时间戳没有随数据包一起发送,所以需要发送两次数据包,才能组成一份完整的数据包。这种方法虽然标记精度高,但增加了发送次数,通信效率有所下降。

2)间接标记法。在发送数据包之前先标记一个发送时间戳,在发送数据包时根据SFD管脚的上升沿再标记一个时间戳。通过统计的方法求出这两个时间戳差值的均值,然后把这一均值固化到程序中。接下来在每次发送数据包时,先标记时间戳,然后加上固化的均值,得到新的时间戳,以这个新的时间戳作为发送时间戳。这种方法可以确保一次就发送一份完整的数据包,但标记精度有所降低。

接收时间戳的标记。接收时间戳的标记同样是通过检测SFD管脚的上升沿信号来完成的。当智能体设备发送数据包时,SFD管脚也会产生上升沿信号。为避免漏标记,采用先标记,后处理的方式来完成。先标记就是只要检测到SFD管脚的上升沿信号,就预先标记一个接收时间戳。后处理是在内核控制模块中完成。

内核模块是整个电路的控制核心,主要功能有,协调SPI的发送和接收,以避免时间碰撞;协同收发时间戳标记模块完成时间戳的标记和存储;再就是解析接收的数据包,完成数据的分发、存储和丢包等处理。

内核模块按结构可分为发送控制模块和接收控制模块,这两个模块分别控制数据包的发送和接收,数据收发模块就是这两个模块的执行机构。当发送控制模块检测到伪周期发送命令后,该模块就进入预运行状态,然后判断接收控制模块是否正在运行。如果接收控制模块在运行,发送控制模块就等待该模块运行结束后再发送数据包。如果没有运行,发送控制模块就发送数据包。发送数据包就是发送控制模块把数据包输入到数据收发模块,然后启动发送命令。

对于接收控制模块,它由SFD管脚的上升沿信号触发。当该模块检测到SFD管脚的上升沿信号后,就判断发送控制模块是否在运行。如果在运行,表明上升沿信号是由发送数据包产生的,接收控制模块就返回空闲状态,并释放收发时间戳标记模块输入的接收时间戳。如果没有运行,接收控制模块就读取数据收发模块中缓存的数据包。当读完数据包后,通过数据包中的源地址信息来判断,该数据包是否来自邻居智能体设备。如果是,则保存该数据包和接收时间戳。如果不是,则丢掉这个数据包和接收时间戳。

在把数据包和收发时间戳分发给算法计算模块之前,还要检测邻居智能体设备是否关机再开机。Flash存储器就是用来辅助这一功能。时钟同步算法为压制时延噪声的影响,采用固定初始时间戳的方式来计算相对斜率,所以需要寄存初始时间戳。当一个智能体设备关机后再重新打开,它的初始时间戳就发生了变化,但邻居智能体设备记录的初始时间戳并没有自动更新。为解决这一问题,首先是在Flash存储器中开辟一个序列号数据存储区。智能体设备每次开机后,都自动读取该区域的数值,然后加1。得到新的数值后一方面覆盖该区域中原来存储的数据,另一方面被写入到数据包中的序列号区域,每次都随数据包一起发送。邻居智能体设备在第一次接收数据包时,就寄存收发时间戳和数据包中的序列号。在后续接收数据中,如果数据包中的序列号与最开始寄存的值相等,邻居智能体设备则认为对方没有关机再开机。如果不相等,邻居智能体设备则认为对方已经关机再开机了。这时邻居智能体设备就舍去存储的序列号和收发时间戳,并以现在记录的时间戳和序列号作为新的收发时间戳和序列号,然后返回到空闲状态,等待下一次触发。这种设计在不增加数据包发送次数的前提下,保证了系统的正常运行。

算法计算模块就是在智能体设备的硬件芯片中实现时钟同步算法,它的内部结构与同步算法一一对应。每个智能体设备都有一个本地时钟,它由一个系统时钟驱动的加法计数器来完成设计。当算法计算模块接收到内核控制模块分发的数据后,就开始在硬件中按照时钟同步算法的顺序,计算相对斜率量,对相对斜率量进行低通滤波处理,计算斜率补偿量,计算相位补偿量,计算时延补偿量和计算虚拟时钟。当产生新的虚拟时钟后就发送给同步授时模块。

同步授时模块是以算法计算模块输入的虚拟时钟为基础,通过加法的形式预测出每次系统时钟上升沿到来时的虚拟时钟,并根据得到的虚拟时钟产生同步秒脉冲和同步虚拟时间。

虚拟时钟产生算法模块只能得到某些特定时刻的虚拟时钟,要产生同步秒脉冲信号,就要计算出每次系统时钟上升沿到来时的虚拟时钟。由时钟同步算法可知,当系统时钟的上升沿到来时,本地时钟就加1,对应的虚拟时钟就要加一个斜率补偿量的值。以输入的虚拟时钟为基础,每次系统时钟上升沿到来时就加存储的斜率补偿量,这样就得到了满足要求的虚拟时钟。每次虚拟时钟产生模块完成计算后,同步授时模块就再以新的虚拟时钟为基础,继续产生虚拟时钟。

产生同步秒脉冲是,虚拟时钟每记满一个固定数值a后(a一般选择本地时钟记录1s所表示的数值),就产生一次同步秒脉冲。产生同步虚拟时间是,每产生一次同步秒脉冲之后,同步授时模块就标记一次虚拟时钟,用这个虚拟时钟除以a,取商的整数部分作为同步虚拟时间。在提供授时服务时,同步秒脉冲通过芯片的一个管脚输出,同步虚拟时间在两个同步秒脉冲的中间时间区域,按照用户需要的协议(一般为UART串口协议)输出,用户根据需要,通过检测同步秒脉冲和接收同步虚拟时间来完成对时间的获取。这种通过“同步秒脉冲+同步虚拟时间”的方式来提供授时,使得授时协议十分简单,很方便底层硬件的应用,具有实用性强等优点。

具体而言,图5示出了本发明实施例的产生“连续”的虚拟时钟的电路结构图。这里的“连续”就是产生得到每次系统时钟上升沿到来时的虚拟时钟。同步授时模块根据得到的虚拟时钟就可产生同步秒脉冲和同步虚拟时间。从图5中可以看出,该电路主要由虚拟时钟产生模块和预测模块两部分组成。

由时钟同步算法可知,每次系统时钟的上升沿到来时,本地时钟就加1,对应的虚拟时钟就要加一个斜率补偿量的数值。为方便表述,假设斜率补偿量是一个40bits的浮点数,用drift_cmpen(39:0)表示,其中drift_cmpen(39)表示整数部分,drift_cmpen(38:0)表示小数部分。为在一个系统时钟周期内完成浮点数的加法计算,设计中把斜率补偿量的整数和小数两个部分,分别输出到整数计算模块和小数计算模块,两个计算模块通过进位的方式连接。每次系统时钟的上升沿到来时,各加法器就计算一次,这样就可预测出“连续”的虚拟时钟的数值vir_time_sync。

图5中,MUX是MUX多路复用器,该复用器由控制端CTR选择导通路径。当CTR=0时,data2与data1导通,当CTR=1时,vir_time与data1导通。CTR由虚拟时钟产生模块控制,当完成虚拟时钟的计算后,该模块才把CTR置为高电平,并且只持续一个系统时钟周期。其余的时段,CTR均为0。MUX多路复用器可以看成是一个重新装载器。

当虚拟时钟产生模块通过MUX多路复用器把虚拟时钟装载到预测模块时,这时的虚拟时钟应该是装载时刻的本地时钟对应的虚拟时钟。而虚拟时钟产生模块需要多个系统时钟周期才能完成计算,所以需要先测出标记时刻与装载时刻的时间差,然后把这个差值加到标记时刻中,这样就可得到装载时刻的虚拟时钟。由于预测模块的电路都是采用加法器完成式设计的,所以能预测出每次系统时钟上升沿到来时的虚拟时钟。

值得说明的是,本实施例提供的智能体设备的硬件结构,仅仅是一种示例的实现形式。在不背离本发明的精神和原理的前提下,智能体设备的硬件结构可以有多种实现形式。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1