CAN
CAN
一、介绍
CAN(Controller Area Network)即控制器局域网,是一种广泛应用于汽车、工业自动化、船舶、医疗设备等领域的串行通信协议。它具有高可靠性、实时性强、抗干扰能力好等优点,能够在多个设备之间进行高效的数据通信。
二、发展历史
CAN最初是由德国博世公司(Bosch)在20世纪80年代初为汽车电子控制系统开发的。当时,随着汽车电子设备的不断增加,传统的点对点通信方式已经无法满足需求,需要一种能够实现多节点通信的可靠协议。1986年,博世公司在SAE(汽车工程师协会)大会上正式发布了CAN协议。
1991年,博世公司发布了CAN 2.0协议规范,该规范分为CAN 2.0A(标准帧)和CAN 2.0B(扩展帧)两个部分,进一步完善了CAN协议。之后,国际标准化组织(ISO)在CAN 2.0的基础上制定了ISO 11898和ISO 11519两个国际标准,使得CAN协议得到了更广泛的应用和推广。
三、技术原理
(一)物理层
CAN的物理层规定了通信线路的电气特性、信号传输方式等。常见的CAN物理层采用差分信号传输,使用两条线:CAN_H和CAN_L。当CAN_H的电压比CAN_L高时,表示逻辑“0”(显性位);当CAN_H和CAN_L的电压差较小时,表示逻辑“1”(隐性位)。
这种差分信号传输方式具有很强的抗干扰能力,能够在恶劣的电磁环境中可靠地传输数据。CAN网络可以采用总线拓扑结构,多个节点通过CAN收发器连接到总线上。
(二)数据链路层
CAN的数据链路层负责数据的成帧、错误检测、仲裁等功能。
1. 数据帧格式
CAN数据帧主要分为标准帧和扩展帧。标准帧的标识符(ID)为11位,扩展帧的标识符为29位。数据帧由帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束等部分组成。
- 帧起始:标志着一个数据帧的开始,为一个显性位。
- 仲裁场:包含标识符和远程发送请求位,用于仲裁多个节点同时发送数据时的优先级。
- 控制场:包含数据长度码等信息,指示数据场的长度。
- 数据场:实际要传输的数据,长度可以为0 - 8字节。
- CRC场:用于错误检测,通过循环冗余校验算法计算得出。
- 应答场:用于接收节点确认是否正确接收到数据。
- 帧结束:标志着一个数据帧的结束,为7个隐性位。
2. 仲裁机制
当多个节点同时向总线发送数据时,CAN采用逐位仲裁的方式来确定哪个节点具有更高的优先级。标识符值越小,优先级越高。在仲裁过程中,节点不断监测总线的电平,如果发现自己发送的是隐性位而总线是显性位,则说明有其他优先级更高的节点正在发送数据,该节点将自动退出发送,等待下一次发送机会。
3. 错误处理
CAN协议具有完善的错误处理机制,包括位错误、填充错误、CRC错误等。当检测到错误时,节点会发送错误帧,并采取相应的错误恢复措施,如重发数据等。
四、应用场景
(一)汽车领域
CAN在汽车领域的应用非常广泛,是汽车电子控制系统的核心通信协议。汽车中的发动机控制单元(ECU)、变速器控制单元、制动系统、车身电子系统等多个节点之间通过CAN总线进行数据通信。例如,发动机控制单元可以将发动机的转速、温度等信息通过CAN总线发送给其他节点,实现车辆的整体控制和协调。
(二)工业自动化领域
在工业自动化生产线中,CAN总线可以连接各种传感器、执行器、控制器等设备,实现设备之间的数据交换和协同工作。例如,在机器人控制系统中,通过CAN总线可以将机器人的位置、速度等信息实时传输给控制器,从而实现精确的运动控制。
(三)船舶领域
船舶上有大量的电子设备,如导航系统、动力控制系统、监测系统等。CAN总线可以用于这些设备之间的通信,提高船舶的自动化程度和可靠性。
(四)医疗设备领域
一些医疗设备,如监护仪、输液泵等,也可以采用CAN总线进行通信。通过CAN总线,不同的医疗设备可以共享患者的生理数据,实现多参数的综合监测和控制。