描述文件
dbc文件:Database CAN,CAN協議的描述文件。文件中關鍵字含義如下圖:
dbc文件結構
dbc文件格式解析
1.版本與新符號
version: 版本信息可以為空,也可由用戶自定義
new symbol: 隨dbc文件自動生成
2.波特率定義 (必須項)
BS_:[baudrate:BTR1, BTR2]
"BS_":CAN網絡的波特率,必須存在,[]內容可以省略
3.網絡節點定義 (必須項)
BU_:Nodename1 Nodename2 Nodename3...
"BU_":表示網絡節點,由用戶自定義,需保證節點命名的唯一性
例:
BU_:AVNT ACU HUD ——> 定義了AVNT、ACU、HUD三個網絡節點
4.報文幀定義
BO_ MessageId(10進制) MessageName: MessagSize Transmitter
"BO_":關鍵字,表示報文
"MessageId":報文ID,以十進制表示
"MessageName": 報文名字
"MessagSize":報文數據域字節數,為'無符號整型數據'
"Transmitter": 發送該報文的網絡節點,無指定發送節點,則設置為'Vector_XXX'
BO_ 1549 PosLocalD: 4 IFS2000: 表示由IFS2000節點發送,數據域長度為4字節,ID為1549(0x60d),名字為PosLocalD的報文
5.信號定義
SG_SignalName: StartBit|SignalSize@ByteOrder ValueType (Factor, Offset) [Min|Max] Unit Receiver
"SG_":關鍵字,表示信號
"Signal Name": 信號名稱
"StartBit":起始位
"SignalSize":信號長度,單位為:bit
"ByteOrder":字節順序,0 ——> Motorola格式,1 ——> Inter格式
"valueType": 信號的數值類型,'+' ——> '無符號數', '-' ——> '有符號數'
"Factor":表示因子, "Offset":偏移量
物理值 = 原始值 * Factor + Offset
"Min|Max": 信號的最小值和最大值,為double類型
"Unit": 該信號的單位,為字符串類型
"Receiver": 信號的接收節點,無指定節點,則設置為'Vector_XXX'
例:
SG_ PosLocalDown : 0|32@1- (0.001,0) [-214748.3648|214748.3647] "m" Vector__XXX
表示名為'PosLocalDown'的信號起始位為第0位,信號長度為32位,Inter格式,數值類型為有符號類型數
因子為0.001,偏移量為0,信號取值范圍為-214748.3648到214748.3647,信號單位為:'m',無指定接收節點
6.注解部分
CM_Object MessageId/NodeName "Comment"
"cm_": 關鍵字,表示注解信息
"Object": 注解對象類型,可以是節點"BU_", 報文"BO_", 信號"SG_"
"MessageId/NodeName": 注解對象,若對象類型為信號或者報文,則為報文的ID(10進制);若對象為節點,則為節點的名稱
"Comment": 注解的文本
例:
"CM_ SG_ 996 HUD_HeightLv “Control hud height level":
表示對ID為996這條報文下的'HUD_HeightLv'信號進行注解,內容為'Control hud height level'
7.屬性定義
BA_DEF_Object AttributeName ValueType Min Max;
BA_DEF_DEF_ AttributeName DefaultValue
"BA_DEF_":關鍵字,表示屬性定義
"Object": 對象,可以是 節點'BU_',報文'BO_',信號'SG_'
"AttributeName":屬性名
"ValueType:":數據類型,有'整型'、'字符串'、'浮點型'、'枚舉型'
"Min/Max":屬性值的取值范圍
"BA_DEF_DEF_":關鍵字,表示定義屬性的初始值
"DefaultValue":屬性的初始值
例:
BA_DEF_ SG_ “MyTry” INT 0 11、 BA_DEF_DEF_ “MyTry” 0:
表示對信號的'MyTry'屬性進行定義,屬性的數據類型為整型,取值范圍為0到11,初始值為0
8.數值表部分
VAL_ MessageId SignalName N "DefineN" ....0 "Define0"
"VAL_":關鍵字,數值表定義
"MessageId":報文ID(十進制)
"SignalName":信號名
N "DefineN" ....0 "Define0":表示定義的數值表內容
例:
VAL_ 996 HUD_OffSt 1 “Active” 0 “Not Active”:
表示ID為996的報文下名為"HUD_OffSt"信號進行數值表定義,"Active"取代'1',"Not Active"取代'0'