不要对生活抱有期望,这样,你才能偶有惊喜,常无惊吓——《新灵基躺》
一、什么是DBC?
二、如何打开DBC?
一般如果安装了CANdb工具系统会自动关联DBC文件格式(.dbc),这样便可以直接双击DBC文件打开。
三、DBC里有什么?
说正好对应似乎不太恰当,因为这里还多了ECUs和Environmentvariables两项,ECUs下包含的其实是每个ECU的NetworkNode和EnvironmentVariables,NetworkNode就是上面说的电子节点,这个在后面会讲,EnvironmentVariables在使用CANoe仿真节点时会用到。
其中TxMessages下包含本节点所有的发送报文。
RxMessages下包含本节点所有的接收报文。
MappedTxSignals下包含本节点所有的发送信号。
MappedRxSignals下包含本节点所有的接收信号。
那这里的收发报文信号和树型目录最下部的Messages和Signals有什么区别呢:
有两点区别:
1.Messages与Signals下包含的报文信号比节点下的报文信号要多,并且有可能会包含实际没用到的报文信号,因为所有创建的报文信号都会在Messages与Signals下显示,但只有映射到节点的报文信号才会在Network及Node下显示。
2.针对同一条报文,从节点的RxMessages下看到的信号数量可能会比从Messages下看到的要少。比如我们观察下图所示的AC_0x254这条报文:
对于某一条报文而言,节点可能只关心其中的几个信号,那么只接收这几个有用的信号当然是最佳选择。
下面来看一下Node的属性参数,同样我们以下面的图示为例说明:
下面是对报文属性的简要说明:
属性名
通常使用Motorola格式,两种格式的区别主要体现在跨字节分布的信号上,对于Motorola信号的高位在前低位在后,而Intel则是信号的低位在前高位在后
通常使用Unsigned类型
物理值
信号表示的物理值单位,如Kg、m
定义信号取值含义
信号发送方式:
Cyclic、
报文最终的表现形式取决于报文和信号发送类型的逻辑或
如果信号的当前值与上次发送的值差值大于Delta,则再次发送信号
信号的默认值
发送信号的默认值
指示信号无效的值
用于IfActive型的发送
信号超时值
接收信号超时后的值
四、DBC的用途
DBC的用途主要体现在软件开发和软件测试两个方面:
软件开发方面主要配合Vector的Geny或DavinicConfiguration协议栈配置工具来实现CAN通信栈的配置及代码生成,如果DBC的各种属性设置得当,可以简化不少手动配置及调整代码的工作。ETAS的ISOLAR工具也支持导入DBC,但是对DBC属性参数的支持不太完善,只能识别一部分基础参数。
软件测试方面主要配合Vector的CANoe、CANalyzer、CANape等测试工具来实现节点仿真、报文解析等功能,此外,其它的一些工具如英特佩斯的neoVIFIRE也支持导入DBC。