ECU(Electronic Control Unit)是电子控制单元的简称。从用途上来说就是汽车专用的微型计算机。现代汽车的功能越来越丰富,汽车上的各个子系统都需要功能强大的ECU来控制本系统的工作。

ECU的功能从逻辑上来说分为3种,分别是:

逻辑控制功能。简单地说,就是ECU从传感器或者总线上获得输入信号,经过一系列的运算之后通过执行器将动作输出。这是ECU最基本最原始的功能。

总线功能。ECU在车载网络中并非孤立地存在,各个ECU之间需要交换信息,比如,仪表需要发动机输出的转速信号才能正确地显示当前转速。总线功能指的就是ECU在车载网络中交换数据信息的功能。目前的车载总线技术包括LIN,CAN,Flexray,MOST,Ethernet等,这些总线技术的传输速率、实现方法、以及价格都不同,适用于不同的场景。

诊断功能。就是检测毛病,发现故障。整车一旦装配好,我们就不容易知道那些隐藏在车体中的各种信息了。我们可以利用诊断仪从ECU中读出来故障的原因,从而更加有针对性地进行维修。诊断最初的诞生是为了应对法规对排放的检测要求,而发展到现在,诊断技术的含义已经大大拓宽了。诊断几乎是车外设备获取汽车信息的唯一方法。总结地说,诊断就是实现外部设备和汽车ECU交换数据信息的技术。

诊断的应用包括:

在售后服务中读取ECU故障码,精准地定位故障,节约维修工时。
在整车下线前针对不同配置的车型进行编码、改写参数、终端元件检测等操作。
在开发阶段给ECU更新软件。

诊断是一种通信过程,它也是基于OSI 7层协议实现的。下图是基于高速CAN总线的诊断所使用的ISO规范。

UDS的全称是Unified Diagnostic Services,ISO标准号是14229,其中14229-3定义了UDS在CAN总线上的实现。UDS是应用层协议,它对所有的诊断命令进行了定义,比如诊断请求和诊断响应的格式。

传输层和网络层由ISO15765-2实现,它的主要作用是为数据包提供分段、流控制、错误检测等功能。

数据链路层和物理层就是由ISO11898实现的CAN总线要求。这只是一种可能性,还可以使用Ethernet技术来实现诊断通信,由ISO13400中定义。无论底层使用什么总线技术,最终目的都是在诊断仪和ECU之间传输诊断命令和响应。

诊断的通信过程从诊断仪用户的角度来看非常简单,由诊断仪发出请求(request),由ECU给出响应(response),在这个通信过程中,诊断仪和ECU分别是计算机网络通信中的client和server的角色。