UDS学习笔记(五)——ISO14229

在学习完ISO15765后,我们就可以正式的学习UDS了,也就是ISO14229。我们前面知道了,所有的ISO14229中的服务啊,请求啊,都是在ISO15765基础上进行的。例如10功能代码表示的就是切换对话模式的功能。接收端接收到消息之后,还要进行相应的答复。因此我们本节就分为诊断请求以及诊断响应两个部分进行学习。

目录

 

诊断请求

诊断响应


诊断请求

那我们按套路,首先就上一张图吧。

UDS学习笔记(五)——ISO14229_第1张图片

这么多的诊断服务,其实主要还是分为两大类。:一类是拥有sub-function的,另一类是没有sub-function的。

service ID就是上图的ID值,不同的ID表示不同的功能。

sub-function表示的是该服务的子服务,例如对于10 02来说,10表示的是DiagnosticSessionControl即切换ECU的诊断模式,02表示的是切换到程序下载模式。严格来说,sub-function只有七位,其最高位用来表示ECU是否要响应该消息。当置1时,ECU就不会进行回复。

parameter则没有严格的限制,只是表示服务的一些参数。

带sub-function的服务

 不带sub-function的服务就更好理解了。

不带sub-function的服务

诊断响应

响应来说,主要分为两种响应,第一种是ECU正确的执行了该诊断服务,被称为positive response。它的响应格式就是诊断请求的Service ID + 0X40。

positive response

而当ECU无法执行该诊断服务时,就会响应一条negative response表示ECU没有执行该诊断服务,对于negative response来说,其固定成三个字节。第一个字节为0x7F,第二个字节是被拒绝掉的SID,第三个字节是这个诊断服务无法被执行的原因(下图)。

negative response
UDS学习笔记(五)——ISO14229_第2张图片 无法执行的原因

参考文献

参考的知乎专栏

https://blog.csdn.net/u012252959/article/details/83063899

你可能感兴趣的:(汽车诊断协议—UDS,嵌入式系统)