如何通过CANdb++创建一个新的DBC(二)

1.创建DBC

通过File-Create Database新建了一个命名为xxx的CAN数据库,创建后打开的是Overall View窗口。

如何通过CANdb++创建一个新的DBC(二)_第1张图片

 2.创建Node对象

Overall VIew的左侧边栏选择Network nodesNew一个新节点,命名后确定。如下图:

如何通过CANdb++创建一个新的DBC(二)_第2张图片

 

注意:初次创建时,上图中蓝框的Address是不可编辑的,我们需设置属性后方能编辑该值

3.定义各项属性(此步骤与2无先后顺序的限制)

从菜单栏的View进入Attributes Definitions窗口,在窗口中New各种属性。若不知道具体的属性名称,类型,值等,可查看Help文档

如何通过CANdb++创建一个新的DBC(二)_第3张图片

 

 此处我只简单的配了几个属性,可以看到其中有一项是NmStationAddress,设置此项后,创建节点时的Address值就可编辑了。

回看刚在Overall View新创建的PEPS节点,选择Attributes,可以看到我们新配置的与Node相关的属性已经添加进来了。

如何通过CANdb++创建一个新的DBC(二)_第4张图片

 

 4.创建Signal对象

Overall View的左侧边栏选择SignalsNew创建信号。填好名字、字节序、单位(可不填)、值类型、精度、偏移量, 最小值和最大值通过计算得出,确定创建。

如何通过CANdb++创建一个新的DBC(二)_第5张图片

 

 注意1:需要说明的是其中有个Init. Value,创建时我并没有设置,点开蓝色的链接弹出框提示如下图,首先它与Signal对象的两个属性有关,并说明了原始值与物理值的转换公式。举个简单例子,比如冷却液温度可能为-5℃称之为物理值(物理意义上的值,直观的被人们所认知),通过该公式换算后在报文中可能其原始值为10.

如何通过CANdb++创建一个新的DBC(二)_第6张图片

 

 注意2其中还有个Value Table,初次创建是处于none不可选状态。可以通过View-Vaule Tables窗口New新建,回到Overall View的Signal对象即可选择配置value table了

如何通过CANdb++创建一个新的DBC(二)_第7张图片

 

 如何通过CANdb++创建一个新的DBC(二)_第8张图片

 

 根据信号矩阵表重复此步骤的操作创建众多的信号对象信息

5. 创建Message对象

Overall View的左侧边栏选择Message对象,New创建消息,填好名字、DLC、ID,其中cycle time与在属性视图创建的与Message对象相关的GenMsgCycleTime关联。

如何通过CANdb++创建一个新的DBC(二)_第9张图片

 

 选中刚创建的消息对象,通过弹出框的Add配置该Message对象的Signal对象,和发送者

如何通过CANdb++创建一个新的DBC(二)_第10张图片

 

 

如何通过CANdb++创建一个新的DBC(二)_第11张图片

 

值得一提的是属性页的配置可以通过双击对应的属性选项修改值,比如修改报文周期为200ms

如何通过CANdb++创建一个新的DBC(二)_第12张图片

 

 重复步骤5创建多条消息

6. 配置Node对象的对外发送消息与接收的报文信号

通过Overall View左侧边栏的Network nodes选项,选中相应的节点,右键菜单的Edit Node, 分别根据Mapped Rx Sig.页和Tx Message页添加信息配置

 如何通过CANdb++创建一个新的DBC(二)_第13张图片

 

 如何通过CANdb++创建一个新的DBC(二)_第14张图片

 

 7.数据库检查

以上6步操作完成后,保存新创建的数据库文件,从File选择Consistency Check执行检查。结果展示如下图,提示的信息可以不关注,因为这两项配置点在创建DBC时可以不填写。

如何通过CANdb++创建一个新的DBC(二)_第15张图片

 

 最终我的DBC结构像下图这样

如何通过CANdb++创建一个新的DBC(二)_第16张图片

 

 -----------------------------------以上完--------------------------------

总结:单个创建还是太慢了,而且从通信矩阵中录入这些信息创建DBC很有可能人工输入错误而不易发现。咱们还是推荐从数据源头实现自动化转换DBC的方式,自己去写代码实现这个功能吧。

你可能感兴趣的:(汽车行业)