文章目录
- 一、前期准备
- 二、新建DBC文件
- 三、添加报文(Msg)
- 四、添加信号
- 4.1 大小端模式
- 4.2 创建数值表
- 4.3 添加信号
- 五、关联信号和报文
- 六、设置报文发送类型和周期
- 七、编辑通信矩阵
一、前期准备
首先需要安装制作DBC文件的软件,这里使用的是CANdb++。由于博主刚开始接触汽车电子相关知识,如果有其他常用的制作DBC文件的软件,欢迎大家在评论区留言。

其次就是需要制作的报文,也就是通信协议。其中包括报文名称(Msg Name),报文ID(Msg ID),报文发送类型(Msg Send Type),报文周期时间(Msg Cycle Time(ms))报文长度(Msg Length Byte),信号名称(Signal Name),信号描述(Signal Description),排列格式(Byte Order),起始字节(Start Byte),起始位(Start Bit),信号发送类型(Signal Send Type),信号长度(Bit Length),数据类型(Data Type),精度(分辨率,Resolution),偏移量(offset),物理最大值(Singal Value Max(phys)),物理最小值(Signal Value Min(phys)),总线(十六进制)最小值(Signal Min Value(Hex)),总线最大值(Signal Value Max(Hex)),初始值(Initial Value(Hex)),单位(Unit),无效值(Invalid Value(Hex))信号描述(Singal Value Description)等。这里博主自己简单列一个报文。
| Msg Name | Msg ID | Msg Send Type | Msg Cycle Time(ms) | Msg Length Byte | Signal Name | Signal Description | Start Byte | Byte Orde | Start Bit | Signal Send Type | Bit Length | Data Type | Resolution | offset | Signal Value Min(phys) | Singal Value Max(phys) | Signal Min Value(Hex) | Signal Value Max(Hex) | Initial Value(Hex) | Unit | Singal Value Description |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CAR | 0x0404 | Cycle | 10 | 8 | Enable | 发动机使能 | 0 | Motorola LSB | 2 | Cycle | 1 | Unsigned | 1 | 0 | 0 | 1 | 0x0 | 0x1 | 0x1 | 0:不使能;1:使能 | |
| CAR | 0x0404 | Cycle | 10 | 8 | Speed | 发动机转速 | 2 | Motorola LSB | 16 | Cycle | 16 | Unsigned | 0.25 | 0 | 0 | 16000 | 0x0 | 0x3E80 | 0x0 | rpm |
二、新建DBC文件


三、添加报文(Msg)
新建完成后,点击左侧的“Message”来新建报文。

根据通信协议,填入报文的相关信息。

其中“Type”有两种,一种是“CAN Standard”,标准的CAN。一种是“CAN Extended”,扩展的CAN。标准帧的ID取值范围是0x0~0x7FF,而扩展帧的ID可以更大。CAN标准帧和扩展帧只是在ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已。如果“Type”选择错误,ID超出范围会报错。

其中DLC(Data Length Code)是发送报文的长度。
创建好的报文如下

四、添加信号
在介绍如何添加信号之前,先介绍一下大小端模式和如何新建数值表。
4.1 大小端模式
简单来讲,Intel是小端模式(Little-Endian小端序),Motorola是大端模式(Big-Endian大端序)。
小端模式——低字节存放在低地址端,高字节存放在高地址端
大端模式——低字节存放在高地址端,高字节存放在低地址端
举一个简单的例子,比如需要存储0x12 34 56 78
大端模式存储时,低字节放在高地址,高字节放在低地址。
存储时为 0x12 | 0x34 | 0x56 | 0x78
小端模式存储时,低字节放在低地址,高字节放在高地址。
存储时为 0x78 | 0x56 | 0x34 | 0x12
4.2 创建数值表
数值表就是用来指示信号中值的含义。点击“View”,选择“Value Tables”。

创建好的数值表如下

4.3 添加信号
点击左侧的“Singal”,右键右侧空白处,选择“New”。

按照通信协议要求,添加信号。在“Comment”窗口添加信号描述。
- Byte Order
这是排列格式,有两种。一种是小端模式,另一种是大端模式。关于小端模式和大端模式,下面会有相应的补充介绍。 - Uint
单位,没有可以不写 - Factor
对应通信协议中的精度,分辨率(Resolution) - Minimum和Maxmum
物理最小值和物理最大值 - Value Table
数值表,用来指示每一个数值的含义。需要自己创建。
创建好的发动机使能信号如下

创建好的发动机转速信号如下

五、关联信号和报文
创建完信号和报文之后,需要将信号添加到报文中。再次点击左侧的“Message”。选择“Signal”,点击下方的“Add”添加信号,将上面创建的信号添加进来。

六、设置报文发送类型和周期
双击打开新建的报文,选择“Attributes”窗口,根据通信协议来设定报文的发送类型和周期。

七、编辑通信矩阵
- 双击创建的Message(报文),选择“Layout”
- 点击“Add…”添加信号,根据通信协议规定的起始字节和起始位将信号添加进去


















![动态规划——区间dp [石子合并]](https://img-blog.csdnimg.cn/40c9fee9fa0242af9b555d43419a747c.png)

