李 澳
(吉利汽車研究院電子電器開發(fā)中心 電子電氣架構室,浙江 寧波 315336)
隨著汽車電子電器技術高速發(fā)展,汽車的控制和網絡變得越來越復雜,同時對于汽車的診斷要求也越來越高。ODX診斷開發(fā)型數(shù)據庫應用是從診斷設備工具開發(fā),自動化控制器開發(fā),診斷數(shù)據管理不斷地深入。
在《基于ODX數(shù)據庫的核心-值繼承-PARENT-REF研究綜述》一文中,已經將值繼承的范圍、定義、實現(xiàn)的方式、繼承形式進行了詳細介紹,本文將深入剖析值繼承下的對象狀態(tài)和Runtime執(zhí)行的結果以及導入方式的共享庫繼承邏輯。
值繼承分為一般性繼承、多重繼承和導入。在《基于ODX數(shù)據庫的核心-值繼承-PARENT-REF研究綜述》一文中已經就繼承的基本概念和多重繼承有了相關介紹,并且著重分析和講述了繼承以PARENT-REF為基類接口的實現(xiàn)方式,下文將重點介紹導入和值繼承的結果分析。圖1展示了繼承層級和優(yōu)先級的關系。
圖1 繼承層級和優(yōu)先級
導入為值繼承提供另外實現(xiàn)方式。在圖1中ECU-SHAREDATA層在最左邊關系可以看到,其可以被除它自身以外的其他的任意診斷層進行值繼承,同時還可以保持原有的診斷層的數(shù)據繼承關系。在整車的診斷開發(fā)過程中會有整車企業(yè)級的診斷規(guī)范,這一類規(guī)范不屬于標準的UDS定義的數(shù)據,也不屬于CAN標準定義的數(shù)據,但是這些企業(yè)級別的診斷數(shù)據規(guī)范在整車所有控制器中都是同樣的解析和運用規(guī)則。展示一般性控制器診斷數(shù)據的定義規(guī)則來源如圖2所示。
在ODX的數(shù)據模型中運用圖1中ECU-SHARE-DATA來定義企業(yè)級以及各個ECU級別的規(guī)范性數(shù)據,各個診斷層就可以通過導入的方式 (IMPORT-REF)完成子規(guī)范和通用性定義診斷數(shù)據對象的引用。
圖2 展示一般性控制器診斷數(shù)據的定義規(guī)則來源
ECU-SHARE-DATA的運用即在原有的診斷繼承數(shù)據基礎上進一步完善各類數(shù)據的復用性和維護性。例如:數(shù)據單位的創(chuàng)建,通用性公式的創(chuàng)建。對于使用ODX-LINK進行導入關系創(chuàng)建的分為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能力的研究主要集中在教師專業(yè)發(fā)展、教師培訓以及翻轉課堂應用等方面。
3)R:一個屬于A的元素同時不屬于I。
ODX繼承中只有ECU-SHARE-DATA才能成為導入引用的目標。
在《基于ODX數(shù)據庫的核心-值繼承-PARENT-REF研究綜述》一文中介紹了繼承的實現(xiàn)方式,通過ODX-LINK進行實現(xiàn),下面將針對上文中的3種繼承方式及對應的繼承實現(xiàn)進行深入分析其繼承原理。
4.1.1 ODX-LINK繼承
一般診斷層繼承,被繼承對象中使用ODX-LINK進行引用同一診斷層對象,不論繼承層是否重寫ODX-LINK對象,繼承層ODX-LINK引用的對象依然保持原有的引用關系,同時在繼承層中可繼續(xù)使用。如圖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進行當前層引用,在繼承層如果進行了引用對象的重寫,即繼承層的引用對象變?yōu)橹貙憣ο?,同時被繼承層的對象在繼承層不可見。
圖5為ODX-LINK、SNREFS混合引用繼承對象繼承層引用關系和可見性。如圖5所示,被繼承層對象存在ODXLINK對象,同時此對象通過SNREFS引用其他對象,在繼承層進行重寫和其他操作后對象的引用關系,BV層級的關系如橙色所示,EV層級如藍色所示。在引用關系中STRUCTURE1對象既可在BV也可在EV的runtime中存在,但是在BV和EV層級中是不可通過DB-API獲取,只能存在于FG層級。
圖5 ODX-LINK、SNREFS混合引用繼承對象繼承層引用關系和可見性
導入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中可以繼續(xù)保持導入層對象的引用關系和對象的內容,但是引用對象在當前繼承層不可見。同時,即使繼承層重寫引用對象也不會對原有的繼承關系產生影響,但是如在當前繼承層使用同名的對象即為重寫對象 (被繼承層對象在繼承層不可見)。圖7為ECUSHARE-DATA導入后的對象的ODX-LINK引用關系。
圖7 ECU-SHARE-DATA導入后的對象的ODX-LINK引用關系
繼承層重寫被繼承層對象后,繼承層的對象將不再擁有被繼承層對象的引用關系,即所有的引用關系需要在繼承層重新創(chuàng)建。
圖6和圖7中分別對ECU-SHARE-DATA層中導入的對象進行了重寫,重寫對象的引用關系將不會被繼承STRUCTURE1,不會繼承ECU-SHARE-DATA的STRUCTURE的引用關系。
在繼承層可以通過消除繼承的方式完成對被繼承層對象的去除,同時可以通過使用ODX-LINK再次實現(xiàn)對消除對象的引用。注意不能夠使用SN-REF創(chuàng)建對消除對象的引用,否則將出現(xiàn)引用對象錯誤。圖8為消除繼承中ODX-LINK和snref引用實現(xiàn)。
圖8 消除繼承中ODX-LINK和snref引用實現(xiàn)
1)ODX數(shù)據庫中值繼承思想使得診斷數(shù)據能夠在ECU和ECU變種之間進行診斷數(shù)據的重用,構建診斷數(shù)據的開發(fā)架構。
2)通過值繼承方式一般繼承和導入繼承合理地設計數(shù)據結構。
3)通過不同值繼承方式下的不同的繼承邏輯關系進行數(shù)據結構的模塊化設計,充分運用對象的繼承關系和不同環(huán)境的狀態(tài)。
4)本文的研究結論,對通過ODX創(chuàng)建分析診斷數(shù)據庫和設備解析ODX數(shù)據庫的設計和使用有重大的參考價值。