北斗GPS同步时钟(授时系统)技术原理详解

1. 前言

由计算机网络系统组成的 分布式系统 ,若想协调一致进行: IT 行业的  整点开拍    秒杀   “Leader 选举  ,通信行业的  同步组网  之类业务处理,毫秒级甚至微秒级的 时间同步 是重要基础之一。

2. 术语描述

2.0 世界时

世界时 UT ,可以简单理解为按照地球自转一周来计量 24 小时的时间标准,由于地球自转速率的变化,世界时的秒长会有微小的变化,每天的快慢可以达到千分之几秒。

2.1 TAI 时间

世界时不准,因此国际组织定义了 TAI 时间 , 即国际原子时( International Atomic Time ),其起点是 1958 年的开始(世界时 UT ),以铯原子钟走秒连续计时的时间。

2.2 UTC 时间

计算机网络普遍使用的 UTC 时间(协调世界时) ,由国际计量局 BIPM 综合全世界多个守时实验室的钟组计算得到,为了使 UTC 时间与地球自转 1 天的时间(世界时 UT )协调一致,每隔 1  2 年, BIPM 会通告在 UTC 时间 6  30 日或 12  31 日最后一分钟  加一秒    减一秒  等闰秒调整。也就是说, UTC 时间会出现 60 秒或少了 59 秒的情况。

最近一次闰秒是 UTC 时间 2015  6 月底:

2015  6  30 日, 23  59  59 
2015  6  30 日, 23  59  60 
2015  7  1 日, 0  0  0 

由于存在闰秒, UTC 时间与 TAI 时间是有差别的, UTC = TAI - n ,这个 n 现在( 2016  1 月)是 36 秒,也就是说 UTC 时间比 TAI 时间慢了 36 秒。

2.3 北京时间

北京时间也就是 东八区时间 ,在 UTC 时间基础上加 8 小时,中国的北京标准时间由位于陕西的国家授时中心发播。

2.4 GPS 时间

 GPS 系统通过卫星信号发播的 原子时间  GPS 时间用自 1980  1  6 日零点( UTC 时间)起的星期数和该星期内内的秒数来表示。

工程上, GPS 接收机会根据闰秒数将 GPS 时间换算为我们通常使用的 UTC 时间。 GPS 时间的源头是美国海军天文台的守时原子钟组。

2.5 北斗( BDS )时间

由北斗卫星导航系统通过卫星信号发播的 原子时间 ,同样,北斗接收机会根据闰秒数将北斗时间换算为我们通常使用的 UTC 时间。

北斗时间的时钟源是位于北京的解放军 时频中心 的守时原子钟组,陕西的国家授时中心好尴尬 :( 

2.6 频率

时间的导数就是 频率 ,机械发条、石英晶体振荡器、原子钟等各种时钟源通过产生频率信号,按照频率均匀打拍计数,模拟时间的等间隔流逝,就有了可见的  时间  

2.7 频率准确度

手表有准和不准的,反映的就是频率准不准,时钟频率和标准频率的偏差可以用 频率准确度 来衡量。 1E-9 量级表示 1 秒会差 1ns ,我们使用的个人电脑,它的守时时钟是个 32. 768kHz 的石英晶振,准确度大概只有 2E-5 量级( 20ppm ),也就是说 1 秒会差 0.02ms  1 天会跑偏大概 2 秒。

2.8 时间同步

广义的  时间同步  包括的 时间和频率 的同步。上级时钟将时间频率信号通过各种有线(以太网、 SDH 数字网、同轴电缆、电话等)、无线(卫星、长波、电台、微波、 WIFI  Zigbee 等)链路传递给下级时钟,下级时钟接受时间频率信息后,与上级时钟保持相位、频率的一致。

3. 时间同步原理

3.1 单向授时

上级时钟主动发播时间信息,下级用户端被动接受时间信息,并调整本地时钟使时差控制在一定范围内。

要想提高授时精度,用户端必须计算出时间信息在传播链路中的延时, GPS/ 北斗等卫星授时,可以通过用户端定位与卫星之间距离确定电磁传输延时,消除大部分误差,而电缆、网络等如果是单向授时方式就无法准确计算单向链路时延了。

3.2 双向授时

用户端将接受的时间信息原路返回给上级时钟服务端,服务端将往返时间除以二即得到单向链路时延,再把单向时延告诉客户端,在此基础上,客户端得到服务端更准确的时间信息。比如:北斗单向卫星授时精度 100ns ,双向卫星授时精度可做到 20ns 

3.3 网络时间同步

网络时间同步,特指在计算机网络内的服务器与客户端之间利用 网络报文 交换实现的时间同步。

鉴于计算机网络传输路径的不确定性和中间路由交换设备转发报文时间的不确定性,通过单播或多播实现的单向网络授时是不可靠的。因此,前辈们发明的网络时间同步技术 NTP/PTP 等,基本原理都是通过对网络报文打时间戳(标记),往返交换报文计算传输时延和同步误差。

3.4 频率同步

频率同步 指的是主从时钟的频率误差保持在一定范围内,频率同步有 2 种类型 :

 1 种是直接传递模拟频率信号,比如用电缆或光缆传递 10MHz  5Mhz  2.048MHz 等标准频率,或者传递 bit 位宽脉冲;

 2 种是通过测量得到的主从时钟时差,通过锁定主从相差实现频率锁定( PLL ),或者间接计算频率偏差,完成频率修正。

4. 计算机网络时间同步

计算机网络时间同步只是时间同步的一种应用场景,其时间传递的链路可能是 SDH 网、以太网、 WIFI 无线网络等。

4.1 NTP

 Network Time Protocol )从 1985 年诞生来,目前仍在在大部分的计算机网络中起着同步系统时间的作用。

  • 基本原理

服务器和客户端之间通过二次报文交换,确定主从时间误差,客户端校准本地计算机时间,完成时间同步,有条件的话进一步校准本地时钟频率。

  • 时间同步过程

服务器在 UDP  132 端口提供授时服务,客户端发送附带 T1 时间戳( Timestamp )的查询报文给服务器,服务器在该报文上添加到达时刻 T2 和响应报文发送时刻 T3 ,客户端记录响应报到达时刻 T4 

改个维基的图:

http://img.blog.itpub.net/blog/2021/05/12/f25e922d82e2914a.png?x-oss-process=style/bb

  • 时差计算

维基这个图中用蓝色标注了主从直接来回链路的 时延 Sigma 
Sigma = (t4-t1)-(t3-t2)
因此,假设来回网络链路是对称的,即传输时延相等,那么可以计算客户端与服务器之间的 时间误差 Delta 为:
Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

客户端调整自身的时间 Delta ,即可完成一次时间同步。

  • 计时方式

NTP 采用 UTC 时间计时, NTP 时间戳 包括自 1900-01-01 00:00:00 开始的 UTC 总秒数,当前秒的亚秒数。

当正闰秒时, 60 秒和下一分钟的 0 秒的 NTP 总秒数一致的,因此 NTP 报文专门定义了闰秒指示域来提示。

  • 误差分析

局域网内计算机利用 NTP 协议进行时间同步,时间同步精度在 5ms 左右,主要误差包括:

1 )计算机打时间戳的位置在应用层,受协议栈缓存、任务调度等影响,不能在网络报文到来时马上打戳;
2 )各种中间网络传输设备带来的传输时延不确定性以及链路的不对称性,将进一步降低 NTP 时间同步精度。

4.2 PTP

为克服 NTP 的各种缺点, PTP(Precision Time Protocol ,精确时间同步协议 ) 应运而生,最新协议是 ,可实现亚微秒量级的时间同步精度。

  • 基本原理

主从节点在网络链路层打时间戳,利用支持 IEEE1588 协议的 PHY 片,精准记录时间同步网络报文接受或发送的时刻。交换机、路由器等网络中间节点准确记录时间同步报文在其中停留的时间,实现对链路时延的准确计算。

  • 时间同步过程

PTP 默认使用 组播 协议,二层或四层 UDP 组播都可以,一般我们使用基于 UDP 组播,使用 319  320 两个端口。

PTP 定义了三种角色: OC  BC  TC 。我们一般接触的是 OC :主时钟和从时钟,交换机、路由器一般是 BC  TC 

由于硬件性能有限,网络报文发送时记录的时刻信息,可以在随后的 Follow_Up 跟随报文中发出,这就是 PTP 的双步模式 (Two-step) 

下图是两 OC 主从时钟之间的同步过程:

http://img.blog.itpub.net/blog/2021/05/12/1c98ab5b6661acb3.png?x-oss-process=style/bb

·       a. 主时钟向从时钟发送 Sync 报文,并在本地记录发送时间 t1 ;从时钟收到该报文后,记录接收时间 t2 

·       b. 时钟发送 Sync 报文之后,紧接着发送一个携带有 t1  Follow_Up 报文。

·       c. 从时钟向主时钟发送 Delay_Req 报文,用于发起反向传输延时的计算,并在本地记录发送时间 t3 ;主时钟收到该报文后,记录接收时间 t4 

·       d. 主时钟收到 Delay_Req 报文之后,回复一个携带有 t4  Delay_Resp 报文。

  • 时差计算

 NTP 一样的原理,从时钟根据拥有的 t1  t4 这四个时间戳,由此可计算出主、从时钟间的往返总延时为:
Sigma = (t4-t1)-(t3-t2)

假设网络是对称的,从时钟相对于主时钟的时钟偏差为:
Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

  • 计时方式

 NTP 不同, PTP 采用 TAI 世界原子时间计时,而且 PTP 计时的起点与 unix 时间一致,即 UTC 时间 1970  1  1  0 点。

PTP 主钟会告知从钟,当前 UTC 相对于 TAI 的累计偏移量,从钟据此计算当前准确的 UTC 时间。

  • 误差分析

PTP 能准确记录报文发送和接受的时间,也能计算中间链路的延时,剩下影响最大的就是 网络链路的不对称性 了。

在实际工程中,网络中间链路设备不支持 PTP 协议,大大降低了 PTP 的同步精度。目前, PTP 主要应用在通信同步网、电力同步网等行业网络系统里。

  • 同步拓扑

PTP 域中所有的时钟节点都按一定层次组织在一起,可通过 BMC  Best Master Clock ,最佳主时钟)协议动态选举出最优时钟,最优时钟的时间最终将被同步到整个 PTP 域中。

BMC 算法与 STP  Spaning Tree Protocl )生成树协议类似,最终形成 无环路 的树形网络拓扑,且都是动态选举,能适应最佳主时钟切换的变化。

  • 扩展应用 ——PTP over SDH

充分利用各行业已有的 SDH 通信网络,利用 PTP-E1 信号 转换设备,架设 PTP 同步网络,除了需要考虑链路倒换问题之外, SDH 网络的时延稳定性可大幅提升网络时间同步精度。

4.3 SyncE 同步以太网

以太网最早只能传输数据信号,有另外独立的频率同步网络,随着以太网的快速发展, SyncE  Synchronized Ethernet  同步以太网 技术诞生后,企业们有了新的选择。

  • 基本原理

时钟节点利用以太网( 1000M  1G  10G 等)物理层的空闲间隙,传递 位宽时钟信号 ,实现时钟频率信号( 25M  125M 等)的自上而下传递。

  • 协议控制

类似于 SDH 网络等时间间隔传递的 SSM 同步状态信息,同步以太网( Sync-E )利用链路层 封装传递 SSM 信息, SSM 信息包含时钟质量信息,接收端据此选择合适的上级网络时钟。

  • 应用

一般商业 PHY 片提供 SyncE 功能选项,开启该功能模式,即可利用 PHY 恢复出来的频率信号,校准本地时钟频率或分频后用于本地计时。

  • 7
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
北斗授时程序是基于STM32单片机开发的一种程序,用于接收北斗导航卫星发出的信号,并通过解析信号获取准确的时间信息。以下是关于STM32北斗授时程序的简要描述。 首先,STM32单片机是一种嵌入式微控制器,具有强大的处理能力和丰富的外设功能,适合用于开发北斗授时程序。北斗导航卫星系统是中国自主开发的卫星导航系统,其中的卫星每秒都会发送时间信息,可以通过接收北斗导航信号来获取精确的时间。 在STM32北斗授时程序中,首先需要使用外部接收模块,如北斗导航接收模块,来接收北斗导航卫星发射的信号。接收到的信号将通过STM32单片机的串口或其他通信接口传输到单片机内部。 然后,程序需要对接收到的信号进行解析。通过解析信号,可以获取时间信息、日期信息以及其他有用的导航数据。解析过程中需要使用一些特定的协议,并进行相关的数据处理和校验操作,以确保解析到的时间信息准确可靠。 最后,解析到的时间信息可以用于更新STM32单片机的内部时钟。通过将解析到的时间信息与单片机内部时钟同步,可以实现对单片机的准确授时。 总结来说,STM32北斗授时程序通过接收北斗导航卫星发出的信号,解析信号获取准确的时间信息,并利用该时间信息对STM32单片机的内部时钟进行同步,从而实现对单片机的精确授时。这种程序在需要准确时间的应用场景中具有重要的作用,如科研实验、数据采集、通信系统等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值