如何使用 CANdb++ 工具创建一个 DBC 文件?
a)新建一个 DBC 文件;
b)依据 CAN 协议文档添加对象,建议按照 Network nodes、Messages、Signals 的顺序创建;
c)创建对象间的连接关系;
d)依据 CAN 协议文档修改系统参数和自定义属性;
e)测试 DBC 文件,完成创建。
新建 DBC 文件
以“EmptyTemplate.dbc”模板为例,创建后要先配置一下默认值。
新建 Message 对象
自定义属性 user-defined attributes
Attribute 大概分为两种:system parameters 和 user-defined attributes。
自定义属性(user-defined attributes)的名称好像是固定的,CANDB++ 未提供下拉列表,需要在帮助文档中查询。使用指定的名称可以确保自定义属性在 Vector 工具链中可用。
attribute name | object type | value type | default | minimum | maximum |
---|---|---|---|---|---|
Manufacturer | Network | String | 空字符串 | - | - |
VersionYear | Network | Int | 0 | ||
VersionMonth | Network | Int | 1 | ||
VersionWeek | Network | Int | 1 | ||
VersionDay | Network | Int | 1 |
value table
作用是给信号值赋予别称,提高可读性。比如 0 - OFF,1 - ON。
List 窗口可以使用快捷键 F2 进行重命名操作。
从编程角度理解 CANdb++,Overall 窗口左侧相当于可用“类”,比如 Messages 类,添加新的报文就是对 Messages 类的实例化,形成了 Message 对象。而系统参数和用户自定义属性是类中的必选项和可选项,只有类中包含了某种属性,实例化时才可以指定具体值,如发送周期。
信号命名规则/缩略语
驼峰命名法,前缀_名称,缩写原则(如单词超过10个字符强制缩写)
Value Table = VtSig
Signal = Sig
Data Length Code = DLC,一条报文包含的字节数
:::tips
开关信号,对应物理开关或按键的真实状态;前缀 SWT,activate,deactivate
状态信号,对应系统的有限状态,通常由内部逻辑计算得出;前缀 ST
传感器信号,对应传感器采集的物理量,或经过滤波等处理后的物理量;前缀 V
标识信号,即 flag,前缀 FLAG
:::
CANDB++ 3.1 官方文档:
CANdb.chm