汽车CAN总线系统中,ECU之间的通信都是通过总线数据库来管理的。总线数据库定义了系统中各ECU所要发送和接收的报文,以及报文中每条信号的具体定义。它的格式是DBC文件。CANoe提供了CANdb++ Editor用来新建、编辑DBC文件。
1.新建DBC
CANoe界面菜单下Tools→CANdb++ Editor,之后File→Creat Database新建dbc。CANdb++ 提供了不同类型的DBC模板。其实之前在使用python脚本制作dbc时,https://mp.weixin.qq.com/s/RBybWjAxgyoynOOVlDy-Vw 就发现了基础模板不对会导致生成的DBC文件无法打开。以后可以使用DBC模板来做基文件,之后再去根据xls中报文、信号的定义来完成DBC文件的填充。
这里选择CANTemplate.dbc模块,可以通过notepad++对比查看dbc文件的文本信息。
2. 添加Networks
Network可以理解为整车的某一条CAN总线,一般主机厂会通过不同的功能来定义总线的名称,如:动力CAN、车身CAN、ADASCAN,互相依赖通讯的ECU会挂在同一条总线上。
不过在DBC文件中,Network就是DBC文件的名字。
3. ECUs/Network Nodes
ECU不能直接创建,CANdb++在创建网络节点时,会自动创建同名的ECU。
点击Network Nodes→New,创建node。
4. 添加Message
在导航区栏中右击Message→New,创建报文。
可以在Transmitter和Receivers中选择ECU,完成发送/接收节点的映射。这些发送/接收的节点,在使用CANoe或Autosar或其他工具时,软件会根据自身ECU,来筛选自身需要发送/接收的报文,其他的报文可以选择过滤掉不使用。
5. 添加Signal
同Messag,在导航区栏中右击Signal→New,创建信号。
之后可以在Message选项中,将Signal添加到某条报文中去。
6. Attribute
在工具栏Attribte Definitions中打开DBC文件定义的属性。
对应的文本信息如下:
下图中可见数据库常见的属性和描述
7. VauleTable
即信号值的枚举定义。可以新建Vaule Table,之后映射到signal的定义中去。