您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
如何使用CANdb++ Editor创建并制作一个DBC
 
 
   次浏览      
 2024-3-14
 
编辑推荐:
本文主要介绍了如何使用CANdb++ Editor创建并制作一个DBC。希望对你的学习有帮助。
本文来自于知乎,由火龙果软件Linda编辑,推荐。

0关键字/术语描述

CANdb++:

通常在数据库中管理在网络总线系统中处理的所有信息以及信息单元之间的相互关系。CANdb ++是一个数据管理程序,可用于创建和修改这些数据库。

CANdb ++软件窗口中排列了以下元素(见图0-1):

图0-1

Communication Matrix:通信矩阵

在Communication Matrix中,信号,消息和网络节点之间的相互关系以表格形式显示。比如DBC转换成Excel表格的形式显示。

DBC:CANdb network file (Data Base for CAN)

描述CAN网络所需的所有信息都存储在CANdb network file中。CANdb network file的文件扩展名为DBC,可以使用CANdb编辑器(CAN数据库编辑器)或CANdb ++编辑器创建。

Multiplexing:

通过信号复用,可以根据复用值在消息中的相同数据字节上传输不同的信号。包含多路复用值的信号称为Multiplexor Signal(模式信号)。根据多路复用值发送的信号称为Multiplexed(与模式有关)Signals(在此示例中为Signal_S1,...,Signal_S6)。

在MDC标准多路复用器概念中,要一起发送的多路复用信号必须每个都合并到一个Multiplex Group中(例如,示例中的Signal_S1和Signal_S2)。

举例:

如果多路复用值等于0,则发送信号Signal_S1和Signal_S2;如果等于1,则信号Signal_S3和Signal_S4; 如果等于2,则发送信号Signal_S5和Signal_S6(见图0-2)。

图0-2

下面来详细介绍如何使用CANdb++ Editor创建并制作一个DBC。

1 启动“CANdb++ Editor”

双击CANdb ++ Editor图标(见图1-1),启动CANdb ++后,将显示Overview窗口,在其工作区中不包含任何窗口(见图1-2)。

图1-1

图1-2

2 创建一个新的DBC(CANdb network file (Data Base for CAN))

按照以下步骤创建新的CAN数据库文件:

a)依次选择菜单栏FileàCreate Database…(见图2-1),打开“Template”模板对话框(见图2-2);

图2-1

图2-2

b) 在“Template”模板对话框中,根据需要选择合适的模板,这里以CANTemplate.dbc模板为例,单击“OK”按钮;

c)执行完b)后,弹出“New Database FIle”对话框,找到合适的路径,存放新建的DBC(CAN数据库文件),并给这个数据库文件命名,最后单击“保存”按钮(见图2-3)。

图2-3

d)执行完c)后,默认打开这个新建的DBC(CAN数据库文件),并默认显示Overview窗口(见图2-4)。

图2-4

3 创建CAN网络当中的Network nodes网络节点

在Network nodes中定义CAN网络当中的节点。

按照以下步骤新建CAN网络中的节点:

a)选中“Network nodes”并鼠标右键,在其上下文中选择“New”(见图3-1),弹出“Node ‘New_Node_1’” 对话框(见图3-2);

图3-1

图3-2

b) 在“Node ‘New_Node_1’”对话框下的Definition子选项卡中定义节点的名称(见图3-3);

图3-3

c) 依次类推,新建OBD和VCU两个网络节点(见图3-4);

图3-4

注意:

在现实项目当中,可更具项目实际情况定义节点的个数,这里仅仅是演示,才定义了两个节点。

4 创建CAN网络当中的Message消息

这里Message(消息)可以称之为Frame(帧),也可称之为CAN ID,其用来表示CAN的标识符。一个CAN网络当中往往存在多个Message,但CAN网络中Message的CAN ID必须是唯一的,即每个CAN ID在一个CAN网络中只能使用一次。

按照以下步骤新建Message信号:

a)选中“Message”并鼠标右键,在其上下文中选择“New”(见图4-1),弹出“Message‘New_ Message_1’”对话框(见图4-2);

图4-1

图4-2

b) 在“Message‘New_ Message_1’”对话框下的Definition子选项卡中定义Message的属性(见图4-3);

图4-3

注意:

因为在这儿之前没有添加Attribute Definitions,此时无法编辑Tx Method和Cycle Time。这将在第9章进行描述。

c) 在“Message‘New_ Message_1’”对话框下的Transmitters子选项卡中,单击“add”按钮(见图4-4),将该Message添加到对应的发送节点(见图4-5,图4-6);

图4-4

图4-5

图4-6

c) 在“Message‘New_ Message_1’” 对话框下的Comment子选项卡中,可根据需要对该Message添加一些备注(见图4-7);

图4-7

d) 最后单击左下角的“确定”按钮,完成Message的编辑。

注意:

其它Message消息的新建,可参照该过程。这里仅描述一个Message消息。

5 创建Message消息中Signals信号

一个Message消息常存在多个Signal信号。

5.1 创建Signal信号

按照以下步骤新建Signal信号:

a)选中“Signals”并鼠标右键,在其上下文中选择“New”(见图5-1),弹出“Signal ‘New_Signal_1’” 对话框(见图5-2);

图5-1

图5-2

b) 在“Signal ‘New_Signal_1’” 对话框下的Definition子选项卡中定义Signal信号的属性(见图5-3);

图5-3

注意:

因为在这儿之前没有添加Attribute Definitions,此时无法编辑Init_Value。这将在第9章进行描述。

b) 在“Signal ‘New_Signal_1’” 对话框下的Messages子选项卡中, 单击“add”按钮(见图5-4),将该Signal信号添加到对应的Message(见图5-5,图5-6);

图5-4

图5-5

图5-6

c) 在“Signal ‘New_Signal_1’” 对话框下的Comment子选项卡中,可根据需要对该Message添加一些备注(图5-7);

图5-7

d) 最后单击左下角的“确定”按钮,完成Signal的编辑。

注意:

其它Signal信号的新建,可参照该过程。这里仅描述一个Signal消息。照此方法,Test_ID_211给添加以下信号:Voltage_value、Current_value和OBD_status(见图5-8);

图5-8

5.2 在Message中调整Signal信号的位置

在5.1中,我们己经将创建的Signal信号添加对应的Message消息Test_ID_211中,但CANdb ++ Editor在将Signal信号添加到Message消息时,往往不会用户期望的那样排列,这时会导致Signal信号在Message消息中的Startbit起始位置出错。这时需要手动去调整。

常见的调整方法有两种,下面一一说明:

a) 以Message消息Test_ID_211中Voltage_value为例。选中Voltage_value并鼠标右键,在其上下文中选择“Edit mapped Signal…”(见图5-9)。或者双击Test_ID_211下的Voltage_value信号,也有同样的效果。在弹出“Message Signal ‘Test_ID_211::Voltage_value’”对话框下的“Definition”子选项卡中(见图5-10),查看Signal信号的Startbit起始位置是否有问题。其它的信号也按照此法一一确认。

图5-9

图5-10

b) 以Message消息Test_ID_211为例。选中Test_ID_211并鼠标右键,在其上下文中选择“Edit Message…”(见图5-11)。或者双击Test_ID_211消息,也有同样的效果。在弹出“Message ‘Test_ID_211(0x211)’”对话框下的“Layout”子选项卡中(见图5-12),查看各Signal信号的位置是否有异常,若存在,可手动拖曳相应信号到正确的位置。

图5-11

图5-12

6 在Message中编辑每个Signal信号的接收节点

以Message消息Test_ID_211中Voltage_value为例。选中Voltage_value并鼠标右键,在其上下文中选择“Edit mapped Signal…”(见图6-1) 。或者双击Test_ID_211下的Voltage_value信号,也有同样的效果。

图6-1

在弹出“Message Signal ‘Test_ID_211::Voltage_value’”对话框中,选择“Receiver”子选项卡(见图6-2),单击“add”按钮,在弹出的“Choose Objects”的选项卡中找到信号的接收节点(见图6-3),最后单击“确定”按钮,完成Signal信号添加到对应的接收节点(见图6-4)。

图6-2

图6-3

图6-4

照此方法,给Test_ID_211下的其它信号添加接收的节点:

7 创建Value tables

Value tables可用于将符号名称分配给Signal信号或环境变量的值。举个例子,可以使用Value tables将符号名称red、yellow和green分配给Colors信号的具体值1、2和3。

Value tables常用来描述信号的值是否有效,以及用布尔量直观显示信号的含义。

下面来介绍Value tables常见的两种用法。

7.1 给信号Voltage_value添加“无效值”描述

按照以下步骤给信号添加“无效值”描述:

a)依次选择菜单栏ViewàValue Tables(见图7-1),打开Value Tables窗口(见图7-2);

图7-1

图7-2

b)在空白的处,鼠标右键,在其上下文中选择“New”(见图7-3),弹出“Value Table‘New_Value_Table_1’”对话框(见图7-4);

图7-3

图7-4

c) 在“Value Table‘New_Value_Table_1’”对话框下的Definition子选项卡(见图7-5)中,定义创建的Value Tables的符号名称和备注。在Value Descriptions子选项卡(见图7-6)中,枚举出信号其中部分的值,并添加描述(下图中表示,当信号值等于0xFFFF时,用Invalid voltage代替显示)。单击“确定”按钮,完成值描述编辑;

图7-5

图7-6

d) 信号Current_value也可以仿照此方法添加值描述。

7.2 给信号OBD_status添加“状态”描述

按照以下步骤给信号添加 “状态”描述:

a)前2个步骤与“7.1中中的a)和b)相同”;

b) 在“Value Table‘New_Value_Table_1’”对话框下的Definition子选项卡(见图7-7)中,定义创建的Value Tables的符号名称和备注。在Value Descriptions子选项卡(见图7-8)中,枚举出信号所有可能出现的值,并添加描述(下图中表示,当信号值等于0x0时,用Initialization代替显示;当信号值等于0x1时,用Run代替显示;当信号值等于0x2时,用Shutdown代替显示)。单击“确定”按钮,完成值描述编辑;

图7-7

图7-8

在Value Tables窗口(见图7-9),会显示添加完成的值描述;

图7-9

8 将Value tables添加至相应的Signal信号当中

以信号Voltage_value为例。在Overview窗口,双击Signals下的Voltage_value信号(见图8-1),在弹出的对话框下的Definition子选项卡中的“Value Table:”选择“Voltage_State”(见图8-2)。接着单击“确定”按钮,完成“Value Tables值描述”添加。

图8-1

图8-2

其它Signal信号的“Value Tables值描述”添加,也遵循该方法。这里不在一一描述。

注意:如果项目当中没有“Value Tables”要求,可以忽略第7~8章节。因为项目的差异,“Value Tables”不一定是必要的。

9 添加Attribute Definitions属性定义

“Attribute Definitions属性定义”窗口包含用户定义属性的列表。可以添加新的用户定义属性,并可以在此处编辑现有属性。

下面举几个常见的Attribute Definitions。

按照以下步骤新建Attribute Definitions:

a)依次选择菜单栏ViewàAttribute Definitions(见图9-1),打开Attribute Definitions窗口(见图9-2)。在空白的处,鼠标右键,在其上下文中选择“New”(见图9-3),弹出“Value Table‘New_Value_Table_1’”对话框(见图9-4);

图9-1

图9-2

图9-3

图9-4

b) 常见的Attribute Definitions描述见第9.1~9.9章节。

9.1 添加GenericFrameRequirementNb

属性应用:添加该属性,可以用来给Message定义需求编号(见图9-5)。

图9-5

9.2 添加GenMsgCycleTime

属性应用:添加该属性,可以用来给Message定义周期,也就是CAN ID的周期(见图9-6)。

图9-6

9.3 添加GenMsgSendType

属性应用:添加该属性,可以用来给Message定义触发的类型,也就是CAN ID发送方式:周期帧发送,事件帧发送,混合帧发送(见图9-7)。

图9-7

9.4 添加ProjectFrameRequirementNb

属性应用:添加该属性,可以用来给Message定义需求编号(见图9-8)。

图9-8

9.5 添加Manufacturer

属性应用:添加该属性,可以用来定义制造商名称(见图9-9)。

图9-9

9.6 添加GenericSignalRequirementNb

属性应用:添加该属性,可以用来给Signal信号的需求编号(见图9-10)。

图9-10

9.7 添加GenSigStartValue

属性应用:添加该属性,可以用来给Signal信号的定义初始值(见图9-11)。

图9-11

9.8 添加ProjectSignalRequirementNb

属性应用:添加该属性,可以用来给Signal信号的需求编号(见图9-12)。

图9-12

定义好上述属性后,在Attribute Definitions窗口显示的效果如下(见图9-13):

图9-13

9.9 对比Overview下的Message和Signals显示差异

通过图9-14和9-15可以发现,这时才可以编辑Signal信号的初始值,CAN ID的发送周期,发送方式等常见的属性。

图9-14

图9-15

10 Consistency check一致性检查

为了确定CAN数据库的对象及其相互关系是否一致,可以使用CANdb ++执行自动一致性检查,查看创建/修改的DBC是否有误错误。

选择“FileàConsistency check”命令以启动自动一致性检查(见图10-1)。

图10-1

一致性检查的结果显示在“Consistency check”窗口中。

>如果CANdb ++在CAN数据库中未发现任何不一致,则“一致性检查”窗口中将没有任何条目(见图10-2);

图10-2

>如果CANdb ++在CAN数据库中发现不一致,则会在“一致性检查”窗口中列出(见图10-3)。

图10-3

自此DBC的创建就完成了。

 
   
次浏览       
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
LLM大模型应用与项目构建 12-26[特惠]
UML和EA进行系统分析设计 12-20[线上]
数据建模方法与工具 12-3[北京]
SysML建模专家 1-16[北京]
 
 
最新文章
中央计算的软件定义汽车架构设计方案解析
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
智能汽车车用基础软件的内核和中间件
最新课程
Auto SAR原理与实践
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发(域控模式)
人工智能助力汽车行业升级
基于UML和EA进行系统分析设计
SysML和EA进行系统设计建模
更多...   
成功案例
奇瑞商用车 购买建模工具EA完全版
航空发动机研究院 购买建模工具EA完全版
联创汽车 购买建模工具EA完全版
江淮汽车 购买建模工具EA
更多...