车载网络测试-DBC文件解读【创建修改DBC】
1 背景
上文介绍了DBC文件对工程师的意义、DBC文件结构以及DBC文件的相关属性。本文主要介绍如何根据需求新建或者修改DBC文件,以便完成项目的实际需求。上一专题链接如下:
车载网络测试-DBC文件解读
2 需求
某车型的一路CAN总线通信矩阵(部分描述)需求:
- 报文发送节点:CCU
- 报文接收节点:ZCU_L
- 网络类型:标准帧CANFD
- 报文名:BMS_111
- 报文ID:0x111
- 报文周期:20ms
- 信号:BMS_Checksum_111、BMS_Init_Sts等
详细需求如下图:
3 创建DBC文件
3.1 新建DBC模板
1. 通过CANoe软件打开CANdb++Editor进行创建DBC空白模板
打开CANoe软件——>Tools——>CANdb++Editor。
2. 点击File——>Create Database…
3. 选择CANoe Template.dbc模板
4. 创建后的空白DBC如下图:
5. 点击保存DBC,并按照需求命名
以上,完成了DBC空白模板的创建,主要有Networks、ECUs、Network Nodes、Messages、Signals组成;根据需求我们实际只需关注Network Nodes、Messages、Signals的添加即可。
3.2 创建网络节点
1. 点击Network Nodes——>右键新建
2. 根据需求将新建的Network Node命名为ZCU_L——>点击确认
CCU节点的创建同上述操作;
3. 创建的CCU、ZCU_L网络节点如下:
3.3 创建信号
个人习惯先创建信号,再把信号添加到报文里面,当然也可以先创建报文,顺序对DBC的创建无任何影响,大家根据个人习惯操作即可。
1. 点击Signal——>右键选择新建即可
2. 根据需求添加信号属性
- 信号名:BMS_Init_Sts
- Byte Order:Motorola
- Value Type:Unsigned
- Factor:1
- Minimum:0
- Maximum:1
- Value Table:none 因为还没有可用的Value Table
3. 新建Value Table
点击View——>选择Value Tables
命名Value Tables,命名一定要方便后续识别
根据需求添加Value Description
创建完成的Value Tables如下图:
然后,再次回到该信号属性页去选择Value Tables即可;
以下是创建完成的BMS_Init_Sts信号
需求定义的所有信号创建方式同上方法,所有创建完成后如下图:
3.4 创建报文
1. 点击Message——>右键选择新建
2. 创建报文属性
- 报文名:BMS_111
- 报文类型:CAN标准帧
- 报文ID:0x111
- DLC:8
如下图:
3. 添加报文的信号
方法1:
点击Signal——>选择Add——>选择该报文下的信号——>OK
如下图:报文0x111下的信号已成功添加
方法2:
找到需要添加的信号——>长按信号拖动至对应报文下即可
4. 添加报文的发送节点
如下图,0x111报文的发送节点为CCU,接收节点为ZCU_L;
点击Transmitter——>点击Add——>选择CCU——>OK
5. 添加报文的接收节点
如下图,无任何可选择的节点;需要去找到该报文的信号,在信号属性里面去添加;
找到0x111报文——>选择所携带的信号BMS_Init_Sts——>点击Receivers——>选择Add——>选择ZCU_L——>OK
6. 对该报文下的信号进行排布
如下图,实际添加信号后,根据需求该信号在报文的位置有误;需求:Byte1 bit12;
直接长按信号进行拖动
7. 添加报文Attribute属性
如下图,新建的DBC为空,需要导入Attribute属性;可以选择以往类似项目的DBC模板进行导入或者使用CANoe安装包中的模板;
导入Attribute属性的方法:
选择File——>选择Import Attribute Definitions…
如下图,显示Import completed就成功了。
以下属性的定义在上一专题已经详细介绍,本文不进行阐述。
属性设置:
根据需求进行报文发送类型和周期的设置即可;
3.5 一致性检测
如果进行一致性检测无报错,就没问题了!
4 总结
以上是DBC文件的新建方法,修改的方法和新建基本上方法一致。希望能在项目中给大家带来些许帮助,如果存在描述问题的地方,欢迎找我一起交流、讨论!