CAN 协议


控制器局域网 (CAN) 协议是一种通信协议,最初开发用于汽车行业,但也被应用于其他行业,如工业自动化和医疗设备。它是一种串行通信协议,使用多主控、分布式控制系统。这意味着网络上的任何设备(称为节点)都可以发起通信,并且网络上的所有其他节点都可以参与通信。该协议提供了一种方法,使设备能够共享信息并同步其操作,而无需中央控制器。该协议使用碰撞检测和仲裁机制来防止多个节点同时传输,并确保一次只有一个节点可以传输。

为什么选择 CAN?

CAN 协议是为了解决汽车行业随着汽车变得越来越复杂并集成了更多电子系统而出现的一些挑战而开发的。开发 CAN 协议的一些关键原因包括:

  • 高可靠性 − CAN 协议旨在具有鲁棒性和容错性,使其适用于汽车发动机控制和制动系统等关键系统。

  • 低成本 − CAN 协议使用简单高效的信号方法,可以实现低成本实施,这在成本至关重要的汽车行业尤其重要。

  • 重量轻,布线最少 − CAN 协议使用双线总线,减少了汽车所需的布线量,使车辆更轻,从而可以提高燃油效率。

  • 可扩展性 − CAN 协议设计用于支持网络上的大量设备,因此可以根据需要轻松添加新设备或删除现有设备。

  • 多主控能力 − 任何设备(节点)都能够在网络中发起通信,这允许不同的系统进行通信并根据其需求采取行动,并且还支持分布式控制,这是该协议的主要功能。

CAN 协议的应用

控制器局域网 (CAN) 协议广泛应用于各种应用中,包括:

  • 汽车 − CAN 协议最初是为汽车行业开发的,并用于现代汽车中的各种系统,包括发动机控制、变速箱控制、防抱死制动系统和车身电子设备。

  • 工业自动化 − CAN 协议用于工业自动化系统,以允许设备进行通信并协调其操作,例如控制电机、传感器和其他设备。

  • 医疗设备 − CAN 协议用于医疗设备以控制各种功能并在设备之间传输数据。例如,患者监护系统使用该协议在设备之间传输患者生命体征数据。

  • 航空电子设备 − 该协议用于航空电子设备以控制和监控各种系统,例如发动机、导航和飞行控制系统。

  • 楼宇自动化 − 该协议用于楼宇自动化系统以控制和监控各种系统,例如供暖、通风、空调 (HVAC)、照明和安全系统。

  • 机器人 − 该协议用于机器人以控制和监控各种系统,例如电机、传感器和其他设备,从而允许机器人进行通信并协调其操作。

CAN 帧结构

在控制器局域网 (CAN) 协议中,消息使用称为帧的特定格式进行传输。帧包含几个字段,其中包含有关消息的信息,例如源地址、目标地址和数据有效负载。

CAN 帧的基本格式包括:

  • 帧起始 (SOF) − 标识帧的开始。

  • 标识符 (ID) − 用于标识消息的唯一 11 位或 29 位数字。

  • 远程传输请求 (RTR) − 指示帧是数据帧 (0) 还是请求数据的远程帧 (1)。

  • 标识符扩展 (IDE) − 指示 ID 字段是 11 位 (0) 还是 29 位 (1)。

  • 数据长度代码 (DLC) − 指示数据有效负载的长度(以字节为单位)。

  • 数据 − 消息的有效负载,最多可达 8 个字节。

  • 循环冗余校验 (CRC) − 用于检测帧中错误的校验和。

  • 确认时隙 (ACK) − 接收节点对消息传输的确认。

  • 帧结束 (EOF) − 标识帧的结束。

消息作为总线上的一系列比特进行传输,其中最高有效位 (MSB) 首先传输。消息传输完成后,网络上的所有节点都将接收该消息,但只有具有匹配标识符的节点才会处理该消息。

CAN 分层架构

控制器局域网 (CAN) 协议具有分层架构,旨在分离协议的不同职责。CAN 协议通常分为五层:

  • 物理层 − 此层负责通过通信介质(如电缆或无线链路)物理传输比特。它定义了节点与通信介质之间接口的电气、机械和操作规范。

  • 数据链路层 − 此层负责在节点之间提供可靠的数据传输。它包括错误检测和纠正机制,如比特填充和循环冗余校验 (CRC)。它还管理仲裁过程,以确保一次只有一个节点可以传输,并管理消息的确认。

  • 网络层 − 此层负责为网络上的所有节点提供通用的通信格式和寻址方案。它定义了消息的格式,包括标识符、数据有效负载和优先级。

  • 传输层 − 此层定义消息传输和接收的规则,例如消息分段和重传、流量控制和错误处理。

  • 应用层 − 此层定义可供应用程序使用的服务和接口,例如发送和接收消息以及监视网络状态。它还为应用程序层提供接口。

架构的每一层都设计为独立于其他层,因此可以对一层进行更改或改进,而不会影响其他层。这种设计允许协议具有灵活性和可扩展性,使其非常适合不同行业的各种应用。

结论

总之,控制器局域网 (CAN) 协议是一种广泛使用的通信协议,最初是为汽车行业开发的。它是一种串行通信协议,使用多主控、分布式控制系统,允许网络上的任何设备(称为节点)发起通信,并且网络上的所有其他节点都可以参与通信。该协议提供了一种方法,使设备能够共享信息并同步其操作,而无需中央控制器。

更新于: 2023 年 2 月 8 日

15K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告