控制器区域网络(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)协议是一个广泛使用的通信协议,最初是为了在汽车行业使用而开发。它是一种串行通信协议,采用多主、分布式控制系统,允许网络上的任何设备(称为节点)发起通信,网络上的所有其他节点都参与通信。该协议为设备提供了一种共享信息和同步行动的方式,而不需要一个中央控制器。