20241209 autosar时间同步

一、基本概念

时钟同步的目标是确保系统内所有时钟保持一致。常用的时钟同步算法有:
1、主从同步(Master-Slave Synchronization):一个主时钟驱动多个从时钟。
2、分布式同步(Distributed Synchronization):多个时钟通过相互通信实现同步。

在CAN网络中实现时钟同步面临以下挑战:
1、总线仲裁:CAN总线的仲裁机制可能导致消息传输延迟,影响同步精度。
2、抖动和漂移:时钟的抖动和漂移使得长期保持同步变得困难。
3、误差累积:由于误差累积,需定期重新同步以维持精度。

二、AUTOSAR中CAN时钟同步的实现方法

4.1 网络时间协议(NTP)
NTP是一种广泛使用的时钟同步协议。虽然NTP主要用于以太网网络,但其思想同样适用于CAN网络。NTP的基本原理是通过交换时间戳计算时钟偏移和往返时延,从而实现时钟同步。

4.2 AUTOSAR中的NTP实现
AUTOSAR中实现NTP的过程如下:
1、时间戳交换:节点之间周期性地交换时间戳。
2、时钟偏移计算:计算时钟偏移和往返时延。
3、时钟校正:根据计算结果调整本地时钟。

4.3 系统初始化
系统启动时,各个节点首先进行自检并初始化本地时钟。初始化步骤包括:
1、读取配置参数:从配置文件中读取时钟同步相关参数。
2、设置初始时钟:根据参数设置初始时钟值。

4.4 时间戳机制
AUTOSAR标准建议使用时间戳机制进行时钟同步。时间戳机制包括以下步骤:
1、时间戳插入:发送端在数据帧中插入发送时间戳。
2、时间戳提取:接收端在接收数据帧时提取接收时间戳。
3、误差计算:比较发送时间戳和接收时间戳,计算误差。
4、校正时钟:根据误差调整本地时钟。

4.5 广播同步
在CAN网络中,广播同步是一种有效的时钟同步方法。其步骤如下:
1、广播参考时间:主节点周期性地广播参考时间。
2、接收与校正:从节点接收到参考时间后,计算误差并调整本地时钟。

4.6 定期重新同步
为了确保长时间内的同步精度,需要定期进行重新同步。重新同步的步骤包括:
1、发送同步请求:从节点发送同步请求。
2、接收同步应答:主节点响应并发送当前时间。
3、重新计算与校正:从节点接收应答后重新计算时钟误差并进行校正。

4.7 时钟漂移补偿
为确保长期同步,需要对时钟漂移进行补偿。AUTOSAR标准建议在同步过程中定期测量并补偿时钟漂移。

六、AUTOSAR标准下CAN时钟同步的性能优化
6.1 优化时间戳精度
提高时间戳的精度是优化时钟同步的关键。具体措施包括:
1、硬件支持:使用高精度时钟源和硬件时间戳功能。
2、软件优化:在软件层面减少时间戳插入和提取的延迟。
6.2 降低总线负载
过高的总线负载会影响时钟同步的效果。因此,优化总线负载是提高同步精度的重要手段。优化措施包括:
1、优化消息传输:减少不必要的消息传输,优化传输优先级。
2、批量处理:将多个时间戳消息进行批量处理,减少总线占用。
6.3 误差累积处理
为防止误差累积影响同步精度,需采取以下措施:
1、定期重新同步:通过定期重新同步减少误差累积。
2、误差补偿:根据测量误差进行补偿,减小长期偏差。

三、CAN总线时间同步步骤详解

在这里插入图片描述
Master提供时间基准给其他ECU,由于同步前每个ECU都有自己的基准时间,为了能够更新本地的基准时间保持和Master同步,需要知道两个基准时间的偏移量(offset)。

1、Master周期性地发送Sync帧给Slave,那么Slave能够在t2时间收到Sync帧并记录t2时间。由于发送时的t1时间只有发送时刻才能得到,t1时间是无法和Sync帧一块儿发送的,因此需要再发送一次Followup帧,将t1时间作为数据传送给Slave。
Slave收到之后就能根据t2-t1-d得出这个offset,修正自己的基准时间,完成同步。

不过呢,你肯定会发现一个问题,就是总线上传输时间d,包括经由路由或交换机的延时没有被考虑在内,算式虽有,可还是无法完成计算。
在这里插入图片描述
(这两个图中slave和master的位置是反的 看的时候注意一下)

2、为了计算出d的大小,我们可以采取这样的方案:
Slave发送PathDelayReq帧给到Master,并记录发送时间t1,相应的,Master记录接收时间t2。
Master回送PathDelayResp帧,记录t3时间,Slave记录接收时间t4。
Master再发送一个PathDelayRespFollowup帧,将t2, t3时间作为数据发送给Slave。
Slave根据算式 ((t4-t1)-(t3-t2))/2得到传输时间d。

四、本地时间矫正算法

对于本地的时钟也是存在漂移和累计误差的,需要进行时间矫正。

先上图,横轴代表全局时间,纵轴代表本地时间。虚线代表理想的时间关系,蓝线代表实际的时间关系。显而易见,实际上,是有偏差的。其中斜率代表时钟频率偏差,红色箭头代表绝对时间的偏差。
在这里插入图片描述
Time Deviations Rate Correction

接下来注意了:

时间的矫正过程,并不改变各个在本地的运行时钟,而是动态改变本地时钟的实体变量。

It merely corrects the clock values on- the-fly when they are read.
—Autosar

接下来就是矫正的时序流程图: 先去测量,然后设置新的矫正值,然后读现在的本地时间并且矫正本地的时间,然后写回本地模块。

矫正时序图
在这里插入图片描述

动态误差图
在这里插入图片描述

上图就非常清楚地显示了时间误差的,其实也就是一种动态误差调整的过程。

五、任务同步

之前有说到,OS是目前定义的唯一一个triggered customer,需要提供接口给到Stbm做调度表同步,也即修改调度表对应的Time Base。

在同步之前,Stbm会检查OS调度表的状态,只有当状态处于WAITING,RUNNING或者RUNNING_SYNCHRONOUS时才能进行同步操作。

六、硬件时间戳

如果以太网控制器集成有时钟,能够为以太网消息加上硬件时间戳,那么时间同步的精确度可以进一步提高。如果你使用的是EB的以太网驱动,那么有无硬件时钟的两种情况,都能支持。

Best Master Clock Algorithm (BMCA) 最佳主时钟算法
在这里插入图片描述

在实际工程中,为了精确度或是冗余度,可能会存在多个Master的情况,这个时候需要用到BMCA算法。

Master会发送Announce消息,来向各个Slave声明自己是主时钟,Slave会选择更好的那一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值