目 录CONTENT

文章目录

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

moke
2024-09-29 / 0 评论 / 0 点赞 / 31 阅读 / 0 字

  客户端请求启动/停止服务器中的例程或请求例程结果。客户端使用 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码如下:
在这里插入图片描述

博主关闭了所有页面的评论