诊断数据库ODX—数据库框架(基于ISO22901详解)

news2025/7/19 4:02:20

文章目录

 

  • 前言
  • 一、ODX数据库自身架构是什么?
  • 二、ODX数据库架构具体组成部分和含义
  • 总结


前言

车载诊断现阶段应用的诊断数据库大体分为三种:

CDD(Vector私有格式);

ODX全球通用诊断数据库格式;

DEXT(基于AUTOSAR友好交互的诊断数据库.ARXML格式)。

CDD与ODX本身文件载体是XML,类似根目录形式,工程师日常在用文本打开(e.g. Notepad++),通过搜索也是可以找到对应的诊断描述内容,只是可读性特别差而已。

因此本文基于ISO22901(自身在外企做过此协议收费培训讲师),详细分析下ODX数据库的具体格式框架,辅助认识该数据库。


一、ODX数据库自身架构是什么?

在UML建模后,对诊断的层级结构进行形象描述。当MCD-3D Server对于诊断数据库ODX的调用逻辑取决于ODX数据库架构。

本文基于ISO 22901协议中对ODX架构进行分享。

在ODX层级结构中,内容(值)继承是诊断层之间关系的核心。如下图:

通过上图,清晰说明了继承的层架结构和方向。关于ODX内部层级:

PROTOCOL

FUNCTIONAL-GROUP

BASE-VARIANT

ECU-VARIANT

ECU-SHARED-DATA

每一个层级只能继承一组 特定的其他类型诊断层,一个诊断层不能继承同一个类型的诊断层。在图中,层级较高的诊断层属性更“General”,层级较低的诊断层属性更“Special”:

 注:只有如下类的对象可以进行值传递(继承):

⎯ DIAG-COMM (its specializations),

⎯ DIAG-VARIABLE,

⎯ GLOBAL-NEG-RESPONSE,

⎯ DOP-BASE (its specializations),

⎯ TABLE,

⎯ FUNCT-CLASS,

⎯ VARIABLE-GROUP,

⎯ ADDITIONAL-AUDIENCE,

⎯ STATE-CHART,

⎯ UNIT-GROUP;

 注:

1、只有具有HANDLE属性的类的对象才能进行值传递,具有HANDLE属性对象聚合了其他也具有HANDLE属性的对象,则完整的聚合将被继承,即始终是聚合最外层对象(具有HANDLE属性)是值传递的主题。

2、值继承是为DIAG-LAYER的不同实例之间的对象定义的,因此只有在DIAG-LAYER中定义的类才可以继承。这些类的对象在选定的DIAG-LAYER的D-server API上可查询,查询结果将是该层可见的对象列表。

3、同一类的所有对象在每一个DIAG-LAYER中都应该有一个唯一的SHORT-NAME,即使这些对象不是在这个DIAG-LAYER中定义而是继承的。并且对于SHORT-NAME,当从更“General”层继承的对象可以被更“Special”层所覆盖,从而保证每一个Class的SHORT-NAME的唯一性。对于整个ODX数据库,只有覆盖对象可见(Tester可以通过SHORT-NAME进行诊断内容识别并调用)。

BASE-VARIANT对象通过聚合PROTOCOL-REF对象来创建到PROTOCOL对象的值继承关系。该对象又通过使用《odxlink》引用PROTOCOL对象。

继承层次详情可参考下图:

 BASE-VARIANT 对象通过聚合 PROTOCOL-REF 对象来建立到 PROTOCOL 对象的值继承关系,该对象又通过使用 <<odxlink>> 引用 PROTOCOL 对象。

一对 DIAG-LAYER 对象之间可能存在本节中描述的值继承关系。 禁止同一对对象同时存在两种关系。

二、ODX数据库架构具体组成部分和含义

如图显示的模型部分定义了所有诊断层的共同特征,基类DIAG-LAYER聚合了以下组件:

A:Collection of REQUEST objects

Request是每个诊断服务的组成部分,它由诊断仪发送到一个ECU或者一组ECU(以物理寻址 & 功能寻址进行区分)以获取所需要的诊断数据或配置ECU的属性。

Request的UML表示描述了这种请求消息的结构,它定义报文内容的一个或多个请求参数(PARAM)组成,ECU解析请求报文,并基于请求给与响应:

B:Collection of response objects (POS-RESPONSE, NEG-RESPONSE, GLOBAL-NEG-RESPONSE)

Response是ECU诊断服务的一部分。它由ECU反馈测试人员的请求报文,如下图描述此类响应格式:

ODX中定义了三种类型的响应:肯定响应、否定响应和全局否定响应。通常ECU会发送肯定响应报文(POS-RESPONSE)。如果ECU内发生了异常情况,则回复否定响应。

否定响应可能被定义为特定于服务或诊断层实例。

  1. 在第一种情况下,应通过 NEG-RESPONSE-REF 引用来自服务的 NEG-RESPONSE 来定义否定响应。
  2. 在第二种情况下,应定义全局否定响应(GLOBAL-NEG-RESPONSE)。 如果实际服务引用的否定响应不匹配,则该响应应由 D -server自动使用。

C:Document information using the ADMIN-DATA and COMPANY-DATA objects

对于ODX(诊断层或诊断服务),具有很长的声明周期。不可避免受到来自不同公司的不同人员可能进行的许多更改。因此引入该类对象,通过其更改历史记录与ODX对象绑定存储。

与此同时,该内容也包含关负责更改的人员的一些信息。 这样问题和反馈就可以发送给正确的接收者。 这种数据称为“管理数据”。 每个流程合作伙伴还可以将自己公司特定的管理数据添加到 ODX 对象,例如 使用内容管理系统或数据库处理 ODX 对象所需的修订信息。UML模型如下 :

D:Collection of FUNCT-CLASS objects:

FUNCT-CLASS 对象在 DIAG-LAYER 中定义,用于对属于 DIAG-LAYER 的 DIAG-COMM 对象进行分类。 创建的类别的语义是用户自己定义,在协议中并未专门定义。

E:Collection of DOP-BASE and TABLE objects:

尽管元素 DIAG-DATA-DICTIONARY-SPEC 是可选的,但大多数 DIAG-LAYER 实例都会包含它,因为它作为解码诊断消息所需的数据元素的主要容器 .

F:Collection of DIAG-COMM objects and/or DIAG-COMM references:

通过DIAG-COMM对象或其引用的集合——通过模型中的DIAG-COMM-OPROXY捆绑。DIAG-COMM类是DIAG-SERVICE和SINGLE-ECU-JOB的抽象体,该内容会在D-service体现。

G: Collection of ADDITIONAL-AUDIENCEs

ADDITIONAL-AUDIENCE 是一个单独的用户列表,可以启用或禁用这些用户以读取相应的诊断元素。 诊断元素可以包含启用或禁用对 ADDITIONAL-AUDIENCE 的引用。如下是UML对additional audience的描述:

H: Collection of STATE-CHARTs

该内容是对车载诊断范畴里两个状态机进行管控:

1) 第一个是描述由执行 DIAG-COMM 导致的可能状态转换。

2) 第二个是描述执行 DIAG-COMM 的先决条件。

如下通过UML描述了Session/Security和STATE-CHART:

I: Collection of LIBRARYs

LIBRARY用于指定不直接执行但由 PROG-CODE 具体定义的可执行代码替代执行。e.g.包含 Java 的 PROG-CODE 元素可能引用描述附加 JAR 文件的 LIBRARY 元素,该文件由Java 代码中的 import 语句包含。 LIBRARYs 附加到 DIAG-LAYERs 以允许多个引用而没有冗余。

 

J: Collection of SUB-COMPONENTs:

如下图表述通过UML形象说明了SUB-COMPONENT的定义。子组件在诊断层定义,被认为是 ECU 内部或外部的功能单元,涵盖物理上(例如 LIN 从节点)或逻辑上的某些附加诊断相关功能。

如上分析,希望有所帮助!


总结

本文详细介绍了ODX数据库的结构框架,帮助工程师了解ODX数据库文件格式!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【零基础入门SpringMVC】第四期——RESTFUL专题

一、RESTFul 概述 1、什么是 RESTFul&#xff1f; REST 全称 Representational State Transfer 代表 表现层资源状态转移 视图层 控制层 表现层 百度百科这样说&#xff1a; RESTFUL是一种网络应用程序的设计风格和开发方式&#xff0c;基于HTTP&#xff0c;可以使用XML格式…

轻松应对80% 的工作场景?GitHub 爆赞的 Java 高并发与集合框架,面试官也拿我没辙

在工作中&#xff0c;笔者经常和掌握不同技术的朋友讨论具体问题的解决方案&#xff0c;发现在 Java 体系中&#xff0c;大家使用最多的是 Java 集合框架&#xff08;JCF&#xff09;和 Java 并发工具包&#xff08;JUC&#xff09;。实际上&#xff0c;JCF 和 JUC 已经能够覆盖…

Flutter高仿微信-第50篇-群聊-查看群成员

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; import package:flutter/material.dart; import package:…

Node.js 入门教程 7 从命令行运行 Node.js 脚本 8 如何退出 Node.js 程序

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Node.js 入门教程7 从命令行运行 Node.js 脚本8 如何退出 Node.js 程序7 从命令行运行 Node.js 脚本 运行 Node.js 程序的常用方法是&#…

【点云处理】点云法向量估计及其加速(5)

在上一篇文章【点云处理】点云法向量估计及其加速(4)中我们尝试对pcl自带的KDTree的k近邻搜索过程使用OpenMP加速&#xff0c;效果比较明显&#xff0c;有将近1倍的提速。在这篇文章中我们暂时放弃pcl自带的KDTree&#xff0c;转而使用另一大杀器nanflann库提供的KDTree。nanof…

玩链子游戏

一 游戏描述 有一条链子&#xff0c;上面有 n 颗钻石&#xff0c;钻石编号为 1&#xff5e;n 。可以对该链子执行两种操作&#xff1a; ① CUT a b c &#xff08;区间切割操作&#xff09; 切下从第 a 颗钻石到第 b 颗钻石的链子&#xff0c;把它插在剩余链子的第 c 颗钻石…

【食品加工技术】第五章 烘烤食品加工技术 笔记

【食品加工技术】第五章 烘烤食品加工技术 笔记5.1 焙烤食品概述烘烤食品的分类按发酵和膨化程度分类安装生产工艺分类烘烤食品的原料面粉糖蛋品乳及乳制品膨松剂烘烤设备常用设备恒温设备常用工具5.2 面包加工工艺和关键技术面包的分类面包的发酵原理面包的工艺流程一次发酵二…

uboot引导应用程序

uboot默认是支持执行应用程序的&#xff0c;就像引导内核一样&#xff0c;我们也可以自己写一个应用程序&#xff0c;让uboot启动时引导。 在uboot examples/standalone 目录下&#xff0c;有hello_world.c文件&#xff0c;编译uboot的时候&#xff0c;会自动编译hello_world.…

详解 InnoDB Cluster 主机名问题

详解 InnoDB Cluster 主机名问题 文章目录详解 InnoDB Cluster 主机名问题导言测试过程结论导言 因在写 【InnoDB Cluster】修改已有集群实例名称及成员实例选项 时发现主机名这块有一些问题&#xff0c;在其中进行了部分测试&#xff0c;但为使其内容精简&#xff0c;故将此部…

程序员必知的三款在线绘图工具

文章目录2.draw.io3.Lucidchart4.PrcessOn5.小结正所谓“一图胜千言”&#xff0c;无论是商务办公、PPT 演示、学习总结、技术交流、项目开发&#xff0c;我们常常都需要制作一些图表、流程图、架构图来更直观地呈现内容以及归类整理知识点。 今天就来说下程序员们常用的三款在…

【矩阵论】正规方程——生成子空间

5.1 子空间 5.1.1. 定义 设 W⊂CnW\subset C^nW⊂Cn &#xff0c;即子空间对线性组合封闭 若(1)对∀α,β∈W&#xff0c;有αβ∈W(对加法封闭)(2)对∀α∈W,∀k∈C&#xff0c;有kα∈W(对数乘封闭)\begin{aligned} 若 &(1)对\forall \alpha,\beta\in W&#xff0c;有\…

秋招失利,拿到这份“Java 高分指南(25 专题)”,金三银四翻盘有望

面试造火箭&#xff0c;工作拧螺丝&#xff01;金九银十灰溜溜地落榜&#xff0c;备受打击。正当准备明年金三银四之际&#xff0c;意外喜提朋友赠送的这“Java 高分指南&#xff08;25 专题&#xff09;”&#xff1a;Elasticsearch、微服务、Linux、JavaOOP、集合/泛型、Mysq…

Flutter高仿微信-第57篇-添加好友

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; /*** Author : wangning* Email : maoning20080809163.c…

ThreadLocal

文章目录一、ThreadLocal是什么二、ThreadLocal作用三、ThreadLocal的设计结构早期:现在:四、ThreadLocal核心方法1. set方法2. get方法3. remove方法五、ThreadLocal内存泄漏六、使用场景七、参考资料前言&#xff1a; 再写博客时&#xff0c;遇到了如何处理保存用户的信息时出…

基于共享储能电站的工业用户 日前优化经济调度matlab程序(yalmip+cplex)(yalmip+gurobi)

基于共享储能电站的工业用户 日前优化经济调度matlab程序&#xff08;yalmipcplex&#xff09;&#xff08;yalmipgurobi&#xff09; 参考文献&#xff1a;基于共享储能电站的工业用户 日前优化经济调度 摘要: 文章提出一种基于共享储能电站的工业用户日前优化经济调度方法。…

nginx反向代理,负载均衡配置

文章目录一.nginx代理简介二.nginx配置简介三.nginx作为反向代理的配置四.nginx作为负载均衡的配置五.使用nginx代理的坑一.nginx代理简介 其实nginx作为代理有两种 正向代理: 隐藏客户端的信息;如科学上网 反向代理: 隐藏服务端的信息;如负载均衡 二.nginx配置…

11.26

目录 一.做题出错 1. 2.数组长度的一半 3.选择题 二.优先级队列(堆) 1.二叉树的顺序存储 1.1 存储方式 1.2下标关系 2.堆(heap) 2.1概念 2.2 操作-向下调整 三 建堆 四.优先级队列 1 概念 2 内部原理 3.操作-入队 offer() 4.操作-出队 五.计算糖果 一.做题出错…

docker如何下载国外镜像

目录背景解决方案1、创建阿里云镜像仓库2、使用https://labs.play-with-docker.com下载镜像3、将镜像上传到阿里云镜像仓库4、从阿里云镜像仓库中拉取镜像到我们linux系统中5、改变我们linux系统中拉取的镜像名称背景 今天在安装grafana和prometheus&#xff0c;但是在下载下面…

Java数据结构

目录 1、栈 2、队列 3、数组 4、链表 5、树 7、平衡二叉树 8、红黑树 1、栈 特点&#xff1a;先进后出&#xff0c;后进先出 数据进入栈模型的过程称为:压/进栈 数据离开栈模型的过程称为:弹/出栈 2、队列 特点&#xff1a;先进先出&#xff0c;后进后出 数据从后…

MyBatis-Plus中的更新操作(通过id更新和条件更新)

目录 前言 一、通过id更新 二、条件更新 2.1 使用QueryWrapper进行条件更新 2.2 使用UpdateWrapper进行条件更新 总结 前言 本文学习MP中的更新操作方法&#xff0c;带大家一起查看源码&#xff0c;了解更新操作的方法。学会熟练地去运用更新方法解决自己在项目中的问题…