UDS汽车诊断入门01 - 简介

前言

​ 一直想写一个关于UDS学习的系列文章,却一直没有动笔,一来是由于觉得自己学得还不够透彻,二来想一开始就把文章写得很完美,然而事实上真正要做到对协议非常透彻得话,又谈何容易,协议是死的,人是活的,对于实际项目的不同,可能对协议的实现也是很不相同的,之前有做过这方面的工作,奈何一直觉得自己没有深入的去理解学习,现在开始真正的着手写关于UDS诊断写的一个系列文章,一方面自己重新认真的去理解学习UDS协议,另一方面也希望帮助到刚开始学习这方面知识的朋友。文章中如果有表述不正确的地方或者有更好的建议。

UDS汽车诊断介绍

​ 可能对于刚接触UDS的朋友,并不理解到底什么是汽车诊断,当初我刚开始听到这个词语的时候,也是一样的感觉。UDS全称(Unified diagnostic services),标准号为ISO14229,所以平常我们说ISO14229或者UDS其实指的是同一个东西。

​ 那么我们为什么需要这样一个东西的,这个东西在实际的产品中到底起着哪些作用?

​ 其实这套协议可以说当地打开汽车那一刻,就在你汽车的很多ECU中运行着。我们从字面意思来理解,诊断其实就和去医院医生对病人的诊断是一个道理,这里的汽车诊断仪就好比医生,医生对病人的问询和诊断仪器发送指定命令,查看ECU状态的过程是类似的。而UDS协议简单的说就是规定这个指令的规范。比如发送指令22H,就是读取相应数据的命令,ECU收到这个命令之后,就要根据指令后面具体的信息,返回相应的数据给诊断仪。这就是UDS中我们说的离线诊断协议,离线诊断简单的理解就是在车停下的时候(其实不一定是停下),通过诊断仪器发送相关命令的这个过程。对应的还有在线诊断,在线诊断就是在车辆运行过程中,UDS检测这个过程中出现的错误,比如当你的打开汽车电源,但是没有启动发动机,这时往往会看到一个机油欠压的标识,这个我们就可以理解成在线诊断运行检测到的错误(实际上可能不是,做个类比)。

​ 对于UDS协议,分为多个部分,目前是Part1~Part7,我们主要关注Part1,协议已经打包上传CSDN下载,不需要积分,大家可以去下载学习。
https://download.csdn.net/download/weltry_csdn/12643872

UDS 架构介绍

​ 通过ISO14229-1可以找到如下的一张图:

在这里插入图片描述

​ 这张图非常清晰的展示了ISO14229协议的层次,我们从底层往上层开始看,这里以CAN为例子,这里我们只关注红框部分,最左边的DoCAN中,最下面的物理层和数据链路层是CAN协议规范,对于UDS,一般我们需要去写的是从传输层(Transport/Network)开始,这里又牵涉到传输层协议ISO15765,这里先不深究,传输层主要就是用于组包分包,因为CAN协议一帧最多只能够传输8个字节(FD 64个字节),一些超过这个数量的消息,就需要通过TP层将多个CAN帧组成一个数据包,然后传给UDS使用,或者将UDS的数据拆成多个CAN帧发送。后续我们再单独说TP层,总之这里就记住TP是用于CAN消息帧组包拆包的。

​ TP层之上,就是正真的UDS协议部分了,这里的Session层(会话层),主要用于管理UDS会话,对于这里会话,可以做这样的理解。当系统处于不同的会话模式,所能执行的服务会有所区别,比如需要用到UDS进行bootloader升级,那么就要进入Program session才行,需要真正下载程序的时候,一般还需要进入到Extern session才行,但是并不是说当你进入到这个会话之后就一直在这个模式,这里会有超时的控制,当超过一定时间没有做指定的事情,就需要将系统切换回Default session,这里的超时控制等逻辑,就是属于这个会话层控制。这个部分的介绍在ISO14229-2中。刚开始可以暂时先不关注这个。

​ 随后的应用层就是UDS中最主要的部分,这里就包含了所有UDS多定义的服务。至此我们可以跟着数据流的方向去理解整个UDS协议。当诊断仪发送一个命令如22H查询ECU的版本号,ECU的Can收到消息后,根据CAN ID得知这个是数据UDS的消息,便将消息交给了TP层,TP层处理后,将数据交给UDS层,UDS得知这是一个22H服务,同时此时权限也满足,便将消息给了22H服务去处理,22H服务根据定义将ECU版本号再根据刚刚的路线将数据返回给诊断仪,经过这样一个过程,诊断仪得到了ECU的版本号。当然一个简化的诊断过程。

总结

​ UDS其实就是一套协议,用于规定诊断仪与ECU之间通信的协议。诊断仪通过所规定的命令,去访问/修改ECU的一些数据。

可添加我个人微信一起讨论交流,共同学习进步。也欢迎大神指点。

在这里插入图片描述

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值