• 624查看
  • 0回复

[VCU] UDS统一诊断服务【九】通过ID写入数据0X2E服务

[复制链接]


该用户从未签到

发表于 10-12-2023 08:34:25 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


今天分享的内容是UDS诊断通过DID写入数据0X2E服务介绍,希望能对你有所帮助

一、写数据服务介绍

简单来说的话,0X2E写数据服务是通过DID向服务端写入相关数据的

来看看官方文档ISO14229-1的介绍

UDS统一诊断服务【九】通过ID写入数据0X2E服务w1.jpg

这段文字的意思为:

1,0X2E服务允许客户端通过数据标识符(DID)将信息写入内部指定位置的服务器

2,0X2E服务由客户端将数据(dataRecord)写入服务端,也就是ECU,数据由DID标识,可能要过安全访问,可能不要

3,动态定义的DID(至于啥是动态定义的DID咱也不知道哇,暂时没用到过,可看一下0X2C服务)在这个服务是不能用的。车辆制造商有责任在执行次服务时,要满足服务端的条件。

这个服务主要用来:


    将配置信息写入服务端,例如VIN(Vehicle Identification Number),车辆识别码

    清除NVM(non-volatile memory),NVM就是非易失性内存,如RON,flash,掉电不丢失

    复位之前设置的值

    设置可选项

注意:服务器可以限制或禁止对某些DID的值(由系统供应商/车辆制造商定义)进行访问
二、数据格式

2.1 请求报文

请求格式:[SID] + [DID] + [dataRecord],这个服务跟0X22一样,也是没有sub-function这个参数

0X22是通过DID读数据,0X2E是通过DID写数据

UDS统一诊断服务【九】通过ID写入数据0X2E服务w2.jpg

2.2 响应报文

响应报文格式:[SID + 0X40] + [DID] ,所有服务的响应基本都是这个格式,相信各位现在应该对这个很熟了

注意:响应的DID和请求报文中的DID要保持一致,就跟之前一些服务的那个子功能参数一样,响应的时候子功能也要和请求的子功能保持一致。

UDS统一诊断服务【九】通过ID写入数据0X2E服务w3.jpg

2.3 否定响应

否定响应的格式:[0X7F] + [SID] + [NRC]

0X13:请求的消息长度不正确,或格式错误

0X22:条件不正确,就是不满足服务端的运行条件

0X31:不支持当前请求的DID,或请求的DID为只读;用一个无效的DID请求传输数据

0X33:没有过安全访问,需要先执行27服务解密后,才能执行22服务

0X72:在写入时,内存出错

UDS统一诊断服务【九】通过ID写入数据0X2E服务w4.jpg

这里说一下NRC的优先级问题,当一个服务有很多个NRC都满足时,该上报哪一个NRC呢,此时就看哪个NRC的优先级更高了

举个例子,如果0X2E服务在执行时,长度不对,没过安全访问,服务端执行的条件也不满足,那否定响应上报的NRC只报0X13,因为优先级:0X13 > 0X33 > 0X22

UDS统一诊断服务【九】通过ID写入数据0X2E服务w5.jpg

这里的NRC优先级,客户应该会参考ISO14229给一个总的NRC的优先级,每个客户可能会稍微不一样。我负责的其中一个项目的NRC优先级如下:

UDS统一诊断服务【九】通过ID写入数据0X2E服务w6.jpg

2.4 常见的DID

此处只截了一部分,完整DID表,请参考ISO14229-1的 Table C.1 — DID data-parameter definitions

UDS统一诊断服务【九】通过ID写入数据0X2E服务w7.jpg

三、举例子

第一次2E F1 90 00服务是在默认会话下请求的,所以NRC报7F,当前会话不支持

0X22服务在默认会话下也能执行,也不需要过安全访问,所以就能读到

等执行 10 03切到扩展会话后,再执行0X2E服务,NRC报33,表示没过安全访问,得先执行0X27服务解密

最后一次执行0X2E服务,切到了扩展会话模式,也过了安全访问,NRC报13,表示请求的消息长度不正确。因为DID:F1 90是VIN码,由17个字节组成,但发送的时候,只发了一个字节。

注意:在需要切到扩展会话执行相关的服务时,最好周期性发送0X3E服务,否则,手速慢了,还未执行完对应的服务,就又回到默认会话模式,这样也会回复否定响应

UDS统一诊断服务【九】通过ID写入数据0X2E服务w8.jpg

写成功的例子:

10:表示首帧,14表示数据长度为20(0X14转十进制),2E F1 90 加上17个字节的VIN就是20字节

30:表示流控帧

21:2表示连续帧,1表示连续帧的第一帧;同理22就是连续帧的第二帧

UDS统一诊断服务【九】通过ID写入数据0X2E服务w9.jpg

这里介绍一下VIN码是啥,VIN(Vehicle Identification Number),车辆识别码,由17个字节组成,格式如下:

UDS统一诊断服务【九】通过ID写入数据0X2E服务w10.jpg

最后,如果觉得有帮助,希望你能点个关注,一键三连,感激不尽




快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 5-3-2025 00:55 , Processed in 0.504123 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.