3. UDS服务基础与ETAS配置入口
UDS(Unified Diagnostic Services,ISO 14229)定义的是诊断仪与ECU之间的“语言规则”:诊断仪发出请求,ECU按服务语义执行并返回肯定或否定响应。理解每个服务的功能语义,是后续在ETAS工具链中正确配置诊断栈的前提。本节围绕0x10、0x11、0x14、0x19、0x22、0x27、0x2E、0x31、0x3E、0x85这十个常用服务,说明它们“做什么”,以及在ETAS工具中“在哪里配置”。
一、服务语义:从会话与复位开始
0x10 DiagnosticSessionControl用于切换诊断会话。常见子功能为0x01默认会话、0x02编程会话、0x03扩展会话。会话决定了哪些服务可用、哪些DID可读、是否允许写入。ECU通常以默认会话上电,进入扩展会话后才能执行0x2E、0x31等操作,进入编程会话后才能刷写。响应中会返回P2Server_max与P2*Server_max,用于告诉诊断仪响应超时时间。
0x11 ECUReset用于请求ECU复位,子功能包括0x01硬复位、0x02钥匙关闭复位、0x03软复位。复位后ECU回到默认会话,诊断仪必须重新建立会话。0x3E TesterPresent是“心跳”服务,子功能0x00表示需要响应,0x80表示抑制肯定响应。它用于在长时间无操作时保持非默认会话不被S3定时器超时踢回默认会话。
0x85 ControlDTCSetting用于打开或关闭DTC记录,子功能0x01开启、0x02关闭。刷写或标定期间通常先关闭DTC记录,避免产生大量误报故障码。0x14 ClearDiagnosticInformation用于清除故障码,请求中携带3字节的groupOfDTC,0xFFFFFF表示清除全部DTC。
二、数据访问与安全:0x22、0x2E、0x27
0x22 ReadDataByIdentifier按DID读取数据,请求可携带一个或多个2字节DID,响应按DID顺序返回数据。例如读取F186(ActiveDiagnosticSession)返回当前会话类型,读取F190(VIN)返回17字节车辆识别码。0x2E WriteDataByIdentifier按DID写入数据,请求为DID加数据,长度必须与ECU定义一致,否则返回0x13(incorrectMessageLength)。
0x27 SecurityAccess是安全访问服务,采用“请求种子—发送密钥”的挑战应答机制。子功能成对出现:奇数(如0x01)请求种子,偶数(如0x02)发送密钥。ECU用内部算法校验密钥,正确则解锁,错误则返回0x35(invalidKey)并可能触发延时锁定。0x2E和0x31通常要求先通过0x27解锁。
三、例程控制:0x31
0x31 RoutineControl用于启动、停止或查询例程结果,子功能0x01启动、0x02停止、0x03请求结果。请求包含2字节routineIdentifier和可选参数。典型例程如FF00(校验内存)、0203(自检)。启动后ECU可能返回0x78(responsePending),诊断仪需等待最终结果。
四、ETAS工具中的配置入口
在ETAS ISOLAR-AB中,诊断配置集中在ECU的Diagnostic Extract与Dcm模块。服务使能、会话与安全等级在Dcm配置中完成:DcmDspSession配置会话与P2时间,DcmDspSecurity配置种子密钥算法与等级,DcmDspDid配置DID的读写权限与长度,DcmDspRoutine配置例程标识与权限。0x14、0x19、0x85等DTC相关服务在Dem模块中配置,包括DTC组、清除条件与使能条件。
在ETAS INCA或诊断仪侧,服务以ODX/PDX文件导入,诊断仪按ODX描述构造请求。若使用ETAS ES58x等诊断接口,需在接口配置中指定CAN通道、波特率与ISO-TP参数。配置完成后,可用ETAS诊断控制台手动发送请求验证服务语义。
五、配置检查要点
配置完成后,建议按以下顺序验证:先确认0x10能进入扩展会话并返回P2时间;再确认0x22能读取F186并返回正确会话值;然后确认0x27种子请求返回非零种子、错误密钥返回0x35;最后确认0x2E写入后0x22回读一致。若某服务返回0x7F且NRC为0x11(serviceNotSupported),说明Dcm中该服务未使能;若返回0x22(conditionsNotCorrect),通常是会话或安全等级不满足。0x31启动后若收到0x78,应继续等待,不要立即判定失败。