一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于有线连接的低开销的时间同步方法

2022-12-13 21:42:55 来源:中国专利 TAG:


1.本发明属于网络通信领域,具体为一种基于有线连接的低开销的时间同步方法。


背景技术:

2.由于每个设备的本地时钟的频率都存在一定的误差,随着时间的推移误差会持续累积,各设备时间的差异会持续扩大。在通信、电力、定位、控制等领域,设备需要在指定的时间完成指定的动作,因此各设备的本地时间需要保持高度一致性,设备之间必须通过持续的通信进行对时,保证各设备的本地时钟维持在一个可以容忍的误差范围内。
3.时间同步方法分为两种,分别是单向时间同步和双向时间同步。双向时间同步为点对点的方式,通过双向发送数据,抵消传播导致的延迟。当需要同步的节点数量越多,在时间同步上的开销就会越大,并不适合低速且大规模的网络。单向时间同步方法为广播方式,其同步开销与节点数无关,但由于从发送端获取到时间戳到接收端接收到时间戳之间的时间是未知的,会受到收发两端中断速度、传输信道访问延迟、传输延迟等因素的影响,造成几毫秒至上百毫秒的误差,因此,对这些时间的估测会对单向时间同步的精度造成很大的影响。


技术实现要素:

4.为克服现有技术存在的缺陷,本发明公开了一种基于有线连接的低开销的时间同步方法。
5.本发明所述基于有线连接的低开销的时间同步方法,包括各个下级设备与主设备的时间同步方法,所述下级设备与主设备通过传输信道连接,其特征在于,所述下级设备与主设备的时间同步方法包括以下步骤:s0.判断下级设备是否首次进行时间同步,是则进行双向时间同步,否则进行单向时间同步;所述双向时间同步的具体方法为:s1.下级设备的发送设备提交前导数据;s2.记录下级设备检测传输信道上前导数据开始发送的时刻并定义为t2,s3. 下级设备将t2加入到待发送数据中一并发送;s4. 主设备检测传输信道上是否有下级设备发送的前导数据,检测到的时刻记为t1; s5. 主设备向自己的发送设备提交前导数据;该提交时间定义为t2s6. 主设备检测传输信道上是否有主设备自己发送的前导数据,是则表示前导数据开始发送,开始发送的时刻定义为t3;s7. 主设备将t3、t1时间加入待发送数据中一并发送; s8. 下级设备b检测传输信道是否有主设备发送的前导数据,检测到的时刻记为t3;
s9. 下级设备开始处理时间同步,并记录当前时间为t4,定义第三误差time3=t4-t3;并计算出第二误差time2=(t3-t2-(t3-t1))/2,计算出当前主设备a的时间为t4=t3 time2 time3,下级设备将自身当前时间修改为t4,完成下级设备与主设备的双向时间同步。
6.优选的,所述单向时间同步的具体步骤为:s10.记序列号为n,设置n的初始值为0,设置循环次数n;s11. 主设备向自己的发送设备提交前导数据,主设备检测传输信道上是否有自己发送的前导数据,检测到的时刻为t(n);s12.主设备将t(n)加入待发送数据中;s13.下级设备检测传输信道上是否有数据,检测到的时刻记为t(n),形成[t(n),t(n)]数据对;s14. n加1,重复步骤s11至s13,直至n=n后,进入步骤s15;s15.将所有[(t(n),t(n)]数据对,n∈[0,n-1]进行回归计算;回归计算公式如下:下级设备开始处理时间同步,定义此时下级设备的时间为t5,根据回归计算公式第一行中t=at b time2的回归方程,令t=t5,计算主设备对应的时间t5 = a*t5 b time2 ;下级设备将当前时间修改为t5,完成下级设备的单向时间同步。
[0007]
优选的,检测传输信道上是否有数据由连接在传输信道上的设备内的外部中断控制器进行,检测方式为检测传输信道上是否出现上升沿或下降沿,出现则触发中断并判断传输信道上有数据。
[0008]
优选的,所述第二误差time2近似为0。
[0009]
优选的,还包括步骤s16,依据下级设备的时钟精度要求设置重复时间间隔,重复进行步骤s10~s15。
[0010]
优选的,设备与传输信道之间的数据收发通过连接在传输信道上的设备内的uart控制器进行。
[0011]
优选的,所述下级设备与主设备通过modbus协议通信,所述前导数据为modbus协议中数据的地址域和功能码。
[0012]
本发明具有如下技术优越性:1、本发明有效降低了单次时钟同步误差,可以减少时间同步次数,降低时间同步
对传输信道的占用,提高传输信道利用率。
[0013]
2、本发明利用有线网络拓扑稳定的特点,在设备接入时利用双向时间同步点对点测定了信号传播时间,并长期用于后续单向时间同步;3、本发明使用基于广播的单向时间同步方法维持时间同步,占用的带宽小,适用于低速但对时间同步敏感的场合;4、本发明直接监测传输信道,消除了数据编解码、等待时钟信号、系统中断等延迟造成的时间同步误差。
附图说明
[0014]
图1为本发明一个实施例中系统框图;其中设备a为主设备,设备b、c为需要与设备a的时钟进行同步的不同下级设备;图2为本发明所述时间同步方法的一个具体流程示意图;图3为本发明实施例中进行时间同步时主设备a和下级设备b的时间轴与数据传输时序示意图,图中t表示设备a的不同时间,t表示设备b的不同时间。
具体实施方式
[0015]
下面对本发明的具体实施方式作进一步的详细说明。
[0016]
本发明采用的技术方案如下,定义设备a为主设备,设备b为被同步的下级设备,设备a和设备b均包括自带的发送设备和接收设备用于发送和接收数据,并通过与传输信道连接的检测模块检测传输信道上是否有数据被发送或接收。
[0017]
设备a和设备b通过传输信道连接,二者通常作为一个完整的系统需要时间一致,需要将设备b的时间与设备a同步,设备a的时间用t表示,设备b的时间用t表示。本发明中,对时间同步采用单向时间同步和双向时间同步结合的方式处理进行。
[0018]
对数据传输总线上连接的各个设备之间产生的时间误差一般可分为4大部分。
[0019]
1. 发送端准备好时间数据后到数据被发送出去的时间间隔引起的第一误差time1;2. 数据从一个设备的发送端通过传输信道传输到另一设备接收端的时间间隔引起的第二误差time2;3. 数据从接收端接收到接收端处理的时间间隔引起的第三误差time3;4. 收发端双方时钟精确度和稳定度造成的第四误差time4。
[0020]
通过估测出这四部分的误差并采取措施消除,就可以提高单向时间同步的精度,通过直接进行检测信道数据传输时间,可以消除第一误差。
[0021]
而在双向时间同步中,由于双向时间同步原理,第四误差可以被抵消,只需要进行第二和第三误差的计算即可进行时间同步。
[0022]
本发明所述基于有线连接的低开销时间同步方法,包括以下步骤:s0.判断设备b如果不是首次进行时间同步,跳转至步骤s10,是首次进行时间同步,则进行双向时间同步,具体包括:s1.设备 b的发送设备提交前导数据,提交时间为t1;
s2. 设备b检测传输信道上前导数据开始发送的时刻并定义为t2,则第一误差time1=t2-t1;但第一误差由于在后续步骤s4、s6、s11中直接检测信道传输数据的时间,第一误差实际已不存在。
[0023]
s3. 设备b将t2加入待发送数据中;s4. 设备a检测传输信道上数据,时间记为t1;s5. 设备a向设备a的发送设备提交前导数据;该提交时间定义为t2s6. 设备a检测传输信道上前导数据开始发送的时刻定义为t3;s7. 设备a将t3、t1加入待发送数据中;s8. 设备b检测传输信道上数据,时间记为t3;s9. 设备b开始处理时间同步,并记录当前时间为t4,则第三误差time3=t4-t3;由于设备a向设备b发送数据所需时间,与设备b向设备a发送数据所需时间,可近似认为相等。因此可以计算出第二误差time2=(t3-t2-(t3-t1))/2,因此可以估计出当前设备a的时间为t4=t3 time2 time3,设备b将当前时间修改为t4,完成双向时间同步;s10.进行单向时间同步时,记序列号为n,初始设置n=0;s11. 设备a向自己的发送设备提交前导数据,设备a检测传输信道上前导数据开始发送的时刻t(n);s12. 设备a将t(n)加入待发送数据中;s13. 设备b检测传输信道上是否有数据,检测到的时刻记为t(n),形成[t(n),t(n)]数据对;s14. n=n 1,当n=n时,跳转到s15,否则跳转到s11;n为设置的循环次数;s15. 设备b在t5时开始处理时间同步,将所有[(t(n),t(n)]数据对,n∈[0,n-1]进行回归计算,以减少第四误差time4带来的影响。
[0024]
回归计算公式如下:根据上式第一行中t=at b time2的回归方程,将设备b的t5时刻代入,令t=t5,即可估计出设备b的时间为t5时设备a对应的时间t5 = a*t5 b time2设备b将当前时间修改为t5,完成单向时间同步;具体流程和时序如图2和图3所示。
[0025]
s16. 依据设备b的时钟精准度、稳定度和对时钟同步精度要求设置重复时间间隔,重复步骤s10~s15。
[0026]
其中,第二误差time2相对于其他几个误差通常较小,如果线材长度较短,或者对于同步精度要求并不是极其高时,time2很小,可以忽略不计,则可以省略部分步骤,第二误差time2直接视为0。
[0027]
前导数据可以使用数据域前的其他数据代替,例如可以使用modbus协议的地址域和功能码作为前导数据。
[0028]
图1所示的具体实施方式中,对于传输信道的检测可以使用单片机的外部中断控制器进行,检测传输信道上是否有数据由连接在传输信道和设备之间的外部中断控制器进行,检测方式为检测传输信道上是否出现上升沿或下降沿,出现则触发中断并判断传输信道上有数据。设备与传输信道之间的数据收发通过连接在传输信道和设备上的uart控制器进行。
[0029]
在使用外部中断控制器进行检测时,为减少外部中断对设备的不必要开销,在s2、s11步骤中,对于传输信道的检测可以在提交前导数据后再开启检测,在s4、s13步骤中对于传输信道的检测可以在设备b接收到第一个字节的前导数据后再开启中断进行检测,此时需要将第二误差time2增加传输对应前导数据的时间。
[0030]
具体实施例本实施例采用的系统框图如图1所示,数据传输协议以基于rs485数据总线的modbus协议为例;rs485数据总线包括一对数据线a 和b-,分别连接所有接口的a口和b口;时间同步方法的设备时间轴示意图如图2所示;所描述的时间同步方法的流程图如图3所示,实施例仅演示设备a和设备b进行时间同步的方法,其余同理,具体包含以下步骤:s0. 设备b接入网络后,由设备a或设备b发起时间同步;具体地,如果由设备a发起时间同步,在跳转到s1之前需要设备a向设备b发送一段时间同步的请求;判断设备b如果不是首次进行时间同步,跳转至步骤s10,是首次进行时间同步,则进行双向时间同步。
[0031]
本实施例中,如图1所示,发送设备和接收设备均为图1中的uart控制器,外部中断控制器作为检测模块检测传输信道上是否存在数据被发送和接收,传输信道为rs485总线。
[0032]
s1.记录设备 b的发送设备提交前导数据的提交时间t1;具体地,s1包括以下步骤:s101. 如果设备b不是首次进行时间同步,跳转至步骤s10,否则b将modbus的广播地址和功能码等作为前导数据传送给uart控制器的缓冲区;s102. 设备b开启外部中断,外部中断控制器的控制端口连接到rs485总线的a 线上,并设置为下降沿触发;此时外部中断控制器作为检测模块,实现检测传输信道上是否有数据传输的功能,rs485总线为传输信道。
[0033]
对外部中断控制器的触发机制,根据数据传输特点设置为上升沿或下降沿触发,当数据传输初始产生上升沿,则可采用上升沿触发,当数据传输初始产生下降沿,则可采用下降沿触发。
[0034]
s2. 设备b检测信道上前导数据开始发送的时刻t2 ,rs485总线开始发送后,a 线
上电平由高电平变为低电平,产生下降沿,触发设备b外部中断,b记录此时时间t2,第一误差time1=t2-t1,记录t2时间即可消除time1造成的误差;s3. 设备b将t2加入到uart控制器的缓冲区;s4. 设备a的外部中断控制器连接在rs485总线的a 数据线上,持续检测作为传输信道的a 数据线上的数据,当有数据传输时,下降沿被触发,时间记为t1;s5. 设备a在t2时刻向自己的发送设备即uart控制器提交前导数据,前导数据通过uart控制器的存储缓冲区进行数据发送;s6. 设备a检测传输信道,rs485开始发送后,a 上出现下降沿,记录此时时间t3;s7. 设备a将t3-t1加入到uart控制器中的存储缓冲区进行一并发送;s8. 设备b检测传输信道上数据,时间记为t3;s9. 设备b开始处理时间同步,并记录当前时间为t4,则第三误差time3=t4-t3;并可以计算出第二误差time2=(t3-t2-(t3-t1))/2,因此可以估计出当前设备a的时间为t4=t3 time2 time3,设备b将当前时间修改为t4,完成双向时间同步;s10.当需要进行单向时间同步时,n=0;s11. 设备a向自己的发送设备提交前导数据,设备a通过外部中断检测信道上前导数据开始发送的时刻,即设备a提交前导数据后rs485的a 上的首个下降沿出现的时刻t(n);s12. 设备a将t(n)加入待发送数据中;s13. 设备b检测信道上数据,检测到的时刻记为t(n),形成[t(n),t(n)]数据对;s14. n=n 1,当n《n时,跳转到s11,否则跳转到s15;s15. 设备b在t5时开始处理时间同步,将[(t(n),t(n)],n∈[0,n-1]进行回归计算,以减少第四误差time4带来的影响,得到回归方程,将t5代入即可估计出设备b的时间为t5时设备a对应的时间t5,设备b将当前时间t5修改为t5,完成单向时间同步。
[0035]
第四误差是不同时钟精确度和稳定度不同造成的一个变化的误差,但在短时间内,主从设备各自的时钟误差均可以视为线性方式增加的,两者时间与绝对时间会分别构成两条斜率和截距不同一次函数,因此通过一个一次线性函数可以将从设备的时间函数映射到主设备的时间函数上,而通过线性回归就可以求出该映射用的函数,并将第四误差造成的抖动去除,降低第四误差对时间同步的影响。
[0036]
具体地,s15的步骤包括以下步骤:s1501. 使用最小二乘法得出t(n)和t(n)的回归方程;

s1502. 设备b获取当前时间t5;s1503. 设备b将t5代入回归方程,估计出t5时刻设备a的时间t5;s1504. 设备b将本地时钟设置为t5;s16. 依据设备b的时钟精准度、稳定度和对时钟同步精度要求,在间隔一定时间后重复s11~s15;具体地,按照时钟误差保持在10ms的精度要求,时钟稳定度为20ppm,那么每500s需重复一遍s11~s15以维持时钟同步。
[0037]
基于上述基于有线连接的低开销的时间同步方法,采用信道数据传输时间检测消除了发送端准备好时间数据后到数据被发送出去的时间即第一误差time1;在单向时间同步中,由于从设备b在信道上出现信号时就检测到并记录了时间t(n),并且获取了时间同步时从设备b的当前时间t5,因此消除了数据从接收端接收到接收端处理的第三误差time3;通过双向时间同步基本消除了数据从一个设备发送端传输到另一设备接收端的第二误差time2;通过回归估计降低了收发端双方时钟精确度和稳定度造成的第四误差time4。以较低信道占用提高了单次时间同步的精度,并以此降低时间同步的频率,减少维持时间同步对信道的占用时间。
[0038]
本发明所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对于现有技术作出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器或者网络设备)执行本发明各个实施例所述方法的全部或部分步骤,前述的存储介质包括:u盘,移动硬盘,只读存储器(rom,read-only memory), 随机存取存储器(ram,random access memory),磁碟或者光盘等各种可以存储程序代码的介质。
[0039]
前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献