CANoe入门——2、新建CAN DataBase(DBC文件)

静听夜半雨 2024-08-19 12:37:01 阅读 55

本篇是CANoe使用入门的第二篇,DBC是Database Can的缩写,其代表的是CAN的数据库文件,里面定义了CAN总线上有哪些CAN节点、每个节点各自发出什么CAN报文,每个报文下又有哪些信号,CAN总线不管是开发、测试还是分析,DBC文件都是必不可少的。

目录

一、新建DBC文件

二、新建节点

三、创建CAN报文

四、创建CAN报文的信号

五、将信号与报文相关联

六、为报文设置发送者和接收者

七、创建的DBC使用


一、新建DBC文件

打开CANoe,在CANoe的Tools菜单栏内,点击CANdb++Editor 打开DBC编辑软件

DBC编辑器打开后的界面如下

点击File,在弹出的窗口中选择Create DataBase

弹出如下窗口,用于选择DBC模板,我一般选择CANoeTemplate或者CAN Template

本次选择CAN Template,点击ok,在随后弹出的窗口中,选择一个文件夹作为这个DBC的路径,点击保存即可。

保存后的界面如图所示,点击一下放大按钮把界面放大便于观看

二、新建节点

节点(NODE)是本DBC中所有报文的发送者和接收者的定义(可以简单认为是ECU)。

在Network node处右击鼠标,点击new新建一个节点(ECU),给这个节点赋予一个名称,随后点击确定即可,本文新建两个节点ECU01和ECU02来进行互相的收发

节点创建好后,界面如下

三、创建CAN报文

CAN总线,CAN报文自然是核心,接下来我们创建两条CAN报文。

同样的,在message处,右键鼠标,选择new,新建一个message

在Name处输入本条CAN message的名称,注意(不得使用中文,不得以数字开头)

在Type处选择CAN Standard(标准CAN)

在ID处填入此CAN报文的CAN ID

DLC处写入此报文的长度(单位是字节)

随后点击OK

再次创建第二条CAN报文,完成后如图所示。

四、创建CAN报文的信号

信号代表的是CAN报文中的各个bit位的值含义。

一个信号既可以只占一个bit,如代表电机的运行状态(0是静止,1是电机正在运行)

通常来说,一个信号占多长的长度,取决于这个信号会有多少种可能得值,比如说A信号的取值从0~12,总共需要13个数,那么它所需要的长度就至少是4Bit(4Bit可以表示0~0xF,总共16个值)

具体的信号需要占用多少个bit位,可以查看客户给予的CAN矩阵表,或者自己根据需要定义。

首先新建一个信号。

同样的,在Signals处右击new一个信号

在Name处键入此信号的名称

Length处填入此信号的长度(单位为Bit)

Byte Order(字节序)选择以Intel型填充还是以Motorola型填充。

Intel型 :小端字节序,字节内部bit排序从高位开始

Motorola型:大端字节序,字节内部bit排序从低位开始

ValueType:值的类型,有符号整数和无符号整数以及浮点数类型

此处以Intel格式为例

偏移系数和最大值最小值可以不填

如下填写后点击ok

随后再次创建三个信号

四个信号都创建完成后,如图所示

可以看到,已经有了四个信号

五、将信号与报文相关联

既然信号是报文中某几个bit位的含义,那么信号就应当与报文一一对应起来

接下来,我们将信号与报文进行绑定(把信号放到报文中去)

在左侧双击CAN报文0x123  打开CAN报文界面

点击Signals切换到信号栏下

点击右下角的Add将信号添加到报文中

选择需要添加进去的信号,然后ok。这里我将0x123的两个信号Signal1和signal2放进来

再点击右下角的确定按钮,信号就添加完成了。

点击后如果DLC设置得比添加进去的信号所占的字节数多,就会弹出这个窗口,点击否(N)即可,如果点击是(Y),系统会修改这条CAN报文的长度为刚刚添加进去的信号所占的字节数

添加完成后如图所示,右边会列出这个报文里所有的信号,以及信号所占的字节和起始位。

此时,如果想修改信号在报文中,所占的位置,可以双击红框中的Startbit处修改起始位

随后点击确定即可。

也可以在这条CAN报文的Layout中通过鼠标拖动修改信号所处的位置。

双击左侧CAN报文,在弹出的窗口中点击layout,鼠标按住方框中标记的信号拖动即可改变信号所在的位置

接下来以同样的方法,把另外两个信号添加到0x321的CAN报文中去

添加完后在左侧展开两个CAN报文,即可看到这样的界面

六、为报文设置发送者和接收者

我们现在已经有了两条完整的CAN报文,但是还没有规定这两条报文由谁进行收和发

接下来,我们需要为报文指定接收者和发送者。

在左侧点击红框中的+号,展开节点视图

可以看到,节点ECU01和ECU02下都是空的,TX message和RX message都没有。

双击节点ECU01,在MappedRXSig里面Add需要接收的报文中的信号

添加完毕后,如下图

再切换到Tx message栏目,把该节点发送的报文Add进来,随后点击确定

此时我们展开左侧,可以看到ECU01已经有了对应的tx 和rx报文以及信号

如法炮制,为ECU02添加接收和发送的报文及信号

完成后如图所示,ECU01和ECU02都已经具有了Tx和Rx报文。

ECU01发送0x123,接收0x321

ECU02发送0x321,接收0x123

至此,一个简略版的CAN DBC就制作完成了。

七、创建的DBC使用

可以新建一个CANoe工程导入对这个DBC进行使用了。

如果使用CAPL进行控制,则直接编写脚本即可。

如果不使用CAPL,采取第一篇文章的方式,通过IL层直接控制发出的信号,需要将DBC导入CANoe之后,在CAN总线上,右键Network,选择Open IL Configuration

在SendType中选择Cyclic,并在后面的Cyclic Time中给定一个时间之后,方可激活IL的自动发送,随后使用IL控制

设置完成之后,启动CANoe,即可看到我们的报文在自动发送了。

之后想修改信号值等操作,就可以参照第一篇文章的控制方法了。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。