控制器局域网 (CAN) 区分了数据传输和信令状态的多种消息格式。在这篇博文中,我们想概述不同的 CAN 通信格式、它们的用途和结构。
CAN 的以下四种 CAN 通信格式是有区别的:数据帧、远程帧、错误帧和过载帧。
数据帧
数据帧是 CAN 网络中最常用的 CAN 通信格式。它用于将使用数据从生产者传输到一个或多个使用者。典型的数据框由多个字段组成:
- 帧开始 (SOF),主导位
- 仲裁字段,由标识符和 RTR 位(远程传输请求)组成
- 控制字段,由 IDE 位(标准 11 位标识符的主要位置)、保留位和数据长度代码组成
- 数据字段
- 循环冗余校验 (CRC)
- 确认槽 (ACK)
- 帧末端(所有位隐性)
仲裁字段确定 CAN 通信的优先级,其中较低的值意味着较高的优先级。数据字段可以包含 0 到 8 字节的数据,这允许灵活的数据传输。
根据有效的经典 CAN 规范,定义了两种不同的兼容 CAN 通信格式,一种是具有 11 位标识符的“标准格式”,另一种是具有 29 位标识符的“扩展格式”。
29 位标识符格式
在商用车中的使用表明,要映射的大量消息需要更长的标识符。这就是为什么除了 11 位标识符之外,还使用 29 位标识符定义了额外的扩展格式。基于 29 位标识符,最多可以区分 5.12 亿条消息。
标准格式和扩展格式相互兼容,这意味着两种格式的消息可能存在于同一网络中。这两种 CAN 通信格式通过使用标识符扩展位(IDE 位)来区分。在扩展格式中,29位标识符分为两部分,分别是11位长的基于ID和18位长的扩展标识符(扩展ID)。
远程框架
每个节点都可以使用远程帧请求为负责此消息的另一个节点发送特定消息。请求的消息由与远程帧一起传输的标识符指定。虽然可以从所有接收节点请求特定消息,但可能只有一个负责请求消息的发送节点。
远程帧的CAN消息格式与数据帧的CAN消息格式相对应,不同之处在于RTR位对远程帧隐性传输,而对数据帧主要传输。因此,与具有相同标识符的数据帧同时仲裁的远程帧将失去仲裁,因为请求的消息已经发送。此外,数据字段为空。远程帧中的数据长度代码必须与相应数据帧的数据长度代码相对应。
错误帧
在发送或接收数据帧或远程帧时检测到错误的每个网络节点都会立即通过发送错误帧向所有其他网络节点发出信号。由于错误帧包含六位相同极性的位序列(错误标志),因此这(故意)违反了位填充规则*,从而提示生产者重新发送错误发送或接收的帧。
错误帧由两个字段组成。第一个字段由错误标志叠加产生,由一个或多个网络节点连接。第二个字段是 8 个隐性位的序列,显示帧的结束,类似于数据和远程帧。
*使用 CAN 填充位是一种通过连续插入五个相同位后自动插入相反位来确保数据传输保持同步和无错误的过程。这可以防止相同位的长序列中断网络参与者的同步,并促进错误检测。
过载框架
重载帧用于指示节点尚未准备好接收消息。这可能是由于内部延迟或缓冲区溢出而发生的。重载帧为节点提供了准备接收下一条消息的时间。重载帧可以被视为一个特殊的错误帧,并且与它一样,由一个标志(重载标志)和一个结束标记(重载分隔符)组成。
与错误帧不同,发送过载帧取决于与中场休息场相关的非常具体的错误条件,并且不会导致先前发送的数据或远程帧重复。
总结
CAN 通信格式的四种主要类型——数据帧、远程帧、错误帧和过载帧——对 CAN 网络的功能和可靠性具有决定性作用。 每种 CAN 通信格式都有其特定的应用领域和结构,这使得高效传输数据、发送请求、识别错误和管理过载情况成为可能。