当前位置: 首页 > 新闻中心 > 诊断系统开发咨询服务

诊断系统开发咨询服务

发布时间:2024-02-13 17:46:07

  1. 汽车诊断did是什么意思
  2. 如何看懂UDS诊断报文
  3. 如何看懂UDS诊断报文

一、汽车诊断did是什么意思

车辆的故障诊断接口。汽车诊断did指车辆的故障诊断接口,通过这个接口可以获取车辆的故障、运行参数等信息,从而评估车辆的性能和健康状况。

二、如何看懂UDS诊断报文

uds(unified diagnostic services,统一的诊断服务)诊断协议是iso 15765 和iso 14229 定义的一种汽车通用诊断协议,位于osi模型中的应用层,它可在不同的汽车总线(例如can, lin, flexray, ethernet 和 k-line)上实现。uds协议的应用层定义是iso 14229-1,目前大部分汽车厂商均采用uds on can的诊断协议。

uds本质上是一系列的服务,共包含6大类26种。每种服务都有自己独立的id,即sid。

肯定响应和否定响应的形式一定要熟记。

uds的26种服务中,有7种很重要。它们分别是:

下面对这7个服务进行解读。

$10包含3个子功能,

ecu上电时,进入的是默认会话(default)。如果您进入了一个非默认会话的状态,一个定时器会运转,如果一段时间内没有请求,那么到时间后,诊断退回到默认会话01 。当然,我们有一个$3e的服务,可以使诊断保持在非默认的状态。

报文包含4种类型 ,即

nrc:negative response code(否定响应码) 。如果ecu拒绝了一个请求,它会回应一个nrc。不同的nrc有不同的含义。

八个数据字节,第一字节被网络层占用 。

02中的0代表网络层单帧sf,2代表 数据域有2个字节; 10是sid,02是子功能 。

02同上,10+40表示对sid的肯定回复,02是子功能。

03同上,7f表示否定响应,10是sid,22是nrc。

$3e服务用于向服务器指示诊断仪仍然连接在网络上,之前已经激活的诊断服务功能可以仍然保持激活状态。

例子:

27服务,加上一个子服务,再加上一个钥匙,这样的服务请求可以进行解锁。

比如下面的例子,2n-1是某个子服务,通过首轮种子的请求,首轮ecu会返回67+01+aa+bb+cc+dd,aa~dd就是种子了。之后第二轮,诊断端会利用种子进行运算(利用整车厂的算法),生成k1(不一定是1个字节),那么发送请求,27+02+[k1]。ecu同样也会通过种子算出k2。当k1和k2匹配时,解锁(unlocked)成功。

$22读数据,

request(请求):

response(响应):

did有一部分已经被iso 14229-1规定了。比如0xf186就是当前诊断会话数据标识符,0xf187就是车厂备件号数据标识符,0xf188就是车厂ecu软件号码数据id,0xf189就是车厂ecu软件版本号数据标识符。

$22写数据,

request(请求):

response(响应):

注意,比如0xf186这个did不支持直接写入数据,需要用$10来进行会话转换。也就是说, 对于写数据的请求,一般来说需要在一个非默认会话,或解锁的状态下才能进行 。

dtc(diagnostic trouble code):如果系统检测到了一个错误,它将其存储为dtc。dtc可表现为:一个显而易见的故障:通讯信号的丢失(不会使故障灯亮起);排放相关的故障;安全相关的错误等。dtc可以揭示错误的位置和错误类型。通常dtc占用3个字节,obd ii占用两个字节。

故障码包括四个大类,分别是pcbu,p是powertrain动力系统,c是chassis底盘,b是body车身,u是network通信系统。一个dtc信息占用4个字节。最后一个字节是dtc的状态 。前两个字节是我们熟知的类似p0047的故障码。

$19 拥有28个子服务(sub-function)。常用的子服务有02(通过dtc状态掩码读取dtc),04(读取快照信息),06(读取扩展信息),0a(读ecu支持的所有dtc数据)。

清除(复位)dtc格式,它可以改变dtc的状态。3个ff代表清除所有dtc。

uds 的诊断数据的发送与接收都是基于can,所以每个数据流都包含基本的can message 的架构

根据上篇uds文章的叙述,每一个pdu 包含控制信息pci,数据信息data.

网络层 pdu(协议数据单元)pci(协议控制信息)格式:具体如下图所示:

综上所述, n_pdu =n_pci+n_data , n_pci 的值主要集中的 前三个字节 , n_data 值主要集中在 后面7位字节 。其中,

先面用连个例子进行说明,请参考!

[图片上传失败...(image-b66bab-1538824826939)]

由于这个数据发送与接收都是单帧传输,所以第一个数据的高四位均为0,四个数据流中的第一个字节的低四位,02,03,02,06代表的为此帧数据含有几个字节,多余的数据位都用 00或者aa行填充。

[图片上传失败...(image-b5e84b-1538824826939)]

数据发送为单帧,所以06代表发送的数据中含有6个字节,

回复为positive response,为连续帧。

参考资料:

二、如何看懂UDS诊断报文

uds(unified diagnostic services,统一的诊断服务)诊断协议是iso 15765 和iso 14229 定义的一种汽车通用诊断协议,位于osi模型中的应用层,它可在不同的汽车总线(例如can, lin, flexray, ethernet 和 k-line)上实现。uds协议的应用层定义是iso 14229-1,目前大部分汽车厂商均采用uds on can的诊断协议。

uds本质上是一系列的服务,共包含6大类26种。每种服务都有自己独立的id,即sid。

肯定响应和否定响应的形式一定要熟记。

uds的26种服务中,有7种很重要。它们分别是:

下面对这7个服务进行解读。

$10包含3个子功能,

ecu上电时,进入的是默认会话(default)。如果您进入了一个非默认会话的状态,一个定时器会运转,如果一段时间内没有请求,那么到时间后,诊断退回到默认会话01 。当然,我们有一个$3e的服务,可以使诊断保持在非默认的状态。

报文包含4种类型 ,即

nrc:negative response code(否定响应码) 。如果ecu拒绝了一个请求,它会回应一个nrc。不同的nrc有不同的含义。

八个数据字节,第一字节被网络层占用 。

02中的0代表网络层单帧sf,2代表 数据域有2个字节; 10是sid,02是子功能 。

02同上,10+40表示对sid的肯定回复,02是子功能。

03同上,7f表示否定响应,10是sid,22是nrc。

$3e服务用于向服务器指示诊断仪仍然连接在网络上,之前已经激活的诊断服务功能可以仍然保持激活状态。

例子:

27服务,加上一个子服务,再加上一个钥匙,这样的服务请求可以进行解锁。

比如下面的例子,2n-1是某个子服务,通过首轮种子的请求,首轮ecu会返回67+01+aa+bb+cc+dd,aa~dd就是种子了。之后第二轮,诊断端会利用种子进行运算(利用整车厂的算法),生成k1(不一定是1个字节),那么发送请求,27+02+[k1]。ecu同样也会通过种子算出k2。当k1和k2匹配时,解锁(unlocked)成功。

$22读数据,

request(请求):

response(响应):

did有一部分已经被iso 14229-1规定了。比如0xf186就是当前诊断会话数据标识符,0xf187就是车厂备件号数据标识符,0xf188就是车厂ecu软件号码数据id,0xf189就是车厂ecu软件版本号数据标识符。

$22写数据,

request(请求):

response(响应):

注意,比如0xf186这个did不支持直接写入数据,需要用$10来进行会话转换。也就是说, 对于写数据的请求,一般来说需要在一个非默认会话,或解锁的状态下才能进行 。

dtc(diagnostic trouble code):如果系统检测到了一个错误,它将其存储为dtc。dtc可表现为:一个显而易见的故障:通讯信号的丢失(不会使故障灯亮起);排放相关的故障;安全相关的错误等。dtc可以揭示错误的位置和错误类型。通常dtc占用3个字节,obd ii占用两个字节。

故障码包括四个大类,分别是pcbu,p是powertrain动力系统,c是chassis底盘,b是body车身,u是network通信系统。一个dtc信息占用4个字节。最后一个字节是dtc的状态 。前两个字节是我们熟知的类似p0047的故障码。

$19 拥有28个子服务(sub-function)。常用的子服务有02(通过dtc状态掩码读取dtc),04(读取快照信息),06(读取扩展信息),0a(读ecu支持的所有dtc数据)。

清除(复位)dtc格式,它可以改变dtc的状态。3个ff代表清除所有dtc。

uds 的诊断数据的发送与接收都是基于can,所以每个数据流都包含基本的can message 的架构

根据上篇uds文章的叙述,每一个pdu 包含控制信息pci,数据信息data.

网络层 pdu(协议数据单元)pci(协议控制信息)格式:具体如下图所示:

综上所述, n_pdu =n_pci+n_data , n_pci 的值主要集中的 前三个字节 , n_data 值主要集中在 后面7位字节 。其中,

先面用连个例子进行说明,请参考!

[图片上传失败...(image-b66bab-1538824826939)]

由于这个数据发送与接收都是单帧传输,所以第一个数据的高四位均为0,四个数据流中的第一个字节的低四位,02,03,02,06代表的为此帧数据含有几个字节,多余的数据位都用 00或者aa行填充。

[图片上传失败...(image-b5e84b-1538824826939)]

数据发送为单帧,所以06代表发送的数据中含有6个字节,

回复为positive response,为连续帧。

参考资料: