授时技术入门指南

从 IRIG-B 码到 PPS 脉冲,从 NTP 协议到守时原理 —— 一份图文并茂的工程学习笔记

IRIG-B 码 PPS 秒脉冲 NTP 协议 守时 · 授时
0s 1s 2s 3s 4s ↑ 上升沿 = 整秒
↓ 向下滑动开始学习

什么是授时?

授时(Time Synchronization)就是把"准确的时间"从"权威来源"传递给"需要时间"的设备,让所有设备对"现在几点"达成一致。

为什么授时很重要?

想象一下:你的惯导系统认为自己是在 T=10.000s 采样的数据,但实际上GPS时间已经是 T=11.000s。这 1 秒的偏差在高速运动场景中意味着几十米甚至几百米的定位误差。

在电力、通信、军工、航空航天等领域,微秒甚至纳秒级的时间同步精度是刚需。授时设备就是解决这个问题的核心基础设施。

授时的几个关键精度等级

精度等级典型技术应用场景
秒级人工对时、HTTP日常办公
毫秒级 (ms)NTP企业IT、日志同步
微秒级 (μs)IRIG-B、PTP (IEEE 1588)电力、工业自动化
纳秒级 (ns)PPS + 绝对时间编码军工、科研、惯导

B IRIG-B 码

IRIG-B 是军用/工业领域最常用的时间码标准,由美国靶场司令委员会 (IRIG) 制定。它用一串脉冲的宽窄来编码"现在是什么时间"。

基本原理

IRIG-B 码每秒传输一帧完整的时间信息。每帧包含 100 个码元(bit),每个码元持续 10ms。通过码元的脉冲宽度来区分三种符号:

逻辑 0:2ms 宽脉冲
逻辑 1:5ms 宽脉冲
位置标识 P:8ms 宽脉冲
IRIG-B 码元脉冲宽度示意图 0 2ms 1 5ms P (位置标识) 8ms 每个码元 占用 10ms 每帧 100 个码元 = 1 秒 / 帧
图:三种码元的脉冲宽度对比 —— 脉宽不同,含义不同

帧结构:时间是怎么编码的?

每帧 100 个码元,按 BCD(二-十进制编码)方式编码时间信息。帧的第一个码元(P0)是位置标识,之后每 10 个码元为一组,以一个新的 P 标识开头:

码元位置编码内容说明
P0 (第0位)帧起始标识8ms 宽脉冲,标志新的一帧开始
1-8秒的个位和十位BCD 编码,表示 00-59 秒
P10 (第10位)位置标识分隔符
11-18分钟的个位和十位BCD 编码,表示 00-59 分
P20 (第20位)位置标识分隔符
21-28小时的个位和十位BCD 编码,表示 00-23 时
P30 (第30位)位置标识分隔符
31-39年积日 (Day of Year)BCD 编码,001-366
P50+控制功能 / 自定义可携带年份、自定义数据等
关键理解:IRIG-B 码的每一帧都携带完整的绝对时间(时:分:秒 + 年积日),因此即使中途丢了几帧,只要重新收到一帧就能立刻恢复正确时间。这是它比纯 PPS 信号更"健壮"的原因。

传输方式

IRIG-B 有两种常见传输方式:

直流码 (DC Level Shift) — 直接用高低电平表示脉冲,通过同轴电缆或双绞线传输。信号质量好,适合短距离(几十米内)设备互联。

交流码 (1kHz 载波调制) — 用 1kHz 正弦波载波调制,适合长距离传输(可达数百米甚至更远),抗干扰能力更强。

PPS 秒脉冲

PPS(Pulse Per Second)是最"纯粹"的时间同步信号:每秒一个脉冲,上升沿精确对齐整秒。

00
秒 (模拟 PPS 计数)

PPS 的特点

PPS 信号非常简单 —— 一根线,每秒来一个脉冲。但正因为简单,它的精度可以非常高。来自 GPS 接收机的 PPS 信号,上升沿精度通常在 ±15~40ns 范围内。

然而 PPS 有一个致命弱点:它只告诉你"整秒到了",不告诉你"现在是几点"。所以你还需要另一个通道来获取绝对时间(比如串口输出、IRIG-B 码或 NTP)。

PPS + 绝对时间 协作示意 PPS :00 :01 :02 :03 :04 B码 14:30:00 14:30:01 14:30:02 14:30:03 14:30:04 ← 绝对时间帧
图:PPS 提供精确的秒边界,IRIG-B 码提供"现在是几点" —— 两者配合才能实现完整的精确授时

🌐 NTP 协议

NTP(Network Time Protocol)是通过网络同步时间的标准协议,在 IT 系统中无处不在。

NTP 是怎么对时的?

NTP 的核心思想很朴素:客户端向服务器发送一个时间请求,服务器返回自己的当前时间。客户端通过测量"去程"和"回程"的网络延迟,估算出服务器时间比本地快还是慢,然后调整自己的时钟。

为了消除网络延迟不对称带来的误差,NTP 会进行多次采样,用统计方法过滤掉异常值,逐步逼近真实时间。这个过程叫"时钟滤波"(Clock Filter)。

NTP 层级 (Stratum) 体系

0
Stratum 0 — 参考时钟 原子钟、GPS 接收机、授时设备硬件
±ns 级
1
Stratum 1 — 直连参考时钟的服务器 直接连接 Stratum 0 设备的 NTP 服务器
±μs 级
2
Stratum 2 — 从 Stratum 1 同步 企业内网 NTP 服务器、云主机
±ms 级
3
Stratum 3 — 终端设备 你的电脑、手机、IoT 设备
±ms~10ms
NTP vs PPS vs IRIG-B:NTP 的优势在于"网络化、通用性",几乎所有操作系统都内置 NTP 客户端。但它的精度受网络延迟影响,通常在毫秒级。对于需要微秒或纳秒级精度的场景,必须依赖 PPS 或 IRIG-B 这类专用硬件接口。
网页上的时间从哪来?你访问的本网站首页就在实时显示 UTC 时间、北京时间、GPS 周和北斗周。这些时间来自阿里云 NTP 服务器(ntp3.aliyun.com),后端通过 ntplib 库直接获取 NTP 时间戳,前端拿到后利用 Date 对象做每秒刷新。即使操作系统时间不准,首页显示的时间依然是准确的网络时间。

🔋 守时原理

当外部时间源(GPS、B码)丢失后,设备靠自己的内部晶振"独自维持时间"的能力,就叫守时 (Holdover)。

为什么需要守时?

理想情况下,设备时刻从 GPS 或 IRIG-B 获取精确时间。但现实中,GPS 信号可能因为遮挡、干扰、设备故障而丢失;B 码链路也可能断开。这时候,设备不能"没有时间",必须靠自己继续走时。

守时精度取决于内部振荡器(晶振)的质量。普通温补晶振 (TCXO) 可能每天漂移几十毫秒,而恒温晶振 (OCXO) 或铷钟可以守时数天仍保持在微秒级偏差内。

守时漂移示意图(夸张) 时间 → 时间偏差 GPS 锁定中 GPS 丢失 ↑ 守时模式 真实时间 设备时间 漂移量
图:外部时间源丢失后,设备进入守时模式,内部时钟逐渐漂移(漂移幅度已夸张处理)

授时设备的"授时"与"守时"

常见的 1U/2U 机箱授时设备,通常集成了授时和守时两大功能:

授时 — 从 GPS/北斗等卫星获取精确时间,然后通过 IRIG-B、NTP、PPS 等多种接口向下游设备分发时间。相当于一个"时间分发中心"。

守时 — 内部配备高品质恒温晶振甚至铷钟,当卫星信号丢失后,依靠内部振荡器维持高精度时间输出,保证下游设备的时间不会突变。

📖 术语速查表

快速查阅文中出现的核心术语。

IRIG-B
Inter Range Instrumentation Group 标准 B 型时间码。每秒一帧,100 码元/帧,用脉宽编码绝对时间,广泛用于军工和工业场景。
PPS
Pulse Per Second,每秒一个脉冲,上升沿对齐整秒边界。精度可达纳秒级,但不携带绝对时间信息。
NTP
Network Time Protocol,基于网络的时间同步协议。通过测量往返延迟来校正时钟,精度通常在毫秒级。
授时
将精确时间从权威源传递给其他设备的过程。授时设备就是"时间分发中心"。
守时 (Holdover)
外部时间源丢失后,设备依靠内部振荡器独立维持时间的能力。精度取决于晶振质量。
驯服 (Disciplining)
用外部高精度时间源持续校正内部振荡器的过程。驯服完成后即使丢失外部源,也能较好地守时。
OCXO
Oven Controlled Crystal Oscillator,恒温晶振。通过恒温槽保持晶振温度稳定,日漂移可达微秒级。
惯导 (INS)
Inertial Navigation System,利用加速度计和陀螺仪自主计算位置和时间的导航系统,通常需要外部授时来校正累积误差。
BCD 编码
Binary-Coded Decimal,用 4 位二进制表示一位十进制数。IRIG-B 用 BCD 来编码时、分、秒等时间字段。
年积日 (DOY)
Day of Year,一年中的第几天(001-366)。IRIG-B 用 DOY 而非月/日来表示日期,简化了编码。
← 返回