在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DBC文件結構深度解析

汽車ECU開發 ? 來源:csdn ? 2024-04-30 12:50 ? 次閱讀
1. DBC文件的構成

Bit_timing 波特率定義,必須部分,但通常為空nodes 定義網絡節點messages 定義消息和信號

2. 關鍵字

VERSION 版本

VERSION:

NS_ 為new symbol的縮寫,后面緊跟著一堆ns,一般是創建dbc時自動生成,不用太關心

NS_:

BS_ 定義CAN網絡的波特率

BS_: [baudrate:BTR1,BTR2]

BU_ 網絡節點

BU_: Nodename1 Nodename2 Nodename3 ……

BO_ 報文

BO_: message_id message_name : message_size transmitter {signal}

SG_ 信號

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

CM_ 對報文/信號的注解

CM_: Object MessageId/NodeName “Comment”

BA_DEF_ 對報文/信號/節點等的屬性定義

BA_DEF: _ Object AttributeName ValueType Min Max;

BA_DEF_ DEF_ 對報文/信號/節點等的屬性初始值定義

BA_DEF_DEF_: AttributeName DefaultValue;

BA_ 對報文/信號/節點等的屬性設置值定義

BA_: AttributeName projectValue

VAL_ 數值表定義

VAL_: MessageId SignalName N “DefineN” …… 0 “Define0”

VAL_TABLE_ 全局信號值表,用來對信號值解碼

VAL_TABLE_: name value “value_description” …0 “value_description”

EV_ 環境變量

EV_:

3.本文出現的符號

‘ | ’ ——可選擇

‘ ; ’——結束定義

[。..]——內容可選(0或1次)

{。..}——內容重復(0或多次)

(。..)——注釋

unsigned_integer:無符號整型

signed_integer:有符號整型

double:雙精度小數

char_string:字符串

C_identifier:C語言變量命名

4. 波特率的結構(BS_)

BS_: [baudrate:BTR1,BTR2];

其中BS_為關鍵字,用于定義CAN網絡的波特率;[ ]內容表示為可選部分,可以省略(如下圖例子中即把該部分省略了);但關鍵字”BS_:”必須存在,省略則會出錯。《DBC File Format Document》規范中明確提醒,必須保留BS_: 標簽

5. 網絡節點的結構(BU_)

BU_: Nodename1 Nodename2 Nodename3 ……

BU_: GW ESC SAS ACU FRS FVCM

解釋:

BU_ 為關鍵字,表示網絡節點

Nodename1、Nodename2 網絡節點名字,由用戶自己定義;

注意事項:需要保證節點命名的唯一性

如示例中的BU_: VCU_Vehicle_Control_Unit MotorCtrol SCU PC Vector__XXX :

表示定義了:

VCU_Vehicle_Control_Unit

MotorCtrol

SCU

PC

Vector__XXX這五個網絡節點

其中:標識為Vector__XXX時表示未指明具體節點

6. 消息的結構(BO_)

BO_ message_id message_name : message_size transmitter {signal}

BO_ 306YRS2: 8 FVCM

解釋:

BO_ 為關鍵字,表示報文;

MessageId 報文ID,是以10進制數表示的;

(如例子中的996,代表報文ID為0x3E4,是longlong類型,也就是CAN ID的值;)

MessageName 報文的名字,命名規則和C語言變量相同;

MessageSize 報文數據域字節數,為無符號整型數據,CAN 2.0為最大8字節,CAN FD 最大64字節;

Transmitter 該報文的網絡節點;如果該報文沒有指定發送節點,則該值需設置為” Vector__XXX”。

如示例中的BO_ 201959408 MSG1: 8 VCU_Vehicle_Control_Unit

報文ID:201959408(0xC09A7F0)

報文名:MSG1

分隔符 : “:”

報文長度:8字節

報文發送者:VCU_Vehicle_Control_Unit

(由VCU_Vehicle_Control_Unit這個節點發出的,數據域長度為8字節,ID為201959408(0xC09A7F0),名字命名為MSG1的報文)

7. 信號的結構(SG_)

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

SG_ YRS2_Checksum : 7|8@0+ (1,0) [0|255] “bit” FRS

SG_ YRS_LongitSensorState : 15|2@0+ (1,0) [0|3] “bit” FRS

SG_ YRS_LongitAcce : 23|16@0+ (0.001,-2) [-2|2] “g” FRS

SG_ YRS_AliveCounter : 59|4@0+ (1,0) [0|15] “bit” FRS

解釋:

SG_ 為關鍵字,表示信號;

SignalName(SigTypeDefinition) : 表示該信號的名字 和 多路選擇信號的定義;

SigTypeDefinition是可選項,有3種格式:

a)空,表示普通信號。

b)M,表示多路選擇器信號。

c)m50,表示被多路選擇器選擇的信號,50,表示當M定義的信號的值等于50的時候,該報文使用此通路。

StartBit、 SignalSize 表示該信號起始位、信號長度;

ByteOrder 表示信號的字節順序:0代表Motorola格式,1代表Inter格式;

ValueType 表示該信號的數值類型:+表示無符號數,-表示有符號數;

Factor,Offset 表示因子,偏移量;這兩個值用于信號的原始值與物理值之間的轉換。

轉換如下:物理值=原始值*因子+偏移量;

Min|Max 表示該信號的最小值和最大值,即指定了該信號值的范圍;這兩個值為double類型;

Unit 表示該信號的物理單位,為字符串類型;

Receiver 表示該信號的接收節點;若該信號沒有指定的接收節點,則必須設置為” Vector__XXX”。

如示下面的例中:

第一個信號 :

SG_ S_Check : 45|10@0+ (0.00625,0) [0|160] “M” EL3160_60,ESC

表示定義了一個命名為 S_Check的普通信號,其起始位是第45位,信號長度10 bit;

信號是Motorola格式,數值類型為無符號類型數;因子為0.00625,偏移量為0;信號取值范圍為0到160;

信號物理單位為字符串”M”;該信號接收節點為EL3160_60,ESC這兩個節點。

第二個信號:

SG_ Send_Mux M : 7|8@0+ (1,0) [0|0] “” EL3160_60,ESC

表示定義了一個命名為 Send_Mux的多路選擇器信號,其起始位是第7位,信號長度8 bit;

信號是Motorola格式,數值類型為無符號類型數;因子為1,偏移量為0;信號取值范圍為0到0;

信號物理單位為字符串””;該信號接收節點為EL3160_60,ESC這兩個節點。

該信號做選擇通道使用。

第三個信號:

SG_ S_Level_A_Voltage m50 : 15|16@0+ (0.00625,0) [0|160] “V” EL3160_60,ESC

表示定義了一個命名為S_Level_A_Voltage的被選擇信號,其起始位是第15位,信號長度16 bit;

信號是Motorola格式,數值類型為無符號類型數;因子為0.00625,偏移量為0;信號取值范圍為0到160;

信號物理單位為字符串”V”;該信號接收節點為EL3160_60,ESC這兩個節點。

其中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字節內,不太方便。

8. 注解的結構(CM_)

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(0x3E4)這條報文下的名為”HUD_HeightLv ”的信號進行注解說明,說明的內容為“Control hud height level”。

又如 CM_ BU_ HUD “Head Up Display“;表示對HUD這個節點進行注解說明,說明的內容為” Head Up Display “。

注釋以 “” 包圍,注釋內部不允許出現“號。

9. 特征(屬性)的結構(BA_DEF_ BA_DEF_DEF_ BA_)

和特征相關的Tag一共有三條:

9.1 報文/信號/節點等的屬性定義(BA_DEF_)

特征名稱類型定義。格式如下:

BA_DEF_ ObjectAttributeNameValueTypeMin Max;

解釋:

BA_DEF 標簽

Object 特征類型,可以是BU_(節點特征定義)、BO_(報文特征定義)、SG_(信號特征定義)、空格(項目特征定義);

AttributeName 特征名稱(C語言變量格式)

ValueType 特征值類型(只能是十進制、十六進制、浮點數、枚舉、字符5種類型)

Min Max 數值類型這里出現范圍,枚舉類型這里是枚舉值,字符類型,這里是空。

9.2 報文/信號/節點等的屬性初始值定義(BA_DEF_DEF_) 特征默認值定義。格式如下:

BA_DEF_DEF_ AttributeNameDefaultValue;

解釋:

BA_DEF_DEF_ 標簽

AttributeName 特征名稱(C語言變量格式)

DefaultValue 該特征的默認設置值

9.3 報文/信號/節點等的屬性設置值定義(BA_)特征項目設置值定義,格式如下:

BA_ AttributeName projectValue;

解釋:

BA_ 標簽

AttributeName 特征名稱(C語言變量格式)

projectValue 該特征的設置值

舉例:

BA_DEF_ BO_ “GenMsgCycleTime” INT 0 65535;

BA_DEF_DEF_ “GenMsgCycleTime” 2200;

BA_ “GenMsgCycleTime” BO_ 400 100;

表示對定義了一個針對消息類型的特征,特征名為”GenMsgCycleTime”,特征值是整型數據,取值范圍在0到65535之間;

默認值為2200;

項目設置值 CAN ID ==400的消息的該特征值設置為100

在DBCView4.3里面是把BA_DEF_ 和 BA_DEF_DEF_合并在一起了,用了特征視圖來管理,如下圖。

然后把 特征項目設置值定義 BA_ AttributeName projectValue; 和元素合并在一起了。

10. 數值表的結構(VAL_)格式如下:

VAL_ MessageId SignalName N “DefineN” …… 0 “Define0”;

解釋:

VAL_ 為關鍵字,表示數值表定義;

MessageId 表示該信號所屬的報文ID(10進制數表示);

SignalName 表示信號名;

N “DefineN” …… 0 “Define0” 表示定義的數值表內容,即該信號的有效值分別用什么符號表示 。

如示例中的 VAL_ 996 HUD_OffSt 1 “Active” 0 “Not Active”;

表示對ID為996(0x3E4)的這條報文下的,一個命名為”HUD_OffSt”的信號,進行其數值表的定義;

用”Active”取代1;用”Not Active”取代0。只有自然數類型的信號才可以使用數值表表示。

信號的值的表示方法有兩種:

1) 物理值=原始值*因子+偏移量;(常規表示,前面有提到)

2) 數字表,用來表示邏輯值;

11. 全局信號值表(用來對信號值解碼)的結構(VAL_TABLE_) 格式如下:

VAL_TABLE_ value_table_namevalue_table_value “value_description” … 0 “value_description”;

描述:

a)一個value table中以“空格”分隔;

b)value_table_name表示value table的名稱, 命名必須滿足“符號字符串”要求;

c) value_table_value表示value table的值,十進制表示;

d) value_description表示value table的值描述;

e)當一個value table存在多個值描述時,以(value_table_value “value_description”)的形式接著追加,value table內的兩個值描述以“空格”分隔;

f)完成一個value table定義,需以“分號;”結尾;

g)多個value table需要換行。

VAL_TABLE_ ESC_QDCFRS 1 ”ERROR“ 0 ”NO_ERROR“ ;

VAL_TABLE_ ESC_BrakeTempTooHigh 1 ”ABNORMAL“ 0 ”NORMAL“ ;

VAL_TABLE_ ESC_DTC_Active 1 ”ACTIVE“ 0 ”INACTIVE“ ;

VAL_TABLE_ ESC_Vehiclestandstill 3 ”RESERVED“ 2 ”INVALID“ 1 ”STANDSTILL“ 0 ”NOT_STANDSTILL“ ;

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • DBC
    DBC
    +關注

    關注

    2

    文章

    55

    瀏覽量

    7824

原文標題:DBC的結構詳細分析

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于CANdb++ Editor編寫DBC文件時Factor的設置問題求解

    求助CANdb++ Editor編寫DBC文件時 Factor設置的問題: 編輯DBC文件時,當我設置Signal的Factor時,如果設置了0.0001,
    發表于 04-12 07:03

    labview CAN DBC加載解析程序

    labview CAN DBC加載解析程序
    發表于 08-18 11:42

    labview怎么解析dbc文件

    我用的是研華的can卡,用labview解析dbc文件
    發表于 05-12 10:07

    AUTOSAR架構深度解析 精選資料推薦

    AUTOSAR架構深度解析本文轉載于:AUTOSAR架構深度解析目錄AUTOSAR架構深度解析A
    發表于 07-28 07:40

    labview加載DBC文件錯誤

    本帖最后由 溜溜球18 于 2021-12-16 16:05 編輯 labview解析DBC,調用的周立功ZDBC.DLL,加載DBC格式文件總是失敗,是什么原因
    發表于 12-09 17:23

    CAN報文解析需要知道DBC的哪些信息排序方式

    CAN總線中報文數據讀取方法motorola編碼格式的CAN報文解析需要知道DBC的哪些信息排序方式讀取方式發送方式注motorola編碼格式的CAN報文解析知道CAN報文的DBC,即
    發表于 01-12 07:28

    Android系統文件結構解析

    Android系統文件結構解析
    發表于 03-19 11:23 ?0次下載

    配置DBC變量文件資料免費下載

    本文檔的主要內容詳細介紹的是配置DBC變量文件資料免費下載
    發表于 07-03 08:00 ?18次下載
    配置<b class='flag-5'>DBC</b>變量<b class='flag-5'>文件</b>資料免費下載

    使用candb++制作dbc文件筆記

    今天又來分享一篇工具使用的文章,candb++的工具,也是Vector的,用來制作、編輯或者是查看dbc文件,今天主要來分享dbc文件的創建。
    的頭像 發表于 12-26 14:04 ?4709次閱讀

    【產品應用】如何通過IoT云平臺對CAN數據進行實時DBC解析

    DBC文件是用來描述CAN總線通訊信息數據的一種文件,其中包含了CAN總線中協議數據及其所代表的具體意義。在汽車路試中,對于車輛錯誤故障信息,需對CAN報文數據進行實時DBC
    的頭像 發表于 03-20 23:10 ?633次閱讀

    labview讀取解析CAN DBC文件

    labview讀取解析can總線dbc文件
    發表于 07-03 09:18 ?105次下載

    CAN DBC文件解析

    CAN DBC 指的是CAN 報文的數據庫。簡單地說,通過CAN 總線通信的數據類型可以用DBC 文件來讀取和理解。DBC 是一種基于ASCII 的翻譯,是在20世紀90年代發展起來的
    的頭像 發表于 08-14 11:35 ?3742次閱讀
    CAN <b class='flag-5'>DBC</b><b class='flag-5'>文件</b><b class='flag-5'>解析</b>

    用Labview開發的DBC文件轉Excel表格文件的VI

    使用Labview軟件開發的DBC文件轉Excel表格文件的VI
    發表于 10-25 18:23 ?34次下載

    TSMaster如何同時記錄標定變量和DBC信號至BLF文件

    客戶在使用TSMaster軟件標定功能時,有如下使用場景:將DBC文件中的信號與A2L文件中的標定變量同時記錄在一個記錄文件。針對此應用場景,TSMaster軟件提供了一種方法來滿足此
    的頭像 發表于 03-25 08:20 ?846次閱讀
    TSMaster如何同時記錄標定變量和<b class='flag-5'>DBC</b>信號至BLF<b class='flag-5'>文件</b>

    CAN底層報文抓到了,卻不知怎么解析?以及如何看到信號運行狀態?

    本文介紹CAN總線中DBC文件的重要性及ZCANPRO如何實現DBC解析、數據發送和實時曲線分析,幫助您更有效地分析和利用CAN總線數據。在CAN總線的實際應用中,我們經常需要
    的頭像 發表于 09-30 08:05 ?1504次閱讀
    CAN底層報文抓到了,卻不知怎么<b class='flag-5'>解析</b>?以及如何看到信號運行狀態?
    主站蜘蛛池模板: 国产免费啪啪 | 欧美一级艳片视频免费观看 | 免费看逼网站 | 国内一区二区三区精品视频 | 717影院理伦午夜论八戒 | 日本a免费 | 国模一区二区三区私啪啪 | 在线视频观看你懂的 | 最新免费jlzzjlzz在线播放 | 一级骚片超级骚在线观看 | 中文字幕第二区 | 国产大片黄在线看免费 | 狠狠色影院 | 一区二区三区视频免费观看 | 国语对白一区二区三区 | 女人精69xxxxxx | 一区视频 | 人人澡人人人人夜夜爽 | 曰本在线网 | 最近最新中文字幕在线第一页 | 一级视频在线 | 日本高清视频成人网www | 欧美一级视频免费看 | 欧美人与动性视频在线观 | 夜夜超b天天 | 日本写真高清视频免费网站网 | 色老头·com 色老头成人免费综合视频 色老头久久久久 | 激情六月婷婷开心丁香开心 | 日韩天堂| 日日射天天射 | 色欧美亚洲 | 李老汉的性生生活2 | 日韩电影毛片 | 夜夜摸视频网 | 中文字幕一二三四区 | 天天摸天天摸天天躁 | 亚洲一二 | 84pao强力永久免费高清 | 国片一级 免费看 | 欧美性极品xxxxx | 一级特黄aaa大片在 一级特黄aaa大片在线观看视频 |