UDS 诊断教程 (六)
这篇文章将介绍 InputOutputControlByIdentifier (0x2F) 和 RoutineControl (0x31) 这两个诊断服务的用途
和用法。它俩的作用有点类似,都是调用 ECU 内部一些预定义的操作序列,相当于是我们从外部利用诊
断手段控制 ECU 的接口。
InputOutputControlByIdentifier (0x2F)
ECU 简单来说就是一个对输入(sensor)进行计算再产生输出(actuator)的系统。2F 这个服务就是对
ECU 的输入和输出进行控制。这个服务在生产线上会需要使用,比如,在总装阶段,工人需要验证车上
的各种功能是否正常,例如四个车窗的升降是否正常,如果挨个开关去按,那效率很低,如果通过一个
诊断命令就能够观察到车窗升降的情况,效率则高得多。
ECU 就是一个处理输入信息、输出控制的系统
比如,ECU 接收一个输入信号 A,我们就可以利用 2F 给这个 A 赋个我们需要的值;ECU 对某个执行器
B 进行控制,我们就可以利用 2F 服务再配上某些特定的参数来实现对 B 的控制,例如门控对车窗升降、
后视镜折叠等的控制。
2F 命令的格式
2F 服务的 request 由 4 部分组成
1. SID
2. dataIdentifier,用于标识被控制的 IO 对象
3. controlOptionRecord,用于标识控制方式,比如是启动、停止控制,还可以有一些自定义的参数
来进行更精准的控制,比如让某个执行器的动作持续多长时间。controlOptionRecord 又分为两部
分,分别是 1 个 byte 的 inputOutputControlParameter,以及若干 byte 由厂家自定义使用的
controlState。
4. controlEnableMaskRecord,这是一个可选参数,用于标识 controlOptionRecord 中的哪些
parameter 被使用。
UDS 明确定义了四种 inputOutputControlParameter
0x00 returnControlToECU (将控制权还给 ECU,即结束控制)
评论0