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诊断控制台手动发送请求验证服务语义。

UDS常用服务语义与ETAS配置入口 诊断仪 / INCA ODX/PDX 导入 ES58x 接口 CAN / ISO-TP 请求构造 响应解析 0x78 等待处理 NRC 判读 UDS 服务层(ISO 14229) 会话与状态控制 0x10 会话切换 · 0x11 复位 · 0x3E 心跳 0x85 DTC记录开关 数据访问 0x22 读DID · 0x2E 写DID DID 长度与权限校验 安全与例程 0x27 种子/密钥 · 0x31 例程控制 0x2E/0x31 需先解锁 故障码管理 0x14 清除DTC · 0x19 读取DTC groupOfDTC 0xFFFFFF 全清 响应类型 肯定:SID+0x40 · 否定:0x7F + SID + NRC 常见NRC:0x13长度 · 0x22条件 · 0x35密钥 · 0x78挂起 ECU / ETAS 配置 ISOLAR-AB Dcm DspSession DspSecurity DspDid DspRoutine Dem DTC组 / 清除 使能条件 CanTp / CanIf ISO-TP 参数 P2 / S3 定时 请求 配置

五、配置检查要点

配置完成后,建议按以下顺序验证:先确认0x10能进入扩展会话并返回P2时间;再确认0x22能读取F186并返回正确会话值;然后确认0x27种子请求返回非零种子、错误密钥返回0x35;最后确认0x2E写入后0x22回读一致。若某服务返回0x7F且NRC为0x11(serviceNotSupported),说明Dcm中该服务未使能;若返回0x22(conditionsNotCorrect),通常是会话或安全等级不满足。0x31启动后若收到0x78,应继续等待,不要立即判定失败。

0x3E的抑制肯定响应子功能0x80可减少总线负载,但在需要确认ECU在线时,应使用0x00并检查肯定响应。
0x11复位后ECU回到默认会话,之前通过0x27解锁的安全等级会失效,后续0x2E、0x31必须重新解锁。