深入理解DBC文件:汽车行业的数据通信蓝图

深入理解DBC文件:汽车行业的数据通信蓝图汽车行业中的 DBC 文件到底是什么 其格式到底如何解读 读完本文快速上手 dbc 文件

大家好,欢迎来到IT知识分享网。

  博主已开通同名公众号,通过文末或主页推广二维码关注博主,将为你推送最新、最细、最硬核的车载系统知识和嵌入式开发知识!

嵌入式开发知识硬核文章集锦 >>>>>>>>> 《嵌入式工程师自我修养/C语言》<<<<<<<<<

  在汽车行业,确保不同电子控制单元(ECU)之间的顺畅通信是至关重要的。为了实现这一点,行业标准化了一种称为DBC(Database CAN)文件的格式,它作为一种通信网络中消息和信号的描述文件,使得汽车系统间的通信更加高效、明确。本文将深入探讨DBC文件的结构和应用,同时提供一个示例并详细解释各个字段的含义。

一、DBC文件简介

  DBC文件是一种文本文件,用于定义和描述控制器局域网络(CAN)总线上的数据通信。它不仅包括消息的ID,还详细描述了每个消息内部的信号,如信号的名称、大小、缩放系数、偏移量、单位、接收者等信息。通过这种方式,DBC文件为软件开发人员、系统工程师和测试人员提供了一种共享和理解CAN总线上数据通信方式的方法。

——DBC文件的常见应用场景

  • 自动代码生成:从DBC文件自动生成源代码,用于实现ECU软件的发送和接收CAN消息。
  • 系统测试和验证:利用DBC文件,测试工具可以解析CAN消息,对系统进行模拟和测试。
  • 车辆诊断:为诊断工具提供必要的信息,以解释车辆的诊断数据。

——DBC文件的关键组成部分

  • 消息(Message):每条消息都有一个唯一的标识符(ID)和名称,它包含了多个信号。
  • 信号(Signal):消息中的数据单元,定义了如何从消息数据中解析出具体的值。每个信号包括名称、位宽、缩放系数、偏移量、范围、单位等信息。
  • 属性(Attribute):为消息或信号定义额外的元数据,如注释或物理单位。
  • 值表(Value Table):为信号的原始值定义了具体的含义或描述。

二、DBC文件格式详解

  为了更好地理解DBC文件的结构和内容,下面通过一个简单的示例来说明:

VERSION "v00.03.00_00" NS_ : NS_DESC_ CM_ BA_DEF_ BA_ VAL_ CAT_DEF_ CAT_ FILTER_ BA_DEF_DEF_ EV_DATA_ ENVVAR_DATA_ SGTYPE_ SGTYPE_VAL_ BA_DEF_SGTYPE_ BA_SGTYPE_ SIG_TYPE_REF_ VAL_TABLE_ SIG_GROUP_ SIG_VALTYPE_ SIGTYPE_VALTYPE_ BO_TX_BU_ BA_DEF_REL_ BA_REL_ BA_DEF_DEF_REL_ BU_SG_REL_ BU_EV_REL_ BU_BO_REL_ SG_MUL_VAL_ BS_: BU_: ECU1 BMS CCU ECCU HVCS HVDI LBM PEU_F PEU_R VCU BO_ 268 ECU1_03: 8 ECU1 SG_ Body_ActvSftyBltReq : 42|3@0+ (1,0) [0|7] "" Vector__XXX SG_ CGW_03_CRC : 7|8@0+ (1,0) [0|255] "" PEU_F,PEU_R,VCU SG_ CGW_03_MsgCntr : 15|4@0+ (1,0) [0|15] "" PEU_F,PEU_R,VCU SG_ ComfEna_ASIL : 17|2@0+ (1,0) [0|3] "" LBM,PEU_F,PEU_R BA_DEF_ "Baudrate" INT 0 ; BA_DEF_ "BusType" STRING; BA_DEF_ BO_ "CANFD_BRS" ENUM "0","1"; BA_DEF_ "DBName" STRING; BA_DEF_ BO_ "DiagRequest" ENUM "no","yes"; BA_DEF_ BO_ "DiagResponse" ENUM "no","yes"; BA_DEF_DEF_ "Baudrate" ; BA_DEF_DEF_ "BusType" ""; BA_DEF_DEF_ "CANFD_BRS" "0"; 

  一般DBC文件中包含了如下的8种信息:

2.1 版本与新符号

  VERSION:指定了DBC文件的版本(内容可以为空也可以由用户自定义)。

  NS__:New symbol,其主要作用是定义在该DBC文件中使用的额外符号或关键字。这些定义可以帮助解释器或相关工具更好地理解在DBC文件中可能使用到的特定功能或特性(创建dbc文件时自动生成,一般保持默认即可)。

  在DBC格式中,每个部分都以特定的关键字开始,这些关键字使得文件的结构化内容易于被阅读和解析。NS_段紧跟在版本声明(VERSION)之后,是一种扩展机制,允许在DBC文件中引入新的关键字,而不影响旧版本的兼容性或解析器的基本解析功能。通过NS_段的定义,DBC文件的解析器可以知道哪些是期望的关键字,从而正确地解析文件内容。这对于确保DBC文件的兼容性和扩展性至关重要,特别是在复杂的车辆网络系统中,不同版本和不同制造商间的兼容性是一个重要考量。

2.2 波特率定义

  BS_:[baudrate:BTR1, BTR2];

  其中BS_为关键字,用于定义CAN网络的波特率;[ ]内容表示为可选部分,可以省略,但关键字”BS_:”必须存在,省略则会出错。

Tip📌:通常该行会保持为空,因为波特率配置往往在CAN控制器中设置

2.3 网络节点的定义

  BU_: Nodename1 Nodename2 Nodename3 ……

BU_ 关键字,表示网络节点
Nodename1, Nodename2 节点名字,由用户自己定义

Tip📌:要注意Nodename的唯一性

2.4 报文帧的定义(消息 – Message)

  BO_ MessageId(10进制数表示) MessageName: MessageSize Transmitter

    BO_ 关键字,表示报文
MessageId 报文ID,是以10进制数表示的
MessageName 报文的名字,命名规则和C语言变量相同
MessageSize 报文数据域字节数,为无符号整型数据,CAN 2.0为最大8字节,CAN FD 最大64字节
Transmitter 发送该报文的网络节点,如果该报文没有指定发送节点,则该值需设置为Vector__XXX

——举例如下

BO_ 268 ECU1_03: 8 ECU1 // 表示由ECU1节点发出的 msg_id = 268,报文名为ECU1_03,数据长度为8字节的报文 

2.5 信号的定义

  SG_ SignalName (SigTypeDefinition) : StartBit|SignalSize@ByteOrder ValueType (Factor,Offset) [Min|Max] Unit Receiver

    SG_ 关键字,表示信号
SignalName (SigTypeDefinition) 表示该信号的名字 和 多路选择信号的定义
SigTypeDefinition 是可选项,有3种格式:
空:表示普通信号
M:表示多路选择器信号
m50:表示被多路选择器选择的信号,50,表示当M定义的信号的值等于50时,该报文使用此通路


StartBit 表示该信号起始位
SignalSize 信号长度
ByteOrder 表示信号的字节顺序:0代表Motorola格式,1代表Intel格式
ValueType 表示该信号的数值类型:+表示无符号数,-表示有符号数
Factor, Offset 表示因子,偏移量。用于信号的原始值与物理值之间的转换,转换公式为:物理值 = 原始值 * 因子 + 偏移量
Min|Max 表示该信号的最小值和最大值,即指定了该信号值的范围(这两个值为double类型)
Unit 表示该信号的物理单位,为字符串类型
Receiver 表示该信号的接收节点(若该信号没有指定的接收节点,则必须设置为”Vector__XXX”

——Motorola格式和Inter格式?(实际上就是字节序的大端模式和小端模式)

  DBC文件中,信号的定义包括了信号的格式,其中“0”表示Motorola(Big Endian)格式,“1”表示Intel(Little Endian)格式。这两种格式指的是在多字节数据中字节的排列顺序。

  • Motorola格式(Big Endian):当以人类阅读的方式(从左到右)查看数据时,数字的表示与我们通常书写的方式一致。例如,0x1234在内存中将被存储为0x12 0x34(主要用于网络协议中,汽车制造商中较为常见)。
  • Intel格式(Little Endian):0x1234在内存中将被存储为0x34 0x12(多数现代PC架构采用这种格式,包括x86和x86-64架构)。

——举例如下

SG_ CGW_03_CRC : 7|8@0+ (1,0) [0|255] "" PEU_F,PEU_R,VCU // 表示定义了一个命名为 CGW_03_CRC的普通信号,其起始位是第7位,信号长度8bit; // 信号是Motorola格式,数值类型为无符号类型数; // 因子为1,偏移量为0; // 信号取值范围为0到255; // 信号无物理单位; // 该信号接收节点为PEU_F,PEU_R,VCU这三个节点。 

2.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(0x3E4)这条报文下的名为”HUD_HeightLv ”的信号进行注解说明,说明的内容为"Control hud height level"。 

2.7 特征属性部分

2.7.1 BA_DEF 特征名称类型定义

  BA_DEF_ Object AttributeName ValueType Min Max;

    BA_DEF_ 关键字,表示特征名称类型定义
Object 特征类型,可以是BU_(节点特征定义)、BO_(报文特征定义)、SG_(信号特征定义)、空格(项目特征定义)
AttributeName 特征名称(C语言变量格式)
ValueType 特征值类型(只能是十进制、十六进制、浮点数、枚举、字符5种类型)
Min Max 数值类型这里出现范围,
枚举类型这里是枚举值,
字符类型,这里是空。

——举例如下

BA_DEF_ BO_ "CANFD_BRS" ENUM "0","1"; // 表示CANFD_BRS是一个枚举变量,取值可以为 0和1 

2.7.2 BA_DEF_DEF_ 特征默认值定义

  BA_DEF_DEF_ AttributeName DefaultValue;

    BA_DEF_DEF_ 表示特征默认值定义
AttributeName 特征名称(C语言变量格式)
projectValue 该特征的设置值

——举例如下

BA_DEF_DEF_ "Baudrate" ; // 表示波特率的默认值为; 

2.7.3 BA_ 特征项目设置值定义

  BA_ AttributeName Object MessageId/NodeName projectValue;

BA_ 表示特征项目设置值定义
AttributeName 属性名称(C语言变量格式)
Object 特征类型,可以是BU_(节点特征定义)、BO_(报文特征定义)、SG_(信号特征定义)、空格(项目特征定义)
MessageId/NodeName 表示进行注解的对象,若前面的对象类型是信号或者报文,则这里的值应为报文的ID(10进制数表示);
若前面的对象类型为节点,则这里的值应为节点的名字
projectValue 该属性的设置值

——举例如下

BA_ "ILUsed" BU_ BGW 1; // 表示特征名称为ILUsed的网络节点名为BGW的特征设置值为1 

2.8 数值表部分

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

  VAL_ 关键字,表示数值表定义
MessageId 该信号所属的报文ID(10进制数表示)
SignalName 信号名
N “DefineN” …… 0 “Define0” 表示定义的数值表内容,即该信号的有效值分别用什么符号表示

——举例如下

VAL_ 268 ComfEna_ASIL 3 "Invalid" 2 "Reserved" 1 "Comfort enabled" 0 "Comfort not enabled" ; // 表示对msgid = 268下的名为ComfEna_ASIL进行数值表定义: //用"Invalid"取代3, //用"Reserved"取代2  //用"Comfort enabled"取代1  //用"Comfort not enabled"取代0 

四、总结

  DBC文件作为定义汽车内部通信的标准,确保了不同供应商和开发团队可以高效地协作,标准化了汽车行业的通信协议,其重要性不言而喻。正确地使用和理解DBC文件对于确保汽车系统的顺畅通信和高效开发至关重要。正确理解和应用DBC文件对于汽车系统集成商和ECU开发人员而言,也是一项重要的技能!!!

嵌入式开发知识硬核文章集锦 >>>>>>>>> 《嵌入式工程师自我修养/C语言》<<<<<<<<<

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121616.html

(0)
上一篇 2025-10-22 15:45
下一篇 2025-10-22 16:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信