本文主要是介绍跟我学UDS(ISO14229) ———— 0x31(RoutineControl),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
客户端请求启动/停止服务器中的例程或请求例程结果。客户端使用 RoutineControl 服务来控制 RID,RID 由两字节的例程标识符标识。具体的控制类型有以下三种:第一种: 启动 RID;第二种: 停止 RID;第三种: 查询 RID 执行结果。这里对 RID 的三种控制类型做一个详细的介绍:
- 启动 RID
如果对诊断请求的响应是肯定或否定,则表明该请求已被执行或正在进行中,例程将从 StartRoutine 请求消息完成到第一响应消息完成之间的某个时间在服务器的内存中启动。例程可以是运行,也可以是在正常操作代码运行的情况下启用和执行的例程。特别是在第一种情况下,可能有必要在使用 StartRoutine 服务之前,使用DiagnosticSessionControl 服务在特定的诊断会话中切换服务器,或者使用 SecurityAccess 服务解锁服务器。 - 停止由例程标识符引用的例程
在完成 StopRoutine 请求消息和第一次响应消息后,发送该请求,无论响应是肯定或否定,这表明停止例程的请求已经执行或者正在处理,需要服务器例程应在服务器的内存中停止。服务器例程应在服务器内存中编程或事先初始化的任何时间停止。 - 查询 RID 执行结果
客户端使用此子功能来请求在服务器的内存中执行的 RID 生成的结果。基于例程结果,可能已在肯定响应中接收到该结果。 如果消息包含 stopRoutine 子功能参数,则应使用 requestRoutineResults 子功能。 RID 结果的一个示例可能是服务器收集的数据,由于服务器性能的限制,在 RID 执行期间无法传输这些数据。
诊断请求格式
具体的格式如下:
当参数 sub-function 的值为 startRoutine 或 stopRoutine 时,参数 routineControlOptionRecord 是可选的参数。
sub-function definition | ||
---|---|---|
Hex | Name | Description |
00 | ISOSAEReserved | ISO 保留,未定义 |
01 | startRoutine | 启用 RID 例程 |
02 | stopRoutine | 停止 RID 例程 |
03 | requestRoutineResults | 返回 RID 例程结果 |
04 | ISOSAEReserved | ISO 保留,未定义 |
... | ||
7F |
对于 RID 的定义,ISO14229 同样也做了初步的定义,具体的情况如下表:
routineIdentifier definition | ||
---|---|---|
Hex | Name | Description |
0000 | ISOSAEReserved | ISO 保留,未定义 |
... | ||
00FF | ||
0100 | TachographTestIds | 行驶记录仪测试结果值 |
... | ||
01FF | ||
0200 | vehicleManufacturerSpecific | 主车厂定义 |
... | ||
DFFF | ||
E000 | OBDTestIds | OBD / EOBD 测试结果值 |
... | ||
E1FF | ||
E200 | DeployLoopRoutineID | 启动先前选择的点火回路的部署 |
E201 | SafetySystemRoutineIDs | 供将来定义与安全相关的系统实施 |
... | ||
E2FF | ||
E300 | ISOSAEReserved | ISO 保留,未定义 |
... | ||
EFFF | ||
F000 | systemSupplierSpecific | 供应商定义 |
... | ||
FEFF | ||
FF00 | eraseMemory | 启用擦除内存的 RID |
FF01 | checkProgrammingDependencies | 检查服务器的内存编程依赖性 |
FF02 | eraseMirrorMemoryDTCs | 擦除服务器镜像内存故障诊断代码 |
F000 | ISOSAEReserved | ISO 保留,未定义 |
... | ||
FEFF |
正响应格式:
具体的格式如下:
负响应NRC码
具体的NRC码如下:
这篇关于跟我学UDS(ISO14229) ———— 0x31(RoutineControl)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!