【圖解CDD】利用CANdelaStudio編輯診斷描述CDD文件帶你入門到精通

 

CANdela診斷描述(CANdela Diagnostic Descriptions,CDD)文件是診斷數據的數據庫,與用於CAN消息和信號描述文件DBC(Data Base CAN)文件相當。CDD文件在Vector的“CANdelaStudio”工具創建,可以在CANoe/CANalyzer中用於診斷服務和參數的符號訪問和解釋。

下面來介紹一下,根據診斷需求規範利用“CANdelaStudio”工具來編輯診斷數據庫CDD文件基本操作方法。

目錄

一、CANdelaStudio診斷規範

二、CANdelaStudio的框架以及其中的診斷數據

三、服務結構

四、創建一個新的診斷數據庫文件

五、在“CANdelaStudio”工具中通信參數配置

六、在“CANdelaStudio”工具中新建一個DID

七、DID如何關聯Data Type

八、會話模式狀態機的介紹

九、安全訪問狀態機的介紹

十、CANdelaStudio中數據的複用

十一、CANdelaStudio其它特性

十二、結尾


 

一、CANdelaStudio診斷規範

汽車電子範疇內,經典的V-L模型:虛線上方表示OEM主機廠,虛線下發表示供應商。主機廠首先提出診斷需求規範,供應商基於診斷需求規範做功能實現,功能實現完後,會進行集成測試,測試的目的是驗證功能實現是否是按照需求規範進行實現的。L模型在主機廠方,後有一些研發。在研發階段,量產階段,以及售後階段的不同階段,使用的診斷數據是一致的。

 

診斷數據在整個流程是怎樣的體現呢?

根據V模型有一個清晰的認知,首先,用“CANdelaStudio”工具基於診斷需求規範來編輯生成一個CDD數據庫;CDD數據庫生成後,供應商會進行功能實現。

這時候會有兩個協議棧給大家介紹一下,這是Vector提供的兩個解決方案,一個是Non-Autosar體系,需要將診斷數據庫加載到配置工具中,會生成一個CANdesc協議棧;另一個是Autosar體系協議棧---MICROSAR,將診斷數據庫CDD加載達芬奇工具中,配置生成MICROSAR的協議棧。以代碼來實現功能之後,會做一個集成測試,來驗證一下是否是按照需求規範進行功能實現的。這個時候會有兩個範疇進行測試,一種是手動測試,比如說將診斷數據庫加載到Indigo,CANoe,CANape等上位機工具中做一個手動測試;另一種是自動測試,將診斷數據庫加載到CANoe.Diva工具中,會自動生成診斷測試用例,並在CANoe中自動運行。

 

基於CDDT用“CANdelaStudio”工具,來新生成編輯一個CDD數據庫,那CDDT和CDD數據庫有什麼區別呢?

首先,CDDT中的T代表Template(模板),這個模板是基於整車級的需求規範來生成的,對應的是一個宏觀的概念,

針對整車,具體到對通信參數這塊,在CDDT中只是定義了一個接口,但不會量化這些接口有多少;對CDD而言,基於這個通信接口量化這個數值(比如說:量化診斷ID是多少)。CDDT是宏觀的,針對整車級的,CDD是微觀的,針對單個ECU。

這兒舉了一個直觀的例子,比如說對於DID,在CDDT中定義DID所佔的兩個Byte字節,而不定義這個DID具體是多少;而在CDD中,會定義這個DID,因爲CDD是針對單個ECU的,會基於單個ECU的診斷需求規範,編輯所要使用的DID,量化這個DID。DID:0x0001以及這個DID所關聯的DataType做一個具體的編輯。這就是CDDT和CDD的區別。

 

市面上,對“CANdelaStudio”工具,分不同的License模式,常見的有以下幾種:

首先,大家在安裝CANoe,CANape,CANalyzer的時候,會附帶安裝“CANdelaStudio”工具,但是它是一個View模式(只能查看,查看有哪些服務,哪些DID,哪些DTC,但不能對這個診斷數據庫進行編輯和更改,也不能提供保存);

對於Standard模式,基於模板新建一個診斷數據庫,更改診斷數據庫的內容(更改DID,DTC這些);

對於Pro模式,支持多語言的;

對於Admin模式,相比Standard模式,可以對CDDT進行編輯和更改,這些在Standard模式下是無法實現的。

 

新建一個診斷數據庫做一個簡單的介紹。首先,用鼠標選一個“New”按鈕,它自動導航一個CDDT的路徑,基於對應CDD模板,來編輯數據庫的,保存完後,就是新建了一個診斷數據庫CDD文件了。如果需要對一個CDD文件進行編輯更改時,選擇“Open”按鈕,打開一個CDD文件,進行更改,保存後,完成對CDD文件的編輯。

 

二、CANdelaStudio的框架以及其中的診斷數據

首先,“CANdelaStudio”工具在數據庫中一個總分結構,在總的上面是一個“Variant”,分“Base Variant”和“ECU Variant”,“Variant”這個概念可以舉一個例子,每一款車有高中低不同配置,在編輯數據庫時,要分別基於高/中/低檔車編輯這個數據庫,這個時候會有3個診斷數據庫CDD文件,但這是不方便進行版本管控的。這個時候會提有一個解決方法,可以將高檔車的需求規範編輯一個“Base Variant”這樣一個診斷數據庫,在編輯中/低檔車時,只是對高檔車裏面的內容進行刪除。基於“Base Variant”新建一個“ECU Variant”,就可以實現一個數據庫文件裏包含多個不同車型的診斷需求數據的管理,這是“Variant”概念。

 

 

每個“Variant”裏面會有一個“Class”類,可以從需求規範選擇支持哪些類,這些類有不同Session,對應10服務,Identification對應DID…類的名稱是固定的。可以按照大家使用習慣,在模板裏面對這些類的名稱進行更改,方便在使用時,能夠快速找到。

 

“Class類”下面有“Instance”,對於“Instance”這個條例,要按照格式和使用習慣分兩種形式:一種是Subfunction;另一種是DID。以“Subfunction”舉一個Sessions例子,對應10服務裏面,它的子功能分常見的0x01,0x02,0x03,在診斷數據庫中,如果用“CANdelaStudio”工具編輯0x01子功能,你可以看到如圖所示的框架結構,對於請求就是10 01 ;對於肯定響應的話就是50 01+對應的參數;對於否定響應,就是7F 10+NRC。

 

對於“DID”而言,如果支持2E服務會勾選一下,以及請求格式,肯定響應格式,否定響應格式,都會在這個工具裏面體現。

所以說這個工具是一個總分結構,從上往下,依次是“Variant”à“Class”à“Instance”(Instance又分Subfunction和DID),這是一個整體的總分結構,來對數據庫進行編輯和管理。

 

三、服務結構

而在“CANdelaStudio”工具中,服務的格式是怎樣體現?

首先在CDDT模板中,定義一個主體框架:10服務+Subfunction,其中Subfunction不具體量化,具體有哪些子功能在診斷數據庫CDD文件裏進行編輯的。具體到某個具體的ECU診斷數據庫時,來定義這個ECU會用到哪些子功能,以及子功能裏面包含的時間參數(P2和P2*),都是在某個具體的ECU裏面進行編輯的。

 

在“CANdelaStudio”工具裏面服務的體現,如圖所示,對於請求,它是SID+Type(可變的Subfunction);肯定響應(SID+0x40)+ Subfunction+對應參數;否定響應7F+10+NRC。這個就是在模板中,診斷數據框架以及結構的體現。

 

對應的服務都會有否定響應,否定響應裏面會告知服務支持哪些NRC,支持的NRC是在診斷需求規範裏體現和定義的,而在“CANdelaStudio”工具裏面編輯這個服務支持哪些NRC,界面的下面會有一些選項,關聯一些值。

 

這些值會在“Available Negative Response”裏面列出UDS協議所有支持的NRC,都會做一個體現。當從上面那個基於需求規範定義的服務,支持的NRC,在上面選擇一下,做一個勾選。

 

四、創建一個新的診斷數據庫文件

首先打開“CANdelaStudio”工具,選擇“New”,接着自動導航,導航的路徑就是CDDT,描述的意思是,新建一個診斷數據庫CDD的時候,會基於一個診斷數據庫模板CDDT來進行新建,這個模板就是前文說的“整車級的模板”,選擇好基於的模板後,單擊“Open”,這個時候可以對ECU進行命名(比如說BMS,EPS…),命名完後,選擇“revision history”,這個時候以工程形式體現,告訴你診斷數據庫編輯作者,聯繫方式,郵箱,公司部門等等,以及一些歷史的變更記錄

 

五、在“CANdelaStudio”工具中通信參數配置

新建完一個診斷數據庫後,接下來需要對診斷數據庫中的通信參數進行編輯,因爲是基於一個具體的ECU,這個時候基於診斷需求規範編輯它的通信參數。看這樣一個例子:

編輯一個請求ID、響應ID、波特率,這樣就完成了通信參數的編輯。這僅是一個舉例,還有一些時間參數(比如說P2,P2*),都可以在這個表“Supported Interfaces”中編輯

 

六、在“CANdelaStudio”工具中新建一個DID

對於DID,它的一些格式在這兒直觀的看一下,首先是兩個Byte的DID,DID後面可能會跟一下Parameters參數,而在UDS裏面有哪些服務要對DID進行使用,如下圖。

22服務讀一些DID信息;

2E服務寫DID;

2F服務I/O信號的管控;

31服務routing;

以及24和2A服務,這些都要使用DID。

 

在“CANdelaStudio”工具中怎樣編輯DID呢?

選擇一個“New DID”後,對這個DID基於診斷需求規範,編輯它的名稱,編輯它的ID號,最後還要進行Data Type關聯。因爲DID的作用,解析報文實際物理意義,所以要關聯一個Data Type進行解析。

“Data Type”在界面左側選中DIDs,並在右側進行選擇編輯。

 

七、DID如何關聯Data Type

常見的Data Type,有分以下幾種:Raw Value;Text Table;Linear。根據診斷需求規範裏定義的實際的診斷數據內容,來選擇不同的Data Type。像Linear是線性的;Text Table是枚舉型的,列舉其所有的可能性,就是說一般會定義一些開關量;Raw Value解釋一些軟硬件版本號。

編輯完Data type後,要和DID進行關聯。

 

 

每一個診斷數據裏面的值,不一定都是合法可用的,類似00,FF這些非法值在診斷數據庫裏怎樣編輯呢?

如圖在定義Data type時,選擇Invalid Values,在裏面定義對應非法值的類型,編輯完後,完成對整個數據庫的編輯。

 

八、會話模式狀態機的介紹

會話模式,參照這個圖,對於診斷整個功能實現是這樣一個框架和結構,外部Tester發送請求,以直接通信方式發送給ECU,ECU收到這個請求後,基於這個請求給與響應(否定響應,肯定響應),這樣一個功能實現的邏輯,基於裏面一個診斷服務。對於診斷服務的話,在UDS協議裏面定義了多種診斷服務。那怎樣區分這些診斷服務執行權限呢?就是定義了會話模式狀態機,來賦予不同服務執行權限。

這裏具了幾個常見的例子:

22服務可以在默認會話模式進行

22/2E/2F服務可以在擴展會話模式進行

22/2E服務可以在編程會話模式進行

 

也就是通過不同的會話模式賦予不同服務的執行權限

 

這個是UDS裏面很經典的一個會話模式狀態機轉換示意圖,對於任何一個ECU,一上電處於默認回話模式,默認會話間可以自動跳轉(默認回話跳到默認會話,如發送10 01),當默認會話模式向非默認會話模式跳轉時,發送10 +SF(如10 02或者10 03)。

這時引入一個時間參數S3 Time,表示保持在當前會話模式的一個最長時間,也就是如果ECU處在非默認會話模式,處於該模式期間S3 Time時間內沒有收到任何請求,ECU會自動從非默認會話跳轉至默認會話,相當於一個自我保護機制。

UDS裏定義了一個比較有趣的3E服務,S3 Time時間內沒有收到任何診斷請求,但是又想ECU保持在當前會話模式,這個時候會週期性的發送3E服務,告訴ECU診斷儀在線,不要實現會話模式跳轉,3E服務是週期性發送的,來時刻刷新S3 Time值。

 

在“CANdelaStudio”工具裏如何新建一個會話模式?

選擇Session後,鼠標右鍵,選擇New Session,接着對這個Session進行命名、編輯ID號。編輯完後,選擇Next,生成新的會話模式。在StatesàState Groups中也會相應的更新。

編輯完會話模式後,怎樣對診斷數據庫服務裏面的會話模式進行管控呢?就是說怎樣區分這個服務在哪些會話模式執行,哪些會話模式不執行,如何來編輯。

 

這個圖給大家做一個解答,在“CANdelaStudio”工具裏找到StatesàDependencies,接着選擇aditude,顯示出來一個編輯框,裏面定義診斷數據庫所有的診斷服務。這個基於診斷需求規範定義的服務,是在哪個會話模式下執行的,支持的話表示“yes”,在該會話模式下不能支持的表示“No”,編輯完後,就是完成會話模式管控和編輯。

大家可能有疑問,除了“yes”和“No”,爲什麼會有些Default,Programing,Extended,這些表示發了對應請求服務後,會對會話模式進行影響。

右邊是一個狀態轉換示意圖。如果你是剛安裝“CANdelaStudio”工具,可能會提示你,沒有顯示這樣一個示意圖,這個時候基於上面的提示,找到那個網站,下載插件,進行安裝,會顯示該會話切換示意圖。

 

九、安全訪問狀態機的介紹

爲什麼會有安全訪問這個概念呢?

它其實是ECU對自身的一個保護。需要進行解鎖,只有一部分人(這些部分人具備解鎖功能和解鎖算法)有這個權限,所以會在需求規範裏定義一些安全訪問狀態機,進行功能實現。

 

在診斷數據庫中怎樣進行安全訪問編輯呢?

同樣的這是診斷數據庫所有的服務,如果實在不鎖定狀態下執行,那就選擇“Yes”;如果實在解鎖狀態下執行,那就選擇“Yes”。其中的Locked表示這些服務對ECU有狀態影響。舉一個直觀例子解釋一下,如果ECU進行會話模式切換,切換前ECU處於解鎖狀態下,切換後100%處於鎖定狀態;而對11服務在進行復位前處於解鎖狀態,復位後100%處於鎖定狀態;

同樣對比右側是一個安全訪問的示意圖。

 

十、CANdelaStudio中數據的複用

首先,給大家介紹一下,哪些內容是可以複用的(複製粘貼):data Type,data objects,Instances,Variants等等都可以進行粘貼複製,來完成複用,從CDD1到CDD2不用重新編輯。

 

十一、CANdelaStudio其它特性

另外一種,給大家介紹一下“CANdelaStudio”支持不同格式的一個轉換。首先能支持ODX,A2L,CSV,Arxml輸入;也能支持ODX(2.0.1;2.1.0;2.2.0);用戶自定義的診斷數據庫格式(福特的mdx,通用的Sgm);網頁版;CSV;Arxml的導出。

 

 

 “CANdelaStudio”自帶了一個對比功能。部門裏面其它工程師可能也對這個診斷數據庫進行了更改,想查詢一下更改的內容,選擇“Select as Left Side for Compare”,再選擇“Compare to”First Delivery”對比一下,會告訴你對比後的結果(誰進行的更改,以及更改的內容)。

 

 

十二、結尾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章