车载总线介绍-CAN

news2024/9/30 9:21:28

车辆内部网络通信是指车辆内部各个电子控制单元(ECU)之间进行数据传输和通信的过程。现代汽车包含多个ECU,每个ECU负责特定的功能,例如整车控制VCU、发动机控制EMS、制动系统ESC、转向系统EPS、驾驶辅助系统、车身控制系统及空调系统、娱乐系统等。这些ECU之间的通信允许车辆的各个系统协同工作,提供各种功能和服务。

图片

对于车内部通信网络有着特殊的要求,例如确保消息传递、无冲突消息、最短传递时间、低成本和电磁干扰韧性,以及冗余路由和其他特性等。这些协议包括控制器局域网(CAN)、局域网(LIN)、多媒体系统传输(MOST)、FlexRay及由于数据量大大增加,及IT技术的发展,最近几年兴起的汽车以太网通信Ethernet。

本文总结了这些车辆内部网络通信的关于CAN及CAN-FD一些关键概念和技术:

控制器局域网(Controller Area Network,简称CAN总线)是一种旨在允许微控制器和设备在无主机计算机的情况下相互通信的车辆总线标准。它是一种基于消息的协议,最初设计用于汽车内部的多路复用电气布线,以节省铜线,但也可以在许多其他上下文中使用。对于每个设备,帧中的数据以串行方式传输,但如果多个设备同时传输,最高优先级的设备可以继续传输,而其他设备则会暂时停止。所有设备,包括发送设备,都会接收到这些帧。

1. CAN历史

CAN总线由德国罗伯特·博世有限公司(Robert Bosch GmbH)开发于1983年。该协议于1986年在密歇根州底特律的美国汽车工程师学会(SAE)会议上首次公开正式发布。第一批CAN控制器芯片于1987年由Intel引入,随后不久由飞利浦公司(Philips)也推出了相似的产品。1991年,梅赛德斯-奔驰(Mercedes-Benz)的W140型车型成为首款采用基于CAN的多路复用布线系统的量产车辆。

博世公司发布了多个版本的CAN规范,其中最新的版本是1991年发布的CAN 2.0。该规范分为两部分:A部分适用于带有11位标识符的标准格式,而B部分适用于带有29位标识符的扩展格式。使用11位标识符的CAN设备通常被称为CAN 2.0A,而使用29位标识符的设备通常被称为CAN 2.0B。

1993年,国际标准化组织(ISO)发布了CAN标准ISO 11898,后来被重新分为两部分:ISO 11898-1覆盖数据链路层,而ISO 11898-2覆盖高速CAN的物理层。ISO 11898-3稍后发布,涵盖低速、容错CAN的物理层。物理层标准ISO 11898-2和ISO 11898-3不属于博世CAN 2.0规范。

2012年,博世发布了CAN FD 1.0,即具有灵活数据速率的CAN。该规范使用不同的帧格式,允许不同的数据长度,并在仲裁决定后选择性地切换到更快的位率。CAN FD与现有的CAN 2.0网络兼容,因此新的CAN FD设备可以与现有的CAN设备共存。截至2018年,博世正在积极推进CAN标准的拓展。

CAN总线是车辆诊断标准(OBD-II)中使用的五种协议之一。自1996年以来,OBD-II标准已经成为美国所有汽车和轻型卡车的强制性标准。欧洲联盟自2001年起对所有销售的汽油车辆实施了EOBD标准,并自2004年起对所有柴油车辆实施了该标准。

现在汽车可能具有多达几十个用于各种子系统的电子控制单元(ECU)。最重要的处理器是动力系统及底盘等相关控制器。其他ECU用于自动驾驶、高级驾驶辅助系统(ADAS)、变速器、气囊、防抱死制动/ABS、巡航控制、电动助力转向、音响系统、电动车窗、车门、镜子调节、混合动力/电动汽车的电池和充电系统等。其中一些形成独立的子系统,但其他之间的通信至关重要。某个子系统可能需要控制执行器或从传感器接收反馈。CAN标准就是为了满足这种需求而设计的。一个关键的优势是,不同车辆系统之间的互联可以通过软件实现广泛的安全、经济和便利功能,而如果这些功能使用传统的汽车电气硬线连接则会增加成本和复杂性。

2. CAN 基本原理:

CAN 是一种多主机、多节点、实时性好的串行通信协议。它使用差分信号传输数据,通过在两根线(CAN_H 和 CAN_L)之间的电压差来表示数字信息。CAN 使用非常强大的错误检测和恢复机制,例如循环冗余校验(CRC),以确保数据的可靠性。

3. CAN 架构:

图片

CAN网络中的所有节点都通过传统的双线总线彼此连接。每个节点都需要一个微控制器、一个CAN控制器(通常集成在微控制器内部)和一个CAN收发器。任何传感器、执行器或其他控制设备都通过主处理器或节点的微控制器连接到CAN网络。节点可以与非常简单的数字逻辑设备进行通信,也可以与嵌入式计算机甚至网关进行通信。这个网关可以使得像笔记本电脑这样的通用计算机通过USB或以太网端口与CAN网络上的设备连接。CAN收发器处理来自CAN控制器的单端发送和接收信号(TXD和RXD),并将它们转换为差分信号(在总线上被称为CAN高(CAN-H)和CAN低(CAN-L)信号)。

CAN 架构基于主从结构,可以有多个节点(从节点)连接到一个总线上,由一个主节点控制通信。每个节点拥有唯一的标识符(Identifier),用于区分不同的消息。以下是 CAN 的关键组成部分:

a. 节点(Node):

每个车辆系统中的电子控制单元(ECU)都可以是一个 CAN 节点。这些节点可以是发动机控制单元、制动系统控制单元、空调系统控制单元等。

b. 总线(Bus):

CAN 总线是连接所有节点的物理通信媒介,通常是一对双绞线。CAN 总线通过差分信号传输数据,提供了良好的抗干扰性。

c.  消息(Message):

CAN 消息是在总线上传输的数据单元。每个消息包含一个标识符(Identifier)、数据字段(Data Field)和控制字段(Control Field)。标识符用于确定消息的优先级和内容。

d.  帧(Frame):

CAN 消息被封装为帧。CAN 定义了两种主要类型的帧:标准帧(Standard Frame)和扩展帧(Extended Frame)。标准帧使用 11 位标识符,而扩展帧使用 29 位标识符。

e. 主节点(Master):

主节点负责控制总线上的通信。它发送消息到总线上,并处理来自其他节点的响应。主节点通常是车辆中的主要控制单元,例如发动机控制单元。

f. 从节点(Slave):

从节点是被主节点控制的节点。它们接收从主节点发送的命令,并发送响应或数据到总线上。从节点可以是各种车辆子系统的控制单元。

一个CAN帧包含以下部分:

帧起始位(SOF):发送一个占主导地位的‘0’,告诉其他ECU消息即将到来。

仲裁标识符(Arbitration ID):用于识别消息以及确定其优先级。标准CAN(CAN 2.0A)帧有11位ID,而扩展CAN(CAN 2.0B)帧有29位ID。

远程传输请求位(RTR):允许ECU通过发送一个占优势地位的‘1’位请求其他ECU的消息。在数据帧的情况下,RTR是一个占主导地位的‘0’位。

IDE(标识符扩展位):指示这是基本格式帧(11位标识符)还是扩展格式帧(29位标识符)。

r0位:保留位,最近更为知名的是柔性数据格式(Flexible Data Format,FDF)位。指示帧是经典CAN还是CAN FD。

数据长度码(DLC):包含数据的字节长度(0-8字节)。

数据:包含实际的数据值,其长度由DLC字段决定。

循环冗余校验(CRC):用于检测数据完整性的错误检测码。

CRC分隔符位:必须是一个占主导地位的‘1’。

确认位(ACK)槽:确认CRC过程是否正常。

ACK分隔符位:必须是一个占主导地位的‘1’。

帧结束位(EOF):7位;帧的结束由一个占主导地位的‘1’表示。

图片

4. CAN 通信过程:

CAN协议是基于消息的,这意味着总线上的所有节点都能够发送和接收消息,并且它们始终在等待广播消息。虽然所有节点都能够发送消息,但在任何给定的时刻,总线上只能有一条消息在传输。通常情况下,与每个节点关联的CAN控制器实现了一个过滤器,用于检查广播消息的仲裁标识符,并且在仲裁标识符在特定范围内时接受消息,或者在范围之外时忽略消息。

通信过程包含消息发送、消息传输和消息响应:

消息发送:当一个节点需要发送消息时,它将消息封装为 CAN 帧,包括标识符和数据。该帧被发送到总线上。

消息传输:所有节点都接收总线上的消息。接收到消息的节点会检查标识符,如果它的标识符匹配发送的消息,则该节点会处理该消息。

消息响应:从节点接收到主节点的消息后,它可以发送响应消息,实现双向通信。

例如,假设在CAN总线上有三个节点。节点1发送了一条带有车辆当前速度信息的消息,并使用ID 0x121标记了该消息。节点2接受仲裁标识符在0x100-0x1FF范围内的数据。该消息的ID在此范围内,所以节点2接受了该消息。节点3接受仲裁标识符在0x320-0x352范围内的数据。该消息的ID在此范围之外,所以节点3忽略了这条数据。

图片

CAN bus 数据传输流

CAN 的这种通信方式允许车辆不同子系统之间的实时数据交换,实现了高度可靠和实时的汽车控制。

CAN协议使用所谓的无损位仲裁(lossless bitwise arbitration)来确定消息的优先级。虽然每个节点都能够发送和接收消息,但在任何给定的时刻,只能有一条消息占用总线。总线访问是事件驱动的,可能有多个节点在同一时刻开始传输。在这种情况下,具有更高优先级的消息会首先“拥有”对总线的访问权。消息的优先级是通过逐位(bitwise)查看仲裁标识符来确定的——二进制标识符越低,优先级越高(所以逻辑‘1’位是对逻辑‘0’位的占优地位)。拥有仲裁的节点可以继续进行消息传输,而不会受到其他节点的干扰,消息也不会被延迟、破坏或损坏。这就是所谓的无损仲裁。传输较低优先级消息的节点将在更高优先级消息传输时停止传输。一旦总线被释放,该节点将尝试重新发送其消息。

例如两个设备试图同时在CAN总线上传输,如下图所示。设备A的仲裁标识符是11001000111。设备B的仲裁标识符是11011111111。设备A会赢得对总线的访问权,因为它的仲裁标识符较低(第4位是‘0’)。设备A继续进行消息传输,而设备B则等待,在总线空闲时再次尝试传输。

图片

CAN协议使用无损位仲裁来确定消息的优先级。虽然每个节点都能够发送和接收消息,但在任何给定的时刻,总线上只能有一条消息占用总线。总线访问是事件驱动的,可能有多个节点在同一时刻开始传输。在这种情况下,具有更高优先级的消息(仲裁标识符最低的消息)将首先获得总线访问权。较低优先级的节点必须等待总线空闲才能再次尝试传输。

5. 帧类型

在CAN网络上传输的消息也被称为帧。CAN帧分为四种类型:

  • 数据帧(Data frame):这是最常见的帧类型,也是唯一包含实际数据的类型。数据帧包括仲裁标识符、数据字段、用于错误检测的循环冗余校验(CRC)字段和确认(ACK)字段。

  • 远程帧(Remote frame):远程帧允许一个节点从另一个节点请求特定数据。远程帧和数据帧之间有两个主要区别。首先,仲裁字段中的占优地位的RTR位明确标记了远程帧。其次,远程帧内部没有数据。

  • 错误帧(Error frame):如果一个节点检测到故障,它会向网络上的所有其他节点发送一个错误帧。接收到该消息的节点也会传输一个错误帧。在这一点上,CAN收发器内部实现的硬件错误计数器会阻止这些错误消息的循环使用,以避免总线洪泛。

  • 过载帧(Overload frame):这种类型的帧在数据或远程帧之间注入一个延迟,基本上请求稍后重新传输该消息。随着控制器足够智能,不再需要这种类型的消息,这种帧类型基本上已经过时,从而节省了总线上的通信量。

6. 错误检测

在不容许丢失通信的应用场景中,可靠性至关重要,而CAN总线在这个领域的强大表现在很大程度上归因于其丰富的错误检测机制。CAN协议集成了五种错误检测方法:三种在消息级别上,两种在位级别上。如果消息在这些方法中的任何一种中失败,该消息将不被接受,并且接收节点会生成一个错误帧。此外,在消息级别上,CRC和ACK字段包含了一个校验和和定界符位,用于强制执行错误检测。第三,还有一种消息级别上的格式检查,它查找消息内部必须始终为占主导地位位的字段。这些字段包括SOF、EOF、ACK定界符和CRC定界符位。如果在这些字段中的任何一个中检测到占优地位位,就会生成一个错误。

在位级别上,发送器逐位地监控它们自己的消息。如果将一个数据位写入总线,而读取到的是其相反的位,就会生成一个错误。最后,CAN协议使用位填充规则进行错误检测。在连续五位具有相同逻辑电平的情况下,将插入一个相反电平的位。这样可以确保提供上升沿以保持网络同步。接收节点将去除填充帧。在帧的所有字段中,除了CRC定界符、ACK字段和EOF,位填充都会发生。在使用位填充的所有字段中,连续六位相同极性被视为错误,因为它违反了位填充规则。

6. CAN 优势

总结以上内容,CAN总线在汽车和工业应用中具有许多优势:

  • 低成本:因为车辆中的每个ECU都能够通过单个CAN接口与网络的其余部分进行通信,而不是通过多条直接信号线,因此成本和架构复杂性显著降低。

  • 广播消息:网络上的每个节点都可以发送和接收传输的消息,并且可以确定消息是否相关或应该被忽略。这种结构允许在几乎不影响网络的情况下对网络进行修改。

  • 优先级:无损位仲裁使得CAN协议能够以避免由于冲突引起的延迟或消息损坏的方式确定消息的优先级。

  • 错误检测:CAN规范内置了错误处理机制,每个节点都检查传输错误(请参阅上文的错误帧描述)。在可靠性至关重要的市场中,这一点尤为有利。

  • 强大:CAN的高速总线对电气干扰具有高度抵抗力,而且一些CAN控制器和接收器具有工业/扩展温度范围,甚至还有适用于最苛刻环境的抗故障品种。

  • 灵活:因为CAN是一种基于消息的协议,总线上的节点没有与其关联的识别信息。这意味着可以在不需要进行任何软件或硬件更新的情况下向系统中添加或删除节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

王道计网:数据链路层

一、导论 将网络层的数据报分组封装成帧。 本质上是数据链路层封装之后,在物理层传输bit流,中间站点又会向上到数据链路层,这是一个实际过程,但是在单独考虑数据链路层时,我们可以忽略经过的物理层,直接认为…

SpringSecurity 认证实战

一. 项目数据准备 1.1 添加依赖 <dependencies><!--spring security--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!--web起步依赖-…

汽车行驶性能的主观评价方法(2)-驾驶员的任务

人&#xff08;驾驶员&#xff09;-车辆-环境闭环控制系统 驾驶过程中&#xff0c;驾驶员承担着操纵车辆和控制车辆的任务。驾驶员在不知不觉中接受了大量光学、声学和动力学信息并予以评价&#xff0c;同时不断地通过理论值和实际值的比较来完成控制作用&#xff08;图 2.1&a…

信道数据传输速率、信号传播速度——参考《天勤计算机网络》

一、缘起题目 二、解析 三、总结 信道数据传输速率和信号传播速度是两个不同的概念。 3.1 信道数据传输速率&#xff08;Channel Data Transfer Rate&#xff09; 指的是在通信系统中&#xff0c;通过信道传输的数据量&#xff0c;通常以 比特率&#xff08;bits per second…

Web攻防06_sqlmap的使用

文章目录 参考链接&#xff1a; SQLMAP简介支持五种不同的注入模式 数据猜解-库表列数据权限操作引出权限&#xff1a;引出文件&#xff1a;引出命令&#xff08;执行命令&#xff09;&#xff1a; 提交方法-POST&HEAD&JSONPost注入cookie注入注入请求头中&#xff08;…

(1)(1.9) HC-SR04声纳

文章目录 前言 1 连接到自动驾驶仪 2 参数说明 前言 HC-SR04 声纳是一种价格低廉但量程很短&#xff08;最远只有 2m&#xff09;的测距仪&#xff0c;主要设计用于室内&#xff0c;但也成功地在室外的 Copter 上使用过。极短的测距范围使其用途有限。 &#xff01;Warning…

Pinia中如何实现数据持久化操作

使用vue3中的pinia&#xff0c;我们可以在多个页面间共享数据&#xff0c;但是一旦我们关闭或刷新页面&#xff0c;这些数据就会丢失&#xff0c;因此&#xff0c;我们需要有一种数据持久化的解决方案。在记录vue3 使用vue3中的pinia&#xff0c;我们可以在多个页面间共享数据&…

斗罗二:雨浩被言老抛弃,强行开除,首秀十万年魂环,戴华斌下跪

【侵权联系删除】【文/郑尔巴金】 深度爆料&#xff0c;在《斗罗大陆动画第二部绝世唐门》第21集的先行预告中&#xff0c;我们看到霍雨浩的冰帝武魂成功觉醒&#xff0c;他已成功返回史莱克学院。然而&#xff0c;由于迟到&#xff0c;他面临着被开除的处分。钱老趁机算计言少…

使用微PE工具箱制作winU盘启动盘~重装系统

1.准备一个大于8G的U盘&#xff0c;为了保证传输和安装速度请确保U盘的质量。 2.鼠标右键点击U盘&#xff0c;进行格式化&#xff1a; 3.下载微PE工具箱&#xff1a; 微PE工具箱 - 下载 4.安装微PE工具箱&#xff1a;选择安装到U盘 5.选择U盘后&#xff0c;开始安装&#xf…

一文知晓Linux文件权限

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

将多行文本分段编程视频课程教程:中文编程不需英语基础零基础轻松学编程

将多行文本分段编程视频课程教程&#xff1a;中文编程不需英语基础零基础轻松学编程 上图为 中文编程工具界面&#xff0c;菜单和命令全中文&#xff0c;不需英语基础都可以学习。 系统化视频课程教程总目录及明细&#xff0c;可以点击下方链接进入学习 编程系统化课程总目录…

基于springboot实现网上书城平台管理系统项目【项目源码+论文说明】

基于springboot实现网上书城平台管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括网上书城管理系统的网络应用&#xff0c;在国外网上书城管理系统已经是很普遍的方式&#xff0c;不过国内的书城管理系统可…

服务器执行命令或脚本的两种方式

目录 1、通过Runtime 2、通过ProcessBuilder 在java开发中&#xff0c;有时候需要与操作系统的命令行交互&#xff0c;执行特定的CMD命令或脚本。 我们有如下两种方式来实现: Java的Runtime类和ProcessBuilder类都允许Java程序启动一个新的进程并执行特定的命令&#xff0…

2016年亚太杯APMCM数学建模大赛B题化学元素对变形钢筋性能的影响求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 B题 化学元素对变形钢筋性能的影响 原题再现 热轧带肋钢筋通常被称为变形钢筋&#xff0c;它主要用于钢筋混凝土构件的骨架&#xff0c;在使用中需要一定的机械强度、弯曲和变形性能、制造焊接性。钢中的化学成分是影响热轧钢最终组织性能的基…

港联证券:上市公司三季报反映经济回暖向好态势

我国经济在三季度继续回暖向好的态势&#xff0c;在越来越多上市公司发表的三季报里得到印证。 到10月26日&#xff0c;在已发布2023年三季报的1498家企业中&#xff0c;约有255家第三季度归母净获利跨越上半年总和&#xff0c;占已发表企业的17%。此外&#xff0c;682家公司三…

『Linux』补丁制作指南

前言 我们在参与某些开源项目的过程当中&#xff0c;经常会遇到漏洞之类的问题&#xff0c;需要我们打补丁解决。尤其是 Linux 源码&#xff0c;源码代码量较多&#xff0c;在修改完内核并发布新内核的时候&#xff0c;基本采用补丁的方式进行发布&#xff0c;而不是将整个内核…

如何在vscode中添加less插件

Less &#xff08;Leaner Style Sheets 的缩写&#xff09; 是一门向后兼容的 CSS 扩展语言。它对CSS 语言增加了少许方便的扩展&#xff0c;通过less可以编写更少的代码实现更强大的样式。但less不是css&#xff0c;浏览器不能直接识别&#xff0c;即浏览器无法执行less代码&a…

基于java+swing+mysql实现的仓库商品管理系统

JavaSwingmysql用户信息管理系统 一、系统介绍二、功能展示三、项目相关3.1 乱码问题3.2 如何将GBK编码系统修改为UTF-8编码的系统&#xff1f; 四、其它1.其他系统实现 五、源码下载 一、系统介绍 本系统实现了两个角色层面的功能&#xff0c;管理员可以管理用户、仓库、商品…

ED8000 地下电子标签探测器|标识器探测仪深度测量校准操作说明

ED8000 地下电子标签探测器|电子标识器探测仪是探测地下电子标签或电子标识器的专用手持仪器&#xff0c;采用基于 ARM 架构的32位高性能处理器&#xff0c;反应敏捷&#xff1b;距离测量时采用异步差分测量技术&#xff08;已申请专利&#xff09;&#xff0c;即使在有干扰的情…

论文阅读——DistilBERT

ArXiv&#xff1a;https://arxiv.org/abs/1910.01108 Train Loss: DistilBERT&#xff1a; DistilBERT具有与BERT相同的一般结构&#xff0c;层数减少2倍&#xff0c;移除token类型嵌入和pooler。从老师那里取一层来初始化学生。 The token-type embeddings and the pooler a…