如下图是一个CAN总线上得ABS协议应用,我们都知道在CAN总线的标准协议里,一个数据域的最多字节是8byte,也就是8*8=64bit;每一个bit都包含了一个模块的不同的信息,如下图所示
ABS的工作状态的信号矩阵
该报文的ID是187,上述四条报文的信号是处于同一条信息报文中的64bit中。如下图
将64bit展开得到一张二维数据状态表(不管是UDS或者CAN标准来说一般来说一帧数据都会定为8 byte 不足的也会让你补齐为0xAA或者0x55)
这个表中包含了矩阵信息表的具体起始位信息
假设现在有一帧关于车速信息的报文如下图
00 00 00 00 06 40 00 00
0x06转为2进制是0110
0x40转为2进制是00101000
因为车速信号的车速信息Motorola格式的起始位是40,找到上图中40的位置,往前推13个bit的长度。整个数据就是车速的数据。32-37是高5位bit,47-40是低8位bit。
将0x06和0x40的二进制组合得到下面的数据
011001000000 = 1600(10进制)
1600*0.05625 = 90km这就是根据协议得出来的数据值。