本篇是CANoe使用制作DBC文件,DBC是Database Can的缩写,其代表的是CAN的数据库文件,里面定义了CAN总线上有哪些CAN节点、每个节点各自发出什么CAN报文,每个报文下又有哪些信号,CAN总线不管是开发、测试还是分析,DBC文件都是必不可少的。
目录
一、新建DBC文件
1.1、打开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),给这个节点赋予一个名称,随后点击确定即可,新建两个节点ECU001和ECU002来进行互相的收发
节点创建好后,界面如下
三、创建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报文0x111 打开CAN报文界面
点击Signals切换到信号栏下
点击右下角的Add将信号添加到报文中
选择需要添加进去的信号,然后ok。这里我将0x111的两个信号Signal01和signal02放进来
再点击右下角的确定按钮,信号就添加完成了。
点击后如果DLC设置得比添加进去的信号所占的字节数多,就会弹出这个窗口,点击否(N)即可,如果点击是(Y),系统会修改这条CAN报文的长度为刚刚添加进去的信号所占的字节数
添加完成后如图所示,右边会列出这个报文里所有的信号,以及信号所占的字节和起始位。
此时,如果想修改信号在报文中,所占的位置,可以双击红框中的Startbit处修改起始位
随后点击确定即可。
也可以在这条CAN报文的Layout中通过鼠标拖动修改信号所处的位置。
双击左侧CAN报文,在弹出的窗口中点击layout,鼠标按住方框中标记的信号拖动即可改变信号所在的位置
接下来以同样的方法,把另外两个信号添加到0x222的CAN报文中去
添加完后在左侧展开两个CAN报文,即可看到这样的界面
六、为报文设置发送者和接收者
我们现在已经有了两条完整的CAN报文,但是还没有规定这两条报文由谁进行收和发
接下来,我们需要为报文指定接收者和发送者。
在左侧点击红框中的+号,展开节点视图
可以看到,节点ECU001和ECU002下都是空的,TX message和RX message都没有。
双击节点ECU01,在MappedRXSig里面Add需要接收的报文中的信号
再切换到Tx message栏目,把该节点发送的报文Add进来,随后点击确定
此时我们展开左侧,可以看到ECU01已经有了对应的tx 和rx报文以及信号
完成后如图所示,ECU01和ECU02都已经具有了Tx和Rx报文。
ECU001发送0x111,接收0x222
ECU002发送0x222,接收0x111
至此,一个简略版的CAN DBC就制作完成了。