AUTOSAR CAN时间同步规范
1. 引言与功能概述
AUTOSAR CAN时间同步(CanTSyn)模块是一个专用于CAN总线时间信息分发的基础软件组件。它通过精确的两阶段机制解决了由于CAN总线特性(如仲裁)和BSW特定延迟导致的时间信息不准确问题。
1.1 CAN时间同步机制
CAN时间同步采用两步机制实现精确的时间传输:
-
SYNC消息:主节点发送包含时间戳(t0r)的广播消息,通过CAN低级机制检测消息实际发送时间(t1r)。从节点接收此消息并记录接收时间(t2r)。
-
FUP消息:主节点在第二条广播消息中发送前一条SYNC消息的实际发送时间与消息中时间的偏移量。从节点结合SYNC消息信息、FUP消息中的偏移信息以及自身接收SYNC消息的时间戳,可以更精确地确定时间值。
这种两步机制能有效补偿CAN总线传输过程中产生的延迟,提供更为精确的时间同步。
1.2 模块状态流转
CanTSyn模块具有完整的状态管理机制,确保时间同步过程的可靠性和稳定性。
CanTSyn模块状态转换包括:
- 未初始化(UNINIT):模块尚未初始化,无法处理任何时间同步功能
- 已初始化(INIT):模块已通过CanTSyn_Init()函数初始化,准备就绪但尚未开始同步
- 同步状态(SYNC):模块正常运行,根据配置执行主节点或从节点功能
- 错误状态(ERROR):检测到配置错误、通信错误等异常情况
错误状态需要通过重新初始化来恢复正常运行。
2. CAN时间同步详细流程
2.1 时间同步交互流程
时间同步过程涉及多个模块之间的复杂交互,主要包括StbM(同步时基管理器)、CanTSyn、CanIf(CAN接口)和Can驱动等模块。
主要流程步骤包括:
- StbM请求CanTSyn发送时间信息
- CanTSyn主节点准备SYNC消息(t0r)并通过CanIf请求发送
- 消息通过CAN总线传输到从节点
- CanTSyn主节点接收传输确认,记录实际发送时间(t1r)
- CanTSyn从节点接收SYNC消息并记录接收时间戳(t2r)
- CanTSyn主节点计算时间偏移(t1r - t0r)
- CanTSyn主节点发送包含偏移量的FUP消息
- CanTSyn从节点接收FUP消息,结合之前记录的时间戳,计算准确的时间信息
- CanTSyn从节点更新StbM中的全局时间
这种两阶段机制能有效补偿CAN总线传输延迟,确保时间同步的准确性。
2.2 消息格式设计
CAN时间同步使用四种不同类型的消息进行通信,每种消息具有特定的格式和功能。
四种消息类型:
-
SYNC消息:包含初始时间戳(t0r),由时间主节点发送,接收方记录接收时间(t2r)
- 消息类型(1字节) + 域ID(1字节) + 时间戳(6字节) + 可选CRC(最多1字节)
-
FUP消息(Follow-Up):包含SYNC消息的实际传输时间与消息中时间的偏移量(t1r-t0r)
- 消息类型(1字节) + 域ID(1字节) + 时间偏移量(2字节) + 时间戳(6字节) + 可选CRC(最多1字节)
-
OFS消息(偏移同步):用于调整时钟偏移,进行时间校准
- 消息类型(1字节) + 域ID(1字节) + 偏移量(4字节) + 符号位(1位) + 可选CRC(最多1字节)
-
OFNS消息(偏移调整):用于调整时钟偏移和斜率,提供更精确的时间校准
- 消息类型(1字节) + 域ID(1字节) + 调整偏移量(4字节) + 符号位(1位) + 斜率(2字节) + 可选CRC(最多1字节)
这些消息格式的设计确保了时间同步的准确性和可靠性,能够处理各种时钟调整需求。
3. 模块结构与配置
3.1 CanTSyn模块结构
CanTSyn模块采用分层设计,与AUTOSAR标准软件架构保持一致。
CanTSyn模块主要组件包括:
- CanTSyn核心模块:提供初始化、反初始化、版本信息获取等基础功能
- CanTSynGlobalTimeDomain:全局时间域配置,支持多个时间域,包含CRC校验与即时同步选项
- CanTSynGlobalTimeMaster:主节点配置,包含发送周期、发送偏移等参数
- CanTSynGlobalTimeSlave:从节点配置,包含跟随超时等参数
模块与StbM和CanIf密切协作,共同实现时间同步功能。
3.2 关键配置参数
CanTSyn模块的配置参数主要包括:
- CanTSynGlobalTimeDomainId:全局时间域ID
- CanTSynSynchronizedTimeBaseRef:同步时基引用
- CanTSynCrcValidated:是否启用CRC校验
- CanTSynImmediate:是否启用即时同步
- CanTSynDebounceTime:防抖时间配置
- CanTSynGlobalTimeTxPeriod:主节点发送周期
- CanTSynGlobalTimeTxOffset:主节点发送偏移
- CanTSynGlobalTimeFollowUpTimeout:从节点跟随超时时间
这些参数可以根据具体应用场景进行调整,以满足不同的时间同步精度要求和系统性能需求。
4. 总结
AUTOSAR CAN时间同步规范定义了一套完整的机制,用于在CAN总线上传输精确的时间信息。通过两阶段消息传输机制,CanTSyn模块有效解决了由于CAN总线特性和系统延迟导致的时间不准确问题。
通过严格遵循AUTOSAR规范实现CanTSyn模块,可以为分布式汽车电子系统提供可靠的时间基准,支持需要精确时间同步的功能,如诊断、日志记录和分布式控制等。
集成,确保了时间同步功能在AUTOSAR软件架构中的无缝运行。