今天寫一篇關於CANdb++軟件創建用於解析CAN報文DBC文件流程,最近的項目中需要用到DBC文件,由於一直沒有使用過,不會搞就來百度百度探索一下,順便記錄一下調試過程。
1.首先了解一下什么是DBC文件?
DBC 全稱為Data Base CAN,DBC文件用於描述單個CAN網絡的通信中信息。其實就是根據CAN通訊協議制作一份用於解析CAN報文數據的文件,因為我們使用CAN設備抓取到的每一幀報文都是一串8個字節的十六進制數據(共64bit),
想要知道報文數據代表什么需要對着通訊協議去核對數據代表是什么。而DBC文件的作用就是幫助我們直接得到報文數據代表的含義,省去了查通訊協議這步驟,直接得到報文數據表示的是什么數據。
2.使用的軟件
Vector公司的CANdb++ editor
軟件下載鏈接:https://pan.baidu.com/s/1xdjvOiY2KTZNDf9rbeFIrA
提取碼:3ecg
軟件安裝之后,若打不開時將Cdbstat.dll文件復制到一下路徑中。
C:\Windows\SysWOW64
3.創建過程(創建一個簡單解析CAN協議DBC)
3.1打開CANdb++ Editor 軟件界面如下所示。
3.2點擊File -> Create database ->選擇J1939Template.dbc -> OK -> 輸入文件名稱,保存文件。
3.3創建好模板后顯示如下圖所示
重點關注兩個點即可,Messages,Signals,這兩個點即可入門了解DBC文件,若要深入探索DBC文件就需要了解全部Networks組件。
3.4創建Signals,右鍵Signals 選擇NEW 創建信號,如下圖所示。
解析一下下圖中創建Signals:
創建一個名字(Name):Max_CellVolt
字節長度(Lenght):16bit
字節順序(Byte Order):Motorola (字節順序有兩種模式:一種為Intel,另外一種為Motorola;區別為Intel 高字節(8bit)在后,低字節(8bit)在前;Motorola高字節(8bit)在前,低字節(8bit)在后。
例如:5330 數值用十六進制表示時,若用Motorola格式:14 D2;若用Intel格式:D2 14)
數值類型(Value Type):Unsigned 無符號 (數值類型有4種格式:Signed ,Unsigned,IEEE Float ,IEEE Double)
Unti,Factor,Int.val,Offset,Value Table這幾項可以先不用管。
最小值與最大值可以點擊 Calculate minimum and maximum 自行生成(這里的最大最小值是根據你選的字節長度和數值類型決定的)。
3.5什么是Signals?
Signals是一幀CAN報文中的數據代表的含義,例如下圖一中國標充電協議中BSD這幀報文(幀ID:0x181C56F4),這幀報文共7個字節,分別用來表示荷電狀態SOC,單體最低電壓,單體最高電壓,最低溫度,
最高溫度等5個信號;Signals就是指這5個信號。所以要解析這幀報文我們需要創建5個Signals,如下圖二所示,創建對應字節長度的信號。
圖一
圖二
3.6創建Messages ,右鍵Messages,選擇NEW,創建信息。如下圖所示。
輸入名字:BSD
類型為:擴展幀(CAN Extended)CAN報文幀類型分為兩種:CAN Standard(標准幀),CAN Extended(擴展幀),主要區別為幀ID的范圍。
ID:0x181C56F4
DLC:7 表示該幀報文字節數為7個字節(一幀報文最大字節數為8個)
3.7 創建好Messages后,需向Messages中添加
Signals?
Signals是一幀CAN報文中的數據代表的含義,例如下圖一中國標充電協議中BSD這幀報文(幀ID:0x181C56F4),這幀報文共7個字節,分別用來表示荷電狀態SOC,單體最低電壓,單體最高電壓,最低溫度,
最高溫度等5個信號;Signals就是指這5個信號。所以要解析這幀報文我們需要創建5個Signals,如下圖二所示,創建對應字節長度的信號。
圖一
圖二
3.6創建Messages ,右鍵Messages,選擇NEW,創建信息。如下圖所示。
輸入名字:BSD
類型為:擴展幀(CAN Extended)CAN報文幀類型分為兩種:CAN Standard(標准幀),CAN Extended(擴展幀),主要區別為幀ID的范圍。
ID:0x181C56F4
DLC:7 表示該幀報文字節數為7個字節(一幀報文最大字節數為8個)
3.7 創建好Messages后,需向Messages中添加Signals;在Messages "BSD"中選擇Signals,然后點擊Add.
3.8點擊創建好的5個Signals,逐一添加,或者全選同時添加。
3.9添加好信號后,查看Layout選項中信號對應的字節位置是否與協議一樣,此幀協議為國標充電協議中BSD這幀報文(幀ID:0x181C56F4),上面有圖提示到,可查看上圖。
4.0該幀報文共7個字節(0-6),第1字節:SOC;第2-3字節:Max_CellVolt;第4-5字節:Min_CellVolt;第6字節:Max_Temp;第7字節:Min_Temp;
與上面提示的國標充電協議BSD報文表示信號一致。
4.1保存文件,最后效果如下圖所示。
4.2測試
使用CANPro軟件,導入DBC文件,接收CAN報文,分析如下。
4.3總結
a.首先要明白DBC文件是有什么作用的,然后知道DBC文件可以由什么軟件創建。
b.其次分析你使用的協議中那些報文是需要解析。
c.最后使用軟件制作DBC。
d.關於此次使用的CANdb++這個軟件網上有許多文章介紹,想要詳細了解還得自己親自去摸索摸索,俗話說“實踐是檢驗真理的唯一標准”。