李 澳
(吉利汽車(chē)研究院電子電器開(kāi)發(fā)中心 電子電氣架構(gòu)室,浙江 寧波 315336)
隨著汽車(chē)電子電器技術(shù)高速發(fā)展,汽車(chē)的控制和網(wǎng)絡(luò)變得越來(lái)越復(fù)雜,同時(shí)對(duì)于汽車(chē)的診斷要求也越來(lái)越高。ODX診斷開(kāi)發(fā)型數(shù)據(jù)庫(kù)應(yīng)用是從診斷設(shè)備工具開(kāi)發(fā),自動(dòng)化控制器開(kāi)發(fā),診斷數(shù)據(jù)管理不斷地深入。
在《基于ODX數(shù)據(jù)庫(kù)的核心-值繼承-PARENT-REF研究綜述》一文中,已經(jīng)將值繼承的范圍、定義、實(shí)現(xiàn)的方式、繼承形式進(jìn)行了詳細(xì)介紹,本文將深入剖析值繼承下的對(duì)象狀態(tài)和Runtime執(zhí)行的結(jié)果以及導(dǎo)入方式的共享庫(kù)繼承邏輯。
值繼承分為一般性繼承、多重繼承和導(dǎo)入。在《基于ODX數(shù)據(jù)庫(kù)的核心-值繼承-PARENT-REF研究綜述》一文中已經(jīng)就繼承的基本概念和多重繼承有了相關(guān)介紹,并且著重分析和講述了繼承以PARENT-REF為基類(lèi)接口的實(shí)現(xiàn)方式,下文將重點(diǎn)介紹導(dǎo)入和值繼承的結(jié)果分析。圖1展示了繼承層級(jí)和優(yōu)先級(jí)的關(guān)系。
圖1 繼承層級(jí)和優(yōu)先級(jí)
導(dǎo)入為值繼承提供另外實(shí)現(xiàn)方式。在圖1中ECU-SHAREDATA層在最左邊關(guān)系可以看到,其可以被除它自身以外的其他的任意診斷層進(jìn)行值繼承,同時(shí)還可以保持原有的診斷層的數(shù)據(jù)繼承關(guān)系。在整車(chē)的診斷開(kāi)發(fā)過(guò)程中會(huì)有整車(chē)企業(yè)級(jí)的診斷規(guī)范,這一類(lèi)規(guī)范不屬于標(biāo)準(zhǔn)的UDS定義的數(shù)據(jù),也不屬于CAN標(biāo)準(zhǔn)定義的數(shù)據(jù),但是這些企業(yè)級(jí)別的診斷數(shù)據(jù)規(guī)范在整車(chē)所有控制器中都是同樣的解析和運(yùn)用規(guī)則。展示一般性控制器診斷數(shù)據(jù)的定義規(guī)則來(lái)源如圖2所示。
在ODX的數(shù)據(jù)模型中運(yùn)用圖1中ECU-SHARE-DATA來(lái)定義企業(yè)級(jí)以及各個(gè)ECU級(jí)別的規(guī)范性數(shù)據(jù),各個(gè)診斷層就可以通過(guò)導(dǎo)入的方式 (IMPORT-REF)完成子規(guī)范和通用性定義診斷數(shù)據(jù)對(duì)象的引用。
圖2 展示一般性控制器診斷數(shù)據(jù)的定義規(guī)則來(lái)源
ECU-SHARE-DATA的運(yùn)用即在原有的診斷繼承數(shù)據(jù)基礎(chǔ)上進(jìn)一步完善各類(lèi)數(shù)據(jù)的復(fù)用性和維護(hù)性。例如:數(shù)據(jù)單位的創(chuàng)建,通用性公式的創(chuàng)建。對(duì)于使用ODX-LINK進(jìn)行導(dǎo)入關(guān)系創(chuàng)建的分為3組關(guān)系:A、I、R。
1)A:即能夠通過(guò)ODX-LINK進(jìn)行特定診斷層導(dǎo)入應(yīng)用的元素為A。
2)I:一個(gè)屬于A的元素同時(shí)也是一個(gè)ODXL-LINK(DIAG-COMM-PROXY,DTC-PROXY,DIAG-VARIABLEPROXY or ROW-WRAPPER)作為源的目標(biāo)元素為I,不能通過(guò)SNREF/SNPATH-REF進(jìn)行對(duì)象的導(dǎo)入。
將34篇文獻(xiàn)信息導(dǎo)入Bicomb 2軟件后進(jìn)行關(guān)鍵詞提取操作,共得到83個(gè)原始關(guān)鍵詞,本研究選取頻次閾值≥2的關(guān)鍵詞作為高頻關(guān)鍵詞,共得14個(gè),如表1所示。可見(jiàn),當(dāng)前,關(guān)于我國(guó)高校教師TPACK能力的研究主要集中在教師專(zhuān)業(yè)發(fā)展、教師培訓(xùn)以及翻轉(zhuǎn)課堂應(yīng)用等方面。
3)R:一個(gè)屬于A的元素同時(shí)不屬于I。
ODX繼承中只有ECU-SHARE-DATA才能成為導(dǎo)入引用的目標(biāo)。
在《基于ODX數(shù)據(jù)庫(kù)的核心-值繼承-PARENT-REF研究綜述》一文中介紹了繼承的實(shí)現(xiàn)方式,通過(guò)ODX-LINK進(jìn)行實(shí)現(xiàn),下面將針對(duì)上文中的3種繼承方式及對(duì)應(yīng)的繼承實(shí)現(xiàn)進(jìn)行深入分析其繼承原理。
4.1.1 ODX-LINK繼承
一般診斷層繼承,被繼承對(duì)象中使用ODX-LINK進(jìn)行引用同一診斷層對(duì)象,不論繼承層是否重寫(xiě)ODX-LINK對(duì)象,繼承層ODX-LINK引用的對(duì)象依然保持原有的引用關(guān)系,同時(shí)在繼承層中可繼續(xù)使用。如圖3所示,在被繼承層FG中存在對(duì)象structure1,同時(shí)structure1通過(guò)ODX-LINK引用DOP1,在BV的繼承層中,structure1對(duì)象將被繼承,同時(shí)其引用關(guān)系也被繼承。在圖3所示關(guān)系中BV繼承層重寫(xiě)對(duì)象DOP1為DOP1’,但是其引用仍然是DOP1,即繼承對(duì)象中如果存在ODX-LINK的引用關(guān)系,無(wú)論繼承層是否重寫(xiě),引用對(duì)象不變。但是DOP1’只能在BV中使用。EV繼承BV的對(duì)象,BV重寫(xiě)DOP1,因此EV層中存在一般性高的DOP1’。
4.1.2 SNREFS繼承
一般診斷層繼承,被繼承對(duì)象中使用SNREFS進(jìn)行引用同一診斷層對(duì)象,如果繼承層重寫(xiě)SNREFS對(duì)象,繼承層SNREFS引用對(duì)象將被重寫(xiě)對(duì)象替換,并重新生成新的引用關(guān)系,被繼承層的對(duì)象不能在繼承層使用。圖4是被繼承層中包含snref引用。
4.1.3 ODX-LINK對(duì)象繼承層可見(jiàn)性
圖3 被繼承層中包含ODX-LINK引用
圖4 被繼承層中包含snref引用
在上述的ODX-LINK繼承關(guān)系中,由于被繼承層對(duì)象在被繼承層級(jí)進(jìn)行了重寫(xiě),此對(duì)象雖然在繼承層可用,但是由于對(duì)象存在被繼承層,重寫(xiě)對(duì)象已經(jīng)存在于繼承層,對(duì)于繼承層同一對(duì)象,被繼承層的對(duì)象是不可見(jiàn)的。
如在圖3中的BV層DOP1’在BV層中可以通過(guò)DB-API查詢(xún),但是DOP1則不可查詢(xún),但是DOP1在D-SERVER的runtime中存在此對(duì)象。
4.1.4 SNREFS對(duì)象繼承層可見(jiàn)性
在上述的SNREFS繼承關(guān)系中,由于被繼承層對(duì)象在被繼承層級(jí)進(jìn)行了重寫(xiě),此對(duì)象即不可以在繼承層中使用,亦不可見(jiàn)。如在圖4中的BV層DOP1’在BV層中可以通過(guò)DBAPI查詢(xún),EV中的DOP1’也可以通過(guò)DB-API查詢(xún),但是DOP1則既不可在BV也不可在EV中查詢(xún),同時(shí)DOP1在DSERVER的runtime中不存在此對(duì)象引用。
4.1.5 ODX-LINK、SNREFS混合引用繼承對(duì)象繼承層可見(jiàn)性
ODX-LINK繼承中可以多層級(jí)繼承,同時(shí)被繼承層級(jí)的對(duì)象可以在任意繼承層使用,被繼承層通過(guò)SNREFS進(jìn)行應(yīng)用對(duì)象或者繼承層通過(guò)SNREFS進(jìn)行當(dāng)前層引用,在繼承層如果進(jìn)行了引用對(duì)象的重寫(xiě),即繼承層的引用對(duì)象變?yōu)橹貙?xiě)對(duì)象,同時(shí)被繼承層的對(duì)象在繼承層不可見(jiàn)。
圖5為ODX-LINK、SNREFS混合引用繼承對(duì)象繼承層引用關(guān)系和可見(jiàn)性。如圖5所示,被繼承層對(duì)象存在ODXLINK對(duì)象,同時(shí)此對(duì)象通過(guò)SNREFS引用其他對(duì)象,在繼承層進(jìn)行重寫(xiě)和其他操作后對(duì)象的引用關(guān)系,BV層級(jí)的關(guān)系如橙色所示,EV層級(jí)如藍(lán)色所示。在引用關(guān)系中STRUCTURE1對(duì)象既可在BV也可在EV的runtime中存在,但是在BV和EV層級(jí)中是不可通過(guò)DB-API獲取,只能存在于FG層級(jí)。
圖5 ODX-LINK、SNREFS混合引用繼承對(duì)象繼承層引用關(guān)系和可見(jiàn)性
導(dǎo)入ECU-SHARE-DATA層后,繼承層進(jìn)行對(duì)象的ODX-LINK引用,如果引用的對(duì)象存在對(duì)同層對(duì)象的SNREF引用關(guān)系,當(dāng)前繼承層必須重寫(xiě)存在于被導(dǎo)入層的SNREF的引用對(duì)象,否則引用失敗。圖6為ECU-SHARE-DATA導(dǎo)入后的對(duì)象的snref引用關(guān)系。
圖6 ECU-SHARE-DATA導(dǎo)入后的對(duì)象的snref引用關(guān)系
導(dǎo)入ECU-SHARE-DATA層后,繼承層進(jìn)行對(duì)象的ODX-LINK引用,如果引用的對(duì)象存在對(duì)同層對(duì)象的ODX-link引用關(guān)系,當(dāng)前繼承層在Runtime中可以繼續(xù)保持導(dǎo)入層對(duì)象的引用關(guān)系和對(duì)象的內(nèi)容,但是引用對(duì)象在當(dāng)前繼承層不可見(jiàn)。同時(shí),即使繼承層重寫(xiě)引用對(duì)象也不會(huì)對(duì)原有的繼承關(guān)系產(chǎn)生影響,但是如在當(dāng)前繼承層使用同名的對(duì)象即為重寫(xiě)對(duì)象 (被繼承層對(duì)象在繼承層不可見(jiàn))。圖7為ECUSHARE-DATA導(dǎo)入后的對(duì)象的ODX-LINK引用關(guān)系。
圖7 ECU-SHARE-DATA導(dǎo)入后的對(duì)象的ODX-LINK引用關(guān)系
繼承層重寫(xiě)被繼承層對(duì)象后,繼承層的對(duì)象將不再擁有被繼承層對(duì)象的引用關(guān)系,即所有的引用關(guān)系需要在繼承層重新創(chuàng)建。
圖6和圖7中分別對(duì)ECU-SHARE-DATA層中導(dǎo)入的對(duì)象進(jìn)行了重寫(xiě),重寫(xiě)對(duì)象的引用關(guān)系將不會(huì)被繼承STRUCTURE1,不會(huì)繼承ECU-SHARE-DATA的STRUCTURE的引用關(guān)系。
在繼承層可以通過(guò)消除繼承的方式完成對(duì)被繼承層對(duì)象的去除,同時(shí)可以通過(guò)使用ODX-LINK再次實(shí)現(xiàn)對(duì)消除對(duì)象的引用。注意不能夠使用SN-REF創(chuàng)建對(duì)消除對(duì)象的引用,否則將出現(xiàn)引用對(duì)象錯(cuò)誤。圖8為消除繼承中ODX-LINK和snref引用實(shí)現(xiàn)。
圖8 消除繼承中ODX-LINK和snref引用實(shí)現(xiàn)
1)ODX數(shù)據(jù)庫(kù)中值繼承思想使得診斷數(shù)據(jù)能夠在ECU和ECU變種之間進(jìn)行診斷數(shù)據(jù)的重用,構(gòu)建診斷數(shù)據(jù)的開(kāi)發(fā)架構(gòu)。
2)通過(guò)值繼承方式一般繼承和導(dǎo)入繼承合理地設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)。
3)通過(guò)不同值繼承方式下的不同的繼承邏輯關(guān)系進(jìn)行數(shù)據(jù)結(jié)構(gòu)的模塊化設(shè)計(jì),充分運(yùn)用對(duì)象的繼承關(guān)系和不同環(huán)境的狀態(tài)。
4)本文的研究結(jié)論,對(duì)通過(guò)ODX創(chuàng)建分析診斷數(shù)據(jù)庫(kù)和設(shè)備解析ODX數(shù)據(jù)庫(kù)的設(shè)計(jì)和使用有重大的參考價(jià)值。