1. UDS诊断协议概述:OSI七层模型与诊断协议栈、UDS与OBD-II的区别、UDS在汽车电子电气架构中的位置

大家好,我是老张。做汽车电子诊断这块有些年头了。今天咱们开篇先聊聊UDS诊断协议到底是个啥。说实话,很多刚入行的工程师一上来就啃协议栈,结果越看越懵。我建议咱们换个思路——先搞清楚它长在汽车的哪个位置,再谈它怎么工作。

1.1 OSI七层模型与诊断协议栈

先问大家一个问题:你想想看,ECU和诊断仪之间是怎么通信的?

嗯,这背后其实有一套完整的协议栈在支撑。OSI七层模型,搞通信的都不陌生。但在汽车诊断领域,我们真正关心的只有下面几层:

  • 物理层:说白了就是CAN总线、LIN总线或者以太网。我在项目中遇到过最头疼的就是CAN总线电平问题,明明协议栈没问题,就是连不上。
  • 数据链路层:CAN协议本身就在这一层。它负责把诊断报文打包成帧,加上ID、CRC什么的。
  • 网络层:ISO 15765-2(CAN上的网络层协议)。这一层解决的是“报文太长怎么办”的问题——分段传输。
  • 传输层:在UDS里,传输层和网络层经常合在一起说。它保证数据能完整地从A点送到B点。
  • 会话层/表示层/应用层:这三层在UDS里基本合并了。应用层就是ISO 14229-1,定义了具体的诊断服务,比如读取故障码、写入数据等等。

核心要点:UDS诊断协议栈 = 物理层 + 数据链路层 + 网络层 + 应用层。中间三层在汽车诊断场景下基本被简化了。

我记得有一次给客户做一致性测试,对方工程师死活不理解为什么他的诊断请求发出去没响应。后来一查,是网络层分段参数配错了。你看,协议栈每一层都不能马虎。

1.2 UDS与OBD-II的区别

这个问题我几乎每次培训都会被问到。UDS和OBD-II到底有啥区别?

我打个比方你就明白了:

  • OBD-II:是法规强制要求的。它只管排放相关的故障码和数据。说白了,就是环保部门用来查你车有没有超标。
  • UDS:是整车厂自己定义的。它能管的东西多了去了——车窗、门锁、气囊、ABS、发动机、变速箱……几乎车上所有ECU都能用UDS来诊断。
对比项 OBD-II UDS
标准来源 ISO 15031 / SAE J1979 ISO 14229
强制要求 是(法规强制) 否(整车厂自定)
覆盖范围 仅排放相关 全车所有ECU
诊断服务 约10个服务 26个服务(0x10~0x3E)
应用场景 年检、排放检测 产线、售后、研发

个人经验:我建议做诊断开发的工程师,先把UDS搞透。OBD-II那套东西太局限了。你想想看,一个诊断仪只能读读故障码和冻结帧,能干啥?UDS能刷写软件、能配置参数、能做例程控制——这才是真正干活用的。

1.3 UDS在汽车电子电气架构中的位置

好,现在咱们聊聊UDS到底长在车的哪个位置。

现在的汽车电子电气架构,说白了就是一堆ECU通过总线连在一起。UDS诊断协议就运行在这些ECU和诊断仪之间。

我画个简单的逻辑图给你看:

诊断仪(上位机)
    |
    |--- CAN/LIN/以太网
    |
    v
网关(中央网关)
    |
    |--- CAN总线1 --- ECU1(发动机)
    |--- CAN总线2 --- ECU2(变速箱)
    |--- CAN总线3 --- ECU3(ABS)
    |--- LIN总线  --- ECU4(车窗)
    |--- 以太网    --- ECU5(域控制器)

你看,诊断仪通过网关,可以访问到车上任何一个ECU。UDS协议就在这个通信链路的最高层——应用层。

这里有个关键点:网关的角色。网关负责路由诊断请求。比如你想读发动机ECU的故障码,诊断仪发一个UDS请求,网关看到目标地址是发动机ECU,就把这个请求转发到对应的CAN总线上。

避坑指南:我曾经遇到过一个问题——诊断仪能连上网关,但就是读不到某个ECU的数据。查了半天,发现是网关的路由表没配好。所以做一致性测试时,网关的路由功能一定要重点测。

再说说UDS在ECU内部的位置。每个支持UDS的ECU,内部都有一个诊断协议栈。这个协议栈通常包括:

  • 诊断应用层:处理具体的诊断服务,比如0x22(读取数据)、0x2E(写入数据)
  • 诊断会话管理:管理默认会话、扩展会话、编程会话等
  • 安全访问模块:负责种子-密钥验证
  • DTC管理:故障码的存储和清除

嗯,这里要注意:不同ECU的诊断能力是不一样的。比如一个简单的车窗控制器,可能只支持几个基本的诊断服务。而发动机ECU,那支持的诊断服务就多了去了。

我个人习惯把UDS在架构中的位置总结成一句话:UDS是连接诊断仪和ECU的“通用语言”,它跑在总线之上,藏在ECU之内

好了,这一章的内容就到这里。下一章咱们会深入聊聊UDS的协议数据单元(PDU)结构,以及那些常用的诊断服务到底是怎么工作的。

本章小结

  • UDS协议栈基于OSI七层模型,但实际只用到物理层、数据链路层、网络层和应用层
  • UDS和OBD-II最大的区别:UDS是全车诊断,OBD-II只管排放
  • UDS在架构中位于诊断仪和ECU之间,通过网关实现跨总线通信

公众号:蓝海资料掘金营,微信deep3321