"); //-->
CAN(Controller Area Network)协议是欧洲汽车电子公司Robert Bosch GmbH于1983年为车载网络开发的。开发 CAN 协议的目的是在单根电线上实现车辆的不同电子控制单元 (ECU) 和微控制器控制单元 (MCU) 之间的稳健数据通信,从而摆脱它们之间复杂的点对点布线. 尽管通过单一总线传输数据,CAN 不需要任何主机。
标准 CAN 协议在 OSI 模型的物理层和数据链路层运行。其他协议栈层没有在 CAN 中实现,这被证明是一个很大的优势。系统工程师可以自由地以最适合应用程序的方式设计其他协议栈层。如今,CAN 作为一种健壮、简单、跨域、多功能的串行网络通信协议而享有盛誉,只要属于不同域的电子设备之间需要频繁的实时数据通信,就必须实施该协议。CAN 做出了 CANopen、DeviceNet 和 J1939 等变体,允许实现所有七个协议栈层以及用于特定用例的标准 CAN 第 1 层和第 2 层。学习标准 CAN 协议的实现会很有见地。
在本文中,我们将了解 CAN 协议及其独特的功能。然后,我们将探索 CAN 协议的一些典型应用,并研究 CAN 在这些应用中是如何被利用的。
CAN 标准
CAN 规范定义了 CAN 协议和 CAN 物理层。该协议主要由 ISO-11898 规范定义,但其他规范如用于低速串行数据通信的 ISO-11519 也适用于该协议。ISO-11898 规范分为三个部分。第一部分定义了数据链路层和单一物理链路的规范。规范的第二部分定义了高速 CAN 的 CAN 物理层。规范的第三部分定义了低速 CAN 的 CAN 物理层。
低速 CAN 的数据速率为 5Kbps、10、20、50 和 125Kbps。高速 CAN 的数据速率为 250、500、800Kbps 和 1Mbps。在 CAN 网络中,数据通过具有 120 欧姆特性阻抗的屏蔽或非屏蔽双绞线或带状电缆进行通信。DB9(公)连接器按照 CiA DS-102 规范使用。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 总线中的两条线称为 CAN low 和 CAN high。CAN 总线有两种不寻常的逻辑状态,称为隐性和显性。逻辑1是隐性状态,逻辑0是显性状态。通常,总线处于隐性状态,即逻辑 1。对于隐性状态或通信逻辑 1,线 CAN low 和 CAN high 都施加电源电压 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) 的带冲突检测的载波侦听多路访问 (CSMA/CD) 方法。数据帧的标识符字段设置消息的优先级。标识符值越低,优先级越高。因此,标识符字段为 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 网络的半导体芯片可从 Maxim Integrated、Texas Instruments、Analog Devices、Microchip Technology、NXP、ST Microelectronics 等供应商处获得。
CAN的应用
CAN 协议广泛用于所有类型的汽车行业应用,包括乘用车、重型货车和多用途车辆以及农用车辆。作为一种健壮、可靠和通用的串行通信协议,CAN 不仅限于汽车。该协议被高速列车和飞机的控制模块使用。它被汽车中的娱乐和信息娱乐系统使用。该协议用于控制和监控起重机和钻探探头。它被电梯和电梯控制系统使用。该协议用于楼宇自动化,如供暖和空调系统。它也被用于自动门和窗帘开启器。它用于温室和农场的自动浇水。由于其稳健性和多功能性,该协议在医疗仪器中得到广泛采用。许多机床控制系统使用 CAN 网络作为实现工厂自动化的设备内总线系统。传感器网络也使用该协议,因为环境因素需要信号稳健性。
汽车
中的 CAN CAN 协议专为车载网络而构建,用于大多数乘用车。它可以实现多个 ECU 之间的数据通信,而无需任何一对一的布线。大多数汽车都有基于 CAN 的发动机管理系统。不仅如此,大多数汽车都通过基于 CAN 的多路复用系统连接车身电子 ECU。车载娱乐系统通过CAN总线连接。除此之外,车载诊断系统还使用 CAN 总线。ISO-15765 是基于 CAN 的诊断接口的规范。CAN 还用于车载娱乐设备之间面向连接的数据通信。
在电动汽车和混合动力汽车中,CAN 网络可以发挥意想不到的广泛作用。它对于逆变器、电池管理系统和伺服电机控制器之间的通信很有用。它还将伺服控制器与驱动器的人机界面连接起来。尽管 CANopen 是主要用于非汽车应用的 CAN 变体,但它是一种在混合动力和电动汽车中找到实用性的变体。
挖掘机和叉车等许多农业机械都依赖基于 CAN 的网络。在卡车起重机中,CAN 用于监测和控制起重机系统。
公共交通系统中的
CAN CAN协议广泛应用于高速列车和飞机。火车使用 CAN 连接制动控制系统。在高速列车中,CAN 用于实现自动制动。火车还使用 CAN 与制动控制、门控制、诊断、货车监控等子系统进行通信,并与火车总线系统的网关进行通信。CAN 在自动化客户服务和乘客信息系统方面也很有用。
在公路运输中,基于 CAN 的传感器网络用于速度检测、交通监控和交通信号灯管理。CAN 也是海事电子设备使用的协议。它还用于连接飞机发动机控制系统与飞行状态传感器和导航系统。
用于工业自动化的 CAN
作为一种可靠的串行通信协议,具有错误检测方法、稳健的信号逻辑和故障限制能力,基于 CAN 的协议(如 CANopen、DeviceNet 和智能分布式系统)广泛用于工业机器控制。半导体制造设备、纸箱包装机、纺织品加工机、印刷机和质量控制设备,都依赖于嵌入式 CAN 网络。基于CAN的分布式控制系统广泛用于机器人控制和流水线自动化。
楼宇自动化中的CAN
在楼宇自动化中,CAN 协议被子网广泛使用。电梯和升降机控制系统、空调系统、自动门、自动窗帘开启器、窗帘控制系统、加热和冷却系统以及照明控制系统使用基于 CAN 的协议在来自不同域的电子设备之间进行通信。
医疗电子中的 CAN
由于具有稳健的信号、错误检测能力和跨域通信,CAN 是一种广泛应用于 X 光机和 CT 扫描仪等医疗电子设备中的设备内通信的协议。基于 CAN 的协议也适用于重症监护室和手术室的设备间网络。
嵌入式电子产品中的
CAN CAN 支持灵活的嵌入式网络,并在许多消费电器和设备中用作系统总线,例如洗衣机、自动售货机、音频视频系统、咖啡机和许多其他家用电器。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。