DBC系列之使用CANdb++创建DBC(2)

摘要

目前汽车电子开发中使用到的DBC文件查看/编辑一般都是使用Vector的软件工具CANdb++,这个工具可以查看*.dbc文件,也可以对此类型文件进行编辑。而要生成DBC文件,首先得有CAN通信矩阵,也即是通常叫的CAN Communication Matrix。这个矩阵一般由整车厂提供,开发人员需要将矩阵中的信号和报文添加到DBC中,以供整个项目开发的需要。
对于DBC的创建,虽然也可以用上一篇文章中讲到的以文本形式编辑DBC,但是那样非常不方便,略微修改参数还行,但是要批量添加信号和报文,则显得不够直观。本节记录下如何根据CAN矩阵,使用Vector的工具CANdb ++来创建DBC文件。

1. 安装软件CANdb++

1.1 软件下载方式

CANdb++可以在Vector官网搜索CANdb++ Editor进行下载,也可以点此处下载
Tips: CANdb++有两个版本,一个就是这里提到的Editor,另一个是Admin,这个版本是要收费的,同时也具有更多的功能。不过,我们通常使用Editor版本基本上就足够了。

1.2 安装软件

  • 点击下载好的*.exe程序开始安装,比如VectorCANdb++Installer_3.1.009.exe
  • 安装过程中如果不需要修改软件安装路径,直接一路next
    更改安装路径
  • 可在上图界面中修改安装路径,其他选项用默认选项即可
    安装完成后可以看到类似这样的选项
    Vector CANdb++ 3.1

2. 创建DBC文件

2.1 CAN矩阵准备

制作了一个简单的模板CAN矩阵进行演示,此矩阵中包含两个节点IP和GW,两条报文,详细信息如下图:
CAN_Matrix_Demo

2.2 创建Template

  • 打开CANdb++,点击菜单栏File->Create Database…
  • 选择CANTemplate,创建并保存一个模板文件到本地路径,路径自行选择。
    选择
  • 选择保存路径,并对文件命名,这里命名为demo
    demo.dbc
  • 创建完成后如下图:
    demo.dbc
    这是一个空的CAN模板文件,接下来就是把矩阵中描述的信号和报文添加到DBC中

2.3 添加必要的属性

  • 在View->Attribute Definitions中新建全局属性GenMsgCycleTime
    在这里插入图片描述
    这个属性表示报文的周期值
  • 新建属性GenMsgSendType
    在这里插入图片描述
    这个属性表示报文的发送类型,周期还是事件型或者还有其他的(比如混合型,此处没写上)

2.4 添加value tables

从矩阵中可以看到每个信号都有对应的coding值,在DBC中是以value table的形式呈现。

  • 在View->Value Tables中进行创建各个信号对应的coding
    Value_Tables
  • 在打开的界面上直接右键,点击new即可以创建新的value table
    new
  • 在Definition中修改Value Table的名字,可以自行取,一般我们使用比较明显直观的前缀,如Vtsig,表示Value table signal的缩写
    name
  • 在Value Descriptions中添加coding值
    在这里插入图片描述
  • 然后点击确定就完成了一条value table的创建。
    按照此种方式创建其他信号的value table,完成后如下图形式:
    value_tables
  • 在创建的过程中会遇到提示
    32
    这个是因为软件默认限制符号的字符数为32个字符,有些信号名太长,则会超过此限制。不过这个不影响使用,如果觉得一直提示太烦,可以适当缩短字符名称。

2.5 添加signals

接下来我们看看怎么新建信号(signal)

  • 在此页面对signals选项右键即可开始新建signal
    在这里插入图片描述
  • 根据矩阵填写信号对应的相关属性,如名称,长度,字节顺序,关联Value Table等等
    在这里插入图片描述
  • 按此方式完成其他信号的添加,如下图:
    在这里插入图片描述
    可以看到每个信号前面都有一个×,这个表示该信号没有关联到message中。别急,下一步我们开始创建message。

2.6 添加messages

根据矩阵表,先创建message BCM1。

  • 同创建signal一样,在messages选项上右键开始新建
    填写CAN ID,DLC长度,和Type。我们定义的标准CAN,非扩展类型。关于这个类型属于CAN协议规范中的内容,此处暂不解释。
    在这里插入图片描述
  • 在signals中关联属于该报文的信号
    在这里插入图片描述
  • 根据矩阵表中的LSB和MSB调整layout,LSB是小端位置,MSB大端位置。即信号的起始位和结束位。
    在这里插入图片描述
    直接拖动信号对应的方块到指定位即可。
  • 修改Attributes中message的属性
    在这里插入图片描述
    然后点击确定,message BCM1就建好了。
  • 同样,按照这个方式新建IP1,建好之后报文内容如下图:
    在这里插入图片描述
    同之前的信号类似,报文前面也有一个×,这表明该报文还没有关联节点,并且也没有mapped

2.7 新建节点并添加mapped

  • 在network nodes选项上右键开始新建节点GW
    在这里插入图片描述
  • 在Tx messages中添加BCM1
    在这里插入图片描述
  • 在Mapped Rx Sig.选项中添加接受信号(即IP1中的信号)
    在这里插入图片描述
  • 同理,创建节点IP,关联信号和报文,真个DBC文件如下图
    在这里插入图片描述

到这里,按照用于演示的CAN矩阵来创建DBC就算完成了。但实际上,真正汽车上使用的DBC中的报文非常多,不仅仅是两个报文,而且每个报文中的信号数量也有多有少。并且网络管理报文以及诊断报文在这个例子中都没有演示,相关的属性也没有添加。报文的发送类型也只演示了周期型的。同时,报文可能还带有信号组或者SecOc的属性,这些都是实际项目中会遇到的,在此处就不展开讲了。
本文只是记录下关于CANdb++如何依照CAN矩阵添加报文和信号,以及Value Table和全局属性等,写得不好的地方还请各大佬批评指正!!!

  • 11
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值