AUTOSAR StbM时间同步模块的应用

2023-12-22 07:19:11

AUTOSAR StbM时间同步模块的应用

一、SWC获取全局时间

本地时间T1

全局时间T2

当正常收到全局时间T2时,会记录收到全局时间T2时的本地时间T1。

假设收到的全局时间是12345,本地时间是1000,那么1000就相当于是全局的12345。

StbM_MainFunction的周期是100ms,同步报文的周期是1000ms。

1、SWC调用StbM_GetCurrentTime获取全局时间。

2、StbM获取当前的本地时间戳,因为SWC是随机获取的,所以肯定不是和StbM_MainFunction同周期

的,假设这个时候本地时间是1156ms,全局时间还没有下次同步,所以还是12345ms。

3、StbM获取上次同步的全局时间戳,也就是12345ms,然后计算本地时间戳与上次StbM_MainFunction更

新的本地时间的差值,也就是1156-1100 = 56ms。

4、计算全局时间,也就是拿StbM维护的本地时间(1100 - 1000) + 56 得到上次全局时间同步的差值,也

就是当前的时间相对于上次同步的时间差,得到全局时间就是12345+100+56

二、SWC获取StbM的状态
在这里插入图片描述

可以配置这个回调函数以及对应的mask,这样在发生我们想要的状态转换时,就会自动调用回调函数。

在这里插入图片描述

bit0 :STBM_EV_GLOBAL_TIME_BASE 在第一次发生时间同步的时候会置位

bit1:STBM_EV_TIMEOUT_OCCURED 如果在时间同步后发生了时间同步报文超时,该位置1

bit2:STBM_EV_TIMEOUT_REMOVED 在接收到时间同步报文恢复后会置位,并且清除bit1

bit3: STBM_EV_TIMELEAP_FUTURE 在接收到时间同步报文恢复后会置位

文章来源:https://blog.csdn.net/qq_36750998/article/details/135142059
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。