什么是UDS协议

UDS协议,即统一诊断服务(以下简称UDS),提供了一些ISO标准的诊断服务,并在ISO-14229(1)中规定了其实现方式。UDS协议是一个统一的协议,说白了就是大家都用同一套标准,这意味着这些服务及其功能不是针对某一个供应商的ECU,而是对所有支持UDS的ECU。

当汽车发生故障时,我们需要给车子做检修。我们需要借助汽车诊断工具把车辆发生故障的故障信息读取出来。因为UDS协议是统一的,只要ECU支持的UDS协议,诊断工具就能够获取到相应的故障信息。

诊断过程中,诊断工具和车辆之间通过汽车总线进行通讯(例如CAN, LIN, Flexray, Ethernet和K-line)。诊断工具作为客户端给ECU发送请求。ECU收到客户端的请求后,作为服务端返回一个响应消息。如下图示:

UDS1-1

UDS通过CAN通信

ISO技术小组将完整的UDS开发分为三个部分:

  1. 诊断需求和规范- ISO-14229 (1);
  2. 会话层服务- ISO-14229(2);
  3. 诊断实现-依赖于数据链路协议:
    (1) UDS在CAN总线上的实现 - ISO-14229(3)
    (2) UDS在FlexRay上的实现 - ISO-14229(4)
    (3) UDS在Ethernet上的实现 - ISO-14229(5)
    (4) UDS在K线上的实现 - ISO-14229(6)
    (5) UDS在LIN总线上的实现 - ISO-14229(7)

注:本教程主要讲的是UDS在CAN总线上的实现。

UDS必要性

随着时间的推移,为满足客户对汽车的舒适性和安全性的需求,车辆的功能不断增加,越来越多ECU被安装在车身上。

在UDS之前,有许多诊断协议,如KWP 2000、ISO 15765和K线诊断,这就是为什么OEM和供应商不得不面对这些协议之间的兼容性问题。

为了解决这个兼容性问题,OEM和供应商同意采用一种名为统一诊断协议的标准协议,即我们今天所说的UDS协议。

在OSI模型中实现CAN上的UDS

虽然UDS规范工作在应用层(14229-1)和会话层(14229-2),但最终ECU(服务端)和诊断工具(客户端)是通过CAN连接的。因此,UDS请求和响应应遵循Bosch CAN通信规范,通过CAN总线发送数据。也正因为如此,在不同的OSI层出现了多个标准。下图为OSI各层的适用标准。

UDS_OSImodel-1

OSI模型中UDS的CAN实现

注:图中的ISO-15765-3在这里是ISO-14229-3。
我们将在以后的章节中讨论OSI层UDS标准。

下一节