DBC系列之使用CANdb++创建DBC(2)
使用CANdb++创建DBC
- 摘要
- 1. 安装软件CANdb++
- 1.1 软件下载方式
- 1.2 安装软件
- 2. 创建DBC文件
- 2.1 CAN矩阵准备
- 2.2 创建Template
- 2.3 添加必要的属性
- 2.4 添加value tables
- 2.5 添加signals
- 2.6 添加messages
- 2.7 新建节点并添加mapped
摘要
目前汽车电子开发中使用到的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
- 可在上图界面中修改安装路径,其他选项用默认选项即可
安装完成后可以看到类似这样的选项
2. 创建DBC文件
2.1 CAN矩阵准备
制作了一个简单的模板CAN矩阵进行演示,此矩阵中包含两个节点IP和GW,两条报文,详细信息如下图:
2.2 创建Template
- 打开CANdb++,点击菜单栏File->Create Database…
- 选择CANTemplate,创建并保存一个模板文件到本地路径,路径自行选择。
- 选择保存路径,并对文件命名,这里命名为demo
- 创建完成后如下图:
这是一个空的CAN模板文件,接下来就是把矩阵中描述的信号和报文添加到DBC中
2.3 添加必要的属性
- 在View->Attribute Definitions中新建全局属性GenMsgCycleTime
这个属性表示报文的周期值 - 新建属性GenMsgSendType
这个属性表示报文的发送类型,周期还是事件型或者还有其他的(比如混合型,此处没写上)
2.4 添加value tables
从矩阵中可以看到每个信号都有对应的coding值,在DBC中是以value table的形式呈现。
- 在View->Value Tables中进行创建各个信号对应的coding
- 在打开的界面上直接右键,点击new即可以创建新的value table
- 在Definition中修改Value Table的名字,可以自行取,一般我们使用比较明显直观的前缀,如Vtsig,表示Value table signal的缩写
- 在Value Descriptions中添加coding值
- 然后点击确定就完成了一条value table的创建。
按照此种方式创建其他信号的value table,完成后如下图形式:
- 在创建的过程中会遇到提示
这个是因为软件默认限制符号的字符数为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和全局属性等,写得不好的地方还请各大佬批评指正!!!
DBC系列之使用CANdb++创建DBC(2)相关推荐
- 使用CANdb++制作dbc文件(小白笔记)
什么是dbc文件? dbc是Datebase CAN的缩写,是CAN网络的数据库文件,可定义CAN网络的节点(Network node).报文(Message).信号(signal),包括各个节点会发 ...
- 关于DBC文件的格式解析(DBC文件系列其二)
关于DBC文件的格式解析 摘要 1.版本与新符号 2.波特率定义 3.网络节点的定义 4.报文帧的定义 5.信号的定义 6.注解部分 7.属性定义部分 8.数值表部分 小结 摘要 在之前的文章里,我们 ...
- 【无标题】关于DBC文件的格式解析(DBC文件系列其二)
关于DBC文件的格式解析 摘要 1.版本与新符号 2.波特率定义 3.网络节点的定义 4.报文帧的定义 5.信号的定义 6.注解部分 7.属性定义部分 8.数值表部分 小结 摘要 在之前的文章里,我们 ...
- 【DBC专题】-7-在DBC中创建一个Signal Group信号组
目录 1 创建Signal Group信号组 2 创建Signal Group信号组前后DBC内容的差异 3 结尾 关键字: CANdb++ Editor CAN Signal SG=Signal ...
- Step by Step学习CANoe三大工具链——DBC数据库编辑器(CANdb++ Editor)、面板设计(Panel Designer)和CAPL浏览器(CAPL Browser)
Step by Step学习CANoe三大工具链--DBC数据库编辑器(CANdb++ Editor).面板设计(Panel Designer)和CAPL浏览器(CAPL Browser).
- DBC转Excel;DBC转位定义;Excel转DBC;Excel转位定义;MatrixCreat(四)之工具使用
工具使用 一.摘要 1.描述 2.关键字 二.什么时候需要使用MatrixCreat工具 三.MatrixCreat转换后效果图 四.MatrixCreat运行环境 五.MatrixCreat使用介绍 ...
- Android官方开发文档Training系列课程中文版:创建自定义View之View的创建
原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...
- 机器学习系列4 使用Python创建Scikit-Learn回归模型
本文中包含的案例jupyter笔记本可在我的资源中免费下载: 机器学习系列4 使用Python创建Scikit-learn线性回归模型.ipynb 图1 使用Python和Scikit-learn库实 ...
- C#表达式目录树系列之5 –动态创建查询表达式
概要 在项目开发中,根据用户的需求,一般来是,我们的查询表达式是固定的,新的查询需求都要通过代码的修改来实现.而对于不确定的查询条件,固定查询表达式的方式显然是行不通的. 针对固定查询表达式存在的问题 ...
最新文章
- Python + Selenium 练习篇 - 获取页面所有邮箱
- 十个行为把你变成糟糕的程序员
- 网络基础---物理层
- WebSocket教程(一)
- web安全之信息收集
- GB28181协议——摄像机语音对讲
- unity球体添加光源_Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
- 2008年十大最值得关注创业公司
- 用c语言输入年份 月份 显示天数,java输入月份,年份,显示对应月份的天数,...
- 圆形计算机配置清单,MarForm MMQ 200
- mysql源码及内核分析,MySQL · 源码阅读 · Secondary Engine
- canvas实现星星闪烁特效
- Android模拟器知识以及改造
- 配置vimrc时各种出错,第n+1行永远报错:unmatched ' 的解决办法!!!
- 真无线蓝牙耳机哪款适合新手?数码发烧友最全盘点,高实用性蓝牙耳机
- java:A JNI error has occurred, please check your installation and try again
- 【Spark】spark对mysql的操作
- 移动软件开发:第一个安卓应用小程序
- 为啥大公司只要全栈工程师?
- python解决数学建模发电商机组调度问题