制作DBC文件
在《手动解析CAN信号》一文中提到可以制作DBC文件,然后导入到周立功应用软件中,就可以自动解析CAN报文。DBC文件实际上是文本文件,可以用记事本打开,采用特定的语法描述了信号的定义,信号与CAN报文的关联。
要制作DBC文件,首先需要了解CAN通讯矩阵。CAN通讯矩阵主要描述有哪些ID的报文,报文的发送方式(周期型、事件型等),报文包含什么信号,信号在报文中的位置,信号的类型(布尔、枚举,有符号,无符号等),信号的解析公式等等。下面给出一个极简通讯矩阵。
1.报文发送类型属于周期型代表该报文会按照发送周期循环发送。
2.报文发送类型属于事件型代表该报文会在事件触发时发送(比如按下开关时,发送3帧,每帧间隔等于发送周期).
接下来我们就采用Vector的CANdb++工具制作极简通讯矩阵对应的DBC文件。
一:打开CANdb++,并创建一个新的DBC文件。选择File->Create Database.
在弹出窗口选择CANTemplate.dbc模板,然后点击确定,接着定义DBC文件的名字,并选择保存位置,最后点击确定。
二:定义报文。右击Message节点,在弹出窗口选择New
切换到Definition选项卡。(1)输入CAN报文名称(name),(2)报文类型(Type)选择标准CAN报文(CAN Standard).(3)输入报文ID,报文长度(CAN通讯矩阵定义,报文长度为1-8个字节).然后点击确定。这样就创建了一个空的报文,接着采用同样的方式定义0x121,0x133报文。
三:定义解析公式(注意信号类型为布尔或者枚举的信号才需要采用步骤三定义解析公式,布尔类型也可以看作是只有两个值的枚举类型)。在快捷栏中点击Value Tables图标。
在弹出的Value Table窗口中右击,选择New ,新建一条解析公式。在弹出的解析公式定义窗口中切换到Definition页面。输入解析公式名称,一般可以与信号的名称相同。
切换到Value Descriptions页面,点击两次Add按钮,增加两条解析(枚举类型有多少个值就需要增加同样数量的解析)。
按照信号LowBeamStatus的解析公式填写对应的Value和Description值。然后点击确定。信号对应的解析公式就创建好了。
接着采用同样的方式定义信号RadioSwitch的解析公式。最终成果如下。
四:定义信号。右击Signal,选择New。
在弹出的信号定义窗口,切换到Definition页面。(1)填写信号名称(name),(2)填写信号长度(Length),(3)填写报文格式(Byte Orfer,由通讯矩阵定义),(4)填写信号类型(Value Type ,布尔和枚举类型都选择无符号数),(5)填写Factor,Offset,(6)选择信号对应的解析公式(Value Table)。然后点击确定。
采用同样的方法定义信号其他信号,注意信号类型为有符号数和无符号的信号都不需要选择解析公式。最终成果如下。
五:关联信号与报文,并确定信号在报文中的位置。
展开开Message,双击一条报文,打开报文定义窗口,切换到Layout页面。
点击Add按钮,在弹出的选择窗口,选择报文应该包含的信号。点击ok。
根据信号的起始字节,起始位拖动信号到正确的位置。
添加完所有信号后,点击确定。DBC文件就制作成功了,接下来就可以将其导入到周立功应用软件中自动解析报文了。