DBC文件小結


Vector的DBC文件描述了CAN網絡的通信規范,通過定義signal可以表示CAN幀中的各個物理信號的含義。通過CANdb++ Editor軟件可以創建和修改DBC文件,一般監控或控制CAN網絡內的節點,不需要解析DBC文件里的全部信息,因為有些信息是給CANoe等軟件使用的,我們自己編寫軟件,只利用vector的DBC文件中的部分信息。一個完整的DBC文件結構如下圖:

 

 

35行之前的部分可以忽略,36行定義的的網絡節點單元,多個節點之間用空格分開。41、43、47是定義消息,消息結構如下:

BO_ message_id message_name : message_size transmitter {signal}

signal是可選項。45、46、48、49行定義的是信號(Signal),信號的結構如下:

SG_ signal_name multiplexer_indicator : start_bit | signal_size @ byte_order value_type ( factor , offset ) [ minimum | maximum ] unit receiver {, receiver}

其中byte_order分為motorola和intel兩種格式,motorola對應0,intel對應1。這兩種格式是區別如下:

如果在同一個字節內,則沒有區別,如果跨越多個字節則有區別,motorola格式是高位(msb)在低字節(說明:CAN消息的字節排列Byte0 Byte1 … Byte7,Byte0是低字節),intel格式是高位(msb)在高字節。

Intel格式

 

第一字節的bit0對應的是lsb(第一行的紅色箭頭),第二字節的bit14對應的是msb(第二行的紅色箭頭)。起始bit是lsb對應的bit0。

Motorola格式

 

第二字節的bit9對應的是lsb(第二行的紅色箭頭),第一字節的bit7對應的是msb(第一行的紅色箭頭)。起始bit是lsb對應的bit9。當然也可以修改起始位置,例如將起始位置改為bit8,如下圖:

 

 

55~58行定義的是信號的選項值,其結構如下:

'VAL_' message_id signal_name { value_description } ';'

注意,行結尾有一個分號。其中value_description的定義如下:

value_description = double char_string ;

 

以上是需要解析的部分,注意字符部分都限制在32字節內,不太方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM