作者 | zh小編 | 吃不飽上回系列文章《基于ODX診斷測(cè)試開(kāi)發(fā)(1): ODX數(shù)據(jù)庫(kù)剖析》簡(jiǎn)單介紹了ODX文件類(lèi)型及各個(gè)文件層級(jí)結(jié)構(gòu),本期我們來(lái)詳細(xì)介紹下ODX數(shù)據(jù)庫(kù)如何解析。
在展開(kāi)正文之前,先說(shuō)明一下,此文介紹的解析ODX數(shù)據(jù)庫(kù)的目的所在。針對(duì)涉及診斷功能類(lèi)(如DTC等)測(cè)試的項(xiàng)目,實(shí)現(xiàn)過(guò)程大致為兩步:先通過(guò)CANoe-CAPL完成通用的診斷功能測(cè)試腳本的開(kāi)發(fā);當(dāng)針對(duì)具體ECU實(shí)施測(cè)試時(shí),依據(jù)該ECU的診斷數(shù)據(jù)表,完成上述通用腳本的參數(shù)配置,可以手動(dòng)配置(效率較低)或通過(guò)解析診斷數(shù)據(jù)表完成自動(dòng)配置。過(guò)往項(xiàng)目中,診斷數(shù)據(jù)表既有Excel表格也有ODX格式。為此,北匯開(kāi)發(fā)了診斷數(shù)據(jù)表的解析模塊(支持Excel和ODX格式),實(shí)現(xiàn)對(duì)測(cè)試腳本參數(shù)的自動(dòng)配置,從而提高效率。
01ODX實(shí)現(xiàn)方式
ODX使用統(tǒng)一建模語(yǔ)言UML類(lèi)圖來(lái)描述的,ODX數(shù)據(jù)又是通過(guò)XML文件格式來(lái)儲(chǔ)存的。我們知道類(lèi)包含屬性和方法,同時(shí)具有封裝、繼承、多態(tài)等特點(diǎn)。那么如何將UML映射為XML呢?ISO22901-1規(guī)范做出如下規(guī)定:
規(guī) 定
將UML類(lèi)映射為XML的元素; 如果UML中類(lèi)的屬性有《attr》標(biāo)記,則將該屬性映射為XML元素的屬性;如果UML中類(lèi)的屬性無(wú)《attr》標(biāo)記,則映射為XML元素的子元素。如果UML屬性有《content》標(biāo)記,則映射為XML元素的內(nèi)容; 如果類(lèi)B通過(guò)Aggregation和composition和類(lèi)A建立聯(lián)系,則類(lèi)B映射為XML 類(lèi)A元素的子元素; 如果類(lèi)B通過(guò)association和類(lèi)A產(chǎn)生關(guān)聯(lián),則在XML中通常以引用的方式實(shí)現(xiàn),如《snref》,《snpathref》或《odxlink》; UML類(lèi)圖中的繼承關(guān)系,在XML中以的方式實(shí)現(xiàn);注:Aggregation、composition和association為UML類(lèi)圖之間的關(guān)系,在這里不做詳細(xì)介紹。
圖1和圖2就是根據(jù)以上規(guī)則,將UML轉(zhuǎn)化為XML的例子。圖1
圖2
02ODX繼承-值繼承
值繼承屬于ODX中的核心概念,面向?qū)ο罄^承的概念用于診斷數(shù)據(jù)模型具有如下優(yōu)點(diǎn):
多個(gè)ECU變體對(duì)診斷數(shù)據(jù)的復(fù)用;
對(duì)于ECU應(yīng)用于多個(gè)項(xiàng)目的情況,可以提取公共數(shù)據(jù),ECU變體中只保留不同的數(shù)據(jù),從而減少數(shù)據(jù)冗余;
提供了數(shù)據(jù)安全和可集成性。
在上一期我們簡(jiǎn)單介紹了下ODX繼承,為了避免數(shù)據(jù)的重復(fù)冗余,ODX將診斷層分為了5個(gè)層級(jí)。如圖3所示,其中,Protocol具有一般性,ECU Variant具有特殊性,ECU Shared Data類(lèi)似一個(gè)library,可以為其他層提供數(shù)據(jù)和服務(wù)。圖3
我們知道,ODX中的繼承關(guān)系,在XML中以的方式實(shí)現(xiàn)的,如果繼承的數(shù)據(jù)中有部分?jǐn)?shù)據(jù)不適用,可以通過(guò)去除不適用的數(shù)據(jù)。從圖4的例子中可以看出,該ECU不支持level3和level4解鎖等級(jí)。圖4
03ODX解析思路簡(jiǎn)介
當(dāng)我們拿到一份ODX或者PDX(PDX是將一系列ODX文件打包)時(shí),如何開(kāi)展解析工作呢?
首先找到ECU的Base Variant文件。
在Base Variant中查找繼承關(guān)系。
在Base Variant文件中查找對(duì)應(yīng)的ECU變體即ECU Variant。
在ECU Variant文件中查找對(duì)應(yīng)的診斷服務(wù)和數(shù)據(jù)。
圖5
04ODX解析實(shí)踐
根據(jù)章節(jié)3的ODX解析思路,獲得的解析結(jié)果見(jiàn)圖6、7和8。其中ECU Shared Data作為library,提供了通用的診斷服務(wù),見(jiàn)圖6;而ECU變體BCM 88890251 A除了繼承Base Variant的通用診斷服務(wù),還增加了多個(gè)DID、RID、IO Control,同時(shí)去除了19 15、27 05和27 06這些不適用的服務(wù)。圖8展示了ODX中包含的多種數(shù)據(jù)類(lèi)型,這里不再詳細(xì)介紹。圖6
圖7
圖8
05總結(jié)
相較于傳統(tǒng)的Excel格式的診斷數(shù)據(jù)交換的不便性,ODX統(tǒng)一了診斷文件的格式,在研發(fā)、測(cè)試、生產(chǎn)和售后等部門(mén)傳遞交換時(shí),不需要進(jìn)行格式轉(zhuǎn)換,因此,很多OEM開(kāi)始使用ODX。目前,北匯已經(jīng)開(kāi)發(fā)基于ODX的診斷自動(dòng)化測(cè)試方案,感興趣的小伙伴可以一起交流。
-
測(cè)試
+關(guān)注
關(guān)注
8文章
5399瀏覽量
127133 -
開(kāi)發(fā)
+關(guān)注
關(guān)注
0文章
370瀏覽量
40938
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Oracle數(shù)據(jù)庫(kù)的多功能集成開(kāi)發(fā)環(huán)境
![Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的多功能集成<b class='flag-5'>開(kāi)發(fā)</b>環(huán)境](https://file1.elecfans.com/web3/M00/05/F0/wKgZO2eF-8qAREl7AAAlkoIDMh0655.png)
MySQL數(shù)據(jù)庫(kù)的安裝
![MySQL<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的安裝](https://file1.elecfans.com/web3/M00/05/E2/wKgZPGeF2XWAe83fAAAW9lhgvGk652.jpg)
云數(shù)據(jù)庫(kù)是哪種數(shù)據(jù)庫(kù)類(lèi)型?
ODX診斷數(shù)據(jù)庫(kù)轉(zhuǎn)換工具 - DDC
![<b class='flag-5'>ODX</b><b class='flag-5'>診斷</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>轉(zhuǎn)換工具 - DDC](https://file1.elecfans.com/web3/M00/04/6B/wKgZO2dzYpCAeeE_AAAZKgGWPnE390.png)
基于ODX的工程診斷儀 - DST.Tester
![基于<b class='flag-5'>ODX</b>的工程<b class='flag-5'>診斷</b>儀 - DST.Tester](https://file1.elecfans.com/web3/M00/04/4A/wKgZPGdyVraAXKuAAAAfdgoHycU569.png)
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程
![<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—Mysql<b class='flag-5'>數(shù)據(jù)庫(kù)</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)流程](https://file.elecfans.com/web2/M00/7B/26/pYYBAGNzCiiANj77AAH4iOB3xKM259.png)
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫(kù)ibdata1文件損壞的數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—通過(guò)拼接數(shù)據(jù)庫(kù)碎片恢復(fù)SQLserver數(shù)據(jù)庫(kù)
![<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—通過(guò)拼接<b class='flag-5'>數(shù)據(jù)庫(kù)</b>碎片恢復(fù)SQLserver<b class='flag-5'>數(shù)據(jù)庫(kù)</b>](https://file1.elecfans.com/web1/M00/F4/07/wKgaoWcjE32AbQdWAAJD_hojvJc119.png)
在嵌入式開(kāi)發(fā)領(lǐng)域,有哪些好用的國(guó)產(chǎn)工具?
Oracle數(shù)據(jù)恢復(fù)—異常斷電后Oracle數(shù)據(jù)庫(kù)啟庫(kù)報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例
![Oracle<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—異常斷電后Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>啟<b class='flag-5'>庫(kù)</b>報(bào)錯(cuò)的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file1.elecfans.com/web2/M00/08/B8/wKgZomb6Ns-AbiICAAFlXAFpKKU086.png)
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)出現(xiàn)823錯(cuò)誤的數(shù)據(jù)恢復(fù)案例
![<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b>出現(xiàn)823錯(cuò)誤的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file1.elecfans.com/web2/M00/07/F4/wKgaombs78mANJ1GAAPeSoXHVPE244.png)
恒訊科技分析:sql數(shù)據(jù)庫(kù)怎么用?
HarmonyOS開(kāi)發(fā)案例:【搭建關(guān)系型數(shù)據(jù)庫(kù)】(4)
![HarmonyOS<b class='flag-5'>開(kāi)發(fā)</b>案例:【搭建關(guān)系型<b class='flag-5'>數(shù)據(jù)庫(kù)</b>】(4)](https://file1.elecfans.com/web2/M00/E3/F9/wKgZomY-EPeAaulNAAB1Spd11Tg359.jpg)
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—raid5陣列上層Sql Server數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例
![<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—raid5陣列上層Sql Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file.elecfans.com/web2/M00/A2/AD/pYYBAGRLbSSAHhFWAAI9vWNRQec919.png)
評(píng)論