UDS 由 ISO-14229系列标准定义,ISO 14229-1 定义了诊断服务,不涉及网络及实
现,只有应用层的内容。而 ISO 14229-3则定义了 UDS 在 CAN总线上的实现。
诊断通信的过程从用户角度来看非常容易理解,诊断仪发送诊断请求(request),
ECU给出诊断响应(response),而 UDS 就是为不同的诊断功能的 request 和
response定义了统一的内容和格式。
最近关于 UDS 的一系列专栏文章只关注应用层的诊断服务,忽略下层的通信机制。
Diagnostic request 的格式: :
Diagnostic request 的格式可以分为两类:一类是拥有 sub-function 的,另一类是没
有 sub-function的,如下面两张图所示。Service ID(以下简称 SID)的长度固定为 1
个字节,代表了这条诊断命令执行的什么功能。sub-function 的长度也是 1 个字节,
它通常表示对这个诊断服务的具体操作,比如是启动、停止还是查询这个诊断服务。
而后面的 parameter则根据各个诊断服务的不同具有不同的内容,长度和格式并没
有统一规格,它用于限定诊断服务执行的条件,比如某个诊断服务执行的时间等。
parameter的一个重要应用是作为标识符,标识诊断请求要读出的数据内容,我会
在后续的文章里详细讲述各个诊断服务的应用。
拥有 sub-function 的诊断请求
无 sub-function 的诊断请求
有一点要补充的是,其实 sub-function 严格来说是 7个 bit,