【ISO14229_UDS_0x10服务详解】

2024-02-25 04:59
文章标签 服务 详解 uds 0x10 iso14229

本文主要是介绍【ISO14229_UDS_0x10服务详解】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1、0x10服务
  • 2、请求消息格式
  • 3、肯定应答消息
  • 4、否定应答码(NRC_)
  • 5、0x10服务使用案例说明

1、0x10服务

  诊断会话控制服务(0x10服务)可用于启动ECU内部不同的诊断会话。
  在服务端不同诊断会话下,都对应着特定的诊断服务及功能组合。0x10服务启用哪种诊断会话,服务端在该会话下就可以通过数据链路层获取具体的参数值(如时序参数),而在国际标准中也定义了在各诊断会话下对应的服务及功能集合。
  服务器中只允许某一种诊断会话处于运行状态,而且要求在ECU上电时,总是从默认诊断会话开始。在整车制造厂商规定的常规工况及其他工况(如车辆上电状态等),要求ECU能够提供一些诊断功能。
  当客户对ECU发送了一种正处于运行状态的诊断会话,那么要求ECU能够回复肯定应答。ECU内部诊断会话发生跳转时,发生的一些行为状态示意图如下图所示。
图1 诊断会话跳转状态
关键点:
  1)默认会话:当ECU处于默认会话下,客户端发送了请求默认会话指令,要求ECU能够完全重新初始化默认会话。在激活会话期间,ECU能够复位所有的激活/启动/更改的设置及控件,不包括已经编程写入到NVM(非易失性存储器)中的数据。
  2)其它会话:当从默认会话切换到除了默认会话的其它会话时,在默认会话中通过0x86服务(事件响应服务)配置的一些事件都应该被停止。
  3)相同或者其他会话:当ECU从其它会话跳转到另一个其它会话时,ECU能够重新初始化对应的诊断会话,即:
    i) ECU中通过0x86服务(事件响应服务)配置的一些事件都应该被停止;
    ii) 安全等级应被重新设置,这就意味着对于那些先通过安全验证再才能使用的服务(如读取DID服务),则此时被重新上锁;
    iii) 在新的会话下,对于那些不需要通过安全验证的诊断服务功能则维持当前状态即可。例如,在非默认会话下跳转到另外一个非默认会话或者与当前一样的非默认会话时,任何配置的周期性的调度器都应该激活,不会影响到0x28服务(通讯控制服务)及0x85(故障码控制服务)的使用,也就是说在会话处于切换点时正常的通讯模式会被禁用掉;
  4) 默认会话:当ECU从其它非默认会话跳转到默认会话时,通过0x86服务(事件响应服务)配置的一些事件都应该被停止并且安全等级应该被重新设置,在默认会话下不支持的一些诊断服务功能都应该被终止。例如,任意配置周期性调度器或者输出控制都应被禁止,并且0x28服务(通讯控制服务)及0x85(故障码控制服务)应该被重置,会话处于切换点时正常的通讯模式会被禁用掉,切换到默认会话时,正常的通讯会被重新启用。在激活会话期间,ECU能够复位所有的激活/启动/更改的设置及控件,不包括已经编程写入到NVM(非易失性存储器)中的数据。

默认和非默认会话下被允许的服务:

服务默认会话非默认会话
0x10xx
0x11xx
0x27not applicablex
0x28not applicablex
0x3Exx
0x83not applicablex
0x84not applicablex
0x85not applicablex
0x86xx
0x87not applicablex
0x22xx
0x23xx
0x24xx
0x2Anot applicablex
0x2Cxx
0x2Exx
0x3Dxx
0x14xx
0x19xx
0x2Fnot applicablex
0x31xx
0x34not applicablex
0x35not applicablex
0x36not applicablex
0x37not applicablex
0x38not applicablex

2、请求消息格式

2.1 请求消息格式定义:

序号参数名称约定字节值
#1DiagnosticSessionControl Request SID (SID_服务标识符)M (强制)0x10
#2sub_function = [diagnosticSessionType]M (强制)0x00 - 0xFF

2.2 请求消息子函数参数定义:
  诊断会话控制服务通过配置子函数参数即 sub_function = [diagnosticSessionType],以此能够使用一些具体的诊断功能,可能会用到的诊断会话的详细解释见下表:

Bit 6 - 0
描述
约定  
0x00ISOSAE 保留未使用M
0x01默认会话:
  默认诊断会话不支持任何诊断应用超时处理请求 (无需0x3E服务保持会话激活);
  当从其它会话跳转到默认会话下,需要遵循如下规则:
    1) 在服务端发送了诊断会话控制正响应消息时,服务端需要停止当前诊断会话并且启动新的诊断会话;
    2) 如果客户在诊断会话期间上锁了服务端,在服务端发送诊断会话控制正响应消息后,应该可以解锁服务端;
    3) NOTE: 假如使用的数据链路需要初始化,服务应该默认启动默认会话。
M
0x02刷新会话:
   刷新会话允许启动所有的诊断服务来支持服务端的内存刷新;
  在boot软件中进入刷新会话下,客户可通过0x11服务重启ECU、0x10 01命令或者是通过会话层的超时服务,来重新回到默认会话;
U
0x03扩展会话:
   扩展会话可以启动所有诊断服务,用来支持对内存中值改写的功能 (如修改怠速值,发动机CO值);
U
0x04系统安全会话:
   系统安全会话可以启动所有支持与系统安全的功能 (如安全气囊部署);
U
0x05-0x3FISOSAE 文档定义预留M
0x40-0x5FOEM预留U
0x60 -0x7E供应商预留U
0x7FISOSAE 文档定义预留M

3、肯定应答消息

3.1 肯定应答消息格式定义:

序号
参数名称
约定字节值
#1DiagnosticSessionControl Request SID (SID_服务标识符)M (强制)0x50
#2sub_function = [diagnosticSessionType]M (强制)0x00 - 0xFF
#3
.
.
#6
sessionParameterRecord[]# = [
              data#1
              .  
              .
              data#4]
M
.
.
M
0x00 - 0xFF
.
.
0x00 - 0xFF

3.2 肯定应答消息数据参数定义:

Definition
[diagnosticSessionType]
该参数是对请求消息中子函数的0-6位的回显;
sessionParameterRecord
该参数包含了服务端会话的具体参数,此参数的具体内容详见下表;

肯定应答消息中的sessionParameterRecord的数据结构如下表:

Byte pos in record
描述
约定Byte Value
sessionParameterRecord[] = [
#1
P2 Server_max (high byte)
M0x00 - 0xFF
#2
P2 Server_max (low byte)
M0x00 - 0xFF
#3
P2* Server_max (high byte)
M0x00 - 0xFF
#4
P2* Server_max (low byte)]
M0x00 - 0xFF

肯定应答消息中的sessionParameterRecord的内容定义如下表:

Parameter
描述
字节数精度最小值最大值
P2Server_max 激活的诊断会话的默认时序参数21ms0ms65535 ms
P2*Server_max 增强型(NRC 0x78) 时序参数210ms0ms655350 ms

4、否定应答码(NRC_)

本服务实施以下否定应答码(NRC-Negative response code),在各工况下每个应答码的具体含义详见下表:

NRC
描述
0x12子函数不支持:
当不支持子函数参数时,应发送该否定应答码;
0x13消息长度不正确或格式错误:
当消息长度发生错误时,应发送该否定应答码;
0x22条件不正确
诊断会话控制服务请求不满足使用条件时,该否定应答码被返回;

5、0x10服务使用案例说明

  以刷新会话为案例,当0x10服务中的子函数参数最高位 = FALSE 时,表示抑制正响应 (suppressPosRspMsgIndicationBit) 功能未激活),需要服务端有答复消息,在该案例中P2Server_max = 50 ms,P2*Server_max = 5000 ms。
  Client -> Server: 10 02
  Server -> Client: 50 02 00 32 01 F4
在这里插入图片描述
返回UDS诊断服务功能单元介绍目录

这篇关于【ISO14229_UDS_0x10服务详解】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input