车载软件架构 --- AUTOSAR AP/CP中诊断的区别

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧!
旧人不知我近况,新人不知我过往,近况不该旧人知,过往不与新人讲。纵你阅人何其多,再无一人恰似我。

时间不知不觉中,来到新的一年。2024结束,2025开始新的忙碌。成年人的我也不知道去哪里渡自己的灵魂,独自敲击一些文字算是对这段时间做一个记录。

在这里插入图片描述

一、什么是诊断

首先,举个一个简单的例子来说明诊断的重要性:

想象你的汽车是一个经常生病的孩子,每当它出现问题时,它会哭泣(警告灯亮起)。而诊断技术就像是医生的听诊器,帮助你准确找出宝宝为什么哭泣,从而迅速治疗。

职责划分:在实际开发过程中,OEM的电子电器架构部门(EE),会在某个项目节点之前向各ECU的供应商提供相应的诊断调查表作为诊断开发的需求输入。供应商内部的系统工程师则负责根据诊断调查表设计ECU内部诊断架构和细节实现。

在这里插入图片描述

诊断调查表里一般包括通讯地址、DID、DTC、RID、快照等等一些服务要求,这些基本概念不多赘述。诊断依赖于通讯进行实现,下面主要聊聊这些需求在AP和CP中的实现。

一、DEM DCM FIM

在CP中,诊断主要依赖DCM/DEM/FIM来实现。在车载Classic AUTOSAR(汽车开放系统架构)中,诊断功能主要依赖DCM(Diagnostic Communication Manager,诊断通信管理器)、DEM(Diagnostic Event Manager,诊断事件管理器)和FIM(Function Inhibition Manager,功能抑制管理器)三个核心模块协同实现。以下详细解析各模块的功能及协作机制:

1、 DCM(诊断通信管理器)

作为诊断系统的“通信中枢”,负责管理与外部诊断工具(如诊断仪)的交互。支持UDS(统一诊断服务,ISO 14229)协议,提供读取故障码(DTC)、清除故障码、读写数据等服务。控制诊断会话的安全等级(如默认会话、编程会话)和通信模式(如全通信、静默通信)。:确保诊断请求与响应的时序正确性,避免通信阻塞。

子模块如下:

-> DSL(Diagnostic Session Layer):处理诊断请求/响应数据,监控时序。

-> DSD(Diagnostic Service Dispatcher):分配诊断服务请求至对应处理单元。

-> DSP(Diagnostic Service Processor):执行具体的诊断服务逻辑。

2、DEM(诊断事件管理器)

作为诊断系统的“故障大脑”,负责故障事件的检测、记录与状态管理。

-> 故障码(DTC)管理:接收来自传感器或软件组件(SWC)的故障上报,生成标准DTC(如P0101表示空气流量传感器故障);

-> 故障状态跟踪:监控故障的生命周期(如故障发生、确认、恢复),记录故障发生时的环境数据(如车速、温度)作为“冻结帧”;

-> 存储与恢复:将故障信息存储至非易失性存储器(NVM),确保下电后数据不丢失。

当DCM收到外部工具的“读取DTC”请求时,DEM提供故障码列表及关联数据。清除故障码操作通过DEM更新NVM中的故障状态。

3、FIM(功能抑制管理器)

作为诊断系统的“安全卫士”,在故障发生时抑制关键功能,避免进一步风险。

功能:

-> 功能抑制决策:根据DEM上报的故障严重程度,决定是否禁用相关功能(如发动机扭矩限制、辅助驾驶关闭);

-> 抑制规则配置:通过预定义的“故障-功能”映射表(如“电机过热故障”触发“动力输出限制”),实现灵活的策略管理。

与DEM协作:

DEM检测到严重故障后,通知FIM触发功能抑制。FIM通过修改功能权限状态(如设置FID标志位),阻止相关软件组件(SWC)执行危险操作。

协同工作流程示例

-> 故障检测:车载传感器检测到电机温度超限,软件组件(SWC)向DEM上报故障事件;

-> 故障记录:DEM生成DTC(如P1234),记录冻结帧数据,并更新NVM存储;

-> 功能抑制:DEM通知FIM故障等级,FIM根据规则禁用电机全功率输出;

-> 外部诊断:维修技师通过诊断仪(DCM接口)读取DTC及冻结帧,定位故障根源。

在这里插入图片描述

总结

DEM (Diagnostic Event Manager):

想象DEM是一个“日记作者”,每当车辆中的某个部分出现问题,它就会在日记中记下这个问题(诊断事件)。DEM会记录这些问题,并将它们传递给NVRAM Manager来保存。

在我们的类比中,NVRAM Manager就像是一个“书柜”,专门存放DEM写的日记。这样,即使车辆关机,这些日记(诊断事件)也不会丢失,因为它们被保存在EEP或Flash中。

DEM(诊断事件管理器)

核心职责:作为系统的"事件记录中枢",DEM持续监控ECU状态,捕获故障事件(如传感器失效、通信超时),并通过统一接口将事件分类存储至NVRAM。

关键动作

-> 事件优先级划分(如DTC严重等级)

-> 关联预配置的抑制策略(触发FIM)

-> 提供事件生命周期管理(如清除故障码需安全验证)

-> NVRAM Manager(非易失存储管理)

协作机制

-> 采用分页存储优化写入效率,平衡EEPROM/Flash擦写次数

-> 为DEM提供带校验的存储服务(如CRC验证防数据篡改)

DCM (Diagnostic Communication Manager):

DCM可以被视为一个“翻译官”。当外部设备(如OBD扫描器)想要与车辆通信并获取诊断信息时,它们会发送特定的命令或请求。DCM的任务是确保这些命令被正确解读和执行。

在UDS协议中,比如当你想要读取故障码,你需要发出特定的请求。DCM就会根据这个请求,从“日记作者”(DEM)处获取相应的信息,并翻译成外部设备能够理解的语言(通讯方式这里比较复杂)返回。

FIM (Function Inhibition Manager):

FIM就像是一个“警卫”。当“日记作者”(DEM)记录到某些特定的问题时,FIM会确保车辆的某些功能被禁用,以防止进一步的损害。

例如,如果控制器检测到故障,FIM就像一个负责安全的警卫,它会迅速关闭可能导致问题的部分(如shutdown某个SWC),以防止更大的损坏。

典型场景:发动机失火故障处理

故障触发与记录

ECU检测到气缸3失火率超阈值,DEM生成P0303故障码,标记为Class C(影响排放)

NVRAM Manager使用异步写入队列保存数据,避免阻塞实时任务

功能安全干预

FIM收到DEM事件后,查询抑制矩阵:

Level 1:限制转速至3000rpm(持续2个驾驶循环)

Level 2:若故障再现,激活跛行模式(最高车速30km/h)

技师诊断交互

DCM接收OBD扫描器的0x19 02请求(读取待处理故障码)

DEM校验请求权限后返回{P0303, 0x23(未确认故障), 0x01(Class C)}

技师修复后,DCM处理0x14服务清除故障码,FIM同步解除限制

设计进阶:模块协作优化策略

事件驱动架构

采用Pub-Sub模型(如AUTOSAR DEXT模板),DEM作为事件总线,减少模块间耦合

抑制策略热更新

FIM通过XCP协议动态加载抑制矩阵,支持OTA升级安全策略

存储负载均衡

NVRAM Manager实施磨损均衡算法,将DEM高频数据分区存储至FRAM+Flash混合介质

误区澄清

FIM并非被动响应DEM

实际部署中,FIM会集成硬件看门狗,直接监听关键传感器(如制动压力),实现多层级安全防护

DCM的协议无关性

通过ISO 22900(ODX)标准转换层,同一DCM实例可支持DoIP/CAN FD等多种物理链路

通过这种精密分工,车辆在确保功能安全的前提下,实现了故障可追溯、风险可控制、数据可交互的完整诊断生态。

在这里插入图片描述

故障响应流程:首先,应用层SWC将数据传递给DEM。随后,DEM分析并确定具体的故障,进而通知FIM。FIM在接到通知后,迅速判定并选择直接回调SWC或采用轮询方式来禁用SWC。

故障存档流程:应用层的SWC首先传递故障数据至DEM。DEM不仅会转发给FIM,还会与NVRAM Manager交互,确保将故障信息储存在EEP或Flash内,这有助于未来的维护和诊断工作。

在这里插入图片描述

二、DM

在AP中,诊断主要依赖DM实现,简单来说DM集成了DCM/DEM/FIM的功能。

Diag在AP中的位置 图来源于Vector

DM是AUTOSAR AP的诊断管理器。它是一个中介,负责接收和发送诊断信息,包括处理来自外部工具的诊断请求和与车辆内部其他系统的交互。简单说,就像医院的接待员,负责与患者通讯并根据病情给出处理建议或者引导到相关科室。

在这里插入图片描述

DM的协作流程示例:OTA升级故障处理

车辆远程升级过程中网络中断,触发诊断事件。

事件捕获

DM检测到升级服务(Software Cluster)的“下载超时”事件,生成动态DTC(如U0155);

调用持久化服务存储事件上下文(如失败的分片序号)。

功能安全响应

DM查询安全策略库,要求“软件更新集群”进入回滚模式;

通过服务代理通知网关模块限制非关键通信带宽,优先保障诊断通道。

外部交互

云端诊断工具通过DoIP发送请求(读取故障日志);

DM解析请求后,聚合多个软件集群的日志数据,生成标准ODX格式报告返回。

DM在AUTOSAR AP中代表诊断架构的范式转变——从“分散式模块协作”到“中心化服务枢纽”。它既继承了传统诊断的核心逻辑(如DTC管理、安全抑制),又通过服务化、动态化设计适应智能汽车的复杂需求(如OTA、车云协同)。理解DM需跳出CP的模块边界,聚焦其服务编排能力与跨域诊断视角。

在这里插入图片描述

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37508.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度OCR调用记录

根据说明,调用测试 设置注册的API Key和Secret Key 调用类(官方文档中有) 这里改传入路径; 测试问题 1.{"error_code":110,"error_msg":"Access token invalid or no longer valid"} 查到说是 …

19.哈希表的实现

1.哈希的概念 哈希(hash)⼜称散列,是⼀种组织数据的⽅式。从译名来看,有散乱排列的意思。本质就是通过哈希函数把关键字Key跟存储位置建⽴⼀个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进⾏快速查找。 1.2.直接定址法…

网络编程之解除udp判断客户端是否断开

思路&#xff1a;每几秒发送一条不显示的信息&#xff0c;客户端断开则不再发送信息&#xff0c;超时则表示客户端断开连接。&#xff08;心跳包&#xff09; 服务器 #include <head.h>#define MAX_CLIENTS 100 // 最大支持100个客户端 #define TIMEOUT 5 // 5秒…

Java 大视界 -- Java 大数据在智能医疗远程会诊与专家协作中的技术支持(146)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

调用feapder作为子程序时setting.py文件不起作用

feaper 官方文档地址&#xff1a; 简介及安装 - feapder官方文档|feapder-document 问题&#xff1a; 在最近的开发中需要调用feapder作为主程序调用的子程序时发现自动入库时无法入库&#xff0c;通过查看日志信息发现连接数据库时被拒绝连接了&#xff0c;但是我的setting.p…

【STM32】SPI通信协议W25Q64Flash存储器芯片(学习笔记)

通信接口部分有介绍SPI&#xff1a;【STM32】USART串口协议&串口外设-学习笔记-CSDN博客 SPI通信协议 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司开发的一种通用数据总线四根通信线&#xff1a;SCK&#xff08;Serial Clock&…

刘强东突然发声:不该用算法压榨最底层兄弟!东哥,真正的人民企业家

今天忙了一天&#xff0c;很累&#xff0c;准备睡觉的时候&#xff0c;看到网上盛传的刘强东的朋友圈&#xff0c;东哥又在朋友圈发文了。 说实话&#xff0c;看完之后&#xff0c;感动&#xff0c;真的感动。 尤其是当我看到这两句话的时候。 1、我们所学的知识、商业模式、技…

Maven安装与环境配置

首先我们先介绍一些关于Maven的知识&#xff0c;如果着急直接看下面的安装教程。 目录 Maven介绍 Maven模型 Maven仓库 Maven安装 下载 安装步骤 Maven介绍 Apache Maven是一个项目管理和构建工具&#xff0c;它基于项目对象模型(Project Object Model , 简称: POM)的概念…

C++ 语法之数组指针

一维数组&#xff1a; 如果我们定义了一个一维数组&#xff0c;那么这个数组名&#xff0c;就是指向第一个数组元素的地址&#xff0c;也即&#xff0c;是整个数组分配的内存空间的首地址。 比如 int a[3]; 定义了一个包含三个元素的数组。因为一个int占4个字节&#xff0c;那…

021-TCMalloc

TCMalloc 以下是对TCMalloc的技术调研报告&#xff0c;结合原理、代码实现、优化参数及性能对比的综合分析&#xff1a; 一、TCMalloc核心原理 架构分层 TCMalloc采用三级缓存结构&#xff0c;具体流程参考下图&#xff1a; ┌─────────────┐ ┌───…

华为网路设备学习-16 虚拟路由器冗余协议(VRRP)

VRRP是针对干线上三层网络设备&#xff08;如&#xff1a;路由器、防火墙等&#xff09;的网络虚拟化技术&#xff0c;提供冗余和状态监测等功能。确保在网络中的单点故障发生时&#xff0c;能够快速切换到备份设备&#xff0c;从而保证网络通信的连续性和可靠性。‌ VRRP通过…

【华为Pura先锋盛典】华为Pura X“阔折叠”手机发布:首次全面搭载HarmonyOS 5

文章目录 前言一、阔感体验&#xff0c;大有不同二、鸿蒙AI&#xff0c;大有智慧三、便携出行&#xff0c;大有不同四、首款全面搭载 HarmonyOS 5 的手机五、卓越性能&#xff0c;可靠安心六、红枫影像&#xff0c;大放光彩预热&#xff1a;鸿蒙电脑HarmonyOS 5 升级计划小结 前…

算法题(103):数独

审题&#xff1a; 本题需要我们找出数独的解&#xff0c;并打印出来 时间复杂度分析&#xff1a; 本题是9*9的数独格子&#xff0c;所以数据量小于25&#xff0c;可以使用2^n的算法 思路&#xff1a; 方法一&#xff1a;深度优先搜索 首先确定搜索及插入策略&#xff1a; 我们采…

sougou AI close

sougou AI close 全局禁用《AI 汪仔》 现在丝滑流畅很多了

二分查找上下界问题的思考

背景 最近在做力扣hot100中的二分查找题目时&#xff0c;发现很多题目都用到了二分查找的变种问题&#xff0c;即二分查找上下界问题&#xff0c;例如以下题目&#xff1a; 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置 它们不同于查找…

springboot实现调用百度ocr实现身份识别+二要素校验

一、技术选型 OCR服务&#xff1a;推荐使用百度AI 二、实现 1.注册一个服务 百度智能云控制台https://console.bce.baidu.com/ai-engine/ocr/overview/index?_1742309417611 填写完之后可以获取到app-id、apiKey、SecretKey这三个后面文件配置会用到 2、导入依赖 <!-- …

【数据分享】2000—2024年我国乡镇的逐月归一化植被指数(NDVI)数据(Shp/Excel格式)

之前我们分享过2000—2024年我国省市县三级逐月归一化植被指数&#xff08;NDVI&#xff09;数据&#xff0c;该数据是基于NASA定期发布的MOD13A3数据集中的月度NDVI栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;计算得出。很多小伙伴拿到数据后反馈是否可以处理出…

背包问题——动态规划的经典问题包括01背包问题和完全背包问题

01背包问题&#xff1a;给你多个物品每个物品只能选一次&#xff0c;要你在不超过背包容积&#xff08;或者恰好等于&#xff09;的情况下选择装价值最大的组合。如果没有动态规划的基础其实是很难理解这个问题的&#xff0c;所以看这篇文章之前先去学习一下动态规划的基本思想…

AI Agent系列(七) -思维链(Chain of Thought,CoT)

AI Agent系列【七】 前言一、CoT技术详解1.1 CoT组成1.2 CoT的特点 二、CoT的作用三、CoT的好处四、CoT适用场景五、CoT的推理结构 前言 思维链(Chain of Thought,CoT)&#xff0c;思维链就是一系列中间的推理步骤(a series of intermediate reasoning steps)&#xff0c;通过…

Docker搭建Testlink教程

1.拉取镜像 打开终端输入命令&#xff1a; #拉取mariadb镜像 docker pull bitnami/mariadb #拉取testlink镜像 docker pull bitnami/testlink-archived 执行结果&#xff1a; 2.运行容器 打开终端输入命令&#xff1a; #创建容器网络 docker network create testlink #查…