嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > UDS统一诊断服务【二】ECU复位0X11服务

UDS统一诊断服务【二】ECU复位0X11服务

大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS诊断ECU复位0X11服务介绍,希望能对你有所帮助


简介

ECU复位服务,其服务ID是0x11,主要功能是控制ECU执行复位动作,主要用于Client向Server(ECU)请求重启行为,该重启行为将会导致Server复位回归到特定的初始状态。

报文格式

1. 请求

请求报文的数据格式如下表,格式比较简单,只包含两个字节,服务ID占一个字节0x11,子功能占一个字节,数据可取范围为0x00-0xFF。

2. 子功能

ECU复位服务在ISO标准中定义的子功能如下,常用的子功能有1和3两个,具体含义参见下表:

肯定响应

肯定响应的格式很简单:[SID + 0x40] + [Sub-function]

Response ID:该参数固定为SID + 0x40 = 0x51;
SubFunction:该参数具体为对应的复位类型,如01,02,03,04,05等;

子功能之后有一个可选字节powerDownTime,当0x11服务请求的子功能为0x04,则肯定响应时就需要回复这个字节,指的是快速关闭需要的时间

否定响应

否定响应的格式也很简单:[0x7F] + [SID] + [NRC]

0x11服务支持的NRC如下:

a) 当发送报文长度或者格式不对时,则Server会回复"7F 11 13";

b) 当诊断请求的resetType不在Server支持的范围内时,则Server会回复”7F 11 12“;

c) 当Server在发生复位前处于security lock状态,那么此时Server则会回复"7F 11 33"

d) Server将会回复“7F 11 22”来告诉请求者当前进入编程会话的条件不满足,请再次检查进入编程会话的条件

举个例子

一开始执行 11 服务的时候,回复了个否定应答,否定应答码为78,这个NRC的含义之前介绍过(不记得这个NRC含义的话请查看之前的文章:),表示已经收到请求,但响应没那么快,那要等多久呢,取决于P2*server_max时间,通常定义为5000ms也就是5s,这个时间就足够大部分ECU复位了。

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