CAN 总线(Controller Area Network,CAN bus)是控制器局域网络的简称,是一种支持分布式控制的串行数据通信总线,也是国际上应用最广泛的网络总线之一。

CAN 总线的主要特点包括:

  1. 多主控制:在总线空闲时,所有单元都可以发送消息。当多个单元同时开始发送消息时,根据标识符(ID)决定优先级,ID 不是目的地址,而是表示消息的优先级。
  2. 系统的软性:总线上的单元没有类似“地址”的信息,增加或减少单元时,其他单元的软硬件及应用层无需改变。
  3. 通信速度快且距离远:最高通信速率可达 1Mbps(此时距离最长为 40 米),最远的直接通信距离可达 10 公里(速率在 5kbit/s 以下)。
  4. 具备错误检测与恢复功能:所有单元都可检测错误,检测出错误的单元会立即通知其他所有单元。正在发送消息的单元一旦检测出错误,会强制结束当前发送,并不断重新发送此消息直到成功。CAN 协议定义了位错误、填充错误、CRC 错误、格式错误和确认错误等五种错误检测方法,以界定不同的错误状态来进行处理。
  5. 故障封闭功能:CAN 可以判断错误类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等),当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
  6. 连接节点多:理论上可连接的单元总数没有限制,但实际上受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

CAN 协议经过 ISO 标准化后有两个标准:ISO 11898 标准和 ISO 11519-2 标准。其中 ISO 11898 是针对通信速率为 125kbps~1Mbps 的高速通信标准,而 ISO 11519-2 是针对通信速率为 125kbps 以下的低速通信标准。

CAN 协议通过以下 5 种类型的帧进行通信:

  1. 数据帧:用于发送单元向接收单元传送数据。一般由 7 个段构成:
    • 帧起始:表示数据帧开始,由 1 个位的显性电平表示。
    • 仲裁段:标准格式的 ID 有 11 个位,从 ID28 到 ID18 依次发送,禁止高 7 位都为隐性。扩展格式的 ID 有 29 个位,基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示,基本 ID 和标准格式的 ID 相同,禁止高 7 位都为隐性。其中 RTR 位用于标识是否是远程帧(0 为数据帧,1 为远程帧),IDE 位为标识符选择位(0 为使用标准标识符,1 为使用扩展标识符),SRR 位为代替远程请求位,为隐性位,它代替了标准帧中的 RTR 位。
    • 控制段:由 6 个位构成,表示数据段的字节数。标准帧中包含 1 位 IDE 位、1 位 r0 保留位和 4 位 DLC 数据长度码;扩展帧中有 2 位 r0 和 r1 保留位以及 4 位 DLC 数据长度码。DLC 段有效值为 0~8,但接收方接收到 9~15 时不认为是错误。
    • 数据段:可包含 0~8 个字节的数据,从最高位(MSB)开始输出。
    • CRC 段:用于检查帧传输错误,由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符构成。
    • ACK 段:用来确认是否正常接收。
  2. 遥控帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧。
  3. 错误帧:用于当检测出错误时向其它单元通知错误的帧。
  4. 过载帧:用于接收单元通知其尚未做好接收准备的帧。
  5. 帧间隔:用于将数据帧及遥控帧与前CAN 总线(Controller Area Network,CAN bus)是控制器局域网络的简称,是一种支持分布式控制的串行数据通信总线,也是国际上应用最广泛的网络总线之一。

CAN 总线的主要特点包括:

  1. 多主控制:在总线空闲时,所有单元都可以发送消息。当多个单元同时开始发送消息时,根据标识符(ID)决定优先级,ID 不是目的地址,而是表示消息的优先级。
  2. 系统的软性:总线上的单元没有类似“地址”的信息,增加或减少单元时,其他单元的软硬件及应用层无需改变。
  3. 通信速度快且距离远:最高通信速率可达 1Mbps(此时距离最长为 40 米),最远的直接通信距离可达 10 公里(速率在 5kbit/s 以下)。
  4. 具备错误检测与恢复功能:所有单元都可检测错误,检测出错误的单元会立即通知其他所有单元。正在发送消息的单元一旦检测出错误,会强制结束当前发送,并不断重新发送此消息直到成功。CAN 协议定义了位错误、填充错误、CRC 错误、格式错误和确认错误等五种错误检测方法,以界定不同的错误状态来进行处理。
  5. 故障封闭功能:CAN 可以判断错误类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等),当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
  6. 连接节点多:理论上可连接的单元总数没有限制,但实际上受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

CAN 协议经过 ISO 标准化后有两个标准:ISO 11898 标准和 ISO 11519-2 标准。其中 ISO 11898 是针对通信速率为 125kbps~1Mbps 的高速通信标准,而 ISO 11519-2 是针对通信速率为 125kbps 以下的低速通信标准。

CAN 协议通过以下 5 种类型的帧进行通信:

  1. 数据帧:用于发送单元向接收单元传送数据。一般由 7 个段构成:
    • 帧起始:表示数据帧开始,由 1 个位的显性电平表示。
    • 仲裁段:标准格式的 ID 有 11 个位,从 ID28 到 ID18 依次发送,禁止高 7 位都为隐性。扩展格式的 ID 有 29 个位,基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示,基本 ID 和标准格式的 ID 相同,禁止高 7 位都为隐性。其中 RTR 位用于标识是否是远程帧(0 为数据帧,1 为远程帧),IDE 位为标识符选择位(0 为使用标准标识符,1 为使用扩展标识符),SRR 位为代替远程请求位,为隐性位,它代替了标准帧中的 RTR 位。
    • 控制段:由 6 个位构成,表示数据段的字节数。标准帧中包含 1 位 IDE 位、1 位 r0 保留位和 4 位 DLC 数据长度码;扩展帧中有 2 位 r0 和 r1 保留位以及 4 位 DLC 数据长度码。DLC 段有效值为 0~8,但接收方接收到 9~15 时不认为是错误。
    • 数据段:可包含 0~8 个字节的数据,从最高位(MSB)开始输出。
    • CRC 段:用于检查帧传输错误,由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符构成。
    • ACK 段:用来确认是否正常接收。
  2. 遥控帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧。
  3. 错误帧:用于当检测出错误时向其它单元通知错误的帧。
  4. 过载帧:用于接收单元通知其尚未做好接收准备的帧。
  5. 帧间隔:用于将数据帧及遥控帧与前面的帧分离开来的帧。

CAN 总线采用差分信号传输,通常只需两根信号线。在差分信号中,逻辑 0 和逻辑 1 是用两根差分信号线的电压差来表示。显性电平对应逻辑 0,CAN_H 和 CAN_L 之差为 2.5V 左右;隐性电平对应逻辑 1,CAN_H 和 CAN_L 之差为 0V。总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平;而只有所有单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。在 CAN 总线的起止端一般都有一个 120Ω的终端电阻,用于做阻抗匹配,以减少回波反射。

CAN 总线作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通信控制方式,被广泛应用于汽车电子、自动控制、智能大厦、电力系统、安防监控等各个领域。例如在汽车领域,CAN 总线可用于车身控制器局域网等系统。

在实际应用中,CAN 总线的调试可以通过测量 CAN 收发器和 CAN 控制器的发送和接收信号来验证其工作状态是否正常。

总之,CAN 总线具有多方面的优势,使其在众多自动化控制系统中得到了广泛的应用和认可。不过,它也存在一些局限性,如总线的容错能力和可扩展性相对较差等。在具体的系统设计和应用中,需要根据实际需求来综合考虑其优缺点,以充分发挥 CAN 总线的性能。面的帧分离开来的帧。

CAN 总线采用差分信号传输,通常只需两根信号线。在差分信号中,逻辑 0 和逻辑 1 是用两根差分信号线的电压差来表示。显性电平对应逻辑 0,CAN_H 和 CAN_L 之差为 2.5V 左右;隐性电平对应逻辑 1,CAN_H 和 CAN_L 之差为 0V。总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平;而只有所有单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。在 CAN 总线的起止端一般都有一个 120Ω的终端电阻,用于做阻抗匹配,以减少回波反射。

CAN 总线作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通信控制方式,被广泛应用于汽车电子、自动控制、智能大厦、电力系统、安防监控等各个领域。例如在汽车领域,CAN 总线可用于车身控制器局域网等系统。

在实际应用中,CAN 总线的调试可以通过测量 CAN 收发器和 CAN 控制器的发送和接收信号来验证其工作状态是否正常。

总之,CAN 总线具有多方面的优势,使其在众多自动化控制系统中得到了广泛的应用和认可。不过,它也存在一些局限性,如总线的容错能力和可扩展性相对较差等。在具体的系统设计和应用中,需要根据实际需求来综合考虑其优缺点,以充分发挥 CAN 总线的性能。

最后修改:2024 年 07 月 08 日
如果觉得我的文章对你有用,请随意赞赏