对于一帧报文来说,报文有仲裁域和数据域(CAN报文在从物理来看就是一段高低电平,只是这段高低电平存储了数据,而仲裁域就是这段高低电平里存储报文ID等所在地方,数据域就是存储实际有用数据的地方。不理解的可以先去看看报文的结构,我前面的文章里面有说)
而数据域就是存储所谓“信号-Signal”的地方,对于CAN报文,数据域固定为8个字节,而CANFD报文数据域为64个字节(数据域的字节并不一定要使用完,你可以把想使用的数据存放到数据域的任何地方,对于不想用的地方直接空着不填数据就行了,空着的地方发数据出去时是发0,并与接收方沟通好不接收空着的地方就好了。)。
数据域在DBC中表现如下图(下图所展示的是普通CAN报文),总共有8个Byte,64个bit。
下图中,左边的0-7代表的Byte位置,上面的0-7代表的是Bit位置。下图每个颜色不同的地方都代表一个独立的信号,所占Bit位置长度也能直接看出。
如图中的"Test_Signal_Temp"信号,所占位置位Byte2的整个字节。"TestSignal_4",所占位置为Byte5的第0-3个Bit(位于整个数据域中的Bit40-Bit43)
当把这帧报文发送到总线上,用CAN分析仪观察报文,结果就会像下面图中那样(手上没有合适的报文,只能拿一个来改了)。
在图中Byte0-Byte5都是0,说明Byte0-Byte5发送的数据总线值都是0(总线值虽然是0,但如果有偏置,那么物理值可能就不是0,总线值和物理值后面会说到)。Byte6是空信号(上面DBC)所以不管Byte6。
接下来我们看Byte7,Byte7是0X1D对应二进制是:0001 1101,与DBC中的信号对应如下图
讲到这里,应该明白DBC中的报文数据和信号是怎么回事了。
下一章我会讲解DBC信号的各个参数的具体含义。
DBC参考文件及打开.dbc文件的软件放在网盘里面:
百度网盘 请输入提取码,提取码为:pqze
打开.dbc文件的软件也可以直接上官网下载
CANdb++ | Vector
返回目录: