UDS 在整车诊断里处于OSI 第 7 层:应用层。它只定义“诊断服务做什么、请求和响应长什么样”,不直接负责物理传输。
可以这样理解它们之间的关系:
| 协议/标准 | 层级位置 | 作用 |
|---|---|---|
| UDS / ISO 14229-1 | 应用层 | 定义诊断服务,如 0x10 会话、0x22 读 DID、0x19 读 DTC、0x27 安全访问、0x34/0x36/0x37 刷写等 |
| ISO 15765-2 / ISO-TP | 传输层/网络层 | 把 UDS 长报文拆成单帧、首帧、连续帧、流控帧,在 CAN/CAN FD 上传输 |
| CAN / ISO 11898 | 数据链路层 + 物理层 | 提供 CAN 帧格式、ID、仲裁、错误检测、物理信号传输 |
| DoIP / ISO 13400 | 传输层/网络层 | 把 UDS 报文承载到 TCP/UDP + 以太网上,用于高带宽刷写、远程诊断等场景 |
一条 UDS 请求是怎么跑出去的?
以“诊断仪通过 CAN 读取 DTC”为例:
- 诊断仪发出UDS 请求:
0x19 02 FF,表示读取所有 DTC。 - UDS 报文交给ISO 15765-2处理:如果长度超过 CAN 单帧承载能力,就拆成首帧、连续帧,并配合流控帧传输。
- ISO-TP 再把数据交给CAN 控制器,封装成 CAN 帧,通过 CAN 总线发送。
- ECU 收到后,从 CAN 帧还原成 UDS 报文,再交给 UDS 应用层处理。
- ECU 返回肯定响应,如
0x59 02 FF ...;或否定响应0x7F 0x19 NRC。
如果走以太网,则变成:
UDS 应用层 → DoIP → TCP/UDP → IP → 以太网 MAC/PHY
但 UDS 服务本身不变,仍然是 0x10、0x22、0x19、0x27 这些 SID。
一句话概括
UDS 是诊断语义,ISO 15765-2 是 CAN 上的传输方式,CAN 是底层总线,DoIP 是以太网上的传输方式。
UDS 解决“诊断命令是什么”,ISO 15765-2 和 DoIP 解决“诊断命令怎么传”,CAN 和以太网解决“数据在哪条物理链路上跑”。