CAN学习笔记⼀:DBC⽂件创建
⼀⽬了然
1 综述
1.1 简介
DBC(Database CAN)⽂件是由德国维克多公司发布的,⽤来描述单⼀CAN⽹络中各逻辑节点信息数据通讯的⼀种⽂件,包含了CAN总线中协议数据及其所代表的具体意义。DBC⽂件格式⽐较固定,不会产⽣歧义和理解误差,同时便于交流,依据该⽂件可以开发出来监视和分析CAN⽹络中所有逻辑节点运⾏状态的软件,也可以开发有针对性的ECU通信应⽤软件。
1.2 开发环境
2 CANdb++软件介绍
2.1 软件下载与安装
使⽤浏览器打开1.4 章节中提供的链接地址,按照界⾯提⽰下载CANdb++软件安装包,下载完成后,使⽤⿏标左键双击软件安装包,如下图所⽰:
⿏标双击后会打开软件安装向导界⾯,如下图所⽰:
⿏标左键点击“Next”按键,进⼊安装⽬录选择界⾯,可根据需要修改安装⽬录,注意选择的安装路径不要包含中⽂字符。
选择好安装⽬录后点击“Next”按键,进⼊⾃定义界⾯,即选择安装英⽂版本或者德⽂版本,可保持默认选项(英⽂版本)。
点击“Next”按键,进⼊准备安装界⾯。
点击“Install”按键开始安装软件,安装过程如下图所⽰。
安装完成后界⾯显⽰如下所⽰。
点击“Finish”按键完成安装,退出软件安装提⽰界⾯,此时会在桌⾯⽣成下图所⽰图标。
若桌⾯没有上图图标⽣成,可⾄电脑应⽤程序中查新添加的程序。
2.2 软件使⽤说明
3 DBC⽂件创建
DBC⽂件主要包含Value Tables、Signals、Messages、Network nodes、ECUs等元素组成,并由下⾄上(从Value Tables到ECUs)层层递进组成整个CAN Networks的描述。
3.1 创建Value Tables
⾸先⿏标左键双击CANdb++应⽤图标打开软件,软件打开后的界⾯如下图所⽰。
由于未打开任何⽂件,此时软件显⽰的是空⽩界⾯,⿏标左键点击软件界⾯左上⾓菜单栏中的“File”按键,在下拉框中选中“Create Database…”选项,创建DBC⽂件。
此时软件界⾯会弹出DBC⽂件模板类型供选择,我们选中“CANoeTemplate.dbc”选项,然后点击“OK”按键。
在弹出的界⾯中设置所要创建的DBC⽂件的名称和保存位置,然后点击“保存”按键。
此时会显⽰DBC⽂件的“Overall View”界⾯,在界⾯左侧列举了⽂件的组成项和层级结构。
⿏标左键点击软件菜单栏中“View”按键,在下拉选项中选中“Value Tables”选项,进⼊到Value Tables
编辑界⾯。
在界⾯中空⽩处点击⿏标右键,选中“New…”选项,添加⾃定义的Value Table。
Value Table是⾃定义的⼀些数字表格的解释,如“0”代表⽆效,“1”代表有效,⽤于给后续定义的Signals赋值。此处我们定义了⼀个Value Table,⽤于说明开关信号的打开与关闭状态,如下图所⽰。
数值和描述添加完成后点击“确定”按键,即完成了Value Table ‘SwitchStatus’的创建。
3.2 创建Signals
⾸先,⿏标左键点击软件菜单栏中“View”按键,在下拉选项中选中“Overview”选项,切回到“Overall View”界⾯。⿏标右键点击界⾯左侧“Signals”图标,选中下拉框中的“New…”选项。
此时软件会弹出信号编辑窗⼝,根据需要在“Definition”界⾯下设置信号名称、长度、字节序、单位、数值信息和使⽤的Value Table。如下图所⽰,创建了⼀个“AcSwitch”信号,设置信号信息并将Value Table选中为上⼀节中添加的“SwitchStatus”。注意,对于某⼀取值范围较⼤的信号(如取值范围为0~0xFFFF),直接将信号长度和数值类型等信息设置正确即可,Value Table选项默认
为“none”即可。
点击“确定”按键完成信号创建,这时会在“Overall View”界⾯左侧“Signals”中显⽰刚刚添加的信号,以及信号使⽤的Value Table。
3.3 添加属性定义
常见的Attribute Definitions如下表所⽰,⼀般DBC⽂件不需要完全包含表中列举的属性,开发⼈员需根据项⽬需求选择添加属性。
Attribute Name Attribute Type Value Type Value Range Default BusType Network String J1939-ProtocolType Network String CAN-NmStationAddress Node Integer0 (254254)
NmJ1939AAC Node Integer0 (10)
NmJ1939IndustryGroup Node Integer0 (70)
NmJ1939System Node Integer0 (1270)
NmJ1939SystemInstance Node Integer0 (150)
NmJ1939Function Node Integer0 (2550)
NmJ1939FunctionInstance Node Integer0 (70)
NmJ1939ECUInstance Node Integer0 (30)
NmJ1939ManufacturerCode Node Integer0 (20470)
NmJ1939IdentityNumber Node Integer0 (20971510)
ECU Node String--
SigType Signal String
Default
Range
RangeSigned
ASCII
Discrete
Control
ReferencePGN
DTC
StringDelimiter
ascii文件夹怎么创建StringLength
StringLengthCtrl
MessageCounter
MessageChecksum
-
SPN Signal Integer0 (5242870)
GenSigILSupport Signal Enum No
Yes
Yes
GenSigSendType Signal Enum
Cyclic
OnWrite
OnWriteWithRepetition
OnChange
OnChangeWithRepetition
IfActive
IfActiveWithRepetition
NoSigSendType
NoSigSendType
GenSigInactiveValue Signal Integer0 (10000000)
GenSigStartValue Signal Integer0 (100000)
GenMsgILSupport Message Enum No
Yes
Yes
GenMsgSendType Message Enum
Cyclic
NotUsed
IfActive
NoMsgSendType
NoMsgSendType
GenMsgCycleTime Message Integer0…60000 [ms]0 GenMsgCycleTimeFast Message Integer0…1000000 [ms]0 GenMsgDelayTime Message Integer0…1000 [ms]0 GenMsgStartDelayTime Message Integer0…100000 [ms]0 GenMsgFastOnStart Message Integer0…1000000 [ms]0 GenMsgNrOfRepetition Message Integer0…1000000 [ms]0 Attribute Name Attribute Type Value Type Value Range Default
属性定义窗⼝需要通过菜单栏“View”⽬录下的“Attribute Definitions”选项打开。
打开后的“Attribute Definitions”窗⼝如下图所⽰,其中显⽰了⼀些软件默认添加的属性。
常⽤的属性有GenMsgSendType和GenMsgCycleTime,⽤于指定添加消息的类型和周期,下⾯将这两个属性添加⾄定义的DBC⽂件中。⿏标右键点击“Attribute Definitions”窗⼝空⽩处,在弹出选项框中选中“New…”选项,如下图所⽰。
使⽤⿏标左键点击“New…”选项后打开属性定义窗⼝,在其中设置属性的名称、对象类型、数值类型、默认值、最⼤值和最⼩值。
GenMsgSendType和GenMsgCycleTime的属性信息设置如下图所⽰。
信息设置完成后点击确定按键,完成属性的添加,此时会在“Attribute Definitions”窗⼝显⽰出刚刚添加的属性 ,表⽰已成功添加属性,如下图所⽰。
除了上述直接添加属性定义的⽅式外,也可通过从现有DBC⽂件中导⼊属性的⽅式添加属性。⿏标左键点击菜单栏中“File”按键,在下拉选项中选中“Import Attributes Definitions…”选项。
在弹出框中选中现有的DBC⽂件,然后⿏标左键点击“打开”按键即可完成属性的导⼊。
3.4 创建Messages
⾸先,⿏标左键点击软件菜单栏中“View”按键,在下拉选项中选中“Overview”选项,切回到“Overall View”界⾯。⿏标右键点击界⾯左侧“Messages”图标,选中下拉框中的“New…”选项。
此时软件会弹出消息编辑窗⼝,根据需要在“Definition”界⾯下设置消息名称、类型、ID、数据长度、发送器、发送模式和周期时间,需要注意的是此页⾯中的发送器、发送类型和周期时间填充了默认值,⽆法修改,创建者可根据需要在“Transmitters”和“Attributes”页⾯中修改。如下图所⽰,创建了⼀条“AirCondition”消息,设置消息基本信息(消息名称:AirCondition,类型:标准帧,ID:
0x123,数据长度:8)。
⿏标左键点击“Signals”界⾯,添加消息信号,如将定义的“AcSwitch”信号添加进来。
“Transmitters”和“Receivers”暂时保持默认状态,⿏标左键点击“Layout”切换⾄信号布局界⾯,此界⾯显⽰了信号在CAN消息数据中的位置,可通过⿏标左键拖动信号来更改信号位置。
⿏标左键点击“Attributes”切换⾄消息属性界⾯,此界⾯会显⽰有关消息的所有属性,如果没进⾏之前的“添加属性”操作,此处将显⽰为空⽩。由于前⾯只添加了GenMsgSendType和GenMsgCycleTime两个消息属性,因此会发现此处也只显⽰了这两个属性,根据消息定义设置消息属性值。
“Comment”界⾯⽤于添加对消息的注释说明,可保持默认状态。然后⿏标左键点击“确定”按键,完成消息的添加,同时在“Overall View”界⾯左侧显⽰出添加的CAN 消息以及消息包含的信号,如下图所⽰。
3.5 创建Network nodes
⿏标右键点击界⾯左侧“Network nodes”图标,选中下拉框中的“New…”选项。
此时软件会弹出⽹络节点编辑窗⼝,根据需要在“Definition”页⾯中设置节点名称,在“Attributes”页⾯中设置节点属性(⽂件会默认添加⼀些属性,可根据节点具体信息进⾏修改,⼀般可保持默认值),在“TxMessages”页⾯中添加发送消息,Comment”界⾯⽤于添加对消息的注释说明,可保持默认状态,其他页⾯信息可保持默认值不做更改。如下图所⽰,创建了⼀个“AC”节点,并添加了前⾯定义的“AirCondition”消息。
然后⿏标左键点击“确定”按键,完成⽹络节点的添加,同时在“Overall View”界⾯左侧显⽰出添加的⽹络节点以及包含的消息和信号,如下图所⽰。
同时会在“Overall View”界⾯左侧显⽰出⽂件包含的ECU,以及每个ECU包含的⽹路节点,如下图所⽰。
⾄此,DBC⽂件的创建已经完成,在保存⽂件之前,可对⽂件进⾏⼀致性检测。⿏标左键点击菜单栏中“File”按键,在下拉选项中选
中“Consistency Check”选项。
此时软件界⾯会弹出检测结果,显⽰当前的DBC⽂件存在的问题,如下图所⽰显⽰创建的DBC⽂件中的“AirCondition(0x123)”消息不存在接收节点。
根据上图中提⽰的错误和警告信息可对DBC⽂件内容进⾏审查和修改。注意在⽂件创建过程中保存⽂件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。