电动汽车can总线系统由什么组成(电动汽车动力总成解读)

本文为臭皮匠试验室(同微信号)观点转载请请注明出处,今天小编就来聊一聊关于电动汽车can总线系统由什么组成?接下来我们就一起去研究一下吧!

电动汽车can总线系统由什么组成(电动汽车动力总成解读)

电动汽车can总线系统由什么组成

本文为臭皮匠试验室(同微信号)观点。转载请请注明出处。

之前在文章《电动汽车动力总成解读︱模拟世界与数字世界》中提到的,我们所处的世界,是一个由用无限多种颜色、无数种音调,无数种气味绘制而成的世界,所有的这些元素都可以理解成一个模拟信号,他们是构建这个世界的元素。而CAN总线技术(Controller Area Network),类似于我们的神经系统,遍布于我们身体的各个部分,通过某种规则,与身体的各个节点之间交互,接收和发送信息,从而感受世界、改造世界。今天我们就来聊聊上80年代由BOSCH公司开发的CAN总线技术。

文章结构如下:

1. 什么是CAN总线技术?

2. 为什么需要CAN总线?

3. 为什么是Can总线被广泛应用?

4. CAN总线报文是如何传输的?(传输方式)

4.1 CAN报文/信号/物理量

4.2 模拟信号与数字信号

4.3 CAN总线物理结构

4.4 传输方式

5. CAN协议帧结构

6. OSI网络结构与AUTOSAR架构

6.1 OSI网络结构

6.2 AUTOSAR架构

7. CAN报文的发送、确认和接收

7.1 报文的发送、确认

7.2 报文的接收

1. 什么是CAN总线技术?

CAN,即Controller Area Network,二十世纪八十年代由BOSCH公司为解决现代汽车中众多ECU之间的数据交换而开发的一种单工穿行通信协议。

可以将CAN总线理解成我们的神经系统,它遍布于我们身体的各个部分,通过某种规则,与身体的各个节点之间交互,发送或接收消息。

也可以将其理解成电话会议,一旦某一节点有发送请求,该信息将输入网络,其他节点共同接收,接收节点判断是否使用该信息。

备注: 单工 , 指 同一时间,只能有一个ECU单元向总线发送数据,而其他ECU只能做为接收节点。

2. 为什么需要CAN总线?

正如之前在文章《电动汽车动力总成解读︱模拟世界与数字世界》中提到的,我们所处的世界,是一个由用无限多种颜色、无数种音调,无数种气味绘制而成的世界,所有的这些元素都可以理解成一个模拟信号,他们是构建这个世界的元素。

而人类,作为高级动物,正式通过相互交流、合作,对这个世界进行了改造。将这一概念放到汽车上:人类通过文字、声音、图像来交流,为了提升交流效率,诞生了“网络”技术;汽车不同部件之间则通过线束来实现,同样,为了提升信息交换的效率、简化系统,诞生了“总线”技术。

3. 为什么是CAN总线被广泛应用?

早期的网络结构有很多,为什么CAN总线技术得以推广应用,主要以下几点原因:

  • 低成本

  • 中央集成控制

  • 鲁棒性高

  • 高效(仲裁机制)

  • 灵活性高

    4. CAN总线报文是如何传输的?(传输方式)

    4.1 CAN报文/信号/物理量

    介绍之前先对CAN报文/信号/物理量的概念做下区分,三句话概括:

  • 任何报文都可以在总线的节点之间传递

  • 任何报文的数据字节都可以分解成信号

  • 信号可以用物理量形式表示

    4.2 模拟信号与数字信号

    之前我们介绍过模拟信号与数字信号,详见文字《电动汽车动力总成解读︱模拟世界与数字世界》。

    我们所处的世界,是一个由用无限多种颜色、无数种音调,无数种气味绘制而成的世界,所有的这些元素都可以理解成一个模拟信号,他们是构建这个世界的元素。ECU之间通过CAN总线的通讯过程,与人类通过音频、视频的过程是一样的,即数字量与模拟量之间的转换。

    4.3 CAN总线物理结构

    如下图所示为CAN总线物理结构,基本形式为: CAN_H CAN_L 各个节点(Nodes)。

    其中,

    CAN_H/CAN_L:以双绞形式缠绕;

    节点:CAN收发器(Transceiver) CAN控制器(Controller),控制器的 Tx 发送端脚、Rx 接收端脚,而收发器直接连接在双绞线上。

    CAN总线上的信号,即为电压形式表现的差分信号,由 CAN_H和CAN_L两根信号线组成,分为显性电平(dominant)和隐性电平(recessive)两种类型。其中显性电平规定为逻辑0,隐性电平则为逻辑1,如下图所示。

    4.4 传输方式

    当CPU需要发送数据时候,CAN Controller给Transceiver传送需求的数据,CAN Transceiver将其发送给CAN 总线,通过CAN_H和CAN_L两根线实现整车各ECU节点之间的串联,接收数据类似过程。

    综上,整车ECU各节点之间CAN总线的通讯方式,简单理解如下:

  • 发送 :Transceiver 将上层传递的数据进解析成电压信号 (根据ISO 11898/ISO11519定义),并传递至BUS。

  • 接收 : Transceiver 将BUS信号转变为二进制信号给CAN Controller;CPU将CAN Controller传送的数据进行解析、提取,经过相应运算,控制传感器和执行器。

    了解了CAN总线上报文的传递方式和逻辑电平序列的应用,那么这些逻辑电平序列要如何使用呢?

    5. CAN协议帧结构

    为了说明上述逻辑电平序列的使用方式,需要了解CAN协议帧的结构。

    CAN协议标准里对这些逻辑点评序列做了定义,使这些数据字段有了灵魂,标准中对CAN协议帧的定义有以下4种类型:

  • 数据帧:用于发送单元向接收单元传输数据的帧

  • 遥控帧:用于接收单元向具有相同ID的发送单元请求数据的帧

  • 错误帧:用具当检测出错误时,向其他单元通知错误的帧

  • 过载帧:用于接收单元通知其尚未做好接收准备的帧

    简单来讲,正式通过上述对报文信号协议帧的规范,使我们ECU之间的通讯定位准确、逻辑清楚、信息完善、响应及时、鲁棒性高,限于篇幅,具体帧结构的展开形式和应用方法本文不做详细介绍,感兴趣的可以自行搜索,如有时间我也会再做总结。

    通讯逻辑和方法已大致了解,那么具体要怎么实现CAN通讯功能呢?

    6. OSI网络结构与AUTOSAR架构

    为了满足软件的可以执行、可扩展性和安全性能等,我们引入基于OSI网络结构的AUTOSAR架构,如下图所示。

    6.1 OSI网络结构

    OSI网络结构定义如下,其核心目的时为了将协议、服务和接口明确区分,解决异种节点互联时的兼容性问题。

    对于车规级CAN网络通讯,只对 物理层、数据链路层、应用层 做了逻辑上定义,其他暂无需关注。

  • 物理层: 利用传输介质对数据链路层提供物理连接,负责数据流的物理传输,传输单位是0和1。

  • 数据链路层: 在通信实体间建立数据链路联接,传输的基本单位为“帧”,可分为两部分MAC(介质访问控制子层) LLC(逻辑链路控制子层)。

  • 其中,MAC——规定如何在物理线路上传输帧,LLC——对在同一条网络链路上的设备之间的通信进行管理。

  • 应用层:实现对物理层数据层数据的解析,即VCU通过哪些ID通信,报文长度,数据所代表的信号,信号含义等。

    6.2 AUTOSAR架构

    下图为基于OSI网络结构的AUTOSAR架构中的通讯站。可以看出,HW访问只有通过Driver实现,CAN If模块与其对接,同时,CAN If统一管理与service层的通讯,通过PDUR路由到更多上层模块,减少了接口。

    7. CAN报文的发送、确认和接收

    7.1 报文的发送、确认

    简单来讲,报文发送的过程,即用户向服务提供者发出请求(request),然后提供者向用户确认请求结果(confirm)的过程,如下图所示:

    详细说明下这一过程:

  • Step1. BSW通过Com_SendSignal周期性调度Com模块中的Com_MainFunctionTx函数,Com模块从缓存中读取需要发送的数据;

  • Step2. Com模块的Com_MainFunction_Tx函数将调用PduR模块的PduR_ComTransmit函数,将数据传递给PduR

  • Step3. PduR模块路由到下层模块,调用CanIf模块的CanIf_Transmit函数,数据被传递至下层CanIf

  • Step4. CanIf模块调用Can Driver模块Can_Write函数

  • Step5. Can_Write函数将访问仲裁、数据长度和数据寄存器,通过Can Driver访问Can HW,将数据写入相应寄存器(通过数数据协议单元PDU)

  • Step6. 以POLLING作为CAN 发送的处理方式(三种,详见标准),BSW Scheduler周期性调度Can Driver模块的Can_MainFunction_Write函数

  • Step7. Can Driver 通过Can_MainFunction_Write函数访问Can HW中相关寄存器,读取数据供上层确认

  • Step8. 读取后,调用CanIf的CanIf_TxComfirmation函数,将数据上传至CanIf

  • Step9. CanIf调用PduR模块的PduR_TxConfirmation函数,将数据传到PduR模块

  • Step 10. PduR模块路由到Com模块,调用Com_TxConfirmation函数,确认发送状态。

  • 其中1~5为发送阶段,6~10为确认阶段,其中具体的函数调用规则和定义可参见《AUTOSAR- Specification of CAN Interface》。

    7.2 报文的接收

    报文接收的过程,即服务提供者通知所服务用户的过程(indication),过程与上述确认过程类似,这里不做赘述。

    以上就是关于CAN总线技术的基本内容,实际应用中会涉及很多细节,标准中对应章节有规范,对某一方面感兴趣或者有疑问的读者可以后台留言,欢迎交流。

  • 免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

      分享
      投诉
      首页