AUTOSAR - UDS 基本概念

发布时间 2023-03-29 15:30:39作者: 一条名叫西西的狗

一、AUTOSAR基本概念

二、UDS基本概念

 

一、AUTOSAR基本概念

  1. 什么是AUTOSAR:
    1. AUTOSAR全称为“AUTomotive Open System ARchitecture”,译为“汽车开放系统体系结构”;
    2. AAUTOSAR架构由应用层(Application Layer AP)、通信层(Communication Layer CP)和基础层(Foundation Layer FO)三个部分组成。
  2. 什么是CP:
    1. Classic Platform(CP);
    2. CP框架进行方法(软件开发作业的流程和输入输出的形式的定义)以及应用程序接口(API)的标准化;
    3. CP架构在最高抽象级别上区分了在微控制器上运行的三个软件层:应用程序、运行时环境 (RTE) 和基本软件 (BSW)。
  3. 什么是AP:
    1. Adaptive Platform(AP);
    2. AP实现了 AUTOSAR Runtime for Adaptive Applications (ARA);
    3. Adaptive标准主要针对自动驾驶和娱乐系统应用相关的标准;
    4. AP有两种类型的接口可用:服务和 API。
  4. 什么是FO:
    1. Foundation(FO);
    2. FO目的是在 AUTOSAR 平台之间实现互操作性;
    3. FO包含AUTOSAR平台之间共享的常见要求和技术规范;

  AUTOSAR,作为一种开放式的标准化汽车电子系统架构。其中包含的概念、协议,极其广泛,里面的功能实现也是相当复杂。在实际使用中,除了一些完全基于AUTOSAR开发的项目之外,我们只会使用到其中的某些功能,比如Can协议,比如诊断。

  对于AUTOSAR的理解,单单去看协议、读懂概念,是完全不够的,或者说,看了等于白看,读了等于白读。要想彻底理解其中的概念、功能,必须有实际的项目经验。

  基于此,本文档系列,完全基于实际的项目进行整理,可能与其它框架有许多不同之处。

二、UDS基本概念

  1. 什么是UDS:
    1. UDS协议即ISO14229,全称Unified Diagnostic Services,统一诊断服务;
    2. UDS不属于AUTOSAR,他们之间的关系,只是AUTOSAR提供了一些接口,可以与UDS进行集成;
      在AUTOSAR架构中,应用层(Application Layer)提供了一些标准的应用程序接口(API),可以与诊断协议进行集成,这些诊断协议之中就包括UDS协议。而这些接
      口中也包含了DCM与DEM,虽然这两个名字与UDS中的类似,但是它们的实现方式与作用,有一些不同:
      1、UDS协议中的DCM和DEM是用于实现通信管理和故障管理的两个服务。
      2、AUTOSAR架构中的DCM和DEM是两个具体的模块,分别用于实现车辆诊断系统中的通信管理和故障管理功能,DCM和DEM还可以与其他模块和服务进行集成,例如
      CanTp、PduR等,实现更加复杂的车辆诊断和通信功能。
    3. DCM和DEM是UDS协议栈的两个组成部分,属于应用层
    4. 应用层是整个协议栈的核心部分,它定义了大部分的诊断服务和数据标识符,包括DEM和DCM服务;
    5. UDS服务:
      0x10 - Diagnostic Session Control:用于开启、关闭、切换诊断会话。
      
      0x11 - ECU Reset:用于重置ECU,包括所有参数和存储的故障码。
      
      0x18 - Read Trouble Codes:用于读取ECU存储的故障码,以便诊断故障。
      
      0x14 - Clear Trouble Codes:用于清除ECU存储的故障码。
      
      0x22 - Read Data By Identifier:用于读取ECU中特定的参数或数据流。
      
      0x23 - Read Memory By Address:用于读取ECU中特定地址的内存数据。
      
      0x3E - Tester Present:用于告知ECU诊断仪是否在线。
      
      0x27 - Security Access:用于授权特定用户或设备访问ECU的安全功能。
      
      0x31 - Routine Control:用于启动或停止ECU中特定的例程,例如重新初始化ECU。
      
      0x34 - Request Download:用于ECU软件更新的数据下载请求。
      
      0x35 - Request Upload:用于ECU软件更新的数据上传请求。
      
      0x36 - Transfer Data:用于ECU软件更新时的数据传输。
      
      0x37 - Request Transfer Exit:用于ECU软件更新时终止数据传输。
      
      0x38 - Request File Transfer:用于ECU软件更新时的文件传输请求。
      
      0x3D - Write Memory By Address:用于向ECU中特定地址的内存写入数据。
    6. UDS协议栈:
      应用层:定义了UDS服务和数据标识符,包括诊断会话的开启和关闭、读取和清除故障码、读取参数和数据流、重置ECU等服务。
      
      会话层:提供了与ECU进行通信的接口,包括会话的开启和关闭,以及安全访问的验证。
      
      传输层:定义了UDS数据传输的方式,包括传输协议(ISO 15765-2)、物理层(CAN、K线等)以及传输协议参数设置。
      
      硬件接口层:将UDS协议栈与实际硬件接口(例如CAN总线)连接起来,实现数据的物理传输。
      
      应用程序:实现诊断应用程序,使用UDS协议栈与ECU进行通信,并执行诊断和编程操作。
      
      这些部分组成了UDS协议栈的整体架构,其中应用层是UDS协议栈的核心,定义了大部分诊断服务和数据标识符。
      传输层和硬件接口层提供了数据传输的物理层面支持,而会话层则提供了与ECU进行通信的接口。应用程序则使用UDS协议栈来实现具体的诊断和编程操作。

       

  2. 什么是DCM:
    1. DCM(Diagnostic Communication Manager)协议是UDS协议栈的一部分,用于管理诊断通信过程;
      在 DCM 协议中,DSL 层和 DSD 层一起构成了 UDS 协议的会话层,负责管理会话的建立、维护和关闭,并提供了多种服务来满足诊断的需求。
      DSP 层则是在底层物理通信协议之上实现的一层协议,用于确保诊断数据的可靠传输。
    2. DCM协议包含:
      DSP:第三层
      Diagnostic Request(诊断请求):由ECU接收到的UDS诊断请求。 Diagnostic Response(诊断响应):ECU返回给诊断工具的UDS诊断响应。
      DSD:第二层 Diagnostic Control(诊断控制):包括诊断会话的管理,例如会话的开始和结束。 Session Layer Management(会话层管理):用于管理会话层协议。 Security Access(安全访问):用于提供安全访问保护。
      DSL:第一层 Port Management(端口管理):用于管理通信端口,例如CAN总线和诊断仪之间的通信端口。
    3. DSL(Diagnostic Services Layer):DSL是DCM协议的第一层,用于管理诊断通信和建立诊断会话。包含端口管理,用于管理通信端口和建立诊断连接。
    4. DSD(Diagnostic Session Layer):DSD是DCM协议的第二层,用于管理诊断会话,包括会话的开始、结束和切换等操作。包含诊断控制会话层管理安全访问,用于管理诊断会话和保证通信安全。
    5. DSP(Diagnostic Service Processor):DSP是DCM协议的第三层,用于执行具体的诊断服务,例如读取故障码、清除故障码等。包含诊断请求诊断响应,用于实现具体的诊断功能。
    6. DCM包含的常用服务:
      0x10 - DiagnosticSessionControl:用于建立会话、设置诊断的安全访问级别和时间限制等。
      0x11 - ECUReset:用于重置 ECU(Electronic Control Unit,电子控制单元)。
      0x19 - ReadDTCInformation:用于读取故障码信息。
      0x22 - ReadDataByIdentifier:用于读取特定数据的值。
      0x27 - SecurityAccess:用于访问受保护的服务和数据。
      0x28 - CommunicationControl:用于控制通信的参数和行为。
      0x2E - WriteDataByIdentifier:用于写入特定数据的值。
      0x3E - TesterPresent:用于向诊断仪发送信号,表明 ECU 正在被测试。
      0x85 - ControlDTCSetting:用于配置和控制故障码的存储和清除。
  3. 什么是DEM:
    1. DEM(Diagnostic Event Mannger),用于处理诊断事件的信息和相关的数据,DCM模块通过服务请求可以获得这些数据。DEM模块主要是处理的DTC相关的数据;
    2. 服务代码是用于诊断事件管理的一组服务,用于读取和清除故障码以及管理故障事件等。以下是UDS中常用的DEM服务代码及其解释:
      0x04:ClearDiagnosticInformation(清除诊断信息):该服务代码用于清除存储在ECU中的诊断信息,例如故障码和诊断结果等。
      
      0x19:ReadDTCInformation(读取DTC信息):该服务代码用于读取存储在ECU中的DTC信息,例如当前的故障码、历史故障码以及故障事件计数器等。
      
      0x14:ClearDiagnosticInformationByAddress(通过地址清除诊断信息):该服务代码用于通过地址来清除存储在ECU中的诊断信息,例如RAM、NVRAM等。
      
      0x14:ClearDTCInformation(清除DTC信息):该服务代码用于清除存储在ECU中的DTC信息,例如当前的故障码、历史故障码以及故障事件计数器等。
      
      0x04:ReadDataByIdentifier(读取数据标识符):该服务代码用于读取存储在ECU中的数据标识符,例如车速、发动机转速等。它可以用于诊断和监控车辆状态。

      至于有两个0x04、0x14,是因为在UDS中,他们有连个不同的用途。