DBC文件格式文档【翻译】
本文是Vector文档DBC_File_Format_Documentation.pdf的翻译,水平有限,仅供参考。
1 Introduction 介绍
DBC(DataBase for Can)文件由Vector公司开发的数据库文件,用来描述单个CAN网络的通信,用于监视和分析网络并模拟物理上不可用的节点(剩余总线仿真)。
DBC文件还可用于开发属于CAN网络的电子控制单元的通信软件。DBC文件不处理ECU的功能行为。
2 General Definitions 一般定义
本文用到的几个通用的定义:
unsigned_integer: an unsigned integer
signed_integer: a signed integer
double: a double precision float number
char_string: an arbitrary string consisting of any printable characters except double hyphens ('"').
C_identifier: a valid C_identifier. C_identifiers have to start with am alpha character or an underscore and may further consist of alpha-numeric characters and underscores.
C_identifier = (alpha_char | '_') {alpha_num_char | '_'}
DBC文件中用到的几个关键字:
关键字 |
对象类型 |
BU_ |
网络节点 |
BO_ |
消息 |
SG_ |
信号 |
EV_ |
环境变量 |
本文使用BNF标记语法描述:
符号 |
含义 |
= |
等号右边的语法是对等号左边名称的定义 |
; |
分号结束一个定义 |
| |
竖线表示可选择的 |
[ … ] |
方括号内的内容是可选的(出现零次或一次) |
{ … } |
大括号内的内容是重复的(出现零次或多次) |
( … ) |
小括号定义分组的元素 |
' … ' |
单引号中的文本必须按照定义显示 |
(* … *) |
注释 |
3 Structure of the DBC File 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 ;
DBC文件使用以下几个部分描述can网络的基本通信:
• Bit_timing 位定时
这个部分是必要的,但一般是空的
• nodes 节点
这个部分是必要的,定义了网络的节点
• messages 消息
这个部分定义了消息和信号
以下部分不在普通的DBC中使用,仅出于完整性的目的在此定义它们:
• signal_types
• sigtype_attr_list
• category_definitions
• categories
• filter
• signal_type_refs
• signal_extended_value_type_list
如果不为系统或其余总线模拟定义任何附加数据,DBC文件内不包含环境变量。
4 Version and New Symbol Specification 版本和新符号规范
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 Bit Timing Definition位定时定义
位定时部分定义了总线的波特率和BTR寄存器的设置,这部分废弃不再使用了,但是DBC文件中一定要有BS_关键字。
bit_timing = 'BS_:' [baudrate ':' BTR1 ',' BTR2 ] ;
baudrate = unsigned_integer ;
BTR1 = unsigned_integer ;
BTR2 = unsigned_integer ;
6 Node Definitions节点定义
节点部分定义了所有节点的名称,这些名称不能重复。
nodes = 'BU_:' {node_name} ;
node_name = C_identifier ;
7 Value Table Definitions值表定义
值表部分定义了全局值表。值表里的值描述定义了原始值的编码。在常用的DBC文件中不使用全局值表,而是为每个信号单独定义值描述
value_tables = {value_table} ;
value_table = 'VAL_TABLE_' value_table_name
{value_description}';' ;
value_table_name = C_identifier ;
7.1 Value Descriptions值描述
值描述定义单个值的文本描述。 该值可以是总线上传输的信号原始值,也可以是剩余总线仿真中环境变量的值。
value_description = double char_string ;
8 Message Definitions消息定义
消息部分定义了所有帧的名称、属性以及在这些帧上传输的信号。
messages = {message} ;
message = BO_ message_id message_name ':' message_size
transmitter {signal} ;
message_id = unsigned_integer ;
消息的id必须是唯一的,最高有效位是1的帧是扩展帧,将扩展帧的id与上0xCFFFFFFF就可以获得实际id。
message_name = C_identifier ;
在此部分中定义的名称在消息集中必须是唯一的。
transmitter = node_name | 'Vector__XXX' ;
transmitter指定了发送此消息的节点,它必须在前面定义的节点集合之中,没有发送节点的消息的transmitter为'Vector__XXX'
8.1 Signal Definitions 信号定义
消息的信号部分列出了位于此消息的所有信号,包括信号的位置和属性。
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值指定了信号在帧数据域中的位置。对于Intel格式的信号,start_bit值是最低有效位的位置。对于motorola格式的信号,start_bit值是最高有效位的位置。这些位以锯齿方式计数。起始位的范围为0 到 (8 * message_size - 1).
signal_size = unsigned_integer ;
signal_size指定了信号的位数。
byte_order = '0' | '1' ; (* 0=little endian, 1=big endian *)
如果是字节顺序是intel格式,那这一位就是0;如果是motorola格式,这一位是1。
value_type = '+' | '-' ; (* +=unsigned, -=signed *)
值类型定义了信号是有符号还是无符号的。
factor = double ;
offset = double ;
因数和偏移定义了信号原始值到信号物理值的线性转换规则(因数不能是0):
physical_value = raw_value * factor + offset
raw_value = (physical_value – offset) / factor
minimum = double ;
maximum = double ;
最大值最小值定义了信号物理值的范围
unit = char_string ;
receiver = node_name | 'Vector__XXX' ;
receiver定义了信号的接收者,接收者名称必须是前面定义的节点集合里面的。如果没有接收者,就是用'Vector__XXX'。
float和double类型的信号由signal_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 Definition of Message Transmitters消息发送者的定义
消息发送器部分可以定义一个消息由多个发送节点发送,一般用来描述高层的通信。
message_transmitters = {message_transmitter} ;
Message_transmitter = 'BO_TX_BU_' message_id ':' {transmitter} ';' ;
8.3 Signal Value Descriptions信号值描述
信号值部分定义了特定信号原始值的编码。
value_descriptions = { value_descriptions_for_signal |value_descriptions_for_env_var } ;
value_descriptions_for_signal = 'VAL_' message_id signal_name{ value_description } ';' ;
9 Environment Variable Definitions环境变量定义
在环境变量部分,定义了在系统仿真和剩余总线仿真中用的环境变量
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_variable_data = 'ENVVAR_DATA_' env_var_name ':'data_size ';' ;
data_size = unsigned_integer ;
9.1 Environment Variable Value环境变量值描述
环境变量的值描述提供了该变量的特定值的文本表示形式。
value_descriptions_for_env_var = 'VAL_' env_var_name{ value_description } ';' ;
10 Signal Type and Signal Group Definitions信号类型和信号组定义
信号类型用于定义多个信号的通用属性,通常在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 Comment Definitions注释定义
注释部分包含了注释对象,对于每一个带有注释的对象,本节都会定义一个带有对象类型标识符的条目。
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 User Defined Attribute Definitions用户定义的属性
用户定义的属性是一个扩展dbc文件对象属性的方式,这些附加的属性必须用一个带有属性默认值的属性定义。对于具有为属性定义的每个对象,必须定义属性值条目。如果没有为对象定义属性值,对象属性值是默认的属性值。
12.1 Attribute Definitions 属性定义
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_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" ;
【本文完】
DBC文件格式文档【翻译】相关推荐
- Linux内核:VFIO Mediated Device(vfio-mdev)内核文档(翻译)
<ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <提升KVM异构虚拟机启动效率:透传(pass-through).DM ...
- [参考文档] [翻译]Oracle 12c R2优化器白皮书
[参考文档] [翻译]Oracle 12c R2优化器白皮书 原文链接: http://www.oracle.com/technetwor ... edb-12c-1963236.pdf 第一版翻译链 ...
- WebView 文档 翻译
文档地址:https://developer.android.google.cn/reference/android/webkit/WebView.html WebView 文档 public cla ...
- libevent 学习文档-翻译
文章目录 Libevent 学习记录 第一节 关于文档 第0章:关于本文档 示例说明 第1章:异步IO的简单介绍. 异步 IO 的小介绍 关于便利性?(Windows 呢?) Libevent 参考手 ...
- permission 文档 翻译 运行时权限
文档位置: API24/guide/topics/security/permissions.html System Permissions 系统权限 Android is a privilege-se ...
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 : -- 官方文档 : https://develope ...
- Linux内核:VFIO 内核文档 (实例,API,bus驱动API)
<ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <提升KVM异构虚拟机启动效率:透传(pass-through).DM ...
- 所见即所得编辑器_文档标记语言与所见即所得编辑器相比的优势
所见即所得编辑器 by Christian Neumanns 克里斯蒂安·纽曼斯(Christian Neumanns) 文档标记语言与所见即所得编辑器相比的优势 (The advantages of ...
- Spring-Core 中文翻译+总结文档(上)
Spring - Core 引言 使用版本 5.2.5RELEASE 这一部分的文档覆盖了几乎所有的Spring 框架的技术,Spring框架最主要的控制反转(IOC容器),在对Spring框架的IO ...
- 免费网站翻译整个文档并保留原格式
2022.11.19补充 刚刚想翻译一下来着,发现百度通用翻译服务开始收费了,每月前5万字符免费!!!刚刚翻译了一篇4页的pdf就用了2万了,慎用. ------------------------- ...
最新文章
- 数据中心液体冷却方案正在兴起的五大原因
- 科技行业风投日趋谨慎:VR、机器学习和汽车值得关注
- Event 事件 - 基础
- vscode 使用 ssh 登录
- 九、Pandas高级处理
- Android5.0新控件
- CSS选择器必备的3个知识点
- Java数据结构和算法(二):数组
- 奇怪的电梯(洛谷-P1135)
- linux修改默认python版本_将Linux下python默认版本切换成替代版本
- redis持久化之rdb
- Flash务实主义——Loading
- 使用云CRM的10个理由
- 洛谷——P1085 [NOIP2004 普及组] 不高兴的津津
- Java全栈工程实践
- 用 SwiftUI 实现一个开源的 App Store
- uc保存html,UC浏览器如何保存网页 怎么保存网页图文教程
- HTML制作宣传片,如何制作一部好的宣传片
- flash actionscript MovieClip(电影剪辑)控制
- Robotium 介绍