编辑推荐: |
本文主要介绍了如何使用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的创建就完成了。 |