#背景
- 定义针对汽车网络中各节点的时间同步需要一种精准的时间同步协议。
- 应用场景:应用 gPTP 进行精确时间同步
- 竞选主机 一 频率同步 一 延迟测量 一 计算时间
- 参考的标准:IEEE802.1as协议
- 基本概念:不同时间戳的解释,在线UTC时间
- 整体思路:竞选主机→频率同步→延迟测量→计算时间
Q1:自动驾驶车辆为什么要进行时间同步?
一辆宣称具备L4/L5自动驾驶功能的车辆,如果多个激光雷达之间的时间同步不够精确?如果传感器感知数据通过以太网传输到智驾域控制器的延迟不可控?如果智驾域控制器规划决策的结果通过以太网传输到底盘域控制器的延迟也不可控?如果座舱域内屏幕显示的变道决策与扬声器播报的声音不同步?那将仍然只是一辆适合演示或测试的无情机器,一副没有“有趣灵魂”的躯体。
Q2:TSN?
TSN(Time-Sensitive Networking,时间敏感型网络)技术的前身是AVB(Audio/Video Bridging,音视频桥接)技术。TSN协议栈是一系列IEEE 802.1标准的集合,包括技术类和配置类。IEEE802.1as协议(就是其中的一个协议)
Q3:gPTP?
gPTP(generalized Precision Time Protocol,广义精确时间同步协议),基于PTP(IEEE 1588v2)协议进行了一系列优化,形成了更具有针对性的时间同步机制,可以实现μs级的同步精度。
注意:在七层OSI网络模型中,L2是MAC层(交换机进行转发),L3是IP层(路由器转发),gPTP为了保证时间精度,是基于L2层的传播,所以只能在局域网进行传播,不能通过路由器往WAN网进行传输。
#参考资料
IEEE802.1as协议:(高清正版) IEEE 802.1AS - 道客巴巴
generalized Precision Time Protocol -------802.1AS
·IEEE 802.1AS以IEEE 1588-2008(PTPv2)为基础,用于时间敏感的桥接
分组交换局域网
·IEEE 1588和IEEE802.1AS的主要区别在于:gPTP假定时间敏感系统间
的通信全部使用IEEE 802 MAC PDUs和MAC地址,而IEEE 1588支持二
层至四层多种通信方式;
·当使用100ppm晶体/振荡器时,gPTP能够保证在7个跳内的网格节点间
的同步精度在±500ns
时间戳定义:GPS, UTC, and TAI Clocks
时间戳转换示例网站:时间戳(Unix timestamp)转换工具 - 在线工具 (tool.lu)
GPS计算时间网站:GPS Time Calculator (CN) (labsat.cn)
本地时间是由你的电脑(通过你的网络浏览器看到的)报告的时间和日期。如果你的电脑时钟精确到秒,那么上面显示的其他时间尺度也将精确到秒。
UTC,即协调世界时,通常被称为格林威治标准时间(GMT)或祖鲁时间。本地时间与UTC之间的差异取决于你所在的时区的小时数。北京时间是UTC+8小时
GPS时间是由全球定位系统地面控制站和GPS卫星本身中的原子钟实现的原子时间尺度。GPS时间从1980年6月6日的0点开始计算,由于它不受闰秒的影响,现在GPS时间比UTC时间快了18秒。
Loran-C时间是由Loran-C链发射站中的原子钟实现的原子时间尺度。Loran-C时间从1958年1月1日的0点开始计算,并且由于它也不受闰秒的影响,现在Loran-C时间比UTC时间快了27秒。
TAI,即国际原子时,是基于SI秒连续计数的国际原子时间尺度。目前,TAI比UTC快了37秒。并且TAI总是比GPS时间快了19秒。
gptp的开源代码实现:
avnu-gptp : GitHub - Avnu/gptp
avnu-gptp是avnu开源的gptp协议栈,主要基于c++代码实现,通过pipe来分享时间信息
linux-ptp : https://git.code.sf.net/p/linuxptp/code
————————————————
原文链接:https://blog.csdn.net/kimginginging/article/details/128814359
#gPTP 时间同步原理
·gPTP通过发送不同种类的报文,携带并传递不同的信息;时间感知系统通过这些信息,完成与主时钟的同步。
·与时钟同步相关的报文共两类5种:
·事件类型报文:Sync、Pdelay_Req、Pdelay_Resp,此类报文的接收和发送会触发MAC层对本地时钟进行采样;
·一般类型报文:Follow _UP、Pdelay_Resp_Follow_UP,仅用来携带消息
·Sync、Follow_UP为一组报文:Grandmaster的主时钟信息,通过此组报文,传
遍整个生成树。
·此外节点间为了保持同步,需要明确消息报文沿路径传输产生的延时。gPTP规
定了pDelay的测量方法,用于计算相邻节点间的传输延时。涉及Pdelay_Req、
Pdelay_Resp、Pdelay_Resp_Follow_UP。
如下图所示:
GrandMaster:发送Sync、Follow_UP,告诉所有的Slave节点,时间信息,具体怎么设置
Bridge:非时钟节点,作为透明时钟
Slave:从节点,根据master的Sync、Follow_UP 报文来同步频率和计算延时。
同步过程
gPTP协议是工作在MAC层的一种时间同步的协议 ,具体详细定义看官方协议,在参考资料中有链接
Destination Address:01:80:C2:00:00:0E
MAC报文Ethertype=0x88F7
报文类型:
Message type
报文类型 | 报文发送类型 | 枚举值 |
Sync | Event | 0x0 |
Pdelay_Req | Event | 0x2 |
Pdelay_Resp | Event | 0x3 |
Follow_up | General | 0x8 |
Pdelay_Resp_Follow_Up | General | 0xA |
gPTP报文组成:
Header +Body+TLV:
Sync报文用于发送主机端同步时间戳整数秒时间
Fup报文用于发送主机端同步时间戳ns部分时间
请求Master端口发送Delay_Resp报文,占用空间大小为44字节,报文格式与Sync报文相同。
Pdelay_Req message报文 格式
Master端口回复Slave端口自己收到Delay_Req报文的精确时间戳, 占用空间大小为54字节。
频率同步
主节点和从节点的时钟频率是不同的,所以需要先进行频率的同步
如下slave 根据master发送过来的sync报文记录收到的时间的时刻 t2 t4
master发送Follow up报文,slave知道master发送上一条sync报文的时间(master本地时间)t1和t3,从节点slave计算主从节点的时间频率的比例R=(t3-t1)/(t4-t2)
延时的测量
从节点发起测量,发送Pdelay_Req报文,记为t1
master收到该报文时间记为t2
master发送Pdelay_Resp报文,记为t3,并将t2时间返回给slave,同时slave记为t4
master发送Pdelay_Resp_Followup报文将t3返回给slave
delay计算:delay=[(t4-t1)*R-(t3-t2)]/2
时间同步
根据master持续发送Pdelay_Resp和Follow-up报文,从节点Slave根据相关的时间点,就可以同步出自己的时间戳。
Ta=t1+delay+(Tb-t2)*R
其中Tb是slave在某时刻的本地时间戳,从而根据上式计算出Ta(Master此时的本地时间戳)
# 时间同步测试
同步误差
gPTP协议定义了时间同步机制,但是具体实现或者硬件的问题,可能导致从时钟不能很好的跟随主时钟。为了测量从时钟恢复时钟的能力(即调整本地时钟跟随主时钟),通常测量从时钟相对于主时钟的同步误差。
同步误差影响
自动驾驶领域中,数据融合要求各传感器与主时钟时间同步,从节点的同步误差过大将直接影响融合准确性。
同步误差测试方法
·1PPS
·主节点和从节点在PTP时间的每整秒输出脉冲信号
·使用示波器比较两个输出信号
·Ingress Method
从节点收到同步报文后,计算相对于主节点的同步误差
·通过Signaling报文报告计算的同步误差
·Egress Method
·从节点记录同步后本地时钟下,发送Pdelay报文的时间戳
·通过Signaling报文报告该时间戳
·Resverse Sync Method
1.从节点调整本地时钟,与主节点同步
2.从节点使能Reverse Sync功能
3.主节点计算pdelay,用于验证反向
的同步报文
4.从节点发送反向同步报文
(使用不同的时钟域)
5.主节点计算从节点的同步误差