Vector Candb++配置DBC文件(配置Node、Message、Singale 、收发、关联关系)

Vector Candb++软件基本概念

Vector CANdb++ 是用于编辑和管理 CAN 数据库(即 DBC 文件)的专用软件。要理解它,需要先厘清以下几个核心概念及其层级关系:

1. 软件本质:DBC 文件编辑器

CANdb++ 本身不发送或接收数据,它是一个数据库设计工具 。它的输出是 .dbc 文件,这个文件相当于 CAN 网络的字典,告诉上位机软件(如 CANoe、CANalyzer)如何把原始十六进制数据翻译成有物理意义的温度、转速、开关状态。

2. 核心基本概念(层级从大到小)

概念 英文 功能类比 关键解释
网络节点 Node 传感器 / 控制器 总线上负责收发报文的 ECU 名称,如 BMS(电池管理)、VCU(整车控制)。
报文 / 帧 Message 快递包裹 一次发送的数据集合,有唯一 ID (十六进制,如 0x123)。
信号 Signal 包裹里的具体物品 报文内部的具体物理量,如 电池电压电机转速
值表 Value Table 状态翻译表 将数字转换为文本状态,例如 0=Off, 1=On, 2=Error

3. 关键细节区分

  • 属性 (Attribute) vs 数值 (Value)

    • 在 CANdb++ 界面左侧看到的是定义(例如:定义信号长度为 16 bit,因子 0.1)。

    • 在右侧或实际通信中看到的是数值 (例如:原始值为 0x64,解析后显示 10.0 V)。

  • Big Endian (Motorola) vs Little Endian (Intel)

    • 这是 CANdb++ 中最容易出错的设置。它决定了多个字节在传输时,高字节在前还是低字节在前。不同车企规范不同(日系多用 Intel,欧美多用 Motorola),填错会导致数据解析出天文数字。

4. 信号与报文的映射逻辑(Layout)

在 CANdb++ 的 Layout 视图中,你需要重点关注:

  • 起始位 (Startbit):信号在 8 个字节(64 bits)长条图中的起点。

  • 长度 (Length):占多少位(bit)。

  • 因子 (Factor) & 偏移量 (Offset) :物理值 = 原始值 × Factor + Offset

5. 典型工作流认知

使用 CANdb++ 不是为了画图,而是为了标准化

  1. 创建 Node(谁发)。

  2. 创建 Message(发什么包,ID 多少,周期多快)。

  3. 在 Message 里创建 Signal(包里数据的含义)。

  4. 保存 .dbc 文件供 CANoe/CANape 导入,这样在 Trace 窗口看到的才不是乱码 00 0A 3F...,而是 车速 = 60 km/h

Vector Candb++配置DBC报文

DBC报文说明文件

这是一个DBC文件表格,然后里面有报文名称数据帧,每种数据帧对应的含义,以及数据帧的最大值跟最小值。

|-----------|---------|-------|--------|----------|----------------------------------------------|---|---|---|---|
| Name报文 名称 | 报文描述 | 报文标识符 | 报文发送类型 | 数据类型 | 信号名称 | | | | |
| VCU_Meg | VCU控制指令 | 0xCF | Cycle | Unsigned | VCU_Send_ECU_Cmd& VCU_Send_Mode_Cmd | | | | |
| ECU_Meg | ECU控制指令 | 0xFD | Cycle | Unsigned | ECU_Working_State& ECU_Inverter_Temperature | | | | |

|------|------------|------|------|------|--------|--------|--------|--------------------------------------------|
| 起始字节 | 位置 | 信号长度 | 排列格式 | 精度 | 偏移量 | 物理最小值 | 物理最大值 | 信号描述 |
| 0&1 | 7-0&15-8 | 8&8 | 1&1 | 1&1 | 0&0 | 0&0 | 255&3 | 0xAA终止0x55启动& 0x0待机 0x1扭矩模式 0x2速度模式 |
| 0&2 | 1-0&23-16 | 2&8 | 1&1 | 1&1 | 0&-40 | 0&-40 | 255&3 | 0x0待机 0x1扭矩模式 0x2速度模式 0x3故障模式 有效范围-40&200 |

然后这两个ECU在通信网络中,通过CAN通信进行相互通信,通信的数据帧需要使用Vector Candb++进行制作。

创建dbc文件

然后这里根据DBC报文矩阵,进行配置DBC软件,首先在Vector Candb++软件中选择文件,然后选择创建数据库,具体如下图所示。

然后选择数据库类型,​​具体如下图所示。​​​​​

然后将创建的文件进行命名保存,在保存的位置会生成.dbc文件具体如下图所示。

这里选择的是桌面,可以看到已经生成了,相同名字的dbc文件。

Vector Candb++创建网络节点Node

选择软件中的Network nodes然后右键选择New。

然后再跳转的页面里面填写网络节点的名字,然后点击确定就能生成。

然后这里配置ECU、VCU两个网络节点,具体如下图所示。

Vector Candb++创建Message

因为两个ECU是相互通信收发报文的,这里需要将报文数据,给配置出来。

然后这里按照表格进行配置报文ID,同时注意DLC数据帧长度配置正确。

到这里报文就添加完成。

然后这里添加另一条报文,同时要注意报文的发送周期,跟发送模式是否正确。

Vector Candb++创建信号

这里选择信号,然后New开始新建信号。

这信号的参数需要跟execel表格中进行对齐,信号名称、数据长度、最大值、最小值、包括数据模式类型,分别是大端数据还是小端类型的数据。

Intel&Motorola核心区别:字节怎么放,位怎么数

1. Intel(小端序)

  • 字节顺序低字节放在低地址(先发的字节存放数值的低位)。

  • 位编号方式 :在一个字节内,高位对应编号高,但跨字节时连续递增

  • 视觉记忆 :如果数据是 0x1234,在CAN报文中先看到 0x34,后看到 0x12

2. Motorola(大端序)

  • 字节顺序高字节放在低地址(先发的字节存放数值的高位)。

  • 位编号方式 :在一个字节内,高位对应编号高,但跨字节时高字节的位编号更大,不是简单递增。

  • 视觉记忆 :如果数据是 0x1234,在CAN报文中先看到 0x12,后看到 0x34

Vector Candb++信号绑定报文

这里创建完成信号之后,需要将信号绑定到对应的Message上,需要注意的是,Message跟信号绑定需要匹配,就是Singal中的属性是配置对应报文的,如果绑定报文错误,然后Message发送的数据也是错的。

Vector Candb++添加Value Table

Value Table用来描述数据帧的作用,相当于函数简介,具体添加方式如下图所示。

这里在视图中选择Value Table功能。然后在跳出的页面选择,New功能,同时选择新的Value Table

然后再跳转出的页面输入名字。

同时名字这里需要对应对应的Message名字,因为这个是数据帧作用简介,要看的出来对应的是那个的数据帧,同时描述这里需要添加对应的数据帧跟该数据帧的作用。

然后再编写完成之后在编写应用然后选择确定。

然后需要注意的是,如果报文没有Value Table数据描述,但是只有作用描述的话,需要再评论中进行添加对应的描述,具体如下图所示。

然后再添加完成Value Table的Message中也需要添加Comment。

Vector Candb++信号添加对应的Value Table

上面创建完成信号对应的数据帧作用完成之后,需要跟对应的描述信号进行绑定。双击创建的信号,然后再Value Table下选择对应的信号描述。

选择完成之后选择应用,然后选择描述。

添加完成之后,信号的Value Table就能看见有关联值了。

然后需要注意的是,在配置Message的时候里面还有两个选项,是精度跟偏移量,这两个参数分别是如下图所示。

  • Factor 就是 精度 (Resolution / Scaling)

  • Offset 就是 偏移量

也需要跟execel中的数据进行对照,然后再信号中能够查看所有配置信号的具体信息,具体图片如下。

Vector Candb++报文添加发送方

Vector Candb++配置的ECU报文中,需要配置Message的收发双方,这里配置ECU的发送方,因为ECU是发送自己的Message给VCU所以这里发送方配置为ECU。

添加完成之后选择是。

配置完成之后,重新打开Message就能够看到发送方已经改变了。

Vector Candb++报文添加接受方

这里因为选择是ECU所以收的是VCU发送的报文,具体配置接受Message如下图所示。

然后选择VCU的Message具体如下图所示。

Vector Candb++信号比特位与execel保持一致

Layout用来配置报文的起始位置,具体数据位置如下图所示。

然后如果有报文的起始位置不对应可以通过拖拽的方式拖拽到对应的位置,具体如下图所示。

Vector Candb++添加Attribute

Vector Candb++添加单位

发送数据单位填写位置具体如下所示。

填写上去然后应用就行了。

编写不易,请勿搬运,希望对你有所帮助!!!