关于车载 时间同步 的理解

1. 时间同步的应用场景

    考虑自动驾驶/ADAS领域,这类控制器,一般包含各类的传感器,如ODO,GPS,地图,摄像头,毫米波雷达,超声波雷达等,因此这些传感器数据精确的采集时间显得尤为重要,因为直接关系到最后做传感器融合以及决策规划,因此必须保证精确使用哪一个时刻的数据。

2.IEEE1588 时间同步协议的理解

    车载里面,常用的时间同步协议是 IEEE 1588 即所谓的PTP( precise time protocol,精确时间协议),下面就针对PTP进行详细解释说明。

    IEEE 1588 是精确时间同步协议,精度可以达到微秒级,以下针对其时间同步原理说明。

2.1 请求应答机制同步原理    ​​​​

如图所示,包含主时钟和从时钟,主时钟是发送时钟的节点,所有节点和它对比,进行时间同步。

主要过程分为四步:

(1)Sync,主时钟发出 sync 报文,并记录下 sync 报文离开主时钟的精确发送时间 T1;

(2)Follow_up,主时钟将精确发送时间 T1 封装到 Follow_up 报文中,发送给从时钟;

(3)Delay_Req,从时钟向主时钟,发送Delay_Req报文,用于方向传输延时计算,并记录发送时刻T3,主时钟收到该报文后,记录接收时刻T4;

(4)Delay_Resp,主时钟收到Delay_Req后,回复一个Delay_Resp的报文,将T4告诉从时钟。

从第二张图,我们可以清晰的看到,从时钟已经精确知道T1 ,T2,T3,T4四个时刻。

主-->从,发送传输延时 T2-T1;

从-->主,发送传输延时 T4-T3;

但是以上的计算是基于主时钟和从时钟同步的场景,真实情况是主时钟和从时钟存在偏差,我们假设这个偏差为offset,即 T主-T从 = offset。

在网络中,一般主-->从,从-->主 网络延时是一样;

T4 - T3 = delay - offset;

T2 - T 1 = delay+ offset;

因此传递的延时 :

delay = [(T2-T1) + (T4-T3)] / 2 

由于offset存在,映射到从时钟 时间轴上计算offset:

offset = [(T2-T1) - (T4-T3)] / 2

这里offset 很好理解的一点是,T2 - T1 = offset+delay  记住这一点就好理解。

考虑到是否需要Follow_up报文,这里有分为单步模式和双步模式;

所谓的单步模式,是没有Follow_up报文,T1的时间戳,直接由sync 报文发出;

所谓的双步模式,即有Follow_up报文,T1的时间戳,由Follow_up报文携带。

 2.2 端延时机制同步原理    ​​​​


 所谓的端延时机制,是在请求响应延时的基础上,增加pdelay_resp和Pdelay_resp_follow_up的计算,主要是为了进一步考虑上游链路的延时;

进而得到delay:

delay = [(T4-T3) + (T6-T5)] / 2

进而得到offset:

offset = (T2-T1) - {[(T4-T3) + (T6-T5)] / 2}

这里offset 很好理解的一点是,T2 - T1 = offset+delay  

当然这里根据是否需要follow_up 报文,也可以分为单步模式或双步模式,不进一步说明。

3.基于Autosar CAN时间同步


CAN的时间同步和上文提到的IEEE1588 区别较大,请注意区分。

3.1 同步流程


Autosar中专门用于CAN 时间同步的模块是CanTSyn,同步的流程如下图 

第一步. Master在t1r时刻先发送一个SYNC信号,但这个信号写的是之前要发送SYNC时的时间点(t0r),然后在t2r时刻Slave接收到了这个SYNC信号。

第二步. Master再次发送一个FUP信号,这个信号的内容就是他t1r-t0r的值。

第三步. 最后在Slave方,我们就可以计算出本地当下的同步时间值=(t3r-t2r)+t1r

3.2 CAN同步消息结构

以不带CRC的为例说明

SYNC报文,这里Byte4~7放入我们需要同步的时间

 FUP报文 ,这里Byte4~7放入我们需要同步的时间

 这里需要特别注意的是,SYNC和FUP共用一个CAN ID,他们只是type不一样。

3.3 基于CAN消息的实际用法

首先,在SYNC报文中,塞入基于秒的时间,即所谓的t0r;

然后,在FUP报文中,塞入基于纳秒的时间,即所谓的t4r = t1r - t0r,此时从节点知道,发送方真实的发送时刻为 t1r ,即t0r秒t4r纳秒

这样 从节点就可以得到当前真实的时间,current_time = t0r + t4r + t3r-t2r

这里t3r,表示计算时刻,从节点本地的时间。

下文是原文,意思同上面提到的表述是一个意思,有兴趣的可以仔细查看。

 4.基于Autosar 以太网时间同步


4.1 Autosar 以太网时间同步说明


Autosar中,以太网同步模块是EthTSyn,Autosar以太网的时间同步,与IEEE 1588 / IEEE802.1AS稍有不同,主要不同点是,Autosar时间同步:

定义ECU的优先级
只考虑静态配置情况


整体架构如下图

4.2 Autosar 以太网时间同步原理


 计算过程参考IEEE 1588/IEEE 802.1AS;

4.3 Autosar 以太网时间同步消息格式


参考Autosar标准即可,此处不做展开。

原文链接:https://blog.csdn.net/AgingMoon/article/details/119849212

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值