1 引言

DBC文件描述单个CAN网络的通信。这个信息足以监测和分析网络并模拟不是物理可用的节点(剩余的总线模拟)。

DBC文件也可以用来开发电子控制单元的通信软件,该控制单元应该是CAN网络的一部分。 DBC文件不处理ECU的功能行为。

2一般定义

本文档中使用以下常规元素:

unsigned_integer:一个无符号整数

signed_integer:一个有符号的整数

double:双精度浮点数

char_string:除双连字符('“')以外的任何可打印字符组成的任意字符串。

C_identifier:一个有效的C_identifier。 C_identifiers必须以字母字符或下划线开始,并可能进一步包含

字母数字字符和下划线。 C_identifier =(alpha_char |'_'){alpha_num_char | '_'}

DBC文件中使用的C标识符最多可以有128个字符。为了与旧工具兼容,长度不应超过32个字符。

DBC文件中使用的其他字符串可能是任意长度。

在DBC文件中使用的关键字o标识一个对象的类型在下表中给出:

关键字     对象类型

BU_           网络节点

BO_           消息

SG_           信号

EV_           环境变量

语法使用扩展的BNF符号(Backus-Naur-Format)进行描述。

符号含义

=使用右侧的语法(语法规则)定义=的左侧的名称。

;分号终止一个定义。

|竖条表示替代方案。

[...]括号内的定义是可选的(零次或一次出现)。

{...}大括号内的定义重复(零次或多次出现)

(...)括号定义分组元素。

'...'连字符中的文本必须按照定义出现。

(* ... *)评论。

3 DBC文件的结构

DBC文件格式具有以下总体结构:

DBC_file =

version

new_symbols

bit_timing(*过时但需要*)

nodes

value_tables

messages

message_transmitters

environment_variables

environment_variables_data

signal_types

comments

attribute_definitions

sigtype_attr_list

attribute_defaults

attribute_values

value_descriptions

category_definitions(*过时*)

categories(*过时*)

filter(*过时*)

signal_type_refs

signal_groups

signal_extended_value_type_list;

描述CAN网络基本通信的DBC文件包括以下部分:

•       Bit_timing

这部分是必需的,但通常是空的。

•       nodes

这部分是必需的,并定义了网络节点。

•       messages

本节定义了消息和信号。

以下部分不在正常的DBC文件中使用。它们只是为了完整而定义在这里:

•       signal_types

•       sigtype_attr_list

•       category_definitions

•       category

•       filter

•       signal_type_refs

•       signal_extended_value_type_list

描述CAN通信的DBC文件,不定义系统或剩余总线仿真的任何附加数据,不包括环境变量。

4版本和新符号规范

DBC文件包含一个包含版本和新符号条目的头文件。版本或者是空的,或者是CANdb编辑器使用的字符串。

version = ['VERSION''''{CANdb_version_string}'“'];

new_symbols = ['NS_'':'['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_']];

5位定时定义

位定时部分定义了波特率和网络的BTR寄存器的设置这部分已经过时,不再使用。尽管如此,他的关键字'BS_'必须出现在DBC文件中。

bit_timing ='BS_:'[baudrate':'BTR1','BTR2];

baudrate = unsigned_integer; BTR1 = unsigned_integer;

BTR2 = unsigned_integer;

6节点定义

节点部分定义所有参与节点的名称,本节中定义的名称在本节中必须是唯一的。

nodes ='BU_:'{node_name};

node_name = C_identifier;

7值表定义

值表部分定义了全局值表。值表中的值描述定义了信号原始值的值编码。在常用的DBC文件中,不使用全局值表,而是分别为每个信号定义值描述。

value_tables  =  {value_table} ;

value_table  = 'VAL_TABLE_'  value_table_name  {value_description} ';'  ;

value_table_name  =  C_identifier;

7.1值描述(值编码)

值描述为单个值定义文本描述。该值可以是在总线上传输的信号原始值,也可以是剩余总线(虚拟节点)模拟中环境变量的值。

value_description = double char_string;

8消息定义

消息部分定义了集群中所有帧的名称以及它们的属性和在这些帧上传输的信号。

messages = {message};

message = BO_  message_id  message_name':'message_size  trans-mitter  {signal} ;

message_id = unsigned_integer;

该消息的CAN-ID。 CAN-ID在DBC文件中必须是唯一的。如果CAN-ID的最高有效位被设置,则该ID是扩展的CAN ID。扩展的CAN ID可以通过用掩码0xCFFFFFFF屏蔽掉最高有效位来确定。

message_name = C_identifier ;

在这个部分定义的名字在这组消息中必须是唯一的。

message_size = unsigned_integer;

message_size以字节为单位指定消息的大小。

transmitter = node_name | 'Vector__XXX';

发送者名称指定发送消息的节点的名称。发件人名称必须在节点部分的节点名称集中定义。如果消息没有发送者,则必须在这里给出字符串Vector__XXX。

8.1信号定义

消息的信号部分列出消息中放置的所有信号,消息数据字段中的位置及其属性。

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

signal_name = C_identifier ;

这里定义的名称对于单个消息的信号必须是唯一的。

multiplexer_indicator = ' ' | 'M' | m multiplexer_switch_value ;

多路复用器指示器定义信号是正常信号、多路复用信号的多路开关,还是多路复用信号。 “M”(大写)字符将信号定义为多路复用器开关。多路复用器交换机中只能有一个信号内的信号。一个“m”(小写)字符,后跟一个无符号整数,将信号定义为复用器开关复用的信号。如果多路复用器信号的开关值等于其multiplexer_switch_value,则多路复用信号被传送到消息中。

start_bit = unsigned_integer ;

start_bit值指定帧的数据字段内信号的位置。对于字节顺序为英特尔(little endian)的信号给出了最低有效位的位置。对于具有字节顺序Motorola(big endian)的信号,给出最高有效位的位置。这些位以锯齿形方式计数。起始位必须在0到(8 * message_size - 1)的范围内。

signal_size = unsigned_integer;

signal_size以位为单位指定信号的大小

byte_order ='0'| '1'; (* 0 =小端,1 =大端*)

如果信号的字节顺序是Intel(小端),则byte_format是0;如果字节顺序是Motorola(大端),则byte_format是1。(这里可能有错误,从其他渠道获取的消息是1=intel ,0=Motorola)

value_type ='+'| ' - '; (* + =无符号, - =有符号*)

value_type将信号定义为unsigned( - )或signed( - )类型。

factor = double;

offset = double;

系数和偏移定义了线性转换规则,将信号原始值转换为信号的物理值,反之亦然:

physical_value = raw_value * factor + offset

raw_value =(physical_value - offset)/ factor

从转换规则公式中可以看出,该因子不能为0。

minimum = double ;

maximum = double ;

最小值和最大值定义信号有效物理值的范围。

unit = char_string;

receiver = node_name | 'Vector__XXX';

接收者名称指定信号的接收者。接收者名称必须在节点部分的一组节点名称中定义。如果信号没有

接收器,字符串'Vector__XXX'必须在这里给出。

值为“float”和“double”的信号在sig-nal_valtype_list部分有附加条目。

signal_extended_value_type_list = 'SIG_VALTYPE_' message_id signal_

name signal_extended_value_type ';' ;

signal_extended_value_type = '0' | '1' | '2' | '3' ; (* 0=signed or

unsigned integer, 1=32-bit IEEE-float, 2=64-bit IEEE-double *)

8.2消息发送器的定义

消息发送器部分使得能够定义单个节点的多个发送器节点。这用于描述更高层协议的通信数据。这不用于定义CAN二层通信。

message_transmitters = {message_transmitter} ;

Message_transmitter = 'BO_TX_BU_' message_id ':' {transmitter} ';' ;

8.3信号值描述(值编码)

信号值描述定义了特定信号原始值的编码。

value_descriptions = { value_descriptions_for_signal |

value_descriptions_for_env_var } ;

value_descriptions_for_signal = 'VAL_' message_id signal_name

{ value_description } ';' ;

9环境变量定义

在环境变量部分中定义了用于系统仿真和剩余总线仿真工具的环境变量。

environment_variables = {environment_variable}

environment_variable = 'EV_' env_var_name ':' env_var_type '[' minimum

'|' maximum ']' unit initial_value ev_id access_type access_

node {',' access_node } ';' ;

env_var_name = C_identifier ;

env_var_type = '0' | '1' | '2' ; (* 0=integer, 1=float, 2=string *)

minimum = double ;

maximum = double ;

initial_value = double ;

ev_id = unsigned_integer ; (* obsolete *)

access_type = 'DUMMY_NODE_VECTOR0' | 'DUMMY_NODE_VECTOR1' |

'DUMMY_NODE_VECTOR2' | 'DUMMY_NODE_VECTOR3' ; (*

0=unrestricted, 1=read, 2=write, 3=readWrite *)

access_node = node_name | 'VECTOR_XXX' ;

环境变量数据部分中的条目将此处列出的环境定义为数据类型“数据”。这种类型的环境变量可以存储给定长度的任意二进制数据。长度以字节为单位给出。

environment_variables_data = environment_variable_data ;

environment_variable_data = 'ENVVAR_DATA_' env_var_name ':'

data_size ';' ;

data_size = unsigned_integer ;

 

9.1环境变量值描述

环境变量的值描述提供了变量特定值的文本表示。

value_descriptions_for_env_var = 'VAL_' env_var_aname

{ value_description } ';' ;

10信号类型和信号组定义

信号类型用于定义几个信号的公共属性。它们通常不用于DBC文件。

signal_types = {signal_type} ;

signal_type = 'SGTYPE_' signal_type_name ':' signal_size '@'

byte_order value_type '(' factor ',' offset ')' '[' minimum '|'

maximum ']' unit default_value ',' value_table ';' ;

signal_type_name = C_identifier ;

default_value = double ;

value_table = value_table_name ;

signal_type_refs = {signal_type_ref} ;

signal_type_ref = 'SGTYPE_' message_id signal_name ':' signal_

type_name ';' ;

信号组被用来定义消息内的一组信号,例如,以确定一个组的信号必须共同更新。

signal_groups = 'SIG_GROUP_' message_id signal_group_name repetitions

':' { signal_name } ';' ;

signal_group_name = C_identifier ;

repetitions = unsigned_integer ;

11注释定义

注释部分包含对象注释。对于每个有注释的对象,本节定义了一个带有对象类型标识的条目。

comments = {comment} ;

comment = 'CM_' (char_string |

'BU_' node_name char_string |

'BO_' message_id char_string |

'SG_' message_id signal_name char_string |

'EV_' env_var_name char_string)

';' ;

12用户定义的属性定义

用户定义的属性是扩展DBC文件的对象属性的一种手段。这些附加属性必须使用具有属性默认值的属性定义进行定义。对于每个具有为该属性定义的值的对象,都必须定义一个属性值条目。如果没有为对象定义属性值条目,则该对象的属性值是该属性的默认值。

12.1属性定义

attribute_definitions = { attribute_definition } ;

attribute_definition = 'BA_DEF_' object_type attribute_name attribute_

value_type ';' ;

object_type = '' | 'BU_' | 'BO_' | 'SG_' | 'EV_' ;

attribute_name = '"' C_identifier '"' ;

attribute_value_type = 'INT' signed_integer signed_integer |

'HEX' signed_integer signed_integer |

'FLOAT' double double |

'STRING' |

'ENUM' [char_string {',' char_string}]

attribute_defaults = { attribute_default } ;

attribute_default = 'BA_DEF_DEF_' attribute_name attribute_value

';' ;

attribute_value = unsigned_integer | signed_integer | double |

char_string ;

12.2属性值

attribute_values = { attribute_value_for_object } ;

attribute_value_for_object = 'BA_' attribute_name (attribute_value |

'BU_' node_name attribute_value |

'BO_' message_id attribute_value |

'SG_' message_id signal_name attribute_value |

'EV_' env_var_name attribute_value)

13         Examples

VERSION ""

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_

BS_:

BU_: Engine Gateway

BO_ 100 EngineData: 8 Engine

SG_ PetrolLevel : 24|8@1+ (1,0) [0|255] "l"   Gateway

SG_ EngPower : 48|16@1+ (0.01,0) [0|150]  "kW"   Gateway

SG_ EngForce : 32|16@1+ (1,0) [0|0] "N"   Gateway

SG_ IdleRunning : 23|1@1+ (1,0) [0|0] ""  Gateway

SG_ EngTemp : 16|7@1+ (2,-50) [-50|150] "degC"  Gateway

SG_ EngSpeed : 0|16@1+ (1,0) [0|8000] "rpm"   Gateway

CM_ "CAN communication matrix for power train electronics *******************************************************

implemented: turn lights, warning lights, windows";

VAL_ 100 IdleRunning 0 "Running" 1 "Idle" ;

转载于:https://www.cnblogs.com/isAndyWu/p/9523528.html

Can DBC文件翻译相关推荐

  1. vector can通信源码_汽车电子CAN网络dbc文件

    CAN网络作为汽车网络已经被广泛使用,随着电子零部件被越来越多的应用到汽车中,零部件之间的通信越来越多,德国vector公司作为行业内的标杆企业,vector公司定义了一套文件规范-----dbc,作 ...

  2. python调用simulink_使用Python从dbc文件中提取simulink建模数据定义

    使用dbc文件建模完成CAN通讯是一种比较高效的开发模式,不过在建模的过程中dbc文件中描述的数据需要自己去定义.使用文本编辑工具打开dbc文件可以看到,实际上dbc文件是一个可以进行语义解析的文本. ...

  3. 解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真

    通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件. 直接使用CANdb++ Editor打开,可以很直观的读懂信号矩阵的信息,例如下图: 现在要把上图呈现的信号从.dbc文件中解析出来 ...

  4. dbc文件c语言解析标准,DBC文件解析CAN信息

    <DBC文件解析CAN信息>由会员分享,可在线阅读,更多相关<DBC文件解析CAN信息(15页珍藏版)>请在人人文库网上搜索. 1.DBCCAN数据包-基于CANAPE,打开C ...

  5. wow mysql dbc_WoW的DBC文件内容描述-魔兽有爱论坛 - 一个魔兽世界爱好者的聚集地 uiwow.com - Powered by Discuz!...

    楼猪也是新手小白,对wow的dbc文件已经学习一段了,分享一点成果: 第一个:WorldSafeLocs.dbc 从字面上理解是游戏中的安全位置数据 位置 : 位于dbc.mpq patch.mpq中 ...

  6. chrome 本地文件 翻译工具

    chrome 本地文件 翻译工具 翻译工具:https://qingcms.gitee.io/translator/ chrome 本地文件无法翻译的解决方案 点击选择本地文件 使用浏览器翻译当前页面 ...

  7. 文件改名,如何将简体中文文件翻译成繁体中文,并复制到指定文件夹里保存。

    需要翻译的文件太多,如何批量将简体中文文件翻译成繁体中文,并将他进行复制到指定的文件夹里进行保存?要如何操作?今天就由小编来教教大家要如何操作. 首先第一步,我们要创建一个新的文件夹方便我们将文件进行 ...

  8. 关于DBC文件的格式解析(DBC文件系列其二)

    关于DBC文件的格式解析 摘要 1.版本与新符号 2.波特率定义 3.网络节点的定义 4.报文帧的定义 5.信号的定义 6.注解部分 7.属性定义部分 8.数值表部分 小结 摘要 在之前的文章里,我们 ...

  9. 【无标题】关于DBC文件的格式解析(DBC文件系列其二)

    关于DBC文件的格式解析 摘要 1.版本与新符号 2.波特率定义 3.网络节点的定义 4.报文帧的定义 5.信号的定义 6.注解部分 7.属性定义部分 8.数值表部分 小结 摘要 在之前的文章里,我们 ...

  10. 关于DBC文件的创建

    版权声明:本文为CSDN博主「第55号小白鸭」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/weixin ...

最新文章

  1. python 有序字典 OrderedDict
  2. ***后门与密码破解
  3. 为什么线粒体DNA突变率高?
  4. Shell 变量--shell教程
  5. python标准库time_Python 标准库之时间篇
  6. Hazelcast入门指南第4部分
  7. 小程序 input 换行_小程序 input双向数据绑定
  8. C++语言中std::array的神奇用法总结,你需要知道!
  9. ios计时器失效_iOS计时器
  10. Oracle 单实例 迁移到 RAC 实例 -- 使用导出导入方法
  11. redis之消息订阅发布
  12. JPG怎么批量转换成PDF
  13. 11x 程序员专属 TapTap 代码编辑器主题
  14. 软件工程阶段性总结(二)——软件计划和需求分析
  15. 化学与计算机技术,计算机技术与化学教学整合浅议
  16. CS5216|DP转HDMI方案详解|分辨率1080P
  17. Attach函数的讲解
  18. 计算机开机慢更新配置,系统开机慢?教你如何提高电脑开机速度!
  19. texi2dvi - 打印 Texinfo 文档
  20. 被误解的明朝——中国的文艺复兴(转)

热门文章

  1. Python实战 | 使用代理IP刷CSDN博客访问量
  2. 对象可以创建数组吗_淘宝联盟平台可以创建淘礼金吗?相关问题解答
  3. IDEA中的SourceRoot含义及设置方法
  4. **python入门实战**-华氏度转摄氏度python代码
  5. pspice仿真之波形频率等的测量方法
  6. react todos 简单实现
  7. 编译错误(拓补排序)
  8. HTML网页设计结课作业 榆林子州 HTML5响应式旅游景区网站模板
  9. 状态分布函数 详细介绍
  10. 百练2967:特殊日历计算题解