2. 时间同步基础:时钟模型、同步原理与精度指标
做TSN时间同步,得先把最底层的时钟搞清楚。你想想,所有设备都有自己的本地时钟,每个时钟跑得还不一样快。想让它们对齐,就得先弄明白时钟到底是什么,怎么描述它的快慢和偏差。
2.1 时钟模型:从理想假设到现实世界
我在项目里见过不少新人,一上来就调PTP参数,结果怎么都锁不住。回头一看,根源是对时钟模型的理解不到位。咱们先搭好理论基础。
2.1.1 理想时钟与真实时钟
理想时钟的时间函数是线性的:C(t) = t。秒就是秒,分就是分,完美均匀。但现实里没有这种时钟。晶体振荡器受温度、电压、老化影响,频率会漂。
真实时钟的数学模型可以写成:
C(t) = θ₀ + (1 + ε)·t + D(t) + n(t)
其中:
- θ₀ — 初始相位偏差(offset)。说白了就是开机时跟参考时间的差。
- ε — 频率偏差(skew)。时钟跑得快或慢的程度,单位ppm。
- D(t) — 漂移(wander + jitter)。频率随时间缓慢变化。
- n(t) — 测量噪声。同步报文的收发延迟抖动。
这个模型是做同步算法的基础。我建议你把它抄下来贴墙上看。因为后面所有的滤波、锁相环设计,都是围绕这四个参数展开的。
2.1.2 时钟的层级与角色
TSN网络里,时钟分主从(Master / Slave)。主时钟是时间源(比如GPS驯服的原子钟),从时钟跟着主时钟跑。实际部署中,主时钟可能不止一层,通过边界时钟或透明时钟级联。
| 时钟角色 | 作用 | 典型场景 |
|---|---|---|
| Grandmaster (GM) | 整网的时间基准,通常最高精度 | 交换机核心、集中控制器 |
| Ordinary Clock (OC) | 只有1个PTP端口,可做主或从 | 终端设备(摄像头、机器人) |
| Boundary Clock (BC) | 多端口,每端口独立恢复时间,再转发 | 核心交换机,隔离时钟域 |
| Transparent Clock (TC) | 不调整本地时钟,只修正报文驻留时间 | 边缘交换机,减少跳变累积 |
我记得有一次在产线调试,6跳交换机全配成了普通OC,结果末端同步误差跑到1ms以上。后来换成BC+TC混合方案,误差直接压到100ns以内。选对时钟角色,比调参数更重要。
2.2 同步原理:主从偏差是如何被纠正的?
同步的核心就一句话:测出主从之间的时间差,然后从时钟去追。但怎么测,是个技术活。
2.2.1 两步法:Sync + Follow_Up + Delay_Req + Delay_Resp
IEEE 802.1AS()使用两步时钟同步过程。我画个简化版本:
Master Slave
| |
|──Sync (t1)──────────────────→|
|──Follow_Up (t1)─────────────→| // 如果一步时钟,Sync里直接带t1
| | // Slave记录t2(接收时间)
|←──Delay_Req──────────────────| // Slave发请求,自带t3
|──Delay_Resp (t4)────────────→| // Master回复t4
| | // Slave拥有t1,t2,t3,t4
然后计算:
- 主→从的链路延迟 = [(t4 – t3) + (t2 – t1)] / 2 (假设双向对称)
- 主从时间偏差 = (t2 – t1) – 链路延迟
这里有个坑——假设双向链路延迟相等。我在实际工厂网络里测过,光纤上下行能差到几十微秒,因为光模块的收发路径不对称。这时候必须手动补偿。我曾经调了三天,最后发现是跳线太长导致回损不一样,换了对等长度跳线就稳了。
2.2.2 时钟伺服:从偏差到频率调整
得到偏差后,从时钟不能直接跳表(除非做一步校正)。需要用PID或低通滤波器平滑地调整本地时钟的频率(skew)和相位(offset)。经典结构:
偏差测量 → [低通滤波器] → [环路滤波器] → [压控振荡器 (VCXO)] → 本地时钟
滤波器的带宽决定了同步的响应速度和噪声抑制能力。带宽太宽,会把网络抖动引入时钟;带宽太窄,跟不上主时钟的漂移。我个人习惯先设带宽0.1Hz,再根据实测微调。
2.3 精度指标:怎么衡量同步是否达标?
谈精度不能只讲“误差越小越好”。工业现场需要量化指标,来判定产品通过还是不通过。
2.3.1 常见指标一览
| 指标 | 定义 | 物理意义 |
|---|---|---|
| 时间偏差 (Time Error, TE) | 从时钟与主时钟的瞬时差 | 每个时刻的偏离量 |
| RMS误差 | 一段时间内所有偏差的均方根 | 反映统计上的平均偏离程度 |
| 最大误差 (max|TE|) | 观测窗口内的峰值偏差 | 承上启下:最坏情况下的同步表现 |
| 平均误差 (Mean TE) | 偏差的算术平均值 | 有无系统偏差;如果远非0,说明存在固定偏移 |
TSN标准(比如802.1Qbv的时间感知整形)要求从时钟的累计时间误差在整网范围内不超过±1µs。但具体到每个设备,RMS误差通常要在100ns以内,最大误差不超过500ns。我见过一个自动化产线案例,要求max|TE| < 200ns,否则AGV会撞车。这不是玩笑。
2.3.2 如何测量和评估
不能用常规示波器抓一两秒就算完。同步精度的评估需要长时间的统计:
- 使用专用PTP分析仪(如Calnex、SymmetriClock)记录偏差序列
- 观测窗口至少1小时,工业场景建议24小时
- 同时关注时间间隔误差 (TIE)和MTIE,它们是时钟保持性能的核心
你在写测试报告时,要同时列出RMS和max|TE|,因为两者反映不同层面的问题。RMS小但max大,说明有偶发跳变;RMS大但max小,说明漂移慢但稳定。
2.4 本章知识体系速览
下面这张图把时钟模型、同步流程和精度指标串起来了。你看着图,心里过一遍:从主从发Sync开始,经过偏差测量、环路滤波、调整本地时钟,最后用RMS和最大误差来评估。
图上三个主模块互相依赖:只有理解了时钟模型,才能正确设计偏差测量;只有掌握了同步原理,才能设置合理的滤波参数;最后用精度指标来检验整个链条是否合格。