CANoe 0 基础系列教程的第三期内容,核心是讲解如何在 CANoe 工程中加载 DBC (Database CAN) 文件以及 DBC 文件的作用。
CANoe 教程第三期:加载 DBC 文件与信号解析
一、 课程回顾与本期目标
- 回顾: 上一期(第二期)学习了创建 CANoe 工程,添加仿真 ECU 节点,并在 Trace 窗口观察原始报文
。 - 本期目标:
- 学习如何为 CANoe 工程加载 DBC 文件
。 - 理解 DBC 文件的作用:为什么以及如何帮助解析 CAN 报文中的信号
。 - 分析 DBC 文件与信号矩阵表的关系
。
- 学习如何为 CANoe 工程加载 DBC 文件
二、 面临的问题:无 DBC 文件时分析报文的困难
- 现状: 打开上一期的项目 (
demo_canoe_project01),启动后 Trace 窗口能看到仿真节点发送的原始报文(如 ID 196, ID 28B)。 - 痛点:
- Trace 窗口只显示原始数据(ID、数据字节等),无法直接看出报文的具体含义或其中包含的信号(如发动机转速、车灯状态等)
。 - 需要依赖主机厂提供的“信号矩阵表”进行人工解析
。
- Trace 窗口只显示原始数据(ID、数据字节等),无法直接看出报文的具体含义或其中包含的信号(如发动机转速、车灯状态等)
- 信号矩阵表:
- 定义了每个报文 ID、包含的信号、信号含义、起始位、长度、系数、偏移量、单位等信息
。 - 人工解析过程复杂且痛苦(需要根据起始位、长度、排列顺序、转换进制、乘以系数、加偏移量等步骤计算信号物理值)
。 - 在没有 CANoe 或 DBC 文件支持的情况下(如使用简单的总线工具),只能依赖此方法
。
- 定义了每个报文 ID、包含的信号、信号含义、起始位、长度、系数、偏移量、单位等信息
三、 解决方案:使用 DBC 文件
- DBC 文件介绍:
- 全称:Database of CAN,即 CAN 网络的数据库文件
。 - 由 Vector 公司设计,用于存储 CAN 网络通信定义
。 - 本质上是将信号矩阵表中的信息(报文定义、信号定义、解析规则等)以特定格式存储的文件
。 - 主机厂通常会提供 DBC 文件
。
- 全称:Database of CAN,即 CAN 网络的数据库文件
- 准备 DBC 文件:
- 贾老师提供了一个示例 DBC 文件 (
virtual_network.dbc),放在can_db文件夹内。 - 将
can_db文件夹(包含 DBC 文件)复制到当前 CANoe 项目工程目录下。
- 贾老师提供了一个示例 DBC 文件 (
四、 在 CANoe 中加载 DBC 文件
- 停止工程: 必须先停止运行中的 CANoe 工程才能添加数据库
。 - 添加数据库:
- 在
Configuration桌面的Simulation Setup面板右侧的系统视图(System View)中找到Databases节点。 - 右键点击
Databases->Add。 - 浏览到项目目录下的
can_db文件夹,选中.dbc文件并打开。
- 在
五、 DBC 文件加载后的效果与好处
- Trace 窗口变化:
- 报文名称显示: Trace 窗口中原本只有 ID 的报文,现在会显示其在 DBC 文件中定义的名称(如 ID 28B 显示为
BCM_BasicInfo,ID 196 显示为EMS_BasicInfo)。 - 信号解析:
- 报文左侧出现可展开的
+号。 - 展开后,清晰列出该报文包含的所有信号(如
EMS_EngineSpeed,BCM_TurnSignalLeft)。 - 显示每个信号的物理值(带单位,如 1500 rpm)、原始值(十六进制)、信号名称/注释(如“发动机转速”)
。 - 点击某个信号,Trace 窗口中对应的数据字节会加粗显示
。
- 报文左侧出现可展开的
- 报文名称显示: Trace 窗口中原本只有 ID 的报文,现在会显示其在 DBC 文件中定义的名称(如 ID 28B 显示为
- 优势:
- 极大提高了报文分析的可读性和便捷性,无需再进行复杂的人工计算
。 - 使得测试工程师能轻松理解总线上的数据含义
。
- 极大提高了报文分析的可读性和便捷性,无需再进行复杂的人工计算
六、 深入理解 DBC 文件 (使用 CANdb++)
- 打开 DBC 文件:
- 可以直接在 CANoe 的
Databases节点下双击已添加的 DBC 文件。 - 也可以在文件浏览器中双击
.dbc文件。 - 会使用 CANoe 自带安装的
CANdb++ Editor工具打开。
- 可以直接在 CANoe 的
- CANdb++ 界面:
- Messages (报文): 列出 DBC 文件中定义的所有报文及其 ID、名称等
。 - Signals (信号): 点击某个报文,右侧会显示该报文包含的所有信号
。 - 信号详细信息: 可以看到信号的名称、单位、起始位 (Startbit)、长度 (Length)、系数 (Factor)、偏移量 (Offset)、中文注释等,这些信息与信号矩阵表完全对应,也是 CANoe 能正确解析信号的基础
。
- Messages (报文): 列出 DBC 文件中定义的所有报文及其 ID、名称等
七、 总结与后续
- 本期重点学习了 DBC 文件的重要性和如何在 CANoe 中加载它以方便地解析报文信号
。 - DBC 文件是对信号矩阵表的数字化实现
。 - 虽然 DBC 文件的制作是另外的话题(后续可能讲解),但理解其作用对测试工程师至关重要
。