《UDS协议从入门到精通》系列——图解0x11:ECU复位

2023-11-21 03:30

本文主要是介绍《UDS协议从入门到精通》系列——图解0x11:ECU复位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《UDS协议从入门到精通》系列——图解0x11:ECU复位

  • 一、简介
    • 1.1 预先了解:KL15和KL30是什么?
    • 1.2 什么是ECU复位服务?使用它需要注意什么?
    • 1.3 ECU复位服务的应用场景
  • 二、数据包格式
    • 2.1 服务请求格式
    • 2.2 服务响应格式
      • 2.2.1 肯定响应
      • 2.2.2 否定响应
  • 三、通信示例

Tips📌: ① 本文描述中部分关键词带有双下划虚线,鼠标移动到上面即可快速了解他们。
     ② 本文描述中但凡涉及到其他UDS服务的,将陆续提供链接跳转方式以便快速了解他们。(各服务介绍持续更新中…)

学习UDS基础知识以及其他相关内容?>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

一、简介

1.1 预先了解:KL15和KL30是什么?

   在详细介绍该服务之前,首先了解一些基础知识:汽车上的ECU都需要供电,通常有两类供应电源,一类是长期处于电池包供电状态的常电电源,另一类可以称为唤醒电或者钥匙电,顾名思义就是用于钥匙开关启动车辆后才会被正常供电的ECU;在汽车行业中,常听到的KL15和KL30就跟他们有关,实际上KL15和KL30是指电线规格或线束的命名,这两条电线在汽车的电路系统中起着不同的作用,KL15线提供点火开关激活时的电源,而KL30线提供持久的电源供应

   KL15线 通常用于汽车电路中的"常电"或"ACC电源",指的是在汽车点火开关处提供电源的线路。当点火开关处于ON或ACC档位时,KL15线会激活电路,使得车辆的电子设备(如收音机、电脑等)可以正常工作。KL15线的电压通常为12V。

   KL30线 则是指汽车电路中的"主电"或"电池正极",它是直接连接到车辆电池正极的电线。KL30线提供持久的电源供应,使得车辆的主要电子设备(如发动机控制单元、空调系统、灯光等)可以正常工作。KL30线的电压通常也为12V。

1.2 什么是ECU复位服务?使用它需要注意什么?

   该服务请求ECU根据请求消息中的ResetType参数的值执行不同类型的ECU重置。重置成功后(ECU正响应该服务请求),进入Default Session(默认会话模式)。

   2020版的ISO14229-1标准中指出,当Client向Server发送0x11服务请求时,Server可在复位行为完成之后或者开始复位行为之前给到Client诊断响应,但14229-1强烈推荐的一种做法是:“当Server接收到来自Client的0x11服务请求时,Server应当先给出诊断响应然后开始重启行为“。
  (原因举例:一方面,几乎所有ECU软件设计中一旦走复位重启流程,已经不记得之前发生过什么,不知道收到什么请求,又要给谁发响应;另一方面,如果请求11诊断服务时未抑制正响应,在复位完成之前,一般都会先回复NRC 0x78让Client进行等待,那么Client需要根据不同的ECU节点的回复做超时监控,这无疑增加了Client的负担,对于Client而言,最为简单的方法就是发送完请求,各ECU节点回复正响应,然后各自完成复位操作即可。)

   此外,建议在复位操作执行期间,ECU不要接受任何请求消息以及不要发送任何响应消息,避免发生意料之外的问题

1.3 ECU复位服务的应用场景

   一般而言,对于11诊断服务,主要应用场合如下:

  • ECU被刷写新的软件后,此时需要通过11服务重启该ECU使其恢复到初始状态;
  • 在产线下线标定的过程中,对于KL30供电的ECU存在一些仅在下电时存储的数据,此时需要通过11诊断服务使ECU走下电流程进而完成相应数据的保存;
  • 为满足特定功能的需要,输入相关标定参数给到ECU后,只有通过发送服务11才能使得标定参数生效的场景;
  • 对于KL30供电的ECU节点,可以使用诊断服务11使ECU快速进入休眠的场景。

二、数据包格式

2.1 服务请求格式

在这里插入图片描述
   对于请求消息中Reset Type的取值及其含义如下表所示:

复位类型取值含义/复位特点
----0x00保留
HardReset
(硬复位)
0x01模拟KL30电源的重上电,该复位基本可以等同于Server直接掉电然后重启,
主要用于需要彻底复位的场景,比如刷写之后的复位
KeyOffOnReset
(点火开关复位)
0x02模拟KL15点火钥匙的重启,此类复位用于模拟点火开关从off–>on的过程
一般而言NVM数据会保持不变,VM将重新初始化
SoftReset
(软复位)
0x03效果同上,只是复位没有那么彻底,在无需初始化任何数据的前提下
重置PC指针重新运行应用程序,即RAM中的内容不会重置
enableRapidPowerShutDown
(使能快速休眠流程)
0x04即开启ECU的休眠功能,该子功能适用于非点火上电而仅采用电池供电(KL30供电)的ECU。
对于这类ECU通常情况下,当关闭钥匙电后,过段时间ECU会进入PowerOff状态(即整体下电),
当通过0x11服务请求使用该子功能后,关闭钥匙电不会使ECU进入下电状态,而是进入休眠状态,
这种状态下,ECU可以被快速唤醒。相对于整体下电状态,休眠状态的进入和退出都更加迅速,
但同时这种状态也会多一些功耗。
disableRapidPowerShutDown
(抑制快速休眠流程)
0x05适用于非点火上电而仅采用电池供电(KL30供电)的ECU,抑制其进入下电休眠流程
vehicleManufacturerSpecific
(供整车制造商使用的自定义复位类型)
0x40 - 0x5F整车厂自定义
systemSupplierSpecific
(供系统供应商使用的自定义复位类型)
0x60 - 0x7E零部件供应商自定义
----7F保留

2.2 服务响应格式

2.2.1 肯定响应

在这里插入图片描述
  ResetType:取值及对应含义与上表相同;
  powerDownTime:该参数仅在subfunction(即ResetType)=0x04时才会有,指的是ECU断电过程中保持待机状态的最小时间,即指示这个ECU至少要多久才能进入休眠状态。其他情况下,Server只回复前两个字节,该参数取值范围为0x00-0xFE(254s),0xFF为无效值。

2.2.2 否定响应

在这里插入图片描述

NRC含义
0x12子功能参数不受支持
0x13消息长度错误
0x22不满足请求标准/条件
0x33由于复位操作影响ECU正常功能或者状态,有一定的危险性,所以标准中对于这个服务提供了该NRC,
主机厂在实现该协议时可以(而不是必须)将复位请求定义在安全解锁状态下才能执行,
如果ECU未被解锁,请求重置将受到保护(Server在响应复位请求时处于security lock状态),就回复这个NRC。

三、通信示例

   假设现在目标ECU处于钥匙电上电状态,但不应处于运行模式(毕竟不能在开车过程中复位,即如果是燃油车,动力源为发动机,发动机应关闭;如果是混动车,发动机和ISG电机都要关闭。)诊断仪发送复位请求,发送请求时设置spr位为0(即不抑制正响应),通信数据包如下所示:

诊断仪 目标ECU 11 01 1 诊断仪发送请求: 请求ECU进行硬复位操作 51 01 2 目标ECU给出响应: byte1是SID+0x40 = 51, byte2是sub-funtion:ResetType 目标ECU执行复位操作: (先回复的正响应,再进行复位操作) 诊断仪 目标ECU

>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

这篇关于《UDS协议从入门到精通》系列——图解0x11:ECU复位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/399507

相关文章

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就