Autosar CP —诊断服务详解

Autosar CP —诊断服务详解

汽车诊断功能概述

汽车诊断是指通过电子控制单元(ECU)和诊断工具对车辆进行检查和分析,识别和定位故障或潜在问题的过程。汽车诊断系统帮助维修技师和车辆拥有者了解车辆的运行状况,确定潜在的故障源,并进行适当的维修或维护。现代车辆配备了多个电子控制单元(ECU),可以监控发动机、变速箱、制动系统、安全系统等各类关键系统。

在这里插入图片描述

汽车诊断的组成部分:

  1. 电子控制单元(ECU)
    • 现代车辆中,多个ECU负责监控和控制不同系统,例如发动机控制单元、变速箱控制单元、ABS控制单元等。
    • ECU会实时监控车辆的传感器和执行器数据,并记录故障码(DTC, Diagnostic Trouble Code)以检测异常行为。
  2. 诊断通信协议
    • **OBD-II(On-Board Diagnostics II)**是汽车诊断的国际标准,广泛应用于全球车辆。通过OBD-II接口,可以读取ECU的故障码和数据流。
    • **UDS(Unified Diagnostic Services)**是AUTOSAR框架中广泛使用的高级诊断协议,它扩展了诊断功能,允许车辆开发者定义更细致的诊断功能,如ECU重新编程、执行自检等。
  3. 故障码(DTC, Diagnostic Trouble Code)
    • 当ECU检测到系统中的异常或故障时,会生成相应的故障码(如P0420,催化转换器效率低下)。
    • 通过读取这些故障码,技师可以迅速识别问题,并进一步排查具体原因。
  4. 诊断工具
    • 诊断工具可以通过OBD-II或UDS协议与ECU通信,读取故障码、数据流、以及进行各种主动测试(如传感器和执行器测试)。
    • 诊断工具包括便携式扫描仪、诊断软件(例如厂家专用软件或通用诊断工具),可以显示故障码、实时数据、车辆参数等。

汽车诊断的主要功能:

  1. 故障检测: ECU监控车辆传感器和执行器的数据,一旦检测到异常(如传感器失效、信号超出正常范围),会生成故障码。
  2. 故障码读取和清除: 使用诊断工具可以读取车辆ECU存储的故障码,并在问题解决后清除故障码,复位系统。
  3. 数据流监控: 技师可以通过诊断工具查看车辆实时数据,如发动机转速、进气温度、车速、氧气传感器电压等,用以分析问题。
  4. 主动测试和功能检查: 诊断工具可以执行主动测试,比如强制打开某个执行器(如油泵、喷油器),或者检查传感器和通信系统的状态。
  5. ECU重新编程与软件更新: 通过高级诊断服务,车辆制造商或维修技师可以对ECU进行重新编程或更新软件,以修复BUG或提升系统性能。

常见诊断协议:

  1. OBD-II(On-Board Diagnostics II)
    • 自1996年起,OBD-II成为大多数车辆的标准接口。它允许用户读取基本的故障码和部分车辆数据。
    • 通过OBD-II接口,用户可以访问发动机、排放控制系统和传感器数据。
  2. UDS(Unified Diagnostic Services)
    • UDS是现代汽车诊断系统中的高级通信协议。它提供了更丰富的诊断服务集,如ECU刷写、测试服务、自诊断等。
    • AUTOSAR标准中,UDS协议广泛用于对车载系统进行诊断、校准、编程等高级操作。
  3. KWP2000(Keyword Protocol 2000)
    • KWP2000是另一种诊断协议,通常应用于1990年代至2000年代初的车辆。它与OBD-II类似,支持诊断故障码读取、数据监控等基本功能。

汽车诊断的常见用途:

  1. 故障排查与维修: 通过读取和分析ECU中的故障码,维修技师可以迅速找到车辆中的故障点,并进行相应的维修。
  2. 车辆保养和维护: 通过定期诊断,可以提前发现潜在问题,避免重大故障发生,延长车辆的使用寿命。
  3. 排放监控: 现代车辆的OBD系统会持续监控排放控制系统,确保车辆的排放符合环保要求,并能在排放系统故障时提醒驾驶员。
  4. 性能调试: 诊断系统可以用于车辆性能优化和调试,通过实时监控和调整车辆的参数,提升车辆的燃油经济性、动力输出等。

AutoSar诊断服务总体框架

在这里插入图片描述

由上图可以看出,诊断服务属于AutoSar服务层,诊断服务流通过CAN驱动----CAN IF----CANTP-----PDUR-----DCM模块,DCM模块处理诊断数据,并执行对应的具体诊断服务。

在AUTOSAR中,**DCM(Diagnostic Communication Manager)**模块负责车辆诊断通信的管理,提供与外部诊断工具或设备进行交互的接口。DCM模块主要支持通过诊断协议(如UDS、OBD-II)进行故障码读取、执行自诊断和维护操作。它是汽车诊断的核心组件之一,确保车辆能按照统一的诊断标准进行通信和操作。

AUTOSAR中的DCM(Diagnostic Communication Manager)、**DEM(Diagnostic Event Manager)FIM(Function Inhibition Manager)**模块是支持汽车诊断和故障管理的关键组件。以下是它们的简单功能介绍:

  1. DCM(Diagnostic Communication Manager)

DCM模块负责管理诊断服务的通信。它在ECU和外部诊断工具之间提供了一个统一的接口,用于处理诊断请求、响应和传输诊断数据。它支持**UDS(Unified Diagnostic Services)**协议,并管理所有诊断通信会话。

功能:

  • 接收并解析来自外部诊断工具的诊断请求。
  • 处理诊断服务(如读取故障码、清除故障码、控制ECU重编程等)。
  • 根据请求调用相应的ECU服务或应用层功能,生成响应并发送回诊断工具。
  • 管理诊断通信会话(如正常通信、编程会话、扩展会话等)。

典型应用: 通过OBD(On-Board Diagnostics)接口读取车辆故障码(DTC),重编程ECU。


  1. DEM(Diagnostic Event Manager)

DEM模块负责管理车辆运行时发生的诊断事件(如故障),并处理故障码(DTC)的存储、更新和清除。它与ECU中的各个模块交互,收集故障信息并记录到内存中。

功能:

  • 监控ECU内的诊断事件并记录故障码(DTC)。
  • 管理故障的状态(如当前是否故障、是否间歇性出现等)。
  • 记录故障的环境数据(如故障发生时的车辆状态)。
  • 提供DTC信息给上层模块(如DCM),供诊断工具读取。
  • 支持故障码的存储、恢复和清除。

典型应用: 在车辆检测到传感器或执行器出现故障时,DEM模块会记录DTC,并允许通过诊断工具读取和清除这些故障信息。


  1. FIM(Function Inhibition Manager)

FIM模块用于对系统中的某些功能进行抑制或启用控制,尤其是在特定故障状态下。它根据来自DEM模块的故障信息,决定是否抑制某些功能,以保护系统或确保安全。

功能:

  • 基于故障信息(由DEM提供)抑制或恢复ECU中的某些功能。
  • 监控系统的故障状态,并根据预设的条件,动态启用或禁用某些功能。
  • 确保在某些故障状态下,系统功能能够安全降级或被抑制,避免对车辆性能或安全造成影响。

典型应用: 如果某个传感器出现故障,FIM模块可以抑制依赖该传感器的某些功能,防止故障扩散或对安全系统产生影响。


模块间的关系:

  • DCM负责诊断通信,与诊断工具进行交互并处理诊断请求。
  • DEM管理诊断事件和故障码的存储、更新及报告,将故障信息传递给DCM用于诊断响应。
  • FIM利用DEM提供的故障信息,决定是否抑制或启用某些系统功能,以保证系统的稳定性和安全性。

这三个模块相互配合,为车辆提供了强大的诊断和故障管理功能,确保能够及时发现、记录和处理系统中的问题。

诊断服务分类

按照功能区分,可以分为 诊断和通信管理功能 数据传输功能 存储功能等等

其中诊断服务中有支持子功能和不支持子功能之分。

支持子功能的诊断服务

  • 某些诊断服务具有多个子功能,这些子功能通过额外的参数进行区分,通常用于提供更细化的操作。例如,**诊断会话控制服务(0x10)**具有多个子功能,如:
    • 默认会话(sub-function: 0x01)
    • 扩展诊断会话(sub-function: 0x03)
    • 编程会话(sub-function: 0x02)

这些子功能为用户提供了在不同诊断模式下执行不同操作的能力。在请求该服务时,诊断工具可以指定子功能来确定所需的具体操作。

不支持子功能的诊断服务

  • 有些诊断服务不具备子功能,或者即使有子功能,它们的操作相对简单,不需要进一步细化。例如,**清除诊断信息服务(0x14)**通常不涉及子功能,只有单一的操作目标(清除特定的DTC)。

这种情况下,诊断工具只需发送服务号而无需附加子功能参数,ECU将直接处理该服务。

诊断服务数据格式

AUTOSAR中,诊断服务数据的格式遵循**UDS(Unified Diagnostic Services,统一诊断服务)**协议标准。每个诊断服务请求和响应消息都有严格的结构,由服务标识符(SID)、子功能、数据标识符(DID)、故障代码(DTC)等组成。这些数据的格式统一规定,确保不同的诊断工具和ECU可以相互兼容。

诊断服务数据的基本格式

  1. 请求消息格式

请求消息是从诊断工具(如OBD-II扫描仪或服务工具)发送给车辆ECU的消息。其基本结构如下:

[服务标识符(SID)] [子功能] [参数数据]
  • SID(Service Identifier): 服务标识符,用来标识请求的是哪种诊断服务。UDS中SID为1个字节长,范围是0x000xFF

  • 子功能(Sub-function): 用于指定诊断服务的具体操作模式或请求类型。子功能在某些服务中是可选的。

  • 参数数据(Optional Parameters): 诊断服务可能需要附带一些额外的数据或标识符,称为参数数据。参数可以包括数据标识符(DID)、故障码(DTC)、地址、长度等。

  1. 响应消息格式

响应消息是ECU对诊断请求的回应。响应消息的格式基本与请求消息类似,但通常包含附加的状态信息或错误代码。

[正响应服务标识符] [数据]
  • 正响应服务标识符: 正响应的服务标识符是请求SID加上0x40的偏移。例如,SID = 0x10,正响应SID为0x50

  • 数据(Response Data): 正确响应时,响应消息包含所请求的数据,如DTC的值或特定诊断信息。如果发生错误,响应消息包含错误代码。

诊断服务数据格式示例

  1. 诊断会话控制服务(SID = 0x10)

此服务用于切换诊断会话模式。请求格式如下:

请求:

[10] [Sub-function] 
  • 例如,进入扩展会话:

    [10 03]
    
    • 0x10: 会话控制服务标识符
    • 0x03: 子功能,代表扩展诊断会话

响应:

[50] [Sub-function] 
  • 响应成功:

    [50 03]
    
    • 0x50: 成功响应服务标识符
    • 0x03: 子功能确认
  1. 读取故障码(Read DTC Information,SID = 0x19)

此服务用于从ECU读取诊断故障码(DTC)。根据具体的子功能,可以选择读取不同类型的DTC。

请求:

[19] [Sub-function] [DTC Group] [Status Mask]
  • 例如,读取所有DTC的请求:

    [19 02 FF FF]
    
    • 0x19: 读取DTC信息的服务标识符
    • 0x02: 子功能,表示读取存储的DTC
    • 0xFFFF: 请求所有故障码组

响应:

[59] [Sub-function] [DTC Data]
  • 响应成功:

    [59 02 00 01 FF 08]
    
    • 0x59: 成功响应标识符
    • 0x02: 子功能确认
    • 0x00 01 FF 08: DTC数据,表示故障码和相关状态
  1. 安全访问(SID = 0x27)

安全访问服务用于保护敏感的诊断操作。请求分为两个阶段:首先请求安全种子,然后发送密钥进行认证。

请求:

  • 请求种子:

    [27 01]
    
    • 0x27: 安全访问服务
    • 0x01: 请求种子(Request Seed)

响应:

[67] [Seed Data]
  • 例如:

    [67 01 12 34 56]
    
    • 0x67: 成功响应标识符
    • 0x01: 子功能确认
    • 0x12 34 56: 种子数据
  • 发送密钥:

    [27 02 78 9A BC]
    
    • 0x27: 安全访问服务
    • 0x02: 发送密钥(Send Key)
    • 0x78 9A BC: 密钥数据

响应:

[67 02]
  • 例如:

    [67 02]
    
    • 0x67: 成功响应标识符
    • 0x02: 子功能确认

错误响应格式

如果诊断请求中出现错误(如服务或子功能不支持、条件不满足等),ECU会返回一个错误响应消息。错误响应的格式为:

[7F] [请求服务标识符] [错误代码]
  • 7F: 错误响应的固定标识符
  • 请求服务标识符: 对应请求中的服务号
  • 错误代码: 错误的具体原因,常见的错误代码有:
    • 0x11: 服务不支持
    • 0x12: 子功能不支持
    • 0x31: 请求条件不满足
    • 0x33: 安全访问失败

示例:

请求扩展会话时不支持此子功能:

[10 03]
  • ECU响应:

    [7F 10 12]
    
    • 0x7F: 错误响应
    • 0x10: 请求的服务标识符
    • 0x12: 子功能不支持

数据标识符(DID)格式

一些诊断服务(如读取/写入数据)使用**数据标识符(DID, Data Identifier)**来标识特定的车辆数据。DID是2字节长,表示要读取或写入的车辆参数(如车速、里程、VIN等)。

请求读取数据:

[22] [DID High Byte] [DID Low Byte]
  • 例如,读取车辆识别码(VIN,DID = 0xF190):

    [22 F1 90]
    

响应:

[62] [DID] [Data]
  • 响应VIN:

    [62 F1 90 1G1JC5444R7252367]
    

AUTOSAR诊断服务的数据格式遵循UDS标准,具有一致的结构化格式。请求消息和响应消息都以**服务标识符(SID)**为核心,并根据不同的服务可能包含子功能、数据标识符(DID)、故障码(DTC)等额外参数。通过这些格式化数据,诊断工具可以与车辆ECU进行有效通信,执行读取数据、故障码管理、安全访问等操作。

诊断服务寻址方式

AUTOSAR中,诊断服务的寻址方式决定了诊断请求如何被传递到目标ECU(Electronic Control Unit,电子控制单元)。寻址方式定义了诊断工具与ECU之间的通信范围和目标,可以是针对特定的ECU,也可以是面向整个网络的广播。诊断服务通常基于**UDS(Unified Diagnostic Services)**协议,通过以下几种寻址方式进行通信:

1. 功能寻址(Functional Addressing)

功能寻址是指诊断请求不针对某个特定的ECU,而是发送给所有具备某一特定功能的ECU。所有接收到该请求的ECU都会检查自己是否具备所请求的功能,如果具备就会响应。

  • 典型应用: 功能寻址常用于广播诊断请求,像是读取DTC信息诊断会话控制等不特定指向某个ECU的服务。
  • 优点: 简化了对多个ECU的请求,避免诊断工具逐一发送请求。

功能寻址的工作方式

  • 诊断工具通过CAN总线发送功能寻址的消息,消息中使用一个特殊的功能地址,通常是一个广播地址。
  • 所有连接在总线上的ECU接收到该消息后,检查请求是否与其支持的功能匹配,匹配的ECU会处理并响应该请求。

例子

诊断工具 -> 广播请求:读取所有故障码
ECU 1: 检查是否有故障码,如果有则响应
ECU 2: 检查是否有故障码,如果有则响应

特点

  • 仅发出一次请求,所有相关的ECU都可接收。
  • 响应可能是多个ECU的汇总信息。

2. 物理寻址(Physical Addressing)

物理寻址是指诊断请求针对某个特定的ECU。诊断工具向特定的物理地址发送请求,只有目标ECU能够接收到并处理该请求。

  • 典型应用: 物理寻址常用于特定ECU的配置、参数读取或写入,例如对某个ECU进行单独的编程校准
  • 优点: 通信定向性强,只有目标ECU响应,避免了无关ECU参与处理请求的情况。

物理寻址的工作方式

  • 诊断工具发送的请求携带目标ECU的物理地址,消息通过总线传输到目标ECU。
  • 只有匹配该物理地址的ECU会接收和处理该请求,并向诊断工具发回响应。

例子

诊断工具 -> 请求ECU 3进入编程会话
ECU 3: 接收并处理请求,进入编程模式

特点

  • 通信仅在诊断工具和目标ECU之间进行,其他ECU不会响应该请求。
  • 通常用于专门针对单个ECU的诊断操作。

3. 混合寻址(Mixed Addressing)

混合寻址是功能寻址和物理寻址的组合方式。在某些情况下,诊断请求使用功能寻址发送,但响应使用物理寻址。这种方法确保了请求能够广播到所有ECU,但响应是由目标ECU单独发回诊断工具。

  • 典型应用: 常用于涉及多个ECU的诊断操作,在广播请求之后,期望只有一个ECU发回响应。
  • 优点: 保证请求的灵活性和高效性,同时又能确保唯一、定向的响应。

混合寻址的工作方式

  • 诊断工具通过功能寻址发出请求,所有接收到该请求的ECU都会检查并决定是否需要响应。
  • 只有一个符合条件的ECU(如带有特定故障码的ECU)会使用物理寻址方式发回响应。

例子

诊断工具 -> 请求读取所有故障码(功能寻址)
ECU 2: 有故障码,发送物理地址响应

特点

  • 请求使用功能寻址的灵活性,响应是单一的物理地址,避免多个ECU同时响应。

4. 扩展寻址(Extended Addressing)

扩展寻址是在消息头中增加一个额外的地址字段,用于扩展物理寻址的地址空间。与标准寻址相比,扩展寻址允许更多的设备在同一网络中使用。

  • 典型应用: 扩展寻址通常用于网络中需要支持较大数量的ECU或设备的场景,例如高端汽车系统中有大量ECU需要单独通信。
  • 优点: 提供了更大的寻址空间,使得诊断系统可以支持更多ECU。

扩展寻址的工作方式

  • 诊断消息在发送时,除了标准的CAN ID,还会附加一个字节的扩展地址,确保在网络中正确区分不同ECU。
  • 接收方根据消息头中的扩展地址确定是否该消息是发给自己的。

5. 广播寻址(Broadcast Addressing)

广播寻址是诊断工具向网络中的所有ECU发送一个消息,所有ECU都会接收到该请求,并根据请求的内容决定是否响应。这种寻址方式主要用于广播一些状态查询请求或者同步命令。

  • 典型应用: 广播寻址常用于状态同步、网络管理或系统初始化场景。
  • 优点: 提供一种高效的方式向所有ECU传递信息,不需要分别发送多次。

诊断服务寻址的总结

寻址方式特点应用场景
功能寻址广播请求给多个ECU,多个ECU检查并决定是否响应。读取DTC信息、会话控制、网络管理等。
物理寻址仅对特定ECU发送请求,单个ECU响应。编程、配置、参数调整、校准等。
混合寻址请求通过功能寻址,响应通过物理寻址。读取故障信息,避免多ECU同时响应。
扩展寻址使用扩展地址字段来支持更多设备的寻址。大规模ECU网络。
广播寻址向所有ECU发送信息,通常无响应。系统同步、状态查询、系统重启等。

在AUTOSAR诊断服务中,寻址方式的选择取决于诊断操作的目标和范围。功能寻址适用于需要多ECU响应的场景,而物理寻址用于单个ECU的定向操作。混合寻址则结合了二者的优势,既能广播请求,又能保证单一响应。而扩展寻址则适用于大型ECU网络中。

常用的诊断服务

在**UDS(Unified Diagnostic Services)**中,常用的诊断服务包括以下:

  1. 0x10 - 诊断会话控制(Diagnostic Session Control)
  2. 0x11 - ECU重置(ECU Reset)
  3. 0x14 - 清除诊断信息(Clear Diagnostic Information)
  4. 0x19 - 读取故障码信息(Read DTC Information)
  5. 0x22 - 读取数据标识符(Read Data By Identifier)
  6. 0x23 - 读取内存数据(Read Memory By Address)
  7. 0x24 - 读取定期数据(Read Scaling Data By Identifier)
  8. 0x27 - 安全访问(Security Access)
  9. 0x28 - 通信控制(Communication Control)
  10. 0x2E - 写入数据标识符(Write Data By Identifier)
  11. 0x2F - IO控制(Input Output Control By Identifier)
  12. 0x31 - 例行控制(Routine Control)
  13. 0x34 - 请求下载(Request Download)
  14. 0x35 - 请求上传(Request Upload)
  15. 0x36 - 传输数据(Transfer Data)
  16. 0x37 - 结束传输(Request Transfer Exit)
  17. 0x3E - 测试仪保持连接(Tester Present)
  18. 0x85 - 控制DTC设置(Control DTC Setting)

一些典型的诊断服务说明

0x10 - 诊断会话控制

0x10 - 诊断会话控制(Diagnostic Session Control) 是**UDS(Unified Diagnostic Services)**协议中的一个常用服务,它用于切换ECU(电子控制单元)的诊断会话模式。不同的会话模式决定了ECU支持的诊断服务的范围,通常根据车辆状态和诊断需求切换会话。

根据需求,常用的会话类型包括以下几种:

  1. 0x01 - 默认会话(Default Session):

    • 这是ECU的默认模式。
    • 在该模式下,ECU只允许执行一些基本的诊断服务,比如读取数据(0x22)、读取故障码信息(0x19)。
    • 不支持编程或扩展的功能。
  2. 0x02 - 编程会话(Programming Session):

    • 用于对ECU进行编程、重新标定或固件更新。
    • 在该模式下,ECU支持下载新软件、上传数据(0x34, 0x35),以及对其进行特定功能的配置。
    • 通常在车辆进行维修或更新时使用。
  3. 0x03 - 扩展会话(Extended Diagnostic Session):

    • 提供比默认会话更多的诊断功能。
    • 允许访问更多的服务,例如例行控制(0x31)、安全访问(0x27)等。
    • 适用于高级的诊断操作和故障排除。
  4. 0x04 - 安全会话(Safety System Session):

    • 此会话通常用于安全相关的功能和诊断。
    • 在某些车辆的安全系统中(如气囊系统),需要进入特定的安全会话才能执行某些功能。

会话模式转换图如下:

在这里插入图片描述

诊断工具通过发送以下请求切换ECU的会话模式:

  • 请求格式:

    [0x10] [会话类型]
    

    例如,要切换到编程会话(0x02),请求消息为:

    10 02
    
  • 响应格式: 当ECU成功切换到请求的会话模式时,它会返回响应:

    [0x50] [会话类型]
    

    例如,ECU切换到编程会话的响应消息为:

    50 02
    

特性:

  • 切换到不同的会话模式后,ECU将开启相应的功能和诊断权限。
  • 不同会话模式会对服务时间和超时参数(如P2、P2*时间)进行调整,这些参数决定了ECU在不同会话下的响应时间。

典型应用:

  • 进入编程会话以更新ECU软件。
  • 切换到扩展会话以执行高级诊断和控制操作。
  • 默认会话下执行日常的诊断读取任务。

0x19 - 读取故障码信息

0x19 - 读取故障码信息(Read DTC Information)UDS(Unified Diagnostic Services) 中用于查询ECU中的故障码(DTC, Diagnostic Trouble Code)及相关信息的诊断服务。这个服务通常用于读取车辆的错误状态,帮助技师和诊断工具分析车辆故障。

该服务可以获取车辆运行过程中检测到的各种故障码,并提供关于故障的状态、计数、发生条件等详细信息。通过这些信息,技师可以识别系统中的问题并进行故障排除。

子功能:

0x19 服务通过不同的子功能来读取不同类型的DTC信息。常见的子功能如下:

  1. 0x01 - 读取所有已激活的DTC(Report active DTCs):

    • 返回当前正在激活的所有故障码。
  2. 0x02 - 读取所有存储的DTC(Report stored DTCs):

    • 返回ECU中已存储的所有历史故障码。
  3. 0x03 - 读取DTC状态(Report DTC Snapshot Records):

    • 返回特定DTC的快照数据,包含发生故障时的环境信息。
  4. 0x04 - 读取扩展数据记录(Report DTC Extended Data Records):

    • 获取DTC的扩展数据,通常包含故障次数、时间戳等详细信息。
  5. 0x05 - 读取DTC的数量(Report DTCs by Status Mask):

    • 根据状态掩码筛选并读取符合条件的DTC。
  6. 0x06 - 读取指定范围的DTC(Report DTCs with Status Mask):

    • 按照特定状态过滤的故障码进行报告。
  7. 0x07 - 读取DTC的支持状态(Report supported DTCs):

    • 获取ECU所支持的DTC列表,展示可能检测到的故障码类型。
  8. 0x08 - 读取DTC故障码的记录状态(Report DTC Fault Detection Counter):

    • 返回故障检测计数器的值,用于统计DTC的发生次数。
  9. 0x0A - 读取车辆制造商特定的DTC信息(Report DTCs with Permanent Status):

    • 提供车辆制造商定义的永久性故障信息。

请求与响应格式

  • 请求格式

    [0x19] [子功能] [附加参数...]
    

    例如,要读取所有已激活的DTC,发送的请求如下:

    19 01
    
  • 响应格式

    [0x59] [子功能] [故障码信息...]
    

    例如,ECU返回激活的DTC时的响应格式可能如下:

    59 01 [DTC1] [DTC2] ...
    

DTC的编码格式

DTC 通常是用 3 字节编码表示的,格式如下:

  • 第一个字节:系统类型(如动力系统、变速系统等)。
  • 第二、三字节:具体的错误信息,标识具体的故障类型和子系统。

例如,DTC 0xP0300 表示发动机系统中随机/多缸点火失败。

典型应用:

  • 读取存储的DTC以分析车辆的历史故障记录。
  • 通过读取DTC的状态信息,查看故障是否持续存在。
  • 查询故障的详细环境数据(快照)以了解故障发生时的具体车辆运行状态。

0x27 - 安全访问

0x27 - 安全访问(Security Access)UDS(Unified Diagnostic Services) 协议中的一个重要诊断服务,用于保护车辆的敏感数据和操作功能不被未经授权的用户访问。通过安全访问机制,ECU需要验证诊断工具的权限,确保只有授权的工具能够执行某些安全相关的操作(如ECU编程、重新标定、配置修改等)。

功能:

  • 安全访问 通过一个挑战-应答的过程实现授权。ECU发送一个随机生成的“种子”(Seed)给诊断工具,诊断工具根据特定的算法生成一个对应的“密钥”(Key)并返回给ECU。ECU验证密钥以决定是否授予访问权限。

  • 安全级别:不同的安全操作可能有不同的安全级别,每个级别对应不同的种子-密钥对。

安全访问的工作流程

  1. 请求种子(Request Seed):诊断工具向ECU发送请求,要求进入某个安全级别。ECU返回对应的“种子”。
  2. 生成密钥(Generate Key):诊断工具根据特定的算法,用种子生成密钥。
  3. 发送密钥(Send Key):诊断工具将生成的密钥发送给ECU。ECU验证密钥的正确性。
  4. 访问授权:如果密钥验证通过,ECU允许进入该安全级别,授权执行后续操作。如果密钥验证失败,访问将被拒绝,并可能引发计数器限制重复尝试。

子功能

  • 0x01 - 请求种子(Request Seed):诊断工具向ECU请求种子,用于生成密钥。
  • 0x02 - 发送密钥(Send Key):诊断工具发送计算好的密钥给ECU,ECU根据密钥来验证授权。

请求/响应格式

  1. 请求种子

    • 请求格式:

      [0x27] [安全级别 | 0x01]
      

      例如,向安全级别1请求种子:

      27 01
      
    • 响应格式:

      [0x67] [安全级别 | 0x01] [种子]
      

      例如,ECU返回的响应:

      67 01 [种子]
      
  2. 发送密钥

    • 请求格式:

      [0x27] [安全级别 | 0x02] [密钥]
      

      例如,发送安全级别1的密钥:

      27 02 [密钥]
      
    • 响应格式:

      [0x67] [安全级别 | 0x02]
      

      例如,ECU验证成功后返回:

      67 02
      

典型应用

  • ECU编程:在更新ECU的固件或软件时,通常需要通过安全访问验证,确保只有授权的人员能够进行此类操作。
  • 功能启用或禁用:某些车辆的高级功能(如电子限速、牵引力控制等)可能需要通过安全访问进行启用或禁用。
  • 防止恶意攻击:安全访问确保了车辆系统的安全性,避免了未经授权的工具或用户篡改系统参数或功能。

重试限制:

  • 安全访问通常会有重试次数的限制。如果诊断工具多次尝试并发送错误的密钥,ECU可能会进入“锁定状态”,拒绝进一步的访问请求,或者会设置一段时间的冷却期,防止暴力破解。

0x28 - 通信控制

0x28 - 通信控制(Communication Control)UDS(Unified Diagnostic Services) 中的一个诊断服务,主要用于控制ECU的通信行为。该服务允许诊断工具启用或禁用某些通信功能,以减少不必要的数据传输,尤其是在测试、诊断或编程操作期间。

  • 通信控制 通过允许或禁止ECU的某些通信行为,帮助优化通信负载或保护网络不被不必要的信息占用。
  • 例如,车辆在诊断过程中可能不需要某些定期发送的消息,通过这个服务,可以暂时关闭ECU的消息发送功能。

常见应用场景:

  • 调试和编程:在ECU编程时,需要减少总线负载,确保可靠的通信。
  • 省电模式:在特定操作下(如低功耗模式),需要关闭某些通信功能以节省电量。
  • 网络管理:允许某些网络节点继续通信而其他节点处于非活动状态。

子功能:

通信控制服务包含几个子功能,用于控制不同通信类型的启用和禁用:

  1. 0x00 - 启用所有网络通信(Enable All Network Communication):

    • 恢复所有通信功能,ECU可以继续正常发送和接收消息。
  2. 0x01 - 禁用所有网络通信(发送和接收)(Disable Rx and Tx):

    • 禁用ECU的所有网络通信,即既不能发送也不能接收消息。
  3. 0x02 - 禁用接收消息(Disable Rx):

    • 禁止ECU接收来自其他网络节点的消息,但可以发送消息。
  4. 0x03 - 禁用发送消息(Disable Tx):

    • 禁止ECU发送消息到网络,但可以接收其他节点发送的消息。

请求/响应格式

  • 请求格式

    [0x28] [子功能] [通信类型]
    

    例如,发送请求以禁用所有网络通信(发送和接收):

    28 01 [通信类型]
    
  • 响应格式

    [0x68] [子功能] [通信类型]
    

    例如,ECU响应禁用所有通信的请求:

    68 01 [通信类型]
    

通信类型

通信类型字段指定了要控制的通信类型,可能的值包括:

  • 0x01 - 默认通信:控制与网络基础通信相关的消息(如诊断消息)。
  • 0x02 - 通信类型1:控制特定的应用层通信(如功能消息)。
  • 0x03 - 通信类型2:控制与网络管理或其他特定协议相关的消息。

典型应用场景

  1. 减少总线负载:在进行诊断或调试时,禁用不必要的通信减少CAN总线的负载。
  2. 省电模式:进入省电模式时禁用所有通信,保持低功耗。
  3. 特定测试:需要在某些测试中关闭接收或发送功能以避免外部干扰。

0x14 - 清除诊断信息

0x14 - 清除诊断信息(Clear Diagnostic Information)UDS(Unified Diagnostic Services) 中的一个常用诊断服务,用于从ECU中清除存储的故障码(DTC,Diagnostic Trouble Code)及其相关数据。这一服务通常在修复车辆问题后,由维修技师或诊断工具使用,以便重置故障记录。

  • 清除诊断信息 服务可以清除ECU中某些或全部诊断故障码(DTC),包括相关的快照数据和扩展数据。
  • 这个功能在车辆维修或维护完成后使用,以清除修复后的故障记录,使ECU可以重新监控新的故障发生。

请求/响应格式

  • 请求格式

    [0x14] [DTC组别]
    
    • DTC组别:指定要清除的故障码组,可以针对某一组特定的DTC,也可以使用全局的DTC组(通常是 0xFFFFFF)来清除所有故障码。

    例如,清除所有DTC:

    14 FF FF FF
    
  • 响应格式

    [0x54]
    

    例如,当清除成功时,ECU返回:

    54
    

典型应用场景:

  1. 修复故障后清除故障码:在故障修复后,技师使用该服务清除存储的故障码,确保新的故障监控可以正常工作。
  2. 维护操作后:例如在车辆定期保养后清除所有相关的DTC记录。
  3. 车辆重新编程后:重新编程或标定ECU之后,清除过时的故障记录,确保新配置不受旧故障影响。

DTC组别标识符用于指定要清除的故障码范围。常用的DTC组别标识符包括:

  • 0xFFFFFF:清除所有存储的DTC(全局清除)。
  • 特定DTC组别:如果希望清除特定模块或子系统的DTC,可以指定特定的DTC组别。每个ECU或车辆制造商可能定义了特定的组别代码。

注意事项:

  • 仅清除存储的DTC:使用 0x14 服务只会清除存储的故障码,不会影响当前激活的DTC(这些需要修复相关问题才能被清除)。
  • 冷却期:在某些ECU中,可能存在一个冷却期,故障码不会立刻清除,必须在故障状态被确认解决后,清除请求才能成功执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trump. yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值