本文介绍CAN总线中的远程帧(也称遥控帧)的概念、作用及其在数据通信中的应用。通过请求数据帧发送实现灵活的数据交换机制。
远程帧(Remote frame):用于向远程节点请求数据的报文类型,在CAN总线通信协议中占有重要地位。这类帧可以进一步细分为标准远程帧与扩展远程帧。
通常情况下,ECU(Electronic Control Unit)会主动通过发送数据帧来传递信息;但在某些特定场景下,例如需要从其他节点获取特定的数据时,则需要用到远程帧。使用这种方式可以从任何CAN节点请求用户所需的信息,并且除了缺少实际的数据段以外,远程帧的结构与普通的数据帧基本一致。
**标准远程帧**
此类远程帧包含一个11位标识符(ID),用于唯一指定目标数据接收者的位置信息。
- 帧起始位:隐性“1110”表示这是一个CAN报文开始。
- 远程传输请求位(RTR Bit):显性“0”,表明该帧为远程帧类型。
- 扩展位标识符(IDE Bit): 显性 “0”,指出这是标准格式的帧。
- 保留位(R0): 显示 “0”
- 标识符字段:11位
- 数据长度码(DLC):无实际数据,因此为“0”
- 界定符 (Delimiter) : 连续两个显性的 “11”
- ACK槽 (ACK Slot): 该部分为空白,等待接收端的响应。
**扩展远程帧**
这种类型的远程帧使用29位标识符进行节点识别。
- 帧起始位:和标准帧一致
- RTR位: 隐性“1”,表明是请求数据而非发送数据。
- IDE位: 显示为 “1” ,表示这是扩展格式的报文。
- 保留位 (R1): 显性的 “1”
- 标识符字段:29位,用于更精确地识别目标节点
- 数据长度码(DLC)和界定符(Delimiter)部分与标准帧相同
- 替代远程请求(SRR) :扩展格式特有的额外标识。
- 其他部分遵循标准的结构。
无论是哪种类型的远程帧,它们都通过RTR位来区分自己与其他类型的数据报文。数据帧中该位置显示为显性“0”,意味着包含实际信息;而远程帧则在此处使用隐性的 “1” 来表示没有携带具体的信息而是请求获取数据。
由于CAN总线系统中的大多数通信都是基于发送端的主动性和实时性,所以在很多应用场景下,直接传输的数据帧比用于请求特定信息的远程帧更为常用。然而,在需要根据需求动态地从网络节点中提取数据时,远程帧就显得非常重要了。
总结来说,远程帧在CAN总线协议中的作用是发起对其他节点的数据请求,并且通过RTR位来与其他类型的报文区分开来。尽管与直接传输相比效率可能较低,但在特定的应用场景下仍然是一个必要的通信机制。因此,在设计和调试基于CAN的系统时,深入理解并应用远程帧的知识是非常有帮助的。