【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

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓