APP下载

基于ODX数据结构值继承关系的深入分析

2020-06-04

汽车电器 2020年5期
关键词:数据结构层级定义

李 澳

(吉利汽车研究院电子电器开发中心 电子电气架构室,浙江 宁波 315336)

1 ODX数据结构

随着汽车电子电器技术高速发展,汽车的控制和网络变得越来越复杂,同时对于汽车的诊断要求也越来越高。ODX诊断开发型数据库应用是从诊断设备工具开发,自动化控制器开发,诊断数据管理不断地深入。

在《基于ODX数据库的核心-值继承-PARENT-REF研究综述》一文中,已经将值继承的范围、定义、实现的方式、继承形式进行了详细介绍,本文将深入剖析值继承下的对象状态和Runtime执行的结果以及导入方式的共享库继承逻辑。

2 值继承的分类

值继承分为一般性继承、多重继承和导入。在《基于ODX数据库的核心-值继承-PARENT-REF研究综述》一文中已经就继承的基本概念和多重继承有了相关介绍,并且着重分析和讲述了继承以PARENT-REF为基类接口的实现方式,下文将重点介绍导入和值继承的结果分析。图1展示了继承层级和优先级的关系。

图1 继承层级和优先级

3 值继承-导入

导入为值继承提供另外实现方式。在图1中ECU-SHAREDATA层在最左边关系可以看到,其可以被除它自身以外的其他的任意诊断层进行值继承,同时还可以保持原有的诊断层的数据继承关系。在整车的诊断开发过程中会有整车企业级的诊断规范,这一类规范不属于标准的UDS定义的数据,也不属于CAN标准定义的数据,但是这些企业级别的诊断数据规范在整车所有控制器中都是同样的解析和运用规则。展示一般性控制器诊断数据的定义规则来源如图2所示。

在ODX的数据模型中运用图1中ECU-SHARE-DATA来定义企业级以及各个ECU级别的规范性数据,各个诊断层就可以通过导入的方式 (IMPORT-REF)完成子规范和通用性定义诊断数据对象的引用。

图2 展示一般性控制器诊断数据的定义规则来源

ECU-SHARE-DATA的运用即在原有的诊断继承数据基础上进一步完善各类数据的复用性和维护性。例如:数据单位的创建,通用性公式的创建。对于使用ODX-LINK进行导入关系创建的分为3组关系:A、I、R。

1)A:即能够通过ODX-LINK进行特定诊断层导入应用的元素为A。

2)I:一个属于A的元素同时也是一个ODXL-LINK(DIAG-COMM-PROXY,DTC-PROXY,DIAG-VARIABLEPROXY or ROW-WRAPPER)作为源的目标元素为I,不能通过SNREF/SNPATH-REF进行对象的导入。

将34篇文献信息导入Bicomb 2软件后进行关键词提取操作,共得到83个原始关键词,本研究选取频次阈值≥2的关键词作为高频关键词,共得14个,如表1所示。可见,当前,关于我国高校教师TPACK能力的研究主要集中在教师专业发展、教师培训以及翻转课堂应用等方面。

3)R:一个属于A的元素同时不属于I。

ODX继承中只有ECU-SHARE-DATA才能成为导入引用的目标。

4 继承关系

在《基于ODX数据库的核心-值继承-PARENT-REF研究综述》一文中介绍了继承的实现方式,通过ODX-LINK进行实现,下面将针对上文中的3种继承方式及对应的继承实现进行深入分析其继承原理。

4.1 一般继承的实现

4.1.1 ODX-LINK继承

一般诊断层继承,被继承对象中使用ODX-LINK进行引用同一诊断层对象,不论继承层是否重写ODX-LINK对象,继承层ODX-LINK引用的对象依然保持原有的引用关系,同时在继承层中可继续使用。如图3所示,在被继承层FG中存在对象structure1,同时structure1通过ODX-LINK引用DOP1,在BV的继承层中,structure1对象将被继承,同时其引用关系也被继承。在图3所示关系中BV继承层重写对象DOP1为DOP1’,但是其引用仍然是DOP1,即继承对象中如果存在ODX-LINK的引用关系,无论继承层是否重写,引用对象不变。但是DOP1’只能在BV中使用。EV继承BV的对象,BV重写DOP1,因此EV层中存在一般性高的DOP1’。

4.1.2 SNREFS继承

一般诊断层继承,被继承对象中使用SNREFS进行引用同一诊断层对象,如果继承层重写SNREFS对象,继承层SNREFS引用对象将被重写对象替换,并重新生成新的引用关系,被继承层的对象不能在继承层使用。图4是被继承层中包含snref引用。

4.1.3 ODX-LINK对象继承层可见性

图3 被继承层中包含ODX-LINK引用

图4 被继承层中包含snref引用

在上述的ODX-LINK继承关系中,由于被继承层对象在被继承层级进行了重写,此对象虽然在继承层可用,但是由于对象存在被继承层,重写对象已经存在于继承层,对于继承层同一对象,被继承层的对象是不可见的。

如在图3中的BV层DOP1’在BV层中可以通过DB-API查询,但是DOP1则不可查询,但是DOP1在D-SERVER的runtime中存在此对象。

4.1.4 SNREFS对象继承层可见性

在上述的SNREFS继承关系中,由于被继承层对象在被继承层级进行了重写,此对象即不可以在继承层中使用,亦不可见。如在图4中的BV层DOP1’在BV层中可以通过DBAPI查询,EV中的DOP1’也可以通过DB-API查询,但是DOP1则既不可在BV也不可在EV中查询,同时DOP1在DSERVER的runtime中不存在此对象引用。

4.1.5 ODX-LINK、SNREFS混合引用继承对象继承层可见性

ODX-LINK继承中可以多层级继承,同时被继承层级的对象可以在任意继承层使用,被继承层通过SNREFS进行应用对象或者继承层通过SNREFS进行当前层引用,在继承层如果进行了引用对象的重写,即继承层的引用对象变为重写对象,同时被继承层的对象在继承层不可见。

图5为ODX-LINK、SNREFS混合引用继承对象继承层引用关系和可见性。如图5所示,被继承层对象存在ODXLINK对象,同时此对象通过SNREFS引用其他对象,在继承层进行重写和其他操作后对象的引用关系,BV层级的关系如橙色所示,EV层级如蓝色所示。在引用关系中STRUCTURE1对象既可在BV也可在EV的runtime中存在,但是在BV和EV层级中是不可通过DB-API获取,只能存在于FG层级。

图5 ODX-LINK、SNREFS混合引用继承对象继承层引用关系和可见性

4.2 导入继承的实现

导入ECU-SHARE-DATA层后,继承层进行对象的ODX-LINK引用,如果引用的对象存在对同层对象的SNREF引用关系,当前继承层必须重写存在于被导入层的SNREF的引用对象,否则引用失败。图6为ECU-SHARE-DATA导入后的对象的snref引用关系。

图6 ECU-SHARE-DATA导入后的对象的snref引用关系

导入ECU-SHARE-DATA层后,继承层进行对象的ODX-LINK引用,如果引用的对象存在对同层对象的ODX-link引用关系,当前继承层在Runtime中可以继续保持导入层对象的引用关系和对象的内容,但是引用对象在当前继承层不可见。同时,即使继承层重写引用对象也不会对原有的继承关系产生影响,但是如在当前继承层使用同名的对象即为重写对象 (被继承层对象在继承层不可见)。图7为ECUSHARE-DATA导入后的对象的ODX-LINK引用关系。

图7 ECU-SHARE-DATA导入后的对象的ODX-LINK引用关系

4.3 重写对象继承关系

继承层重写被继承层对象后,继承层的对象将不再拥有被继承层对象的引用关系,即所有的引用关系需要在继承层重新创建。

图6和图7中分别对ECU-SHARE-DATA层中导入的对象进行了重写,重写对象的引用关系将不会被继承STRUCTURE1,不会继承ECU-SHARE-DATA的STRUCTURE的引用关系。

4.4 消除继承的实现

在继承层可以通过消除继承的方式完成对被继承层对象的去除,同时可以通过使用ODX-LINK再次实现对消除对象的引用。注意不能够使用SN-REF创建对消除对象的引用,否则将出现引用对象错误。图8为消除继承中ODX-LINK和snref引用实现。

图8 消除继承中ODX-LINK和snref引用实现

5 结语

1)ODX数据库中值继承思想使得诊断数据能够在ECU和ECU变种之间进行诊断数据的重用,构建诊断数据的开发架构。

2)通过值继承方式一般继承和导入继承合理地设计数据结构。

3)通过不同值继承方式下的不同的继承逻辑关系进行数据结构的模块化设计,充分运用对象的继承关系和不同环境的状态。

4)本文的研究结论,对通过ODX创建分析诊断数据库和设备解析ODX数据库的设计和使用有重大的参考价值。

猜你喜欢

数据结构层级定义
军工企业不同层级知识管理研究实践
基于军事力量层级划分的军力对比评估
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
高职高专数据结构教学改革探讨
任务期内多层级不完全修复件的可用度评估
成功的定义
TRIZ理论在“数据结构”多媒体教学中的应用
《数据结构》教学方法创新探讨
修辞学的重大定义
山的定义