0x10 的报文格式很简单10 子功能。真正关键的是不同会话的权限不同切换路径也有约束。三种标准会话会话子功能作用典型支持服务默认会话0x01上电/复位后的初始状态0x19 读 DTC、0x22 读 DID、0x3E 保活扩展会话0x03高级诊断/配置0x27 安全访问、0x2E 写 DID、0x28 通信控制、0x31 例程控制编程会话0x02刷写/内存编程0x27、0x31、0x34、0x36、0x37怎么切换进入默认会话10 01任意会话都可以切回默认会话S3 超时或 ECU 复位也会自动退回默认会话。进入扩展会话10 03通常从默认会话进入。成功响应里常带 P2ServerMax、P2*ServerMax后续诊断超时要按这个更新。进入编程会话10 02工程上通常要求先进入扩展会话并完成 0x27 解锁再切到编程会话。很多 OEM 不允许从默认会话直接进编程会话。为什么切换会话是第一步会话决定服务权限UDS 里很多服务不是随时都能用。比如 0x2E、0x27、0x31、0x34 通常只在扩展或编程会话下开放。会话没切对后续服务会被拒绝。会话决定安全状态切换会话后安全访问状态通常会重置。即使之前在扩展会话解过锁切到编程会话后一般也要重新做 0x27。会话决定超时参数0x10 响应会返回 P2/P2* 等时序参数。编程会话下 P2* 通常更大否则刷写长响应容易误判超时。会话决定 ECU 运行环境进入编程会话后ECU 可能停止应用层正常通信进入 Bootloader 或静默刷写环境退回默认会话时0x28、0x85 等状态也会被重置。常见 NRC现象典型 NRC含义请求的会话不存在0x12子功能不支持车速、电压、引擎状态不满足0x22条件不满足需要解锁但未解锁0x33安全访问被拒绝当前会话不允许进入该会话0x7E当前会话下子功能不支持服务在当前会话不可用0x7F当前会话下服务不支持一句话记0x10 是诊断权限的总开关。没切会话后面的 0x27、0x31、0x34/36/37 都谈不上切错了会话即使报文格式正确也会因为权限、安全状态或时序参数不对而失败。