首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC

  • 23-09-21 18:22
  • 2208
  • 6495
blog.csdn.net

目录

0关键字/术语描述

1 启动“CANdb++ Editor”

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

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

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

5 创建Message消息中Signals信号

5.1 创建Signal信号

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

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

7 创建Value tables

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

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

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

9 添加Attribute Definitions属性定义

9.1 添加GenericFrameRequirementNb

9.2 添加GenMsgCycleTime

9.3 添加GenMsgSendType

9.4 添加ProjectFrameRequirementNb

9.5 添加Manufacturer

9.6 添加GenericSignalRequirementNb

9.7 添加GenSigStartValue

9.8 添加ProjectSignalRequirementNb

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

10 Consistency check一致性检查

11 结尾


推荐阅读(单击下方文字即可跳转至对应博文):

1、【DBC专题】-2-CAN Signal信号的Multiplexor多路复用在DBC中实现

2、【DBC专题】-3-利用CANdb++ Editor在DBC文件添加帧CAN_ID和信号CAN_Signal

3、【DBC专题】-4-DBC文件中的Signal信号字节顺序Motorola和Intel介绍

4、【DBC专题】-5-DBC文件格式解析

5、【DBC专题】-6-Signal信号字节顺序Motorola_LSB/MSB/Sequential/Backward,Intel_Standard/Sequential等6类格式详解

 

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-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 Name

Attribute Type

Value Type

Value Range

Default

ProtocolType

Network

String

J1939

-

BusType

Network

String

CAN

-

NmStationAddress

Node

Integer

0..254

254

NmJ1939AAC

Node

Integer

0..1

0

NmJ1939IndustryGroup

Node

Integer

0..7

0

NmJ1939System

Node

Integer

0.127

0

NmJ1939SystemInstance

Node

Integer

0..15

0

NmJ1939Function

Node

Integer

0..255

0

NmJ1939FunctionInstance

Node

Integer

0..7

0

NmJ1939ECUInstance

Node

Integer

0..3

0

NmJ1939ManufacturerCode

Node

Integer

0..2047

0

NmJ1939IdentityNumber

Node

Integer

0..2097151

0

ECU

Node

String

-

-

SigType

Signal

String

  • Default
  • Range
  • RangeSigned
  • ASCII
  • Discrete
  • Control
  • ReferencePGN
  • DTC
  • StringDelimiter
  • StringLength
  • StringLengthCtrl
  • MessageCounter
  • MessageChecksum

-

SPN

Signal

Integer

0..524287

0

GenMsgILSupport

Message

Enum

  • No
  • Yes

Yes

GenMsgSendType

Message

Enum

  • Cyclic
  • NotUsed
  • NotUsed
  • NotUsed
  • NotUsed
  • NotUsed
  • NotUsed
  • IfActive
  • NoMsgSendType

NoMsgSendType

GenSigILSupport

Signal

Enum

  • No
  • Yes

Yes

GenSigSendType

Signal

Enum

  • Cyclic
  • OnWrite
  • OnWriteWithRepetition
  • OnChange
  • OnChangeWithRepetition
  • IfActive
  • IfActiveWithRepetition
  • NoSigSendType

NoSigSendType

GenMsgDelayTime

Message

Integer

0..1000 [ms]

0

GenMsgStartDelayTime

Message

Integer

0..100000 [ms]

0

GenMsgFastOnStart

Message

Integer

0..1000000 [ms]

0

GenMsgNrOfRepetition

Message

Integer

0..1000000 [ms]

0

GenMsgCycleTime

Message

Integer

0..60000 [ms]

0

GenMsgCycleTimeFast

Message

Integer

0..1000000 [ms]

0

GenMsgRequestable

Message

Integer

0..1

1

GenSigInactiveValue

Signal

Integer

0..1000000

0

GenSigStartValue

Signal

Integer

0..10000

0

GenSigEVName

Signal

String

-

Env@Nodename_@Signame

 

下面举几个常见的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的创建就完成了。

 

11 结尾

汽车电子助手
微信公众号
“汽车电子软件与Autosar”领域优秀创作平台
注:本文转载自blog.csdn.net的汽车电子助手的文章"https://blog.csdn.net/qfmzhu/article/details/111403266"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top