首页 > 其他分享 >车载测试系列:DBC文件格式解析

车载测试系列:DBC文件格式解析

时间:2022-12-02 11:56:24浏览次数:35  
标签:表示 HUD 定义 DBC 报文 车载 文件格式 信号 节点

DBC文件:

CAN报文的数据库。用来描述CAN网络节点间数据通讯的文件,包含了CAN总线协议中协议数据及其所代表的具体意义。可以用来监测与分析CAN网络上的报文数据,也可以用来模拟某个CAN节点。

DBC是处理8字节十六进制CAN报文和原始CAN数据的识别和转换的最常用的方法。数据字段最多可以包含8个字节的数据,一个CAN帧可以包含0-64个单独的信号。

DBC文件格式:

可以使用记事本打开dbc文件,如下图所示:

 

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

1、版本与新符号 2、波特率定义 3、网络节点的定义 4、报文帧的定义

5、信号的定义 6、注解部分 7、属性定义部分 8、数值表部分

其中第2点、第3点是必须项,缺少这两项的dbc文件是不能用CANdb++ Editor软件打开的

1、版本与新符号:

如下图,dbc文件头部包含”version”与”new symbol”的信息;

(1)version信息可以为空,也可以由用户自定义;

(2)new symbol信息在创建dbc文件时就已经自动生成,一般默认即可;

 

2、波特率定义:

格式如下:BS_:[baudrate:BTR1,BTR2];

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

 

3、网络节点定义:

格式:BU_:Nodename1 Nodename2 Nodename3 ……

其中BU_为关键字,表示网络节点,格式中的Nodename1、Nodename2表示定义的网络节点名字,由用户自己定义;需保证节点命名的唯一性。

BU_: AVNT ACU HUD :表示定义了AVNT、ACU、HUD这三个网络节点。

4、报文帧的定义:

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

(1)BO_为关键字,表示报文;

(2)MessageId为定义的报文ID,是以10进制数表示的;如例子中的996,代表报文ID为0x3E4;

(3)MessageName表示该报文的名字,命名规则和C语言变量相同;

(4)MessageSize表示该报文数据域字节数,为无符号整型数据;

(5)Transmitter表示发送该报文的网络节点;如果该报文没有指定发送节点,则该值需设置为” Vector__XXX”。

示例BO_ 996 HUD_1_B: 8 HUD:表示定义了一条由HUD这个节点发送,数据域长度为8字节,ID为996(0x3E4),名字命名为HUD_1_B的报文。

5、信号的定义:

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

(1)SG_为关键字,表示信号;

(2)SignalName、 StartBit、 SignalSize分别表示该信号的名字、起始位、信号长度;

(3)ByteOrder表示信号的字节顺序:0代表Motorola格式,1代表Inter格式;

(4)ValueType 表示该信号的数值类型:+表示无符号数,-表示有符号数;

(5)Factor表示因子,Offset表示偏移量;这两个值于该信号的原始值与物理值之间的转换。

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

(6)Min|Max表示该信号的最小值和最大值,即指定了该信号值的范围;这两个值为double类型;

(7)Unit表示该信号的单位,为字符串类型;

(8)Receiver表示该信号的接收节点;若该信号没有指定的接收节点,则须设置为 Vector__XXX

如示例中的 SG_ HUD_BrightnessLv : 15|4@0+ (1,0) [0|15] “lv” ACU,AVNT

表示定义了一个命名为HUD_BrightnessLv的信号,其起始位是第15位,信号长度4个位;信号是Motorola格式,数值类型为无符号类型数;因子为1,偏移量为0;信号取值范围为0到15;信号单位为字符串”lv”;该信号接收节点为ACU、AVNT这两个节点。

6、注解部分:

格式:CM_ Object MessageId/NodeName “Comment”

(1)CM_为关键字,表示注解信息;

(2)Object表示进行注解的对象类型,可以是节点“BU_”、报文“BO_”、消息”SG_”;

(3)MessageId/NodeName 表示进行注解的对象,若前面的对象类型是信号或者报文,则这里的值应为报文的ID(10进制数表示);若前面的对象类型为节点,则这里的值应为节点的名字;

(4)Comment表示进行注解的文本信息;

示例1: CM_SG_996 HUD_HeightLv “Control hud height level”;

表示对ID为996(0x3E4)这条报文下的名为”HUD_HeightLv ”的信号进行注解说明,说明的内容为"Control hud height level"。

示例2: CM_ BU_ HUD “Head Up Display";

表示对HUD这个节点进行注解说明,说明的内容为" Head Up Display "。

7、属性定义部分:

格式:BA_DEF_ Object AttributeName ValueType Min Max;

BA_DEF_DEF_ AttributeName DefaultValue;

(1)BA_DEF_为关键字,表示属性定义;

(2)Object表示属性定义的对象类型,可以是节点“BU_”、报文“BO_”、消息”SG_”、网络节点” ”(用空格表示)等;

(3)AttributeName表示进行定义的属性名字;

(4)ValueType表示属性值的类型,可以是整型、字符串、浮点型、枚举类型等;

(5)Min/Max表示属性值的上下最值,即指定了取值范围(字符串类型没有此项)。

(6)BA_DEF_DEF_为关键字,表示定义属性的初始值;

(7)DefaultValue表示该属性的初始值。

示例1: BA_DEF_ SG_ “MyTry” INT 0 11; BA_DEF_DEF_ “MyTry” 0;

表示对定义了一个针对信号类型的属性,属性名为”MyTry”,属性值是整型数据,取值范围在0到11之间,初始值为0。

8、属性定义部分:

格式:VAL_ MessageId SignalName N “DefineN” …… 0 “Define0”;

(1)VAL_为关键字,表示数值表定义;

(2)MessageId表示该信号所属的报文ID(10进制数表示);

(3)SignalName表示信号名;

(4)N “DefineN” …… 0 “Define0”表示定义的数值表内容,即该信号的有效值分别用什么符号表示 。

示例: VAL_ 996 HUD_OffSt 1 “Active” 0 “Not Active”;

表示对ID为996(0x3E4)的这条报文下的,一个命名为”HUD_OffSt”的信号,进行其数值表的定义;用”Active”取代1;用”Not Active”取代0。

小结 :通过示例将常见dbc文件格式分八点进行介绍。

1、版本与新符号

2、波特率定义

3、网络节点的定义

4、报文帧的定义

5、信号的定义

6、注解部分

7、属性定义部分

8、数值表部分

其中第2点、第3点是必须项,其他项不一定都有。当我们对dbc文件的结构比较熟悉后,可以在文本模式下直接对dbc文件进行修改编辑;例如直接拷贝数值表进行修改定义等操作,比在"CANdb ++ Editor"界面下操作更方便。

标签:表示,HUD,定义,DBC,报文,车载,文件格式,信号,节点
From: https://www.cnblogs.com/laoluoits/p/16944020.html

相关文章

  • 车载测试系列:CAN协议之波特率
    位时序分解CAN协议把每一个数据位的时序都分解成了若干个段。其中包括SS、PTS、PBS1、PBS2段,这四段加起来即为一个CAN数据位的长度。分解后最小的时间单位为Tq,一个完整的......
  • 你还记得曾经手写的JDBC工具类吗?
     1.JDBC概述1.1基本概念JDBC(JavaDatabaseConnectivity)就是Java数据库连接,是一种用于执行SQL语句的Java技术,提供了访问多种关系数据库的统一方式,主要借助Java语......
  • 使用arrow flight-sql-jdbc-driver 链接dremio
    最近arrowflight-sql-jdbc-driver发布了,对于dremio我们直接可以使用flightsqljdbc驱动链接了,可以极大的提升查询性能(具体性能提升待测试)环境准备docker-compose......
  • jdbc
    jdbc1.注册驱动Class.forName("com.mysql.jdbc.Driver");2.获取连接Connectionconn=DriverManager.getConnection(url,username,password);3.定义SQL语句Stri......
  • 配置ODBC连接KingbaseES数据库
    本文介绍如何通过ODBC连接KingbaseES数据库。1、配置odbc1)安装odbc,若有odbc则不用进行安装yum-yinstallunixODBC2)确认修改文件路径[root@node01~]#odbcinst-......
  • Sharding-JDBC 原理和spring boot 核心配置文件说明
    1、分库分表策略:如每个数据记录属于一个集团ID、属于一个店铺ID列,可以根据集团ID%数据库数量取余设置规则分片键,及设置用哪个数据库和哪个表。同现可以使用数据记录中的......
  • kx000001-顺序表-头文件格式
    1/**2*@filemySList.h3*@brief顺序表头文件4*@details定义了函数返类型status及对应的返回值状态标记宏常量5*@details定义了操作函数类型:myOpFun......
  • 从大疆车载、理想汽车等案例出发,看车联网场景下的数据处理难点与优化实践
    在车联网场景中,智能车辆会通过各类传感器定时采集车身状态信息,比如行驶速度、发动机转速、轮胎压力值、里程数等,此外,还会由某个事件触发产生车辆事件数据,比如门锁上防、撤防......
  • Maven配置ojdbc14-10.2.0.4.0.jar
    对于oralce的jdbc驱动,在maven上搜索到把pom配置复制到pom.xml里进行引用的时候出现下面这种情况<dependency><groupId>com.oracle</groupId><artifactId>ojdb......
  • org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 解决方法搜
    错误代码:org.hibernate.MappingException:NoDialectmappingforJDBCtype:-1atorg.hibernate.dialect.TypeNames.get(TypeNames.java:79)atorg.hibernate.di......