Dcm(Diagnostic Communication Manager)是 AUTOSAR 诊断栈的核心模块,实现 UDS(Unified Diagnostic Services,ISO 14229)与 OBD(On-Board Diagnostics,ISO 15031)协议。Dcm 通过 PduR 接收诊断请求(Tester → ECU),解析后调用应用层 SWC(如 Dem/FiM),构造诊断响应(ECU → Tester),通过 PduR 发送回 Tester。
Dcm 主要功能:
| 缩略语 | 描述 |
|---|---|
| UDS | Unified Diagnostic Services(统一诊断服务,ISO 14229) |
| OBD | On-Board Diagnostics(车载诊断,ISO 15031) |
| DTC | Diagnostic Trouble Code(诊断故障码) |
| DID | Data Identifier(数据标识符) |
| PID | Parameter ID(OBD 参数 ID) |
| Tester | 诊断测试仪(外部诊断工具) |
| PduR | PDU Router(PDU 路由) |
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| FiM | Function Inhibition Manager(功能抑制管理器) |
| DoIP | Diagnostics over Internet Protocol(基于 IP 的诊断) |
AUTOSAR_SRS_DiagnosticAUTOSAR_SWS_PDURouter / CANInterface / CanTp / DoIPAUTOSAR_SWS_DiagnosticEventManager(DEM 配合)Dcm 为 BSW 服务层模块;UDS/OBD 协议实现严格遵循 ISO 标准;多协议传输由 DcmPduRouter 抽象层处理。
Dcm 依赖 PduR(PDU 路由)、CanTp(CAN 传输层)/ DoIP(以太网传输层)、Dem(事件管理)、FiM(功能抑制)、NvM(非易失存储)、DCM/KeyM(安全密钥管理)、CSM(加密服务)、DET(开发错误)、EcuM(状态管理)、ComM(通信管理)。
SWS_Dcm_NNNNN 规范项 ID 约 1000+ 条(编号 00001-91001)。
| SID | 服务 | 描述 |
|---|---|---|
| 0x10 | DiagSessionControl | 诊断会话控制(Default/Programming/Extended) |
| 0x11 | ECUReset | ECU 复位(Hard/Soft) |
| 0x14 | ClearDiagnosticInformation | 清除 DTC 信息 |
| 0x19 | ReadDTCInformation | 读取 DTC 信息 |
| 0x22 | ReadDataByIdentifier | 通过 DID 读数据 |
| 0x23 | ReadMemoryByAddress | 通过地址读内存 |
| 0x24 | ReadScalingDataByIdentifier | 读缩放数据 |
| 0x27 | SecurityAccess | 安全访问(Seed-Key) |
| 0x2A | ReadDataPeriodicIdentifier | 读周期数据 |
| 0x2C | DynamicallyDefineDataIdentifier | 动态定义 DID |
| 0x2E | WriteDataByIdentifier | 通过 DID 写数据 |
| 0x2F | InputOutputControlByIdentifier | 通过 DID IO 控制 |
| 0x31 | RoutineControl | 例程控制(启动/停止/结果查询) |
| 0x34 | RequestDownload | 请求下载(编程准备) |
| 0x35 | RequestUpload | 请求上传 |
| 0x36 | TransferData | 传输数据(编程) |
| 0x37 | RequestTransferExit | 请求传输退出 |
| 0x3D | WriteMemoryByAddress | 通过地址写内存 |
| 0x3E | TesterPresent | 测试仪存在(保持诊断会话) |
| 0x83 | SecuredDataTransmission | 安全数据传输(SecOC) |
| 0x84 | ControlledDTCSetting | DTC 设置控制 |
| 0x85 | ResponseOnEvent | 事件响应(RoE) |
| 0x86 | LinkControl | 链路控制(DoIP) |
| MID | 服务 | 描述 |
|---|---|---|
| 01 | RequestCurrentPowertrainDiagnosticData | 请求当前动力总成诊断数据 |
| 02 | RequestPowertrainFreezeFrameData | 请求冻结帧数据 |
| 03 | RequestEmissionRelatedDTCs | 请求排放相关 DTC |
| 04 | ClearResetEmissionRelatedDTCs | 清除/复位排放相关 DTC |
| 05 | RequestOxygenSensorMonitoringTestResults | 请求氧传感器监测结果 |
| 06 | RequestOnBoardMonitoringTestResults | 请求 OBD 监测结果 |
| 07 | RequestEmissionRelatedDTCsDuringCurrentDriveCycle | 请求当前循环 DTC |
| 08 | RequestControlOfOnBoardSystem | 请求 OBD 系统控制 |
| 09 | RequestVehicleInformation | 请求车辆信息 |
| 0A | PermanentEmissionRelatedDTCs | 永久排放相关 DTC |
Seed-Key 机制:
5 步编程流程:
| 协议 | 传输层 | 速率 | 应用场景 |
|---|---|---|---|
| CAN | CanTp(ISO 15765) | 500 kbps - 5 Mbps | 传统车辆诊断 |
| CAN FD | CanTp | 2-5 Mbps | 现代车辆诊断 |
| CAN XL | CanTp | 10+ Mbps | 下一代车辆 |
| FlexRay | FrTp | 10 Mbps | FlexRay 车辆 |
| Ethernet (DoIP) | DoIP(ISO 13400) | 100 Mbps - 1 Gbps | 远程诊断/工厂编程 |
| LIN | LinTp | 19.2 kbps | LIN 子网诊断 |
DCM_E_UNINIT / DCM_E_ALREADY_INITIALIZED / DCM_E_PARAM_INVALID / DCM_E_PARAM_POINTER / DCM_E_DCM_SERVICE_INVALID / DCM_E_PROTOCOL_NOT_SET / DCM_E_SESSION_NOT_CONFIGURED / DCM_E_PADDING / DCM_E_INVALID_NRC / ... 等 30+ 个。
DCM_E_PERIODIC_NOT_SUPPORTED / DCM_E_REQUEST_ENVLR_NOT_OK 等。
| API | 功能 |
|---|---|
| Dcm_Init | 初始化 Dcm |
| Dcm_GetVersionInfo | 获取版本信息 |
| API | 功能 |
|---|---|
| Dcm_MainFunction | 主函数(诊断请求处理调度) |
| API | 功能 |
|---|---|
| Dcm_DemTriggerOnDTCStatus | Dem 触发 DTC 状态变化通知 |
| Dcm_GetVin | 获取 VIN(车辆识别号) |
Dcm_SetDeauthenticatedRole / Dcm_GetSecurityLevel / Dcm_GetSesCtrlType / Dcm_GetActiveProtocol / Dcm_ResetToDefaultSession / Dcm_TriggerOnEvent / Dcm_SetActiveDiagnostic
Dcm_StartOfReception / Dcm_CopyRxData / Dcm_TpRxIndication / Dcm_CopyTxData / Dcm_TpTxConfirmation
Dcm_TxConfirmation / Dcm_ComM_NoComModeEntered / Dcm_ComM_SilentComModeEntered / Dcm_ComM_FullComModeEntered / Dcm_CsmAsyncJobFinished / Dcm_KeyMAsyncCertificateVerifyFinished
Dcm_ReadMemory / Dcm_WriteMemory / Dcm_SetProgConditions / Dcm_GetProgConditions
Dcm_ProcessRequestAddFile / Dcm_ProcessRequestDeleteFile / Dcm_ProcessRequestReplaceFile / Dcm_ProcessRequestReadFile / Dcm_ProcessRequestReadDir / Dcm_WriteFile / Dcm_ReadFileOrDir
共 34 个 API 函数(含主函数 + 各类接口 + 回调)。
| 容器 | 描述 |
|---|---|
| Dcm | 根容器(开发错误检测、版本 API、PDU 配置) |
| DcmConfigSet | 配置集 |
| DcmDsl | DSL(Diagnostic Session Layer)配置 |
| DcmDslBuffer | DSL 缓冲配置 |
| DcmDslConnection | DSL 连接配置 |
| DcmDslProtocol | DSL 协议配置(CAN/CAN FD/Ethernet/FlexRay/LIN) |
| DcmDsd | DSD(Diagnostic Service Dispatcher)配置 |
| DcmDsp | DSP(Diagnostic Service Processing)配置 |
| DcmDspRoutine | 例程配置(RoutineControl 0x31) |
| DcmDspSession | 会话配置(DiagSessionControl 0x10) |
| DcmDspSecurity | 安全级别配置(SecurityAccess 0x27) |
| DcmDspDataInfo | DID/PID 数据信息配置 |
| DcmDspComControl | 通信控制(CommunicationControl 0x28) |
| DcmDspPeriodicTransmission | 周期传输配置 |
| DcmPublishedInformation | 发布信息 |
共 14+ ECUC 容器,含 200+ 配置参数。
校对轮次:L1 自动校对(2026-06-13)