Autosar学习笔记——(三)诊断服务
1. 汽车诊断的定义
1.1 在线诊断(Onboard Diagnostic System)
通过车辆自带的在线诊断系统对ECU的软硬件及各传感器参数进行某些常见故障的实时监控与发现,当系统判断电控系统出现故障时,会以仪表警示灯亮的形式来告知驾驶者,并在ECU的EEPROM或Flash内对相关DTC(Diagnostic Trouble Codes)进行存储,以便后续车辆被送至售后处,工程师对其进行故障检测时读取分析处理。
1.2 离线诊断(Offboard Diagnostic System)
将外部设备(如道通,元征公司生产的诊断仪)接在OBD诊断口上与整车网络各ECU进行通讯,以对各模块数据实行监控与检测分析。诊断设备通过发送满足诊断协议(如UDS)定义的诊断服务来实现诸如对已存储DTC的读取(如UDS的0x19服务)与清除(0x14服务),利用其他的整车控制指令来实现对车辆的动静态控制。
2.Autosar中和诊断相关模块
从上面离线诊断的过程描述中,我们知道需要在ECU的EEP或者Flash中读取存储的DTC,这就涉及到诊断事件的管理(DEM),需要通过CAN总线将DTC传送到诊断仪上进行解读显示,这就涉及到诊断通信管理(DCM),还有些其他的模块需要参与诊断,下面我们详细介绍。
2.1 诊断事件管理器DEM
诊断事件管理器DEM(Diagnostic Event Manager)负责直接处理与DTC相关的诊断服务,例如UDS中的0x19(读取故障码)及0x14(清除故障码)的服务,在ECU运行过程中,Monitor Function会进行持续的status检测,一旦出现疑似故障时,会直接调用DEM来进行故障check,确认后即可完成将诊断故障数据写入到EEPROM或者Flash中的过程。
2.2 诊断通信管理器DCM
诊断通信管理器DCM(Diagnostic Communication Manager)确保诊断数据流,并且管理诊断状态,特别是诊断对话期(0x10 Session Control)和安全状态(0x27 Security Access)。另外,DCM检查诊断服务请求是否被支持,以及根据诊断状态判断服务是否可以在当前对话期中执行。
DCM为所有诊断服务提供连接到AUTOSAR-RTE的接口。另外DCM也处理一些基本诊断服务。
在AUTOSAR体系结构中,诊断通信管理器(DCM)处在通信服务中(服务层)。DCM是应用和PDU路由器封装的车辆网络通信(CAN、LIN、FlexRay和MOST)之间的中间层。DCM与PDU路由器之间有一个接口。在通信过程中,DCM从PDU(Protocol Data Unit)路由器接收诊断消息。
DCM在其内部处理、检查诊断消息,并把消息传送到AUTOSAR SW组件进一步处理。根据诊断服务ID,将执行应用层中的相应调用。
DCM必须是网络无关的,所以协议和消息配置在DCM的下层。这需要连接到PDU路由器的网络无关接口。
DCM由以下功能块组成:
- DSP - Diagnostic Service Processing
DSP主要包含了完整实现的诊断服务,这些服务在不同的应用之中是通用的(例如,访问故障数据),所以不需要由应用实现。
- DSD-Diagnostic Service Dispatcher
DSD的目的是处理诊断数据流。这里的处理意味着:
通过网络接收新的诊断请求并发送到数据处理器。
当被应用触发时,通过网络传送诊断响应(AUTOSAR SW-Component或DSP)。
- DSL-Diagnostic Session Layer
DSL保证数据流与诊断请求和响应有关。DSL也监督和确保诊断协议计时。进一步,DSL管理诊断状态。
功能禁止管理器FIM
2.3 功能禁止管理器FIM
功能禁止管理器FIM(Function Inhibition Manager)负责提供软件组件和软件组件功能的控制机制。功能由一个、多个或部分有相同权限/禁止条件的可执行实体构成。通过FIM方法,对这些功能的禁止可以配置甚至修改。所以,极大地提高了功能在新系统环境下的适应性。
FIM意义上的功能与可执行实体是不同并且独立的类型。可执行实体主要由调度需求来区分。与此相对的是,功能由禁止条件来分类。FIM服务关注SW-C的功能,但是并不局限于此。BSW的功能也能够使用FIM服务。
功能被指定了一个标识符(FID – function identifier),以及该特定标识符的禁止条件。功能在执行之前获得它们各自的权限状态。如果禁止条件应用于特定标识符,对应的功能将不再执行。
FIM与DEM密切相关,因为诊断事件和它们的状态信息作为禁止条件被提供给FIM。如果检测到了失效,并且事件报告给了DEM,那么FIM禁止FID和对应的功能。
为了处理功能和关联事件的关系,功能的标识符和禁止条件必须引入到SW-C模板中(与BSW等价),并且在配置期间构造数据结构以处理标识符对于特定事件的敏感性。这些关系在每个FIM中是唯一的。
RTE和FIM之间没有功能上的联系。在AUTOSAR中,RTE按照接口和调度需求处理SW-C。与此相对的是,FIM处理禁止条件并通过标识符(FID)为控制功能提供支持机制。因此,FIM概念和RTE概念不互相干扰。
2.4 开发错误跟踪器DET
开发错误跟踪器DET(Development Error Tracer)主要用于在开发期间跟踪和记录错误。API参数给出了追踪源和错误类型:
错误所在的模块
错误所在的功能
错误类型
由软件开发者和软件集成者在特定应用和测试环境下为API功能选择最优的策略。可能包括以下功能:
在错误报告API内设置调试器断点
计算报告的错误
在RAM缓存中记录调用和传递的参数
通过通信接口发送报告的错误到外部日志
DET仅仅是对SW开发和集成的辅助,并不一定要包含在产品代码中。API已经定义,但是功能由开发者根据特定需求来选择/实现。
数据交互及接口如下:
参考文章:
AutoSar之诊断事件管理
AUTOSAR架构诊断功能简介
AutoSAR系列讲解(入门篇)4.7-BSW的Diagnostics功能
Autosar学习笔记——(三)诊断服务相关推荐
- Spring Cloud 学习笔记(三) 之服务治理模块Spring Cloud 服务发现与消费
2019独角兽企业重金招聘Python工程师标准>>> 一.前言 前面的文章我们已经讲了如何搭建服务注册中心,如何搭建客户端去注册.接下来我们讲一下服务的发现与消费 二.服务注册 1 ...
- 【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块
[小猫爪]AUTOSAR学习笔记06-Communication Stack之ComM模块 前言 1 ComM简介 2 ComM功能介绍 2.1 PNC 状态管理 2.2 Channel状态管理 2. ...
- 【小猫爪】AUTOSAR学习笔记01-AUTOSAR架构简介
[小猫爪]AUTOSAR学习笔记01-AUTOSAR架构简介 前言 1 背景介绍 2 基本概念 3 方法论 4 分层软件架构 4.1 Application Layer(APP) 4.2 Basic ...
- 【小猫爪】AUTOSAR学习笔记02-Communication Stack简介
[小猫爪]AUTOSAR学习笔记02-Communication Stack简介 前言 1 简介 2 CAN消息的传播路径 2.1 Com服务 2.2 Dcm服务 2.3 SM服务和NM服务 3 补充 ...
- 【小猫爪】AUTOSAR学习笔记17-AUTOSAR OS
[小猫爪]AUTOSAR学习笔记17-AUTOSAR OS 前言 1 OS 基础 1.1 Startup和Shundown 1.2 Task 1.3 Counter 1.4 Alarm 1.5 Res ...
- 【小猫爪】AUTOSAR学习笔记16-Memory Stack之Nvm模块
[小猫爪]AUTOSAR学习笔记16-Memory Stack之Nvm模块 前言 1 Memory Stack结构 2 NvM模块 2.1 Block 2.2 数据结构 2.3 Redundant B ...
- J2EE学习笔记三:EJB基础概念和知识 收藏
J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...
- SAP FSM 学习笔记(四) : 现场服务技师使用的移动应用
这个系列的前三篇文章: SAP FSM 学习笔记(一) : 使用API消费FSM的数据 SAP FSM 学习笔记(二) : SAP FSM的微信接入 SAP FSM 学习笔记(三) : 在微信里创建S ...
- 【小猫爪】AUTOSAR学习笔记03-Communication Stack之CanIf模块
[小猫爪]AUTOSAR学习笔记03-Communication Stack之CanIf模块 前言 1 CanIf简介 2 功能介绍 2.1 发送缓冲区 2.2 CAN Controller 模式控制 ...
- K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程
K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...
最新文章
- jQuery中的事件机制深入浅出
- 干掉Navicat:正版,MySQL官方客户端真香!
- 追求极致的AI·OS——AI·OS引擎平台
- mac安装和卸载mysql_小白自学MySQL笔记(一):Mac环境的安装和启动
- 前端技巧:谷歌浏览器的font boosting[Text Autosizer]
- Ionic3 环境搭建以及基础配置实现(更新中)
- 原生安卓苹果APP-java抢单派单系统平台源码
- ROS 可视化(一): 发布PointCloud2点云数据到Rviz
- 单片机C语言任何位置跳转到任何指定地址 -转
- ubuntu系统配置双网卡方法
- 2021-09-08 全排列
- 希腊字母表(含读音)
- .net xml转json
- rxbus 源码_从 RxBus 这辆兰博基尼深入进去
- python 红黑树_手把手教你43行代码写红黑树(包括删除操作)
- mysql时间函数之hour,minute,second用法_前进的火车_新浪博客
- POJ2187-最远点对-旋转卡壳(怎么开心怎么读)
- 【vscode软件安装配置vue】
- .Net 6.0中的新增特性_.Net 6.0中的新增功能
- sonarQube安装使用介绍、扫描Vue代码