工业通信原理——CAN通信精讲

发布于:2024-04-11 ⋅ 阅读:(166) ⋅ 点赞:(0)

工业通信原理——CAN通信精讲

前言

CAN总线是一种用于在控制系统中进行通信的串行总线标准,常用于汽车、工业控制等领域。它允许多个设备在同一总线上进行通信,而不需要中央控制器,因此具有分布式、实时性强等特点。

CAN总线的报文格式通常分为两种:数据帧(Data Frame)和远程帧(Remote Frame)。

  1. 数据帧(Data Frame)

    • 起始符(SOF):1位,指示数据帧的开始。
    • 标识符(Identifier):11位或29位,用于标识数据帧的优先级和发送者。
    • 控制字段(Control Field):6位或8位,包括数据长度、帧格式和远程传输请求等信息。
    • 数据域(Data Field):0-64位,存放实际的数据。
    • CRC(Cyclic Redundancy Check):15位或17位,用于检测数据帧的错误。
    • 确认位(ACK):2位,用于确认数据帧的接收。
    • 结束符(EOF):7位,指示数据帧的结束。
  2. 远程帧(Remote Frame)

    • 起始符(SOF):1位。
    • 标识符(Identifier):11位或29位。
    • 控制字段(Control Field):6位或8位,包括帧格式和远程传输请求等信息。
    • 结束符(EOF):7位。

CAN通信的发送过程如下:

  1. 发送准备
    发送节点首先检查总线是否空闲,然后选择一个合适的优先级,并将数据填充到数据域中,计算CRC,并准备发送数据帧或远程帧。

  2. 发送数据帧或远程帧

    • 对于数据帧,发送节点发送起始符、标识符、控制字段、数据域、CRC和结束符,并等待接收节点的确认。
    • 对于远程帧,发送节点发送起始符、标识符、控制字段和结束符。
  3. 接收和确认

    • 接收节点接收到数据帧或远程帧后,进行CRC校验。
    • 如果CRC校验通过,接收节点发送ACK确认信号,表示数据帧或远程帧接收成功。
    • 如果CRC校验失败,接收节点不发送ACK,发送节点会认为数据帧或远程帧发送失败,并尝试重新发送。
  4. 冲突检测和处理

    • 如果多个节点同时发送数据,可能会发生冲突。
    • CAN总线上的节点会检测到冲突,并进行冲突处理,通常是采用非破坏性的冲突检测和重发机制。

总的来说,CAN总线使用数据帧和远程帧进行通信,具有高效、可靠、实时性好等特点,适用于需要高速数据传输和实时响应的应用场景。

数据帧详解

当我们深入了解CAN总线的数据帧时,可以将其分解为以下几个部分,以便更详细地理解每个字段的作用和含义:

  1. 起始符(Start of Frame, SOF):数据帧的起始位,总是为逻辑0。它指示了数据帧的开始,帮助接收节点正确定时接收数据。
  2. 标识符&#x

网站公告

今日签到

点亮在社区的每一天
去签到