0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ODX診斷測(cè)試開(kāi)發(fā)(2): ODX數(shù)據(jù)庫(kù)解析

北匯信息POLELINK ? 2023-02-13 13:54 ? 次閱讀

作者 | 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的例子。e7554108-a8c3-11ed-ad0d-dac502259ad0.png圖1
e76fca96-a8c3-11ed-ad0d-dac502259ad0.png圖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ù)。
e79771ea-a8c3-11ed-ad0d-dac502259ad0.png圖3
我們知道,ODX中的繼承關(guān)系,在XML中以的方式實(shí)現(xiàn)的,如果繼承的數(shù)據(jù)中有部分?jǐn)?shù)據(jù)不適用,可以通過(guò)去除不適用的數(shù)據(jù)。從圖4的例子中可以看出,該ECU不支持level3和level4解鎖等級(jí)。
e7af1570-a8c3-11ed-ad0d-dac502259ad0.png圖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ù)。

e7c8da96-a8c3-11ed-ad0d-dac502259ad0.png圖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ì)介紹。e7deaeac-a8c3-11ed-ad0d-dac502259ad0.png圖6
e819599e-a8c3-11ed-ad0d-dac502259ad0.png圖7
e83bac2e-a8c3-11ed-ad0d-dac502259ad0.png圖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è)試方案,感興趣的小伙伴可以一起交流。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 測(cè)試
    +關(guān)注

    關(guān)注

    8

    文章

    4927

    瀏覽量

    125956
  • 開(kāi)發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    357

    瀏覽量

    40737
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)出現(xiàn)823錯(cuò)誤的數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)庫(kù)故障: SQL Server附加數(shù)據(jù)庫(kù)出現(xiàn)錯(cuò)誤823,附加數(shù)據(jù)庫(kù)失敗。數(shù)據(jù)庫(kù)沒(méi)有備份,無(wú)法通過(guò)備份恢復(fù)數(shù)據(jù)庫(kù)。
    的頭像 發(fā)表于 09-20 11:46 ?115次閱讀
    <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ù)案例

    HarmonyOS開(kāi)發(fā)案例:【搭建關(guān)系型數(shù)據(jù)庫(kù)】(4)

    本節(jié)將介紹如何調(diào)用關(guān)系型數(shù)據(jù)庫(kù)接口在本地搭建數(shù)據(jù)庫(kù),并讀寫(xiě)相應(yīng)的用戶(hù)數(shù)據(jù)。
    的頭像 發(fā)表于 05-11 10:27 ?653次閱讀
    HarmonyOS<b class='flag-5'>開(kāi)發(fā)</b>案例:【搭建關(guān)系型<b class='flag-5'>數(shù)據(jù)庫(kù)</b>】(4)

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)】Oracle數(shù)據(jù)庫(kù)ASM實(shí)例無(wú)法掛載的數(shù)據(jù)恢復(fù)案例

    oracle數(shù)據(jù)庫(kù)ASM磁盤(pán)組掉線(xiàn),ASM實(shí)例不能掛載。數(shù)據(jù)庫(kù)管理員嘗試修復(fù)數(shù)據(jù)庫(kù),但是沒(méi)有成功。
    的頭像 發(fā)表于 02-01 17:39 ?372次閱讀
    【<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)】Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>ASM實(shí)例無(wú)法掛載的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    IZYTRONIQ測(cè)試軟件介紹——管理測(cè)試設(shè)備數(shù)據(jù)庫(kù)

    一款完整的用于管理和記錄測(cè)試過(guò)程的數(shù)據(jù)庫(kù)軟件IZYTRONIQ
    的頭像 發(fā)表于 01-11 11:11 ?319次閱讀
    IZYTRONIQ<b class='flag-5'>測(cè)試</b>軟件介紹——管理<b class='flag-5'>測(cè)試</b>設(shè)備<b class='flag-5'>數(shù)據(jù)庫(kù)</b>

    無(wú)模式數(shù)據(jù)庫(kù)的利與弊

    數(shù)據(jù)管理需求日益多樣,無(wú)論是金融服務(wù)、游戲還是社交媒體行業(yè),都要求支持實(shí)時(shí)數(shù)據(jù)處理和快速迭代,無(wú)模式數(shù)據(jù)庫(kù)因其靈活性和易用性而逐漸成為開(kāi)發(fā)者的新選擇。那么,無(wú)模式
    的頭像 發(fā)表于 12-16 08:04 ?384次閱讀
    無(wú)模式<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的利與弊

    關(guān)于JSON數(shù)據(jù)庫(kù)

    如何理解JSON數(shù)據(jù)庫(kù)?作為NoSQL數(shù)據(jù)庫(kù)的一種類(lèi)型,JSON數(shù)據(jù)庫(kù)有哪些優(yōu)勢(shì)呢?JSON數(shù)據(jù)庫(kù)如何運(yùn)作,它為應(yīng)用程序開(kāi)發(fā)者帶來(lái)了哪些價(jià)值
    的頭像 發(fā)表于 12-06 13:46 ?713次閱讀
    關(guān)于JSON<b class='flag-5'>數(shù)據(jù)庫(kù)</b>

    oracle數(shù)據(jù)庫(kù)的基本操作

    Oracle數(shù)據(jù)庫(kù)是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用中。它具有強(qiáng)大的功能和靈活的配置選項(xiàng),可以滿(mǎn)足復(fù)雜的數(shù)據(jù)處理需求。本文將介紹Oracle數(shù)據(jù)庫(kù)的基本操作,
    的頭像 發(fā)表于 12-06 10:14 ?548次閱讀

    oracle數(shù)據(jù)庫(kù)的使用方法

    Oracle數(shù)據(jù)庫(kù)是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它由Oracle公司開(kāi)發(fā)和維護(hù)。它提供了安全、可靠和高性能的數(shù)據(jù)庫(kù)管理解決方案,被廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用和大型
    的頭像 發(fā)表于 12-06 10:10 ?1047次閱讀

    什么是JSON數(shù)據(jù)庫(kù)

    如何理解JSON數(shù)據(jù)庫(kù)?作為NoSQL數(shù)據(jù)庫(kù)的一種類(lèi)型,JSON數(shù)據(jù)庫(kù)有哪些優(yōu)勢(shì)呢?JSON數(shù)據(jù)庫(kù)如何運(yùn)作,它為應(yīng)用程序開(kāi)發(fā)者帶來(lái)了哪些價(jià)值
    的頭像 發(fā)表于 12-02 08:04 ?690次閱讀
    什么是JSON<b class='flag-5'>數(shù)據(jù)庫(kù)</b>

    NoSQL 數(shù)據(jù)庫(kù)如何選型

    什么是NoSQL數(shù)據(jù)庫(kù)?為什么要使用NoSQL數(shù)據(jù)庫(kù)?鍵值數(shù)據(jù)庫(kù)內(nèi)存鍵值數(shù)據(jù)庫(kù)文檔數(shù)據(jù)庫(kù)列式數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 11-26 08:05 ?359次閱讀
    NoSQL <b class='flag-5'>數(shù)據(jù)庫(kù)</b>如何選型

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQLserver數(shù)據(jù)庫(kù)被加密如何恢復(fù)數(shù)據(jù)

    一臺(tái)服務(wù)器上的SQLserver數(shù)據(jù)庫(kù)被勒索病毒加密,無(wú)法正常使用。該服務(wù)器上部署有多個(gè)SQLserver數(shù)據(jù)庫(kù),其中有2個(gè)數(shù)據(jù)庫(kù)及備份文件被加密,文件名被篡改,
    的頭像 發(fā)表于 11-23 14:42 ?794次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQLserver<b class='flag-5'>數(shù)據(jù)庫(kù)</b>被加密如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫(kù)介紹和數(shù)據(jù)恢復(fù)案例

    MongoDB數(shù)據(jù)庫(kù)是文檔數(shù)據(jù)存儲(chǔ)庫(kù),將文檔存儲(chǔ)在集合之中,不是像MySQL一樣的關(guān)系型數(shù)據(jù)庫(kù)。
    的頭像 發(fā)表于 11-08 15:04 ?779次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)——MongoDB<b class='flag-5'>數(shù)據(jù)庫(kù)</b>介紹和<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    Access數(shù)據(jù)庫(kù)案例:Labview數(shù)據(jù)存儲(chǔ)

     在數(shù)據(jù)庫(kù)領(lǐng)域,Access是由Microsoft開(kāi)發(fā)的一款基于Windows平臺(tái)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。它提供了一個(gè)使用簡(jiǎn)便的用戶(hù)界面,可用于創(chuàng)建、管理和查詢(xún)數(shù)據(jù)庫(kù)。
    發(fā)表于 10-26 16:23 ?9次下載

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)-oracle數(shù)據(jù)庫(kù)報(bào)錯(cuò)無(wú)法打開(kāi)的數(shù)據(jù)恢復(fù)案例

    oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)服務(wù)器,底層由12塊硬盤(pán)組成一組磁盤(pán)陣列,上層操作系統(tǒng)上運(yùn)行oracle數(shù)據(jù)庫(kù)。 oracle數(shù)據(jù)庫(kù)故障:
    的頭像 發(fā)表于 10-12 14:00 ?703次閱讀

    數(shù)據(jù)庫(kù)SQL的優(yōu)化

    數(shù)據(jù)庫(kù)執(zhí)行SQL都會(huì)先進(jìn)行語(yǔ)義解析,然后將SQL分成一步一步可執(zhí)行的計(jì)劃,然后逐步執(zhí)行。通過(guò)分析執(zhí)行計(jì)劃,我們可以清晰的看到數(shù)據(jù)庫(kù)執(zhí)行的操作,這對(duì)于數(shù)據(jù)庫(kù)SQL的優(yōu)化具有重大意義。 1
    的頭像 發(fā)表于 10-09 15:43 ?941次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b>SQL的優(yōu)化