目录
最近M哥忙于项目,距上次更新已经过去了许久,今日有时间一二,来跟大家聊聊车载诊断方面的内容,并对常用的UDS诊断进行介绍。
1.什么是车载诊断?
什么是诊断?首先拿一个最直观的例子解释:医生对病人的病情进行分析,来判断是那种疾病,这便是诊断。只不过诊断的对象为人。同样的道理,在我们的整车控制系统中,存在许多的ECU(电子控制单元),所有ECU正常工作来保证车辆的安全行驶;但是,在某些情况下总会不可避免的出现一些故障,导致部分功能无法工作,那么测试人员对故障进行分析定位的过程就是一个诊断的过程,诊断对象为ECU,即实现车载诊断。通过诊断就可以判断是哪里出现的问题,通常是这一过程由ECU中存储的DTC(故障码)来决定。
在进行诊断时候,需要遵循UDS协议。其架构如下图所示:
对于UDS的测试人员来说,主要运用ISO 14229和ISO 15765两个标准,来实现对应用层和网络层的诊断测试。以上两个标准涵盖了所有的诊断,常用的如:基于CAN总线和LIN总线的诊断。
2.UDS on CAN
基于CAN总线的UDS主要包括应用层诊断服务和网络层的时间参数。
2.1 应用层诊断服务介绍
诊断服务主要用来实现Client(Tester)和Server(ECU)间的数据传输。根据ISO 14229-1,将服务分为以下几类:
- Diagnostic and Communication Management functional unit
①DiagnosticSessionControl (0x10) service
②ECUReset (0x11) service
③SecurityAccess (0x27) service
④CommunicationControl (0x28) service
⑤TesterPresent (0x3E) service
⑥AccessTimingParameter (0x83) service
⑦SecuredDataTransmission (0x84) service
⑧ControlDTCSetting (0x85) service
⑨ResponseOnEvent (0x86) service
⑩LinkControl (0x87) service
- Data Transmission functional unit
①ReadDataByIdentifier (0x22) service
②ReadMemoryByAddress (0x23) service
③ReadScalingDataByIdentifier (0x24) service
⑤ReadDataByPeriodicIdentifier (0x2A) service
⑥DynamicallyDefineDataIdentifier (0x2C) service
⑦WriteDataByIdentifier (0x2E) service
⑧WriteMemoryByAddress (0x3D) service
- Stored Data Transmission functional unit
①ClearDiagnosticInformation (0x14) Service
②ReadDTCInformation (0x19) Service
- InputOutput Control functional unit
①InputOutputControlByIdentifier (0x2F) service
- Routine functional unit
①RoutineControl (0x31) service
- Upload Download functional unit
①RequestDownload (0x34) service
②RequestUpload (0x35) service
③TransferData (0x36) service
④RequestTransferExit (0x37) service
⑤RequestFileTransfer (0x38) service
2.2 网络层时间参数介绍
关于网络层时间参数的定义在ISO 15765-2规范中,主要包含以下参数:
N_As: 表示CAN数据帧从请求数据链路层发送至接收到对应的ACK的最大时间间隔;
N_Bs: 表示发送方数据链路层接受到流控帧的最大时间间隔;
N_Ar: 表示接收方从请求数据链路层发送流控帧至接收到对应的ACK的最大时间间隔;
N_Br: 表示接收方请求数据链路层发送流控帧的内在最大时间间隔 (N_Br + N_Ar)<(0.9倍N_Bstimeout);
N_Cs: 表示发送方请求数据链路层发送流控帧的内在最大时间间隔 (N_Cs + N_As)<(0.9倍N_Cr timeout);
N_Cr: 表示接收方接收到流控帧的最大等待时间间隔;
注:上述参数的下标r表示发送方,s表示接收方。
3.小结
本节内容是对UDS的一个总体入门介绍,不进行详细阐述。后续会陆续更新有关服务和时间参数更详细的内容,以及怎么使用,尽情关注。
如果觉得M哥分享的内容对你有帮助或有错误之处,请留言相告,感谢XDM支持!