目录
1. 时间同步的应用场景
2.时间同步协议的理解
2.1 请求应答机制同步原理
2.2 端延时机制同步原理
3.基于Autosar CAN时间同步
3.1 同步流程
3.2 CAN同步消息结构
3.3 基于CAN消息的实际用法
4.基于Autosar 以太网时间同步
4.1 Autosar 以太网时间同步说明
4.2 Autosar 以太网时间同步原理
4.3 Autosar 以太网时间同步消息格式
考虑自动驾驶/ADAS领域,这类控制器,一般包含各类的传感器,如ODO,GPS,地图,摄像头,毫米波雷达,超声波雷达等,因此这些传感器数据精确的采集时间显得尤为重要,因为直接关系到最后做传感器融合以及决策规划,因此必须保证精确使用哪一个时刻的数据。
车载里面,常用的时间同步协议是 IEEE 1588 即所谓的PTP( precise time protocol,精确时间协议),下面就针对PTP进行详细解释说明。
IEEE 1588 是精确时间同步协议,精度可以达到微秒级,以下针对其时间同步原理说明。
如图所示,包含主时钟和从时钟,主时钟是发送时钟的节点,所有节点和它对比,进行时间同步。
主要过程分为四步:
(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报文携带。
所谓的端延时机制,是在请求响应延时的基础上,增加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 报文,也可以分为单步模式或双步模式,不进一步说明。
CAN的时间同步和上文提到的IEEE1588 区别较大,请注意区分。
Autosar中专门用于CAN 时间同步的模块是CanTSyn,同步的流程如下图
第一步. Master在t1r时刻先发送一个SYNC信号,但这个信号写的是之前要发送SYNC时的时间点(t0r),然后在t2r时刻Slave接收到了这个SYNC信号。
第二步. Master再次发送一个FUP信号,这个信号的内容就是他t1r-t0r的值。
第三步. 最后在Slave方,我们就可以计算出本地当下的同步时间值=(t3r-t2r)+t1r
以不带CRC的为例说明
SYNC报文,这里Byte4~7放入我们需要同步的时间
这里需要特别注意的是,SYNC和FUP共用一个CAN ID,他们只是type不一样。
首先,在SYNC报文中,塞入基于秒的时间,即所谓的t0r;
然后,在FUP报文中,塞入基于纳秒的时间,即所谓的t4r = t1r - t0r,此时从节点知道,发送方真实的发送时刻为 t1r ,即t0r秒t4r纳秒
这样 从节点就可以得到当前真实的时间,current_time = t0r + t4r + t3r-t2r
这里t3r,表示计算时刻,从节点本地的时间。
下文是原文,意思同上面提到的表述是一个意思,有兴趣的可以仔细查看。
Autosar中,以太网同步模块是EthTSyn,Autosar以太网的时间同步,与IEEE 1588 / IEEE802.1AS稍有不同,主要不同点是,Autosar时间同步:
整体架构如下图
计算过程参考IEEE 1588/IEEE 802.1AS;
参考Autosar标准即可,此处不做展开。