1.ODX简介

由ASAM组织提出的诊断数据交互格式,全称为Open Diagnostic Data Exchange,包含ODX2.0.1和ODX2.2.0规范,两个版本之间不兼容。ISO收录了其中ASAM ODX2.2.0规范,即ODX规范ISO-22901,主要用于描述整车以及ECU的诊断数据,方便供应商与OEM、产品开发与售后间的数据交互。ODX使用统一建模语言(UML)图描述,数据交互格式使用可扩展标记语言(XML)存储记录数据。便于承载从设计、开发、测试、生产及售后维护的全流程工作。

2.ODX文件类型

ODX2.2.0(ISO-22901)将ODX文件分为如下类型:

odx-c/-cs:通讯参数,如会话层、传输层时间参数以及逻辑地址等通讯相关信息
odx-d:ECU诊断层规范(包含ECU所有诊断服务以及诊断使用的数据)
odx-v:车辆信息(-v文件可以包含整车所有控制器拓扑结构,诊断仪可以通过logic link选择需要诊断的ECU)
odx-e:ECU配置(产线ECU配置信息)
odx-f:ECU编程数据(ECU刷写相关数据,如checksum和签名信息等)
odx-fd:功能字典(车辆功能信息库,如中控锁功能包含四个车门功能信息)
odx-m:多ECU功能规范(定义了同时和多个ECU进行通讯的方法)

2.1.PDX文件

PDX文件可作为各类型odx文件的容器,将相关odx文件打包为PDX文件(.pdx),并且作为输入物导入诊断工具。

2.2.ODX包目录文件index.xml

ODX包目录由一个CATALOG实例表示,它提供了存储在相应PDX包中的所有文件的列表

元素“FILE”的内容代表PDX中包含的文件,元素“CATEGORY”内容如下:

—— ODX-DATA:适用于所有ODX文件
—— ODX-JOB:适用于java-files,class-files,jar-files,dll-files
—— LIB:所有被JOB使用或导入的文件
—— PROGRAMMING-DATA:用于控制器编程的bin/hex文件

2.3.车辆信息odx-v

odx-v文件主要作为诊断仪访问ECU的入口,包含两个重要元素:

1.Info-Component(该元素包含OEM、Vehicle-Model、Model-year、Vehicle-Type等)

2.Vehicle-Information(该元素包含Vehicle-Connector、Physical-Vehicle-Link、Logical-Link等),诊断仪可以使用Logic-Link信息在PDX包中寻找包含目标ECU的Base-Variant文件,然后诊断仪就可以与ECU通讯了,当然也要确认ECU的变体信息ECU-Variant。

2.4.通信参数odx-c/odx-cs

odx-c 描述应用层、传输层、物理层适用的是哪版规范(如CAN总线对应的规范分别是14229、15765、11898),其中应用层(如P2、P2*等)、传输层(As、Bs、Br、Cs、Cr、STMin等)、物理层(ID等)分别对应一个odx-cs文件。

2.4.1.通信参数规范引用:

2.4.2.通信参数规范定义应用层、传输层、物理层适用的规范

2.4.3.传输层参数定义

为了减少数据冗余,odx-c/cs参数为默认值,对于ECU差异性数据可以用元素SIMPLE-VALUE对应用的通信参数重新赋值

2.5.诊断层odx-d

odx-d文件包含控制器的所有诊断数据,如服务、DTC、DID、RID、数据类型等信息,odx-d元素分类如下:

PROTOCOL:定义了某种诊断层协议(如UDS/OBD)
FUNCTIONAL_GROUP:定义了多个ECU共同支持的服务或数据
BASE-VARIANT:代表一个具体ECU,每个ECU只有一个BASE-VARIANT,它继承PROTOCOL和FUNCTIONAL-GROUP,可以对上面两层的诊断服务与数据进行引用,也可以对继承的服务和数据进行修改
ECU_VARIANT:各个ECU的具体实现,如BCM有多种配置,不同配置的BCM数据也存在差异
ECU-SHARED-DATA:是一个数据库,由上述4层对其进行引用

2.5.1.层级继承关系

odx支持值继承,相较于其他数据库odx文件更加灵活,各层级间继承关系如下:

ECU-SHARED-DATA可被其它层继承,但不能继承其它层
PROTOCOL可继承ECU-SHARED-DATA
FUNCTIONAL-GROUP可继承PROTOCOL和ECU-SHARED-DATA
BASE-VARIANT可继承 FUNCTIONAL-GROUP、ECU-SHARED-DATA、PROTOCOL
ECU-VARIANT可继承ECU-SHARED-DATA、BASE-VARIANT

2.5.2.层级继承关系示例


2.5.3.UDS请求报文示例

引用“DLC.UDS.ESD.Generic_UDS_Services.RQ.Req_Tester_Present”

2.5.4.UDS肯定应答报文示例

引用“DLC.UDS.ESD.Generic_UDS_Services.PR.Pos_Resp_Tester_Present”

2.5.5.UDS否定应答示例

引用“DLC.UDS.ESD.Generic_UDS_Services.DOP.ISO_NRC_definition”

引用“DLC.UDS.ESD.Generic_UDS_Services.DOP.NRC_10”

3.总结

ISO-22901是标准的ODX规范,各个OEM会按照自己的需求编写企业级的AGL(Authoring Guide Line)文件,用于定义ODX文件结构,所以解析ODX数据也要参考OEM的AGL文件。本篇文章简单介绍了ODX数据结构,ODX协议规则还有很多,限于篇幅,不做一一介绍了,下篇系列文章将分享为了实现诊断相关的测试,ODX数据解析的过程和方法,敬请持续关注。

参考文献

[1]ISO 22901-1

作者:北汇信息-孙大勇

基于ODX诊断测试开发(1):ODX数据库剖析相关推荐

  1. 基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAWeb前端开发技术儿童教育网站计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: ...

  2. javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】

    一.项目简介 本项目是一套基于SSM框架开发的社区医疗数据管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者. 包含:项目源码.数据库脚本等,该项目可以直接作为 ...

  3. 基于SSM框架开发生鲜水果蔬菜电商平台系统.rar(含源码及数据库文件)

    基于SSM框架开发,可用于练手,学习开发使用,尤其适合毕业设计,主要功能,商品列表.商品详细页.购物车.登录.注册.商品收藏.订单列表等主要功能.直接用idea或eclipse开发工具,可直接打开项目 ...

  4. 基于 Go 语言开发 Serverless 云原生应用

    Golang 无疑是云原生领域开发的首选开发语言,继 Docker.Kubernetes 等大作之后 Knative 又是一个基于 Go 语言的云原生范式.Knative 提供了一整套云原生应用的 S ...

  5. mysql for循环_基于Swoole扩展开发异步高性能的MySQL代理服务器

    MySQL数据库对每个客户端连接都会分配一个线程,所以连接非常宝贵.开发一个异步的MySQL代理服务器,PHP应用服务器可以长连接到这台Server,既减轻MYSQL的连接压力,又使PHP保持长连接减 ...

  6. mysql异步扩展_基于Swoole扩展开发异步高性能的MySQL代理服务器

    MySQL数据库对每个客户端连接都会分配一个线程,所以连接非常宝贵.开发一个异步的MySQL代理服务器,PHP应用服务器可以长连接到这台Server,既减轻MYSQL的连接压力,又使PHP保持长连接减 ...

  7. 一款基于 Spring Boot 开发 OA 开源产品

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客:点 ...

  8. Delphi开发单机瘦数据库程序要点

    Delphi开发单机瘦数据库程序要点 日期:2004年12月30日 作者:loveghb 人气: 2736 查看:[大字体 中字体 小字体] 一.概述 Delphi作为Windows下的一种快速开发工 ...

  9. java数据库视频教程下载,【No147】最新oracle11g DBA 开发和应用数据库视频教程下载...

    [No147]最新oracle11g DBA 开发和应用数据库视频教程下载 这套视频讲的非常深刻,但是作者深入浅出让人通俗易懂,有广度有深度,希望能帮助您在java开发和DBA道路上披荆斩棘,让大家少 ...

最新文章

  1. “无效数字” ;java.lang.Integer cannot be cast to java.lang.String
  2. wxWidgets:操作档案manipulate archives的示例应用程序
  3. android第三方应用,Android 第三方应用接入微信平台研究情况分享(一)
  4. 【网络通信与信息安全】之深入分析一个TCP连接可以发多少个HTTP请求相关问题
  5. ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
  6. mysql语句错误怎么查找_为什么我的mysql语句一直报错,找不到错误,望各位大佬指点一番...
  7. 前端工程化和Reactjs的模式
  8. php读取/写入mssql乱码!(续...重要)
  9. 分享:架构师软技能之协商
  10. 韩忠康mysql正则表达式_Go语言中正则表达式的处理
  11. matlab自适应滤波器 LMS算法
  12. 【经验分享】WPS启用宏
  13. 最常用的看板工具,敏捷开发工具
  14. Linux Entering rescue mode
  15. c语言空白不占位置的符号,不占位置的符号_空白代码不占位置
  16. 打印机的系统是linux吗,linux下打印机的配置和使用
  17. SAP-ABAP-如何查找系统中已经存在的增强(包括1代2代3代BTE表字段增强等)和标准的增强点
  18. 谷歌游览器提示“喔唷,奔溃啦!”报错误代码:STATUS_INVALID_IMAGE_HASH
  19. 写项目时怎样将后台管理使用的富文本编辑器保存的内容转为HTML格式
  20. 旋转矩阵列向量的物理含义

热门文章

  1. #力扣LeetCode883. 三维形体投影面积 @FDDLC
  2. 分享一款功能强大的win7免费语音朗读软件
  3. SQL Server 自动化运维工具 dbatools
  4. java 素数的判断
  5. html+js 网页调用网络摄像头 点击拍照 并且......
  6. pycharm输出中文乱码解决方案
  7. 波特率与定时器初值关系
  8. Delphi实现链表
  9. 软考阅卷老师10条忠告,得牢记
  10. 验证码验证失败的那些事