CAN报文格式:概述

22 7月 2024
Ixxat
四种CAN报文格式(数据帧、远程帧、错误帧和过载帧)确保了CAN网络中的高效数据传输、请求处理、错误检测和过载管理。

控制器局域网 (CAN) 区分数据传输和信令状态的几种报文格式。在这篇博文中,我们想概述不同的消息格式、它们的目的和结构。

CAN的以下四种报文格式是有区别的:数据帧、远程帧、错误帧和重载帧。

 

数据帧

数据帧是CAN网络中最常用的消息格式。它用于将使用数据从生产者传输到一个或多个使用者。典型的数据帧由几个字段组成: 

  • 帧起始 (SOF),主位
  • 仲裁字段,由标识符和 RTR 位(远程传输请求)组成
  • 控制字段,由 IDE 位(标准 11 位标识符占主导地位)、保留位和数据长度代码组成
  • 数据字段 
  • 循环冗余校验 (CRC) 
  • 确认槽 (ACK)
  • 帧结束(所有位都是隐性的)

 

仲裁字段确定消息的优先级,其中值越低表示优先级越高。数据字段可以包含 0 到 8 个字节的数据,这允许灵活的数据传输。

 

Classic 11-bit CAN Identifier

 

根据有效的经典CAN规范,定义了两种不同的兼容报文格式,即具有11位标识符的“标准格式”,以及具有29位标识符的“扩展格式”。 

 

29 位标识符格式

在商用车中的应用表明,要映射的大量消息需要更长的标识符。因此,除了 11 位标识符之外,还定义了使用 29 位标识符的附加扩展格式。根据 29 位标识符,可以区分多达 5.12 亿条消息。 

标准格式和扩展格式相互兼容,这意味着两种格式的消息可能存在于同一个网络中。使用标识符扩展位(IDE 位)来区分这两种格式。在扩展格式中,29 位标识符分为两部分,即 11 位长的基本标识符(base ID)和 18 位长的扩展标识符(extended ID)。 

 

Extended 29-bit CAN Identifier

 

远程帧

每个节点都可以使用远程帧请求向负责此消息的另一个节点发送特定消息。请求的消息由与远程帧一起传输的标识符指定。虽然可以从所有接收节点请求特定消息,但请求的消息可能只有一个负责的发送节点。

远程帧的消息格式与数据帧的消息格式相对应,不同之处在于 RTR 位对于远程帧是隐性传输的,而对于数据帧是主要传输的。因此,与具有相同标识符的数据帧同时仲裁的远程帧将失去仲裁,因为请求的消息已经发送。此外,数据字段为空。远端帧中的数据长度代码必须与相应数据帧的数据长度代码相对应。

 

错误帧

在发送或接收数据帧或远程帧时检测到错误的每个网络节点都会立即通过发送错误帧向所有其他网络节点发出信号。由于错误帧包含六个相同极性的位序列(错误标志),这(故意)违反了位填充规则*,从而促使生产者重新发送错误发送或接收的帧。 

错误帧由两个字段组成。第一个字段由错误标志的叠加产生,由一个或多个网络节点连接。第二个字段是 8 个隐性位的序列,显示帧的末尾,类似于数据帧和远程帧。

*CAN位填充是一个过程,通过在连续五个相同的位之后自动插入一个相反的位来确保数据传输保持同步和无错误。这样可以防止相同位的长序列中断网络参与者的同步,并便于错误检测。

 

Error frame

 

过载框架

重载帧用于指示节点尚未准备好接收消息。这可能是由于内部延迟或缓冲区溢出而发生的。重载帧使节点有时间准备接收下一条消息。重载帧可以被视为特殊的错误帧,与它一样,由标志(重载标志)和结束标记(重载分隔符)组成。 

与错误帧不同,发送过载帧取决于与中场休息场相关的非常具体的错误条件,并且不会导致先前发送的数据或远程帧的重复。

 

总结

四种主要类型的CAN报文格式——数据帧、远程帧、错误帧和过载帧——对CAN网络的功能和可靠性具有决定性作用。 每种格式都有其特定的应用领域和结构,可以有效地传输数据、发送请求、识别错误和管理过载情况。