gPTP时间同步(干货实用)

#背景

  1. 定义针对汽车网络中各节点的时间同步需要一种精准的时间同步协议。
  2. 应用场景:应用 gPTP 进行精确时间同步
  3.  竞选主机 一 频率同步 一 延迟测量 一 计算时间
  4. 参考的标准:IEEE802.1as协议
  5. 基本概念:不同时间戳的解释,在线UTC时间
  6. 整体思路:竞选主机→频率同步→延迟测量→计算时间

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.1ASIEEE 1588-2008(PTPv2)为基础,用于时间敏感的桥接

 分组交换局域网

·IEEE 1588IEEE802.1AS的主要区别在于:gPTP假定时间敏感系统间

 的通信全部使用IEEE 802 MAC PDUsMAC地址,而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种:

·事件类型报文:SyncPdelay_ReqPdelay_Resp,此类报文的接收和发送会触发MAC层对本地时钟进行采样;

·一般类型报文:Follow _UPPdelay_Resp_Follow_UP,仅用来携带消息

·SyncFollow_UP为一组报文:Grandmaster的主时钟信息,通过此组报文,传

遍整个生成树。

·此外节点间为了保持同步,需要明确消息报文沿路径传输产生的延时。gPTP

定了pDelay的测量方法,用于计算相邻节点间的传输延时。涉及Pdelay_Req

Pdelay_RespPdelay_Resp_Follow_UP

如下图所示:

GrandMaster:发送SyncFollow_UP,告诉所有的Slave节点,时间信息,具体怎么设置

Bridge:非时钟节点,作为透明时钟

Slave:从节点,根据master的SyncFollow_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.主节点计算从节点的同步误差

  • 17
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gPTP(Generalized Precision Time Protocol)是一种用于实现高精度时钟同步的协议。在gPTP中,POSIX算法是一种常用的时间同步算法。 POSIX算法是一种基于软件时钟的时间同步算法,它通过计算网络延迟和时钟偏差来实现时钟同步。具体来说,POSIX算法通过以下步骤实现时钟同步: 1. 选举主时钟:在网络中选举一个主时钟,其他从时钟将与主时钟进行同步。 2. 发送同步消息:主时钟向从时钟发送同步消息,消息中包含主时钟的时间戳。 3. 接收同步消息:从时钟接收到同步消息后,记录下接收时间戳和主时钟的时间戳。 4. 发送延迟请求消息:从时钟向主时钟发送延迟请求消息,消息中包含从时钟的时间戳。 5. 接收延迟响应消息:主时钟接收到延迟请求消息后,记录下接收时间戳和从时钟的时间戳,并向从时钟发送延迟响应消息,消息中包含主时钟的时间戳和接收时间戳。 6. 计算偏差和延迟:从时钟使用接收时间戳、主时钟的时间戳和延迟响应消息中的时间戳计算出主时钟和从时钟之间的偏差和延迟。 7. 调整时钟:从时钟使用计算出的偏差和延迟来调整自己的时钟,使其与主时钟同步。 POSIX算法是一种简单而有效的时间同步算法,但它对网络延迟和时钟偏差的估计并不是非常准确。因此,在实际应用中,需要结合其他算法来提高时间同步的精度和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值