跟我学UDS(ISO14229) ———— 0x31(RoutineControl)

2024-02-06 00:30

本文主要是介绍跟我学UDS(ISO14229) ———— 0x31(RoutineControl),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  客户端请求启动/停止服务器中的例程或请求例程结果。客户端使用 RoutineControl 服务来控制 RID,RID 由两字节的例程标识符标识。具体的控制类型有以下三种:第一种: 启动 RID;第二种: 停止 RID;第三种: 查询 RID 执行结果。这里对 RID 的三种控制类型做一个详细的介绍:

  1. 启动 RID
    如果对诊断请求的响应是肯定或否定,则表明该请求已被执行或正在进行中,例程将从 StartRoutine 请求消息完成到第一响应消息完成之间的某个时间在服务器的内存中启动。例程可以是运行,也可以是在正常操作代码运行的情况下启用和执行的例程。特别是在第一种情况下,可能有必要在使用 StartRoutine 服务之前,使用DiagnosticSessionControl 服务在特定的诊断会话中切换服务器,或者使用 SecurityAccess 服务解锁服务器。
  2. 停止由例程标识符引用的例程
     在完成 StopRoutine 请求消息和第一次响应消息后,发送该请求,无论响应是肯定或否定,这表明停止例程的请求已经执行或者正在处理,需要服务器例程应在服务器的内存中停止。服务器例程应在服务器内存中编程或事先初始化的任何时间停止。
  3. 查询 RID 执行结果
     客户端使用此子功能来请求在服务器的内存中执行的 RID 生成的结果。基于例程结果,可能已在肯定响应中接收到该结果。 如果消息包含 stopRoutine 子功能参数,则应使用 requestRoutineResults 子功能。 RID 结果的一个示例可能是服务器收集的数据,由于服务器性能的限制,在 RID 执行期间无法传输这些数据。

诊断请求格式

  具体的格式如下:
在这里插入图片描述
当参数 sub-function 的值为 startRoutine 或 stopRoutine 时,参数 routineControlOptionRecord 是可选的参数。

sub-function definition
HexNameDescription
00ISOSAEReservedISO 保留,未定义
01startRoutine启用 RID 例程
02stopRoutine停止 RID 例程
03requestRoutineResults返回 RID 例程结果
04ISOSAEReservedISO 保留,未定义
...
7F

  对于 RID 的定义,ISO14229 同样也做了初步的定义,具体的情况如下表:
routineIdentifier definition
HexNameDescription
0000ISOSAEReservedISO 保留,未定义
...
00FF
0100TachographTestIds行驶记录仪测试结果值
...
01FF
0200vehicleManufacturerSpecific主车厂定义
...
DFFF
E000OBDTestIdsOBD / EOBD 测试结果值
...
E1FF
E200DeployLoopRoutineID启动先前选择的点火回路的部署
E201SafetySystemRoutineIDs供将来定义与安全相关的系统实施
...
E2FF
E300ISOSAEReservedISO 保留,未定义
...
EFFF
F000systemSupplierSpecific供应商定义
...
FEFF
FF00eraseMemory启用擦除内存的 RID
FF01checkProgrammingDependencies检查服务器的内存编程依赖性
FF02eraseMirrorMemoryDTCs擦除服务器镜像内存故障诊断代码
F000ISOSAEReservedISO 保留,未定义
...
FEFF

正响应格式:

  具体的格式如下:
在这里插入图片描述

负响应NRC码

  具体的NRC码如下:
在这里插入图片描述

这篇关于跟我学UDS(ISO14229) ———— 0x31(RoutineControl)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

车载测试之UDS诊断协议

什么是UDS诊断 也被称为离线诊断或者增强型诊断,面向汽车上的所有ECU的诊断,可以通过UDS进行读取、写入ECU运行时的一些数据,刷写ECU、获取故障信息等,UDS是一套统一的诊断服务命令,分为6大类26个服务 26个诊断服务 UDS中的26个服务是规定在ISO的14229-1协议中 诊断和通信管理功能单元 故障码传输功能单元 数据传输类功能单元 输入输出控制功能单元

跟我学C++中级篇——explicit的分析

一、C++中的类型转换 在学习C++(包括C语言)的过程中,有一个细节非常容易被开发者忽略,就是有一些类型编译器可以自做主张的进行转换。最简单的就是short,int,long,char这些基本类型,编译器会假定开发者就是想转换,所以它会自动转一下。这个在前面分析过有符号和无符号类型时,跳过大坑儿。不过随着开发工具和编译器的升级,这种一般会提供显示的警告。 而在一些类对象中,也存在着这种问题,比

UDS报文-数据参数操作 [0x22] [0x2E]

22 (读取DID) 请求格式 字节编号参数名称data描述1Read DID0X22读取DID2DID Hight0X00~0XFF数据ID 高字节3DID Low0X00~0XFF数据ID 低字节 肯定应答格式 字节编号参数名称data描述1Ask Read DID0X62响应标识2DID Hight0X00~0XFF数据ID 高字节3DID Low0X00~0XFF数据ID 低字节4

《算法竞赛进阶指南》0x31质数

定义 若一个正整数无法被除了1和它本身之外的任何自然数整除,则称这个数为质数(素数),反之为合数。 对于一个足够大的整数N,不超过N的质数大约有 N/lnN个,分布比较松散。 质数的判定 试除法 若一个正整数N为合数,则存在一个能整除N的数T,其中 2 ≤ T ≤ N 2\leq T \leq \sqrt{N} 2≤T≤N ​。 因此,我们只需要扫描 [ 2 , N ] [2,\sqr

基于UDS的Flash 刷写——BootLoad刷写流程详解

从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 流程概述UDS流程详解释前编程①诊断会话控制 - 切换到扩展会话(10 03)②例程控制-预编程条件检查(31 01 02 03)③DTC设置控制 - 关闭DTC(85 02)④通讯控制 -关闭收发(28 01 03) 主编程⑤诊断会话控制 - 切换到扩展会话(10 02

UDS诊断系列之十九 读取故障码(DTC)

一、读取符合条件的DTC数量 通过调用19服务的01子功能,我们可以轻松地读取符合特定条件的故障码数量。重要的是要意识到,此功能仅提供故障码的数量,而不包含任何额外的信息。这意味着,虽然你可以获得故障码的总数,但不会得到关于这些故障码的详细描述或其他相关数据。 1.请求报文 该子功能也比较简单,请求格式如下: 该子功能的请求非常简洁,仅包含三个字节。以下是请求格式的详细说明: 服务编号:

UDS 诊断 - ReadScalingDataByIdentifier(按标识符读取换算数据)(0x24)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl(诊断会话控制)(0x10)服务 UDS 诊断 - ECUReset(ECU重置)(0x11)服务 UDS 诊断 - SecurityAccess(安全访问)(0x27)服务 UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 UDS 诊断

汽车的UDS诊断02

UDS的不同服务: 1)物理寻址和功能寻址 can总线上往往有多个ECU,诊断设备可以和某个ECU通信,也可以和多个ECU通信,通过物理寻址和功能寻址来解决这个问题,只针对请求报文: 物理寻址:就是诊断仪与ECU之间点对点通信 功能寻址:就是诊断仪与多个ECU之间一对多信 我们的诊断报文通常会有3个诊断ID(在报文帧中的仲裁场中),物理请求(物理寻址)报文ID,功能请求(功能寻址)报文I

汽车的UDS诊断01

UDS(Unified Diagnostic Services):ISO14229中定义了汽车通用诊断协议;ISO15765规定了帧的格式; 1)UDS中的四种帧 UDS中的四种帧:单帧、首帧、流空帧、连续帧                                                              图1

UDS服务——TransferData (0x36)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍TransferData (0x36)—— 数据传输,用于下载/上传数据时用的,数据的传输方向由不同的服务控制:0x34服务表示下载,0x35服务表示上传。通过阅读本文,希望能对你有所帮助。 文章目录 诊断协议那些事儿传输数据服务介绍一、服务请求报文定义blockSequenceCounter:数据块顺序计数值transferReq