1. 程式人生 > 其它 >車載測試系列:CANoe中如何建立dbc檔案

車載測試系列:CANoe中如何建立dbc檔案

用CANoe讀取訊號時,需要載入DBC檔案。訊號是報文的主要組成部分,通過DBC資料庫,可以在測試過程中進行訊號解析。

CANoe的Tools選單下開啟CANdb++:

 

一、CANdb++左側網路拓撲區域

 

二、CANdb++右側物件詳細資訊

 

三、主要資料物件詳解

3.1 Network 網路

眾多電子節點劃分為不同的功能區塊,區塊內的節點通過CAN匯流排相互連線形成獨立的功能子網(如動力子網PTCAN、車身子網BodyCAN等),中央閘道器(GateWay)將不同的功能子網相連為跨網通訊提供支援,不同子網上的節點還可以通過單獨連線建立私有通訊,某些節點(如BCM)還會通過LIN匯流排建立下屬網路。這裡功能子網的通訊就需要用DBC來描述,並且每一個功能子網都有自己的DBC檔案。

Networks從網路的視角來觀察總線上存在的節點、報文及訊號,展開Networks下的PTCAN網路可以看到下面包括Tx Messages、Signals和本網路上的多個節點,如下圖所示:

 

3.2 Network nodes 網路節點

與Networks不同,Nodes部分從單個節點的視角觀察與節點相關的匯流排報文及訊號,以VBU節點為例,展開後下麵包含Tx Messages、Rx Messages、Mapped Tx Signals以及Mapped Rx Signals,見下圖所示:

 

3.3 Messages 報文

Message是CAN總線上傳輸資訊的最小單位,一條Message最大包含8個Byte的資料(CAN FD則最大支援64個Byte的資料),Messages從用途角度可以分為三大類:應用(APP)報文、網路(NM)報文和診斷(DIAG)報文。通過點選Node下的Tx Messages或Rx Messages,可以檢視報文屬性:

 

 

3.4 Signals 訊號

Signal是Message裡最小的元素單位,通過在某條報文上右擊選擇Edit Message開啟報文編輯視窗,然後選擇Layout選項卡可以檢視當前報文的訊號佈局:

 

  • Layout中縱向表示位元組順序,從上到下為Byte0~Byte7,橫向表示位元組內的bit位順序,從左至右為Bit7~Bit0
  • Signal在Message裡的位置由Byte Order、Startbit和Length三個引數決定
  • Byte Order主要用於跨多個位元組的訊號,例如上圖中橫跨Byte1和Byte2的粉色訊號,如果選擇Motorola格式,則Byte1為訊號的高bit位,Byte2為低bit位,選擇Intel的話正好相反;
  • Startbit用於確定訊號的起始位置,通常要麼為訊號的最高bit位(msb)要麼為最低bit位(lsb);length決定了訊號的實際有效長度。
  • 報文裡的訊號數量是可變的,對於一條8個Byte的報文,其訊號數量最小為1個,最大為64個。

3.5 ECUs 控制單元: 包含每個ECU的Network Node和Environment Variables

3.6 Environment Variable 環境變數

四、dbc檔案的建立過程可分為以下幾個部分:

1、新建一個CAN資料庫檔案

2、建立訊號要用到的數值表Value Tables

3、建立訊號Signals,關聯該訊號的數值表

4、建立報文Messages

5、建立網路節點Network nodes

6、將訊號、報文及網路節點進行關聯連結

7、建立或匯入自定義屬性,並進行修改

8、一致性檢查

Ps:關於上面提到的第2點到第5點的資訊,一般車廠都會通過通訊矩陣更新給出。我們按照通訊矩陣中的資訊進行訊號、報文、網路節點等資訊的建立關聯。

接下來以如下一條報文為例,介紹在CANdb++ Editor工具下建立編輯dbc檔案的詳細步驟。

 

分析:其ID是0x3E4;報文中包含了3個訊號值(要注意每個訊號值其數值的代表意義,用於做該訊號的數值表),是由HUD這個網路節點發送的,然後由ACU、AVNT這兩個網路節點接收。也就是說,在這個示例中,需要新建3個訊號、1條報文、3個網路節點,並對其進行連結關聯。

4.1、新建一個CAN資料庫檔案

開啟CANdb++ Editor軟體,點選工具欄”File”下的”Create Database”,此時介面如圖1所示。按需求選擇模板,點選ok,即完成dbc資料庫檔案的建立了。

圖1

4.2、建立訊號要用到的數值表Value Tables

數值表的建立,其實是用符號識別符號來表示訊號值或環境變數值,避免訊號值意義不明確。具體操作如下:

點選工具欄”View”下的”Value Tables”,此時介面如圖4.2.1所示。右鍵空白部分,選擇”New”進行新建。此時介面如圖4.2.2所示,完成數值表名字及數值定義後,點選確定即完成該訊號數值表的建立了,依次再將其他的兩個訊號的數值表完成建立。此時再看”Value Tables”的介面已經如圖4.2.3所示。

4.2.1

4.2.2

4.2.3

4.3 建立訊號Signals,關聯該訊號的數值表

如圖4.3.1所示,右擊”Signals”選擇”New”進行訊號的新建,此時介面如圖4.3.2所示。根據通訊矩陣中對於該訊號的定義進行設定,並關聯上上一步建立的該訊號的數值表,點選確定即完成了訊號的建立(其他列的資訊我們這裡先不用進行設定),依次完成其他兩個訊號的建立工作(可以直接New新建,也可以前面建好的訊號為模板選擇Copy/Paste,再雙擊進行修改完成建立)。完成三個訊號建立後的介面如圖4.3.3所示

4.3.1

4.3.2

4.3.3

4.4 建立報文Messages

右擊”Message”,選擇”New”,此時設定介面如圖4.4.1所示,按通訊矩陣定義的報文資訊進行設定,點選確定即完成當前報文的建立工作。在建立其他報文時,可以以這個為模板進行Copy操作再進行修改;也可以新New建立。

4.4.1

4.5 建立網路節點Network nodes

右擊”Network nodes”,選擇”New”,此時的設定介面如圖4.5.1所示,這裡只需輸入建立的網路節點名字進行新建操作就行。依次完成另外兩個接收節點的建立。完成後的介面如圖4.5.2所示

4.5.1

4.5.2

4.6 將訊號、報文及網路節點進行關聯連結

前面已經完成了訊號、報文、網路節點的建立工作。接下來介紹如何將他們進行連結關聯。

4.6.1、訊號與報文的關聯工作

4.6.1.1 方法一:滑鼠直接拖放

(1)滑鼠點選”Message”下要進行關聯操作的報文;

(2)將要關聯到該報文的訊號直接拖拽到右側的空白區,或者拖拽到該報文位置(即下圖4.6.1.1示例中的”HUD_1_B(0x3E4)的位置”)

4.6.1.1

4.6.1.2 方法二:在該報文的”Signals”配置下進行新增關聯

(1)、雙擊“Message”下要進行關聯工作的報文,在彈出的設定介面下切換到”Signals”設定項;

(2)、點選”Add”,選擇要關聯到該報文的訊號,點選OK即完成了關聯工作(可以一次新增多個關聯的訊號)。如下圖4.6.1.2所示

4.6.1.2

Ps:在完成報文與訊號的關聯後,此時還需設定下訊號在報文的起始位;

(1)雙擊報文下的訊號值,進入”Definition”設定介面;

(2)設定該訊號的起始位。如下:

 

4.6.2、報文與網路節點的關聯工作

示例中的報文,其傳送節點是HUD,接收節點是ACU和AVNT。其關聯工作步驟如下:

4.6.2.1 報文與傳送節點的關聯

跟前面介紹的訊號與報文的關聯一樣,有兩種方法:

(1)方法一:直接將報文拖拽到要關聯的節點(注意直接拖拽到節點的操作,預設是當做該節點的傳送報文的);

(2)方法二:雙擊要進行關聯工作的節點,進入設定介面,在”Tx Messages”介面下的點選”Add”進行報文新增工作。如下圖4.6.2.1所示

4.6.2.1

4.6.2.2 報文與接收節點的關聯

若當前報文是想作為要關聯節點的接收報文,操作如下:

雙擊要進行關聯工作的節點,進入設定介面,在”MappedRxSig”介面下的點選”Add”進行報文新增工作;如下圖4.6.2.2所示(注意作為節點接收報文的不能通過直接拖拽進行關聯)。

4.6.2.2

4.7建立或匯入自定義屬性,並進行修改

4.7.1 建立自定義屬性

在”View”下點選”Attribute Definitions”,右擊選擇New,按需要可以進行對報文、訊號、節點、環境變數等進行屬性建立。此時介面如下圖4.7.1所示:

 

4.7.2 屬性的匯入操作

Attribute Definitions中的屬性也可以通過從其他已有的dbc檔案中進行匯入。操作如下:在File中選擇Import Attribute Definitions,選擇要匯入的dbc檔案,即可將該dbc中的屬性定義匯入到我們現在的dbc檔案中來。

 

4.7.3 屬性的修改操作

根據上面的步驟完成了屬性的自定義或匯入工作;此時再雙擊開啟訊號、報文、或者節點,在其Attributes項下可以看到前面定義/匯入的屬性及其值;此時可根據通訊矩陣的定義對其進行修改設定。

例如圖4.7.3.1是對報文屬性的修改;圖4.7.3.2是對訊號屬性的修改操作;如下:

4.7.3.1

4.7.3.2

4.8 一致性檢查

經過前面的幾個步驟已經完成資料庫檔案的建立了。但還需要通過一致性檢查來確保資料庫檔案中的物件及內部關係的一致性。操作方法如下:

在”File”中選擇”Consistency Check”,此時會在一致性檢查視窗中輸出檢查結果。如下:會有狀態資訊及對應的說明,以供檢查出錯/警告報警的原因。此時介面如下圖4.8.1所示: