診斷文件ODX(二)

診斷文件ODX(二)

來自專欄 汽車控制器(ECU)網路診斷技術交流

ODX為ECU及整車的診斷數據描述提供了標準的格式,提升了診斷數據在部門之間、主機廠與供應商之間的交換效率。ODX以XML格式為載體,無論是對人還是對機器,可讀性都很不錯。ODX的本質是ASAM定義的標準架構診斷儀(MVCI)的資料庫,其位置如下圖所示。

標準架構診斷儀(MVCI)

ODX文件在設計階段使用UML(Unified Modelling Language)語言,最終的實現形式是XML(Extensive Markup Language)語言。所以這篇文章主要分為三個部分,UML簡單介紹,XML簡單介紹,UML向XML映射的方式。這部分內容對計算機方向的人來說可以直接忽略了。

UML簡單介紹

UML用於面向對象的系統設計和模型建立,ODX文件也利用了面向對象中的繼承概念,所以用UML設計和描述ODX文件就成了一件自然而然的事情。UML通過圖形化的數據模型圖表簡化了對ODX文件中各種元素關係的理解。

UML中,最核心的元素是類(Class),這個概念與我們在學C++或JAVA的時候提到的類相同,它是對事物的抽象。類的每個實例被稱為對象(Object)。在UML中,類是用一個由三部分組成的方塊圖來表示的,第一部分是類名字,第二部分是類屬性(attribute),第三部分是類中實現的方法(Method),在ODX文件中沒有方法的概念,所以只需要使用前兩部分來描述ODX中的各種數據類型。

UML語言描述的一個類,Person,

上面這個圖定義了一個名為person的類,這個類有三個屬性,分別是名字,年齡,職業。

面向對象的程序語言最重要的一個特性就是繼承,繼承可以使得數據重用率大大提高。下圖是延續上圖的一個講解繼承的例子。

繼承關係

在上面這個圖中,我們重新定義了Schoolkid這個類,但是我們不需要重新為它定義所有與person類相同的屬性,只需要採用繼承關係,Schoolkid就自然包含了person所擁有的屬性,Schoolkid中重新定義了grade(年級)這個屬性。

除了繼承之外,在ODX中所使用的UML類的關係中,還有agrregation和composition比較重要。這兩種關係都是描述的某個類屬於另一個類的一部分這種關係,但它倆是有明顯區別的,在下圖中,實心菱形塊表示composition,空心菱形塊表示agrregation。

在composition關係中,被包含的類是完全屬於包含它的類的,一旦包含它的類被刪除,它也就沒有了,比如在上面的例子中,人沒了,腳也就沒了。

在agrregation關係中,被包含的類不完全依附於包含它的類,包含它的類被刪除,也不會影響這個被包含的類的存在,比如在上面的例子中,人沒了,衣服可以仍然存在。

對於學習ODX文件來說,了解UML的這些基本概念以及類的這幾種關係應該就足夠了。了解了這些之後,在後續使用UML描述ODX文件的時候,就容易理解了。

XML簡單介紹

XML就是普通的文本文件,用記事本就可以打開,只不過它定義了一套描述數據的語法。通俗地說,XML中的各種元素是一種倒樹形結構,以根元素開始,其他的元素都是這個根元素的子孫元素。如下圖所示,這個XML文件的根元素是用尖括弧包圍的EXAMPLE,它由開始標記<EXAMPLE>和結束標記</EXAMPLE>構成。EXAMPLE根元素下面有兩個名為<PERSON>的子元素,而這兩個子元素下面又有屬於自己的子元素。對XML了解到這種程度,就可以繼續理解ODX文件了,因為ODX文件最終的實現形式就是下圖中這個樣子。

XML文件示例

UML向XML映射的方式

語言解釋比較無力,通過下面兩張圖的例子就很好理解UML向XML映射的方式了。有以下幾條規則:

1.UML中的類映射為XML中的元素

2.如果UML中的類的屬性有《attr》標識,則映射為XML元素的屬性;如果UML中的類的屬性無《attr》標識,則映射為XML元素的子元素。

3.通過agrregation和composition聯繫的UML類映射為XML元素的子元素。

4.存在association關係的兩個UML類,在XML中以odxlink或snref的方式體現,這種關係比較複雜,在後續的文章中詳細講解。這種關係本質上是一個元素對另外一個元素的引用關係。

5.UML類圖中的繼承關係,在XML中以ID-REF的形式來表徵。因為XML本身只是文本文件,它並不知道什麼繼承不繼承,所以XML元素的繼承關係就是在子元素中加一個元素來標識這個子元素繼承自誰。而繼承關係則由XML解析器去分析了。

這篇文章的內容是了解ODX所必須的,否則後面的ODX講解將無法開展。時間匆忙,寫得不是那麼細緻,如有問題,歡迎留言交流討論。


推薦閱讀:

一汽夏利停產巨虧無人接盤:曾經的王者何以淪落至此?
有什麼關於汽車行業的書或者文獻或者其他可以了解汽車的構造及其他背景知識?
統一診斷服務 (Unified diagnostic services , UDS) (三)
要搞懂一個行業,必然要搞董其賺錢的邏輯;賽車行業存在的起源是什麼?
商品車PDI、庫存車管理流程及規定

TAG:汽車製造 | 汽車電子控制 | 新能源汽車 |