tag 标签: ODX诊断

相关帖子
相关博文
  • 热度 12
    2023-2-8 10:11
    1188 次阅读|
    0 个评论
    1 . 前言 上回系列文章《基于ODX诊断测试开发( 1 ): ODX数据库剖析 基于ODX诊断测试开发(1):ODX数据库剖析-面包板社区 (eet-china.com) 》简单介绍了ODX文件类型及各个文件层级结构,本期我们来详细介绍下ODX数据库如何解析。 在展开正文之前,先说明一下,此文介绍的解析ODX数据库的目的所在。针对涉及诊断功能类(如DTC等)测试的项目,实现过程大致为两步:先通过CANoe-CAPL完成通用的诊断功能测试脚本的开发;当针对具体ECU实施测试时,依据该ECU的诊断数据表,完成上述通用脚本的参数配置,可以手动配置(效率较低)或通过解析诊断数据表完成自动配置。过往项目中,诊断数据表既有Excel表格也有ODX格式。为此,北汇开发了诊断数据表的解析模块(支持Excel和ODX格式),实现对测试脚本参数的自动配置,从而提高效率。 2. ODX实现方式 ODX使用统一建模语言UML类图来描述的,ODX数据又是通过XML文件格式来储存的。我们知道类包含属性和方法,同时具有封装、继承、多态等特点。那么如何将UML映射为XML呢?ISO 22901 - 1 规范做出如下规定: 将UML类映射为XML的元素; 如果UML中类的属性有《attr》标记,则将该属性映射为XML元素的属性;如果UML中类的属性无《attr》标记,则映射为XML元素的子元素。如果UML属性有《content》标记,则映射为XML元素的内容; 如果类B通过Aggregation和composition和类A建立联系,则类B映射为XML 类A元素的子元素; 如果类B通过association和类A产生关联,则在XML中通常以引用的方式实现,如《snref》,《snpathref》或《odxlink》; UML类图中的继承关系,在XML中以的方式实现; 注:Aggregation、composition和association为UML类图之间的关系,在这里不做详细介绍。 图1和图2就是根据以上规则,将UML转化为XML的例子。 图1 图2 3. ODX继承-值继承 值继承属于ODX中的核心概念,面向对象继承的概念用于诊断数据模型具有如下优点: (1)多个ECU变体对诊断数据的复用; (2)对于ECU应用于多个项目的情况,可以提取公共数据,ECU变体中只保留不同的数据,从而减少数据冗余; (3)提供了数据安全和可集成性。 在上一期我们简单介绍了下ODX继承,为了避免数据的重复冗余,ODX将诊断层分为了5个层级。如图3所示,其中,Protocol具有一般性,ECU Variant具有特殊性,ECU Shared Data 类似一个library,可以为其他层提供数据和服务。 图3 我们知道,ODX中的继承关系,在XML中以的方式实现的,如果继承的数据中有部分数据不适用,可以通过 去除不适用的数据。从图4的例子中可以看出,该ECU不支持level 3 和level 4 解锁等级。 图4 4. ODX解析思路简介 当我们拿到一份ODX或者PDX(PDX是将一系列ODX文件打包)时,如何开展解析工作呢? (1)首先找到ECU的Base Variant 文件。 (2)在Base Variant 中查找继承关系。 (3)在Base Variant 文件中查找对应的ECU变体即ECU Variant。 ( 4 )在ECU Variant 文件中查找对应的诊断服务和数据。 图5 5. ODX解析实践 根据章节 3 的ODX解析思路,获得的解析结果见图6、7和8。其中ECU Shared Data 作为library,提供了通用的诊断服务,见图6;而ECU变体BCM 88890251 A除了继承Base Variant的通用诊断服务,还增加了多个DID、RID、IO Control,同时去除了1 9 15 、2 7 05 和2 7 06 这些不适用的服务。图8展示了ODX中包含的多种数据类型,这里不再详细介绍。 图6 图7 图8 6. 总结 相较于传统的Excel格式的诊断数据交换的不便性,ODX统一了诊断文件的格式,在研发、测试、生产和售后等部门传递交换时,不需要进行格式转换,因此,很多OEM开始使用ODX。目前,北汇已经开发基于ODX的诊断自动化测试方案,感兴趣的小伙伴可以一起交流。 参考文献 ISO 22901-1
  • 热度 3
    2022-6-4 19:45
    1661 次阅读|
    0 个评论
    基于ODX诊断测试开发(1):ODX数据库剖析 北汇信息-孙大勇 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”内容如下: 1.ODX-DATA:适用于所有ODX文件 2.ODX-JOB:适用于java-files,class-files,jar-files,dll-files 3.LIB:所有被JOB使用或导入的文件 4.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元素分类如下: 1.PROTOCOL:定义了某种诊断层协议(如UDS/OBD) 2.FUNCTIONAL_GROUP:定义了多个ECU共同支持的服务或数据 3.BASE-VARIANT:代表一个具体ECU,每个ECU只有一个BASE-VARIANT,它继承PROTOCOL和FUNCTIONAL-GROUP,可以对上面两层的诊断服务与数据进行引用,也可以对继承的服务和数据进行修改 4.ECU_VARIANT:各个ECU的具体实现,如BCM有多种配置,不同配置的BCM数据也存在差异 5.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文件,所以AGL文件对ODX数据解析起着指导性作用。 北汇信息专注于汽车电子测试、与众多OEM合作,在总线网络诊断测试开发相关领域积累了丰富的经验。本篇文章简单介绍了ODX数据结构,ODX协议规则还有很多,限于篇幅,不做一一介绍了,下篇系列文章将分享为了实现诊断相关的测试,ODX数据解析的过程和方法,敬请持续关注。 参考文献 ISO 22901-1