UDS服务之31服务是什么?

UDS服务基础篇之31服务:例行控制服务 UDSUnified Diagnostic Services,统一诊断服务作为汽车诊断协议的核心,定义了一系列标准化服务,以实现ECU电子控制单元的诊断与控制。其中,31服务Routine Control,例行控制服务是用于执行ECU内部预设例行程序的关键服务,支持功能验证、系统初始化、参数校准等场景,在汽车研发、生产及售后维护中应用广泛。 服务ID与核心功能 31服务的服务标识符SID为0x31,诊断仪通过发送包含此SID的请求,触发ECU执行指定的例行程序。例行程序是ECU内部预定义的逻辑流程,例如传感器校准、系统复位后的状态同步、排放测试前的条件准备等,其执行过程由ECU自主控制,诊断仪仅需发起请求并获取结果。 子功能与功能码 31服务通过子功能Sub-function细化控制逻辑,子功能字段为请求报文的第二个字节,常用功能码如下:
  • 0x01StartRoutine:启动指定例行程序,需指定例行程序ID及必要参数;
  • 0x02StopRoutine:终止正在执行的例行程序;
  • 0x03RequestRoutineResults:请求例行程序的执行状态或结果。 请求与响应格式

    请求报文结构

    标准31服务请求由4部分组成: `[SID] [Sub-function] [RoutineID] [Parameters]`
    • SID:固定为0x31;
    • Sub-function:如0x01启动、0x03请求结果;
    • RoutineID:2字节,唯一标识ECU内的例行程序如0x0001对应“传感器校准”;
    • Parameters:可选,例行程序执行所需的输入参数如校准阈值、超时时间。

      响应报文结构

      ECU对31服务的肯定响应Positive Response以0x71SID+0x40为起始,: `[0x71] [Sub-function] [RoutineID] [RoutineStatus]`
      • RoutineStatus:1字节,指示例行程序状态,常见值包括:
      • - 0x00RoutineCompleted:例行程序已成; - 0x01RoutineInProgress:例行程序执行中; - 0x02RoutineFailed:例行程序执行失败。 典型工作流程 1. 启动例行程序:诊断仪发送请求`0x31 0x01 0x1234 0x05 0x0A`启动ID=0x1234的程序,参数0x05、0x0A; 2. ECU执行:ECU验证参数合法性后启动程序,返回响应`0x71 0x01 0x1234 0x01`状态:执行中; 3. 请求结果:诊断仪间隔发送`0x31 0x03 0x1234`,ECU返回`0x71 0x03 0x1234 0x00`状态:已成; 4. 流程:诊断仪获取结果,成对该例行程序的控制。 应用场景 31服务在汽车全生命周期中发挥关键作用:
      • 生产阶段:ECU下线前执行“传感器校准”RoutineID=0x0005,确保硬件参数匹配;
      • 售后维护:更换ECU后,通过“系统初始化”RoutineID=0x0010同步车辆配置信息;
      • 排放测试:执行“OBD就绪状态检查”RoutineID=0x0020,确保满足排放检测条件。 31服务通过标准化的请求/响应机制,实现了ECU例行程序的高效控制,是UDS协议中连接诊断需求与ECU功能的核心桥梁。其简洁的结构与灵活的子功能设计,使其能够适配不同ECU的多样化场景需求。

延伸阅读: