CANdb++

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

dbc文件 python dbc文件编写_数据库

创建一个新的DBC

dbc文件 python dbc文件编写_dbc文件 python_02


dbc文件 python dbc文件编写_Test_03


在“Template”模板对话框中,根据需要选择合适的模板,这里以CANTemplate.dbc模板为例,单击“OK”按钮,弹出“New Database FIle”对话框,找到合适的路径,存放新建的DBC(CAN数据库文件),并给这个数据库文件命名,最后单击“保存”按钮

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

dbc文件 python dbc文件编写_数据库_04


选中“Network nodes”并鼠标右键,在其上下文中选择“New”,弹出“Node ‘New_Node_1’”

dbc文件 python dbc文件编写_选项卡_05


注意:

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

创建CAN网络当中的Message消息

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

  1. 选中“Message”并鼠标右键,在其上下文中选择“New”,弹出“Message‘New_ Message_1’
  2. 在“Message‘New_ Message_1’”对话框下的Definition子选项卡中定义Message的属性
  3. 在“Message‘New_ Message_1’”对话框下的Transmitters子选项卡中,单击“add”按钮,将该Message添加到对应的发送节点
  4. 在“Message‘New_ Message_1’” 对话框下的Comment子选项卡中,可根据需要对该Message添加一些备注

创建Signal信号

  1. 选中“Signals”并鼠标右键,在其上下文中选择“New”,弹出“Signal ‘New_Signal_1’” 对话框;
  2. dbc文件 python dbc文件编写_数据库_06


  3. 在“Signal ‘New_Signal_1’” 对话框下的Definition子选项卡中定义Signal信号的属性
  4. dbc文件 python dbc文件编写_数据库_07


  5. 在“Signal ‘New_Signal_1’” 对话框下的Messages子选项卡中, 单击“add”按钮,将该Signal信号添加到对应的Message;
  6. dbc文件 python dbc文件编写_数据库_08


  7. 在“Signal ‘New_Signal_1’” 对话框下的Comment子选项卡中,可根据需要对该Message添加一些备注
在Message中调整Signal信号的位置

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

dbc文件 python dbc文件编写_数据库_09


dbc文件 python dbc文件编写_选项卡_10

在Message中编辑每个Signal信号的接收节点
  1. 以Message消息Test_0x11中Voltage_value为例。选中Test_Signal并鼠标右键,在其上下文中选择“Edit mapped Signal…” 。或者双击Test_ID_211下的Voltage_value信号,也有同样的效果。

  2. 在弹出“Message Signal ‘Test_ID_211::Voltage_value’”对话框中,选择“Receiver”子选项卡,单击“add”按钮,在弹出的“Choose Objects”的选项卡中找到信号的接收节点,最后单击“确定”按钮,完成Signal信号添加到对应的接收节点
  3. dbc文件 python dbc文件编写_Test_11

创建Value tables

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

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

dbc文件 python dbc文件编写_选项卡_12


dbc文件 python dbc文件编写_Test_13

添加至相应的Signal信号当中

dbc文件 python dbc文件编写_数据库_14

在”Signals”中增加一个信号;

dbc文件 python dbc文件编写_选项卡_15

小端(Intel)编码格式

信号在一个字节内实现(信号没有跨字节)时,该信号的高位(MSB)放在该字节的高位,该信号的低位(LSB)放在该字节的低位

大端(Motorola)编码格式

信号在一个字节内实现(信号没有跨字节)时,该信号的高位(MSB)放在该字节的高位,该信号的低位(LSB)放在该字节的低位

注意:

  1. 当信号在一个字节内实现(信号不跨字节)时,Intel模式和Motorola模式的信号字节顺序,完全一样:信号的高位(MSB)放在该字节的高位,信号的低位(LSB)放在该字节的低位。
  2. 当信号在多个字节内实现(信号跨字节)时,Intel模式和Motorola模式的信号字节顺序,明显不同:
  3. Intel模式:信号的高位(MSB)放在高字节的高位,信号的低位(LSB)放在低字节的低位;
  4. Motorola模式:信号的高位(MSB)放在低字节的高位,信号的低位(LSB)放在高字节的低位。
  5. 俗称:小端模式“高在后,低在前”;大端模式“高在前,低在后”。
右侧的”Message”中增加一个ID;

dbc文件 python dbc文件编写_Test_16


注:

“Name:”表示新增ID的名称;

“ID:”用十六进制表示,如果是标准帧,范围:0~0x7FF;

“DLC:”表示新增ID实际的长度,最大为8.

对ID中的信号添加接收的节点。

dbc文件 python dbc文件编写_数据库_17


dbc文件 python dbc文件编写_Test_18


dbc文件 python dbc文件编写_选项卡_19

Consistency check一致性检查

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

选择“FileàConsistency check”命令以启动自动一致性检查

dbc文件 python dbc文件编写_dbc文件 python_20


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

dbc文件 python dbc文件编写_数据库_21


如果CANdb ++在CAN数据库中发现不一致,则会在“一致性检查”窗口中列出