【汽车故障诊断9】一文了解离线诊断系统

本系列前面8篇文章是关于在线诊断系统的内容,从本文开始介绍离线诊断系统,即与UDS服务有关的内容。

图片

Source:ISO14229-1

在刚进入汽车行业时,在主机厂,经常看有些同事拿着诊断仪去车上查故障和清故障,很好奇这诊断仪到底有什么魔法;后来我转到供应商做应用软件开发,常常听负责诊断模块的同事提UDS服务;最后我转做底层软件开发了,终于有了机会揭开UDS服务的神秘面纱。本文将先从三个方面进行概括性的介绍:

  •      什么时候用UDS服务

  •      什么是UDS服务

  •      如何了解UDS服务

1 什么时候用UDS服务

我们知道UDS服务是用在车外离线诊断系统,而会用到车外离线诊断系统的有开发人员和维修人员。其中,开发人员包括软件和系统的开发与测试人员等,这些人员需要确保该系统的所有功能被正确实现,也能被正确使用。比如曾经作为底层软件开发人员,会使用UDS服务来刷写软件,测试UDS各个服务是否满足需求,查看故障码和清除故障码等操作。

图片

Source:UDS - Unified Diagnostic Services - ISO 14229 | Vector

而维修人员,作为UDS服务的使用者,针对已经出现了故障的车辆,这些维修人员将会使用这个车外离线诊断系统,即使用诊断仪接入车辆的OBD接口,再使用UDS服务去读取故障信息,清除故障信息和其他操作。

图片

source: AA wots goin on ere then? On Board Diagnostics - OBD - trefor.net

2 什么是UDS服务

上面我们知道开发人员和维修人员都会使用到UDS服务,那么到底什么是UDS服务?我们先一起了解下什么是诊断服务

可以类比到人看病:生病了去看医生,通常过程是这样医生先问病人有什么症状,持续了多久等信息,然后病人回答然后医生开出相对应的检查人去检查,等病人的查结果出来后医生可能就能确定是什么病,药,样一个看病过程就相当于诊断服务

也可以对应到汽车,驾驶员可能看到仪表的故障灯点亮或者感受到汽车的行驶状态异常,那么驾驶员就会开车去修理中心。然后修理人员会用诊断仪器查找故障和清除故障等操作。这样一个过程就是诊断服务的过程。

图片

source:Figure 4 from Automotive Diagnostics Communication Protocols

通过上述两个例子,不难发现诊断服务都是需要一问一答的方式,也就是请求和响应,以这种形式实现某些功能。将上面的第二个例子再细化分析:当维修人员通过诊断仪使用UDS服务请求故障信息,此时是需要对应的ECU响应这个请求,将故障信息发送给诊断仪。

也就是说UDS服务需要通过请求与响应的通讯机制来实现诊断服务功能,在ISO14229中,定义了UDS(Unified Diagnostic Services,统一诊断服务)诊断协议是用于汽车行业诊断通信的需求规范,UDS服务有6类功能,26种服务,分别是:

1)诊断和通信管理功能单元,包括10,11,27,28,3E,83,84,85,86,87共10种服务;

2)数据传输功能单元,包括22,23,24,2A,2C,2E,3D共7种服务;

3)存储数据传输功能单元,包括14,19共2种服务;

4)输入输出控制功能单元,包括2F服务;

5)例行程序功能单元,包括31服务;

6)上传下载控制功能单元,包括34,35,36,37,38共5种服务。

对于这些服务,只是在应用层面的定义,它们是既可以通过CAN通讯来实现,也可以通过其他总线来实现。ISO14229协议定义UDS在OSI参考模型的位置,如下图红圈所示:

图片

Source:ISO14229-1

通常,我们只关注应用层,即ISO14229-1协议。该协议提供的是一个诊断服务的基本框架,对于主机厂和零部件供应商,可以根据实际情况选择实现其中的一部分,也可以自定义一些私有化的诊断服务。

3 如何了解UDS服务

对于UDS服务,需要了解两部分内容,一部分上面提到的26种服务的定义与应用,可通过ISO14229-1来了解;另一部分是UDS服务的CAN通讯机制,可通过ISO15765了解。

3.1 ISO14229-1

对于ISO14229-1, 当然最重要的是理解里面定义的每一个服务及其应用,比如比如诊断仪请求10 03,然后ECU响应50 03 00 32 01 F4。

图片

source: 汽车诊断obd-概览_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

同时也可以向上抽象一层,从原理性的视角来看这些服务,即该协议中第7章关于应用协议控制信息,如下图定义了部分协议数据单元:

图片

Source:ISO14229-1

关注红框内容,基于上面的例子,A_Data指的是10 03,50 03 00 32 01 F4,这里10 03中10,50 03 00 32 01 F4中50,对应A_Data中的A_PCI,又根据A_PCI的定义,10和50更准确的称呼是SI。

图片

Source:ISO14229-1

另外,A_PCI还有一种形式,如下所示,UDS服务的负响应格式,后续文章会提及。

图片

Source:ISO14229-1

A_Data组成部分除了A_PCI,还有Parameters,这些Parameters可能是sub-function(SF),也可能是data-parameter等,见后续文章。

图片

Source:ISO14229-1

这样就了解到UDS服务的抽象定义,那么后续就能更好地理解各个服务的服务请求/响应行为的具体定义。

图片

Source:UDS - Unified Diagnostic Services - ISO 14229 | Vector

3.2 ISO15765

对于上面的例子:诊断仪请求10 03,然后ECU响应50 03 00 32 01 F4,这个请求与响应的通讯过程具体是怎样的呢?简单地说是:诊断仪先发送一个诊断服务请求ECU,这里诊断仪称为客户端或测试端,ECU称为服务端;然后ECU根据诊断服务按一定的机制响应给诊断仪。如果根据ISO14229协议定义,通讯涉及请求,响应,确认,通知4个过程,如下所示:

图片

source: ISO14229-1

如果UDS服务基于CAN总线来实现,那么上述的请求和响应的信息都将通过CAN报文传输,具体的传输机制就需要根据ISO15765议来实现。针对请求和响应存在数据超过8个字节的情况,该ISO15765提出了单帧和多帧的传输机制:

图片

source: ISO15765

3)实战

当然上面两个ISO标准将能帮助你从理论掌握UDS服务,但是最关键还是需要自己通过项目实战来作更深入理解。如果你是软件开发人员,你将会使用代码来实现具体的UDS服务的逻辑;如果你是软件测试人员,你将会通过对每一项服务的测试,请求什么,然后响应是什么,将能极大帮助你深入理解它们。总之纸上得来终觉浅,绝知此事要躬行!

Reference:

[1] ISO14229-1: Road vehicles — Unified diagnostic services (UDS) —Part 1: Specification and requirements

[2] 汽车诊断obd-概览_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

[3] vector提供的参考资料

[4] ISO15765-2: Road vehicles —Diagnostic on Controller Area Networks(CAN) —Part 2: Network layer services


本文就概括性地介绍UDS服务,详细的UDS服务,请关注后续文章。

-------------------------------------------------------------------------------------------------------------------------

创作不易,欢迎点赞收藏关注。更多文章可关注 “谦益行公众号”。

汽车研发交流群,有兴趣的朋友可添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车行业从业人员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值