UDS服务基础篇之2E

2023-11-08 12:51
文章标签 基础 服务 uds 2e

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

UDS诊断服务基础篇之2E

前言

2E服务作为诊断服务中的基础服务,可以简单理解为就是一个用于写入ECU数据的外部接口,可实时获取软件内部的相关的状态信息。

鉴于本文是基础入门介绍,小T还是会问下大家有关2E诊断服务的相关问题?

  • 2E服务的实际用途是什么?
  • 2E服务的应用场景有哪些呢?
  • 2E服务的诊断服务格式如何?

这篇,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:

image-20220626163505648


正文

服务功能
功能描述

根据ISO14119-1标准中所述,诊断服务2E主要用于Client向Server(ECU)通过DID的方式写入相关的数据。

应用场景

一般而言,对于2E诊断服务,主要应用场景为以下场合:

  • 在整车下线的过程中写入相关配置信息,如常见的VIN码;
  • 清除NVM;
  • 重置已写入到Flash中的数据;
  • 其他需要写入内部相关参数的场合;

上述这些应用场景较为常见,除此以外,当然还有很多面向ECU内部测试的应用场合,这里就不一一列举。

服务请求

服务请求是Client发送给到Server的诊断服务指令。其中Client可以理解为Tester,Server可以理解为ECU节点。

请求格式

按照ISO14229-1标准所述,如下图1所示:

image-20220626180527606

图1 2E诊断服务请求格式

下图2中各参数解释如下:

2E诊断请求格式

图2 2E请求格式说明

常见DID总结

根据ISO14229-1规范,定义了诸多只能用于特定场合的DID,也就意味着大家都不能随意乱用DID,在使用DID Number应充分考虑到14229的要求,防止出现跟客户扯皮的现象。

如下图3所示简要列举了较为常见的DID种类及其含义:

3-常见DID

图3 常见DID总结
请求实例

以写入DID F1 90 (VIN码)为例,其对应的诊断请求实例如下图4所示:

image-20220626181431035

图4 2E诊断服务请求实例
服务响应

服务响应是针对Client对Server诊断请求的响应。

正响应格式

如下图所示,为2E诊断服务的正响应格式:

image-20220626181901725

图5 2E诊断服务正响应格式

从上图中可以看出,2E诊断服务的正响应由以下两个部分组成:

  • Response ID:该参数固定为SID+0x40 = 0x6E;
  • DID:该参数表示某个数据的标识符,回复的DID应与诊断请求的DID保持一致;
正响应实例

如下图7所示,为上述DID(F1 90)请求示例所对应的正响应:

image-20220626182139280

图6 2E诊断服务DID正响应示例

注意:对应2E服务回复正响应时一般应确保此时数据已经被成功写入到NVM中,当然如果是KL30供电也可采取下电保存机制,但是前提需走正常下电休眠流程或者执行1101复位动作。

负响应NRC

NRC Code

绝大多数情况下,Server针对Client的请求都会给到正响应,比如发生重启前需确保整车处于安全状态,如引擎熄火,车速不能超过3km/h等,或者为了防止不按照诊断请求格式进行请求,那么Server需要通过某种方式来告诉Client执行不成功的原因在哪里以便于调查问题直至得到正响应。

因此ISO14229-1针对所有的诊断服务提供了一种统一的诊断负响应的诊断格式:7F +SID + NRC

其中NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于2E服务而言支持的NRC如下图8所示:

image-20220626182735880

图7 2E服务NRC Code
  • 例如当尝试写入F190的DID值且当前车速条件不满足,此时Client发送诊断指令"2E F1 90"请求Server读取数据,Server将会回复“7F 2E 22”来告诉请求者当前读取数据的条件不满足,请再次检查读取该DID的条件。
  • 当发送报文长度或者格式不对时,则Server会回复"7F 2E 13";
  • 当诊断请求DID不存在或者在当前Session中不支持时,则Server就会回复“7F 2E 31”;
  • 当Server在发生复位前处于security lock状态,那么此时Server则会回复"7F 2E 33";
  • 当2E服务写入的内存地址错误时,那么此时Server则会回复"**7F 2E 72 **";

NRC优先级

当诊断请求存在多种条件不满足的情况下,那么哪个NRC应当回复呢?毫无疑问此时就需要引入NRC优先级的概念,以下就是诊断服务2E的NRC优先级,供诸君参考:

image-20220626183148891

图8 2E服务NRC优先级

更多精彩内容,敬请关注公众号“ADAS与ECU之吾见!”
在这里插入图片描述

这篇关于UDS服务基础篇之2E的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

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

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

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

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

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)