如下图是一个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这就是根据协议得出来的数据值。
本文详细解释了CAN总线上的ABS协议应用,讨论了如何在标准协议限制下处理64bit数据,通过实例展示了如何根据信号矩阵和Motorola格式找到特定信息,如车速,进行二进制转换并计算出实际数值。
923

被折叠的 条评论
为什么被折叠?



