一. 诊断概述
当前,整车厂和供应商采用在线诊断与离线诊断相结合的诊断方法。
在线诊断:它能够在汽车运行过程中不断监测电子控制系统各组成部分的工作情况,如有异常,根据特定的算法判断出具体的故障,并以代码形式存储下来,同时启动相应故障运行模块功能,使有故障的汽车能够被驾驶到修理厂进行维修,维修人员可以利用汽车故障自诊断功能调出故障码,快速对故障进行定位和修复。因此,从安全性和维修便利的角度来看,汽车电控系统都应配备故障自诊断功能。自1979年美国通用汽车公司率先在其汽车电控系统中采用故障自诊断功能后,世界上的各大汽车厂商纷纷效仿,在各自生产的电控汽车上都配备了故障自诊断功能。故障自诊断功能,已经成为新车出厂和维修厂故障检测不可缺少的重要手段。
离线诊断:通过外部诊断设备读取相应的诊断信息,实现诊断操作。实现离线诊断的关键在于如何实现诊断设备和ECU之 间的通信机制和诊断服务,即诊断协议。
目前,诊断协议标准主要分为两种体系,ISO(International Standards Organization)和SAE(Society of Automotive Engineers)。美国使用SAE标准体系,美国之外的多数国家(包括中国)使用ISO标准体系。
在乘用车领域,OEM正从自定义诊断协议,逐渐转向 ISO标准。在商用车领域,OEM沿用SAE诊断,欧洲OEM在此基础上增加了ISO诊断。表1列出了部分ISO和SAE标准对照。
二.相关的诊断规范
诊断规范:是描述一系列的诊断服务,定义ECU与诊断仪之间的请求响应规则、ECU对于请求报文的处理行为以及请求、响应报文信息含义。
1.ISO 14230
Keyword Protocol 2000(KWP2000),是基于K-Line(串行传输,最大通信速率10.4K)的的诊断协议,14230是一整套通讯协议,从物理层,数据链路层到应用层都有定义。
2.ISO 14229-1
UDS = Unified Diagnostic Services,只定义了诊断服务,不涉及网络及实现,只有应用层。
3.ISO 15765
Diagnostic On CAN, CAN(串行传输,最大通信速率1M),定义了网络传送层(Part2)。
三.OBD-On-Board Diagnostics
OBD是一个复杂的自诊断系统,用于检测影响汽车排放的零部件和系统的故障。
所有OBDII或EOBD装备的汽车都必须有:
- 标准化的数据诊断接口(SAE-J1962),
- 标准化的解码器(SAE-J1978)
- 标准化的电子通讯协议(KW2000,CAN,CLASSII,ISO9141等),
- 标准化的诊断故障码(DTC,SAE-J2012),
- 标准化的维修服务情报(SAE-J2000)。
四.ISO 14229-1功能单元
1.诊断和通信管理功能单元
DiagnosticSessionControl | 用于会话状态切换,以访问那些在非默认会话下才能访问的服务 |
ECUReset | 用于ECU复位,例如ECU重新编程之后,需要该服务复位ECU |
SecurityAccess | 用于保护与安全性、保密性或者排放相关的数据 |
CommunicationControl | 用户请求服务来控制它的通信 |
TesterPresent | 用于维持非默认会话状态 |
AccessTimingParameter | 用户为一个活动的通信read/modify时间参数 |
SecuredDataTransmission | 用户在一个外部数据安全机制个执行数据传输 |
ControlDTCSetting | 打开/关闭DTC记录 |
ResponseOnEvent | 用户请求开始一个event机制 |
LinkControl | 用户请求控制通信的波特率 |
ReadDataByIdentifier | 通过DID(Data Identifier)读取ECU存储空间的故障信息 |
ReadMemoryByAddress | 用户通过Address读取当前内存的值 |
ReadScalingDataByIdentifier | 通过DID读取诊断相关的换算公式 |
ReadDataByPeriodicIdentifier | 用于周期性读取DID数据 |
DynamicallyDefineDataIdentifier | 用于一次读取多个DID数据,需要与0x22服务结合使用 |
WriteDataByIdentifier | 通过DID写数据 |
WriteMemoryByAddress | 用户通过Address写值 |
ClearDiagnosticInformation | 用于清除存储在ECU存储空间的诊断信息,如冻结帧数据、扩展数据等 |
ReadDTCInformation | 用于读取故障信息 |
InputOutputControlByIdentifier | 用户请求控制input/output |
RoutineControl | 例程控制,用于启动/停止ECU内的例程,或读取其返回值 |
RequestDownload | 用户请求下载数据 |
RequestUpload | 用户请求上传数据 |
TransferData | 用户向服务传输数据(下载)或者从服务上请求数据(上传) |
RequestTransferExit | 用户请求终止数据传输 |