汽车CAN报文中的CheckSum和RollingCounter介绍

CAN总线在汽车和船舰电子设备通信中被广泛运用,并且随着国家智能网联汽车行业的不断发展,对CAN的需求也会越来越大。

 

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。在汽车CAN总线网络通信中,OEM精心设计的CAN通信矩阵,通常被编译成Excel或DBC格式的文件,旨在清晰的描述网络节点、消息、信号间错综复杂的交互关系。而在这个框架内有两个尤为重要的信号:CheckSum信号与RollingCounter信号,扮演着关键的角色。

 

那么,您对这两个信号的具体作用与意义是否有所了解呢?今天小编给大家分享下这两个信号的特点和应用分别有哪些。

 

一、使用背景

为什么会使用这两个信号?简单来说,是为了安全,或者说“合法”。

CAN总线协议是包含CRC校验的(CRC段)。但是,它只保证数据在总线上传输的正确性和完整性。至于数据来源是否“合法”,在CAN的广播机制下,协议自带的CRC校验是无法识别的。因此,这就有了CheckSum与RollingCounter两种信号。

 

图1 CAN协议报文帧格式

 

二、CheckSum介绍

与CAN链路层自带的CRC校验不同,CheckSum信号(校验值)是对数据段其他字节进行计算,生成的一个校验值。同时,该校验值也放在报文的数据段里,确保报文数据的完整性和正确性。

 

在接收端使用相同的算法进行校验,检查校验结果是否一致,从而判断报文数据是否异常。更进一步的,确认出发送端的身份,因为不知道CheckSum的算法,一般很难冒充车上的节点。

 

通常,CheckSum算法有和校验、异或校验、CRC校验等。很明显,如果是使用这些常规算法,也是可能被检测、识别的。进一步的,伪装成合法的节点也不是难事。

 

三、RollingCounter介绍

此时,就不得不提数据段中的另一个信号——RollingCounter信号。

 

RollingCounter信号(滚动计数器),同样位于CAN报文的数据段,一般为4bits。显然,该信号的取值范围在0x0~0xF之间。每次发送一帧报文,该信号值加1,循环计数。

 

对于RollingCounter信号的异常判定,通常规定连续5次出现相同的信号值,或者连续3次连续的两帧之间信号差值大于2,则认为RollingCounter信号发生异常。

 

接收端在收到报文后,会检查RollingCounter信号的值是否连续且符合逻辑。如果出现计数器不连续或首尾值不对的情况,接收端会认为丢帧,并上报报文丢失或超时故障码。

 

四、小结

在CAN通信矩阵里,将CheckSum信号与RollingCounter信号相结合,实现了对CAN总线报文数据的校验和监测。其中,CheckSum信号可验证CAN报文数据内容的有效性,也说明RollingCounter信号值是可信的;而RollingCounter信息则可确保数据帧的连续性,判定是否有丢帧的情况。二者相辅相成,在汽车CAN总线网络通信中起到了至关重要的作用。

 

以上就是小编为您讲解CAN总线中的CheckSum信号与RollingCounter信号特点及应用有哪些的全部内容。如果您有什么新的疑问或见解,欢迎留言评论,以便大家一起学习探讨。


注:文章内的所有配图为网络转载图片,侵权即删。

 

首页    通知公告    汽车CAN报文中的CheckSum和RollingCounter介绍
创建时间:2024-08-27