CAN(ControllerAreaNetwork)协议是欧洲汽车电子公司RobertBoschGmbH于1983年为车载网络开发的。开发CAN协议的目的是在单根电线上实现车辆的不同电子控制单元(ECU)和微控制器控制单元(MCU)之间的稳健数据通信,从而摆脱它们之间复杂的点对点布线。尽管通过单一总线传输数据,CAN不需要任何主机。 标准CAN协议在OSI模型的物理层和数据链路层运行。其他协议栈层没有在CAN中实现,这被证明是一个很大的优势。系统工程师可以自由地以最适合应用程序的方式设计其他协议栈层。如今,CAN作为一种健壮、简单、跨域、多功能的串行网络通信协议而享有盛誉,只要属于不同域的电子设备之间需要频繁的实时数据通信,就必须实施该协议。CAN做出了CANopen、DeviceNet和J1939等变体,允许实现所有七个协议栈层以及用于特定用例的标准CAN第1层和第2层。学习标准CAN协议的实现会很有见地。 在本文中,我们将了解CAN协议及其独特的功能。然后,我们将探索CAN协议的一些典型应用,并研究CAN在这些应用中是如何被利用的。 CAN标准 CAN规范定义了CAN协议和CAN物理层。该协议主要由ISO11898规范定义,但其他规范如用于低速串行数据通信的ISO11519也适用于该协议。ISO11898规范分为三个部分。第一部分定义了数据链路层和单一物理链路的规范。规范的第二部分定义了高速CAN的CAN物理层。规范的第三部分定义了低速CAN的CAN物理层。 低速CAN的数据速率为5Kbps、10、20、50和125Kbps。高速CAN的数据速率为250、500、800Kbps和1Mbps。在CAN网络中,数据通过具有120欧姆特性阻抗的屏蔽或非屏蔽双绞线或带状电缆进行通信。DB9(公)连接器按照CiADS102规范使用。CiA代表自动化中的CAN。CAN总线的最大范围是1000m(40Kbps)。对于高速CAN,在1Mbps时最大范围为40m。一条CAN总线最多可连接127个节点。 CAN协议如何工作 在CAN网络中,连接到总线上的每个电子设备或系统都是一个节点。每个节点由三个元素组成主机控制器、CAN控制器和CAN收发器。主机控制器是设备系统中的微控制器或处理器,它为特定作业运行某些应用程序。CAN控制器处理主机控制器和CAN总线之间CAN消息的传输和接收。它充当协议处理程序。CAN收发器负责通过CAN总线传输和接收CAN消息。它充当线路驱动器。主机控制器是一个物理控制器处理器,而CAN控制器和CAN收发器是在软件或固件中实现的。 CAN节点的组件 每个节点都是一个CAN收发器。数据以半双工、异步方式传送。这些位使用差分电压通过CAN总线传输。CAN总线中的两条线称为CANlow和CANhigh。CAN总线有两种不寻常的逻辑状态,称为隐性和显性。逻辑1是隐性状态,逻辑0是显性状态。通常,总线处于隐性状态,即逻辑1。对于隐性状态或通信逻辑1,线CANlow和CANhigh都施加电源电压VDD或VCC一半的电压。电源电压通常为5V,因此两条线均施加2。5V。结果,导线之间的差分电压为0V。这被读作逻辑1。在显性状态下,CAN高电平被拉高至3。5V,CAN低电平被拉高至1。5V。因此,两根线之间的电压差为2V。这是总线的显性状态,由CAN收发器读取为逻辑0。 CAN信号电平示例 显性状态总是覆盖隐性状态。只有当所有节点都发送隐性位时,总线才处于隐性电平。由于AND逻辑,即使单个节点发送显性位,总线状态也是显性的。 CAN是一种基于消息的协议。数据以消息帧的形式进行通信。帧是有意义的位序列。消息帧有四种类型数据帧、远程帧、错误帧和过载帧。数据帧携带来自一个CAN收发器的消息,发送远程帧向其他CAN收发器请求数据,发送错误帧表示数据帧有错误,发送过载帧表示数据帧过载,表示要求数据帧传输延迟。标识符字段标识每个帧。标识符字段在标准CAN中为11位长,在扩展CAN协议中为29位长。要了解有关数据帧和其他CAN帧的结构格式的更多信息,请查看这篇关于标准CAN协议的文章。 同一时间,只有一个节点可以访问总线。CAN协议中使用的访问方法是一种称为按位仲裁(BA)的带冲突检测的载波侦听多路访问(CSMACD)方法。数据帧的标识符字段设置消息的优先级。标识符值越低,优先级越高。因此,标识符字段为0x6C3的数据帧比标识符字段为0x7B4的数据帧具有更高的优先级。类似地,标识符字段为0x7B3的数据帧比标识符字段为0x7B4的数据帧具有更高的优先级。 如果任何节点处于空闲状态,即处于隐性状态,则它可以访问CAN总线。如果两个或多个节点试图同时访问总线,则传输具有较低标识符字段的数据帧的节点,即具有较高优先级的数据帧获得总线访问权。标识符字段从MSB(位10)到LSB(位0)逐位比较,直到节点赢得仲裁。如果一个节点正在传输相应的隐性位,而任何其他节点正在传输显性位,则该节点将失去仲裁。以这种方式,发送具有最低标识符值即最高优先级的数据帧的节点获得对CAN总线的访问。其他节点必须根据其数据帧的优先级等待轮到他们。 一个CAN节点传输的数据帧被传输到总线上的所有其他节点。在其他节点,只有当标识符字段适用于它们时,它才会被它们过滤并接收。 为什么可以? 选择CAN协议的原因有很多。CAN是一种串行网络通信协议,只需要两根线即可在多个设备之间进行数据通信。连接在CAN网络中的所有设备都通过公共双线总线进行通信。不需要一对一连接两个节点设备。 由于CAN控制器和CAN收发器是在软件固件级别实现的,并且协议仅在物理和数据链路层实现,因此来自不同域的设备可以在同一总线上进行通信。每个设备或节点上的OSI模型的其他层可以由系统工程师根据特定节点设备的需要或角色单独设计。 CAN是一种基于消息的协议。与基于地址的协议不同,这种类型的协议不受总线上添加或删除节点的影响。通过总线传输的消息被广播到所有其他节点,并根据节点级别的标识符字段进行过滤。优先级通过其标识符字段附加到消息帧,而不是CAN节点。这样就不需要识别共享CAN总线的节点。可以在不影响CAN网络的情况下插入或删除节点。 作为为车载网络构建的协议,该协议使用差分电压。因此,数据不能被其他节点破坏或更改。由于电压电平不同,CAN是最强大的串行通信协议之一。 CAN总线在设备之间发生任何冲突的可能性最小。通过按位仲裁,优先级附加到消息,因此最重要的消息首先通过总线进行通信,而不管传输它们的节点如何。数据通过总线异步传输,并通过按位仲裁确定优先级。 该协议支持错误检查以确保可靠性并提供出色的抗噪性。CAN是一种广泛使用的串行通信协议,用于嵌入式电子设备之间低速但频繁的数据交换。许多芯片都内置了CAN接口。用于设置CAN网络的半导体芯片可从MaximIntegrated、TexasInstruments、AnalogDevices、MicrochipTechnology、NXP、STMicroelectronics等供应商处获得。 CAN的应用 CAN协议广泛用于所有类型的汽车行业应用,包括乘用车、重型货车和多用途车辆以及农用车辆。作为一种健壮、可靠和通用的串行通信协议,CAN不仅限于汽车。该协议被高速列车和飞机的控制模块使用。它被汽车中的娱乐和信息娱乐系统使用。该协议用于控制和监控起重机和钻探探头。它被电梯和电梯控制系统使用。该协议用于楼宇自动化,如供暖和空调系统。它也被用于自动门和窗帘开启器。它用于温室和农场的自动浇水。由于其稳健性和多功能性,该协议在医疗仪器中得到广泛采用。许多机床控制系统使用CAN网络作为实现工厂自动化的设备内总线系统。传感器网络也使用该协议,因为环境因素需要信号稳健性。 汽车 中的CANCAN协议专为车载网络而构建,用于大多数乘用车。它可以实现多个ECU之间的数据通信,而无需任何一对一的布线。大多数汽车都有基于CAN的发动机管理系统。不仅如此,大多数汽车都通过基于CAN的多路复用系统连接车身电子ECU。车载娱乐系统通过CAN总线连接。除此之外,车载诊断系统还使用CAN总线。ISO15765是基于CAN的诊断接口的规范。CAN还用于车载娱乐设备之间面向连接的数据通信。 在电动汽车和混合动力汽车中,CAN网络可以发挥意想不到的广泛作用。它对于逆变器、电池管理系统和伺服电机控制器之间的通信很有用。它还将伺服控制器与驱动器的人机界面连接起来。尽管CANopen是主要用于非汽车应用的CAN变体,但它是一种在混合动力和电动汽车中找到实用性的变体。 挖掘机和叉车等许多农业机械都依赖基于CAN的网络。在卡车起重机中,CAN用于监测和控制起重机系统。 公共交通系统中的 CANCAN协议广泛应用于高速列车和飞机。火车使用CAN连接制动控制系统。在高速列车中,CAN用于实现自动制动。火车还使用CAN与制动控制、门控制、诊断、货车监控等子系统进行通信,并与火车总线系统的网关进行通信。CAN在自动化客户服务和乘客信息系统方面也很有用。 在公路运输中,基于CAN的传感器网络用于速度检测、交通监控和交通信号灯管理。CAN也是海事电子设备使用的协议。它还用于连接飞机发动机控制系统与飞行状态传感器和导航系统。 用于工业自动化的CAN 作为一种可靠的串行通信协议,具有错误检测方法、稳健的信号逻辑和故障限制能力,基于CAN的协议(如CANopen、DeviceNet和智能分布式系统)广泛用于工业机器控制。半导体制造设备、纸箱包装机、纺织品加工机、印刷机和质量控制设备,都依赖于嵌入式CAN网络。基于CAN的分布式控制系统广泛用于机器人控制和流水线自动化。 楼宇自动化中的CAN 在楼宇自动化中,CAN协议被子网广泛使用。电梯和升降机控制系统、空调系统、自动门、自动窗帘开启器、窗帘控制系统、加热和冷却系统以及照明控制系统使用基于CAN的协议在来自不同域的电子设备之间进行通信。 医疗电子中的CAN 由于具有稳健的信号、错误检测能力和跨域通信,CAN是一种广泛应用于X光机和CT扫描仪等医疗电子设备中的设备内通信的协议。基于CAN的协议也适用于重症监护室和手术室的设备间网络。 嵌入式电子产品中的 CANCAN支持灵活的嵌入式网络,并在许多消费电器和设备中用作系统总线,例如洗衣机、自动售货机、音频视频系统、咖啡机和许多其他家用电器。