欢迎光临
我们一直在努力

AUTOSAR中的DEM到底有多重要?一个DTC从产生到上报,内部经历了什么?

前言

刚进入汽车行业的时候。

我一直以为故障码很简单。

无非就是:

传感器坏了

报码

结束

后来真正参与量产项目。

发现事情完全不是这样。

一个DTC从产生到最终出现在诊断仪上。

中间可能会经过:

Monitor

DEM

FiM

NvM

DCM

UDS

DoIP

多个模块。

甚至一个简单的故障码。

从检测到存储再到上报。

可能跨越几十个函数。

今天我们就扒开AUTOSAR诊断系统。

看看:

一个DTC到底是怎么诞生的?

先说结论

如果把故障管理比作医院。

那么:

Monitor = 医生

DEM = 病历系统

NvM = 档案室

DCM = 前台护士

UDS = 医院窗口

诊断仪 = 患者

医生发现病人发烧。

记录病历。

存档。

患者来查询。

前台再把病历拿出来。

AUTOSAR诊断系统本质上也是这个逻辑。

什么是DTC?

DTC:

Diagnostic Trouble Code

诊断故障码。

例如:

P0101

P0300

U1000

在AUTOSAR里面。

真正保存的通常不是这些显示码。

而是:

0x123456

这种内部DTC编号。

每个DTC对应一个故障事件。

例如:

摄像头失联

毫米波雷达超时

CAN BusOff

Flash校验失败

这些都可以成为一个DTC。

故障从哪里来?

很多新人有个误区:

DEM负责检测故障。

其实错了。

DEM不检测故障。

真正检测故障的是:

Monitor。

例如:

if(CameraTimeout > 100ms)
{
Dem_SetEventStatus(
Camera_Comm_Event,
DEM_EVENT_STATUS_FAILED
);
}

看到没有。

故障已经被业务逻辑检测出来了。

DEM只是接收结果。

看图。

图1:故障产生流程

DEM真正干什么?

DEM:

Diagnostic Event Manager

诊断事件管理器。

名字里面最关键的词:

Event

事件。

DEM的核心职责:

事件管理

DTC管理

冻结帧管理

故障存储

故障恢复

简单理解:

DEM就是整个故障系统的大脑。

一次故障上报全过程

假设:

摄像头通信超时。

Monitor发现异常:

Dem_SetEventStatus(
Camera_Comm_Event,
FAILED
);

DEM收到后。

首先更新故障状态。

例如:

TestFailed

置位。

随后更新:

PendingDTC

继续满足条件:

ConfirmedDTC

最终形成正式故障码。

为什么故障不会立刻报码?

因为汽车环境太复杂。

例如:

某次CAN报文丢失。

可能只是:

瞬时干扰

如果立刻报码。

用户每天都会看到故障灯。

因此AUTOSAR引入:

Debounce

去抖机制。

例如:

连续失败3次。

才认为故障成立。

配置可能类似:

FAILED_THRESHOLD = 3
PASSED_THRESHOLD = -3

这样可以过滤误报码。

冻结帧到底是什么?

很多人去4S店读故障码时。

经常看到:

VehicleSpeed

BatteryVoltage

Mileage

这些信息来自:

Freeze Frame。

冻结帧。

当故障第一次出现时。

DEM会记录现场信息。

例如:

车速

电压

时间戳

环境温度

这就像:

事故现场照片。

后续工程师分析问题时。

可以知道:

故障发生那一刻。

车辆到底是什么状态。

看图

图2:冻结帧示意图

故障如何掉电保存?

如果故障存在RAM。

熄火就没了。

因此DEM会调用:

NvM

进行存储。

路径通常是:

DEM

NvM

Fee

Fls

Flash

最终保存到Flash。

即使车辆断电。

故障依然存在。

诊断仪为什么能读到故障码?

因为还有一个模块:

DCM

Diagnostic Communication Manager

诊断仪发送:

UDS 0x19

读取DTC请求。

DCM收到请求后。

向DEM查询:

当前有哪些DTC?

DEM返回:

DTC列表

状态位

冻结帧

DCM再封装UDS响应。

返回给诊断仪。

看图。

图3:诊断读取流程

在智驾域控制器里DEM更重要

传统ECU:

可能几十个DTC。

而智驾域控制器:

可能有:

Camera

Radar

Lidar

Fusion

Planning

Ethernet

SOME/IP

OTA

上千个故障事件。

每一个故障:

都需要:

检测

确认

存储

上报

恢复

复杂度远超传统ECU。

一张图看完整生命周期

Monitor

Dem_SetEventStatus()

DEM

DTC生成

FreezeFrame

NvM存储

DCM查询

UDS响应

诊断仪显示

写在最后

很多新人认为:

DEM只是存故障码。

实际上。

DEM是整个AUTOSAR诊断体系的核心。

它连接着:

Monitor

FiM

NvM

DCM

UDS

几乎所有诊断相关模块。

🚗 一句话总结:

Monitor负责发现问题,DEM负责记住问题,DCM负责告诉别人问题。


下期预告:

《UDS服务0x19到底做了什么?为什么一个ReadDTCInformation请求能把DEM全部串起来?》

赞(0)
未经允许不得转载:171主机测评 » AUTOSAR中的DEM到底有多重要?一个DTC从产生到上报,内部经历了什么?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址