DBC 文件文件介绍
DBC(Database CAN)文件是一种用于描述 CAN(控制器局域网)消息和信号的标准化文件格式。它广泛用于汽车和工业领域,以便定义 CAN 网络中节点之间的数据传输规则。以下是 DBC 文件的内容格式解读:
1. 文件结构
DBC 文件的内容主要由以下几个部分组成:
- 版本信息 (
VERSION) - 新节点定义 (
BU_) - 消息定义 (
BO_) - 信号定义 (
SG_) - 值表定义 (
VAL_) - 属性定义 (
BA_) - 注释 (
CM_) - 信号值描述 (
VAL_) - 其他扩展信息
2. 主要语法和内容
2.1 版本信息
VERSION "1.0"
- 描述 DBC 文件的版本号(可选)。
2.2 新节点定义
BU_: Node1 Node2 Node3
BU_表示 "Bus Unit",即 CAN 总线上的节点。- 后面列出所有在 CAN 网络中定义的节点名称。
2.3 消息定义
BO_ 123 MessageName: 8 SenderNode
BO_表示 "Message Definition"。123是消息 ID(CAN 报文的标识符)。MessageName是消息的名称。8是数据长度,单位 为字节。SenderNode是发送该消息的节点名称。
2.4 信号定义
SG_ SignalName : StartBit|Length@ByteOrder+ValueType (Factor,Offset) [Min|Max] "Unit" ReceiverNodes
SG_表示信号定义。SignalName是信号的名字。StartBit是信号在消息中的起始位。Length是信号的位长度。ByteOrder是字节顺序:0表示 Motorola(大端模式)。1表示 Intel(小端模式)。
ValueType表示信号的值类型:+表示无符号数。-表示有符号数。
(Factor, Offset)是信号值的缩放因子和偏移量。[Min|Max]是信号的最小值和最大值。"Unit"是信号的物理单位(如 "km/h", "V", "°C")。ReceiverNodes是接收该信号的节点列表。
示例:
SG_ Speed : 0|16@1+ (0.1,0) [0|250] "km/h" Node1 Node2
- 信号名为
Speed,从第 0 位开始,占 16 位,小端模式,无符号数。 - 缩放因子为 0.1,偏移量为 0。
- 最小值为 0,最大值为 250,单位为 km/h。
- 接收节点为
Node1和Node2。
2.5 值表定义
VAL_ SignalName Value1 "Description1" Value2 "Description2" ... ;
- 定义信号值的枚举描述。
SignalName是信号名称。Value1,Value2是信号的具体值。"Description1","Description2"是对应值的文本描述。
示例:
VAL_ GearPosition 0 "Neutral" 1 "First" 2 "Second" 3 "Third" 4 "Fourth" 5 "Fifth" 6 "Sixth";
- 信号
GearPosition的值 0 表示 "Neutral",1 表示 "First",依此类推。
2.6 属性定义
BA_ "AttributeName" ObjectType ObjectName Value;
- 定义 DBC 文件中的自定义属性。
"AttributeName"是属性名称。ObjectType是属性的对象类型(如BU_,BO_,SG_等)。ObjectName是对象的名称。Value是属性的值。
示例:
BA_ "GenMsgCycleTime" BO_ 123 100;
- 定义消息 ID 为 123 的消息的周期时间为 100 毫秒。
2.7 注释
CM_ ObjectType ObjectName "Comment";
- 定义注释信息。
ObjectType是注释对象的类型(如BU_,BO_,SG_等)。ObjectName是对象的名称。"Comment"是注释内容。
示例:
CM_ BO_ 123 "This is a comment for message 123.";
CM_ SG_ Speed "This signal represents vehicle speed.";
2.8 信号值描述
VAL_ MessageID SignalName Value1 "Description1" Value2 "Description2" ... ;
- 与
VAL_类似,但这里是针对特定消息中的信号进行值描述。
示例:
VAL_ 123 Speed 0 "Stop" 1 "Slow" 2 "Fast";
- 对消息 ID 为 123 中的
Speed信号进行值描述。
3. 示例完整 DBC 文件
以下是一个简单的 DBC 文件示例:
VERSION "1.0"
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
BS_:
BU_: Engine ECU1 ECU2
BO_ 100 EngineData: 8 ECU1
SG_ Speed : 0|16@1+ (0.1,0) [0|250] "km/h" ECU2
SG_ RPM : 16|16@1+ (0.125,0) [0|8000] "rpm" ECU2
BO_ 200 GearInfo: 8 ECU2
SG_ GearPosition : 0|3@0+ (1,0) [0|7] "" ECU1
CM_ BO_ 100 "Engine data including speed and RPM.";
CM_ SG_ Speed "Current vehicle speed.";
CM_ SG_ RPM "Engine revolutions per minute.";
VAL_ GearPosition 0 "Neutral" 1 "First" 2 "Second" 3 "Third" 4 "Fourth" 5 "Fifth" 6 "Sixth";
4. 总结
- DBC 文件是描述 CAN 网络通信协议的标准文件,包含了节点、消息和信号的详细定义。
- 它被广泛应用于汽车电子开发,用于描述车辆中各个电子控制单元(ECU)之间的通信规则。
- 理解 DBC 文件的结构和语法对于 CAN 总线的开发和调试至关重要。