can报文怎么计算车辆转速和里程表数值
现在路上跑的汽车,基本上都是使用CAN总线进行控制的,为什么呢?因为它可连接节点设备数多,运行稳定抗干扰能力强,通讯延迟性低,不用它用谁呢。对于不同的汽车来说,它们的CAN总线被赋予的高层协议是不同的,比如汽油车上的CAN总线一般就是采用ISO15765的协议,而柴油车那种大型工程车辆,它们的CAN总线就多采用J1939协议。可以说,只要掌握了一辆车的CAN总线协议是什么,我们在进行完汽车CAN检测以后,就能够第一时间排查出问题了,根据错误帧什么的一一对应呗!不过,汽车高层协议这个东西,很多的车厂是不会给你的,这就需要我们自己去解析,这应该如何去做呢?
首先,工欲善其事必先利其器,你需要一个专业的解析工具,即USBCAN分析仪。除此之外,还有有台安装有检测软件的电脑。所有的硬件软件都准备玩以后,我们做好各个设备之间的连接,让汽车出现某个维度的变量,比如反复的开关车灯,其他变量不动。这时候,开关车灯的CAN数据形成,经过USBCAN的转换最终显示在电脑的软件接收界面上,我们一一进行对应,那开关车灯的含义就出来了,汽车CAN的高层协议解析就是这么实现的,我们可以称这种办法为控制变量法。现在你清楚了吗?欢迎找我进行讨论。
在车载测试中如果使用canoe或者其他can工具进行发送报文经常会碰到很多二进制的数据,以及比如
0xFF,对于这样的数据如果对于二进制以及单位换算不清楚很容易云里雾里,所以简单写一篇博文记录一下
单位换算
1G=1024MB
1MB=1024KB1
1KB=1024byte
1byte2=8bit3
在我们计算机中比特作为存储的最小单元,所以平时很难遇到,计算机的底层零件用通电来表示1,断电表示0,这样子便于存储和处理数据…blabla…
进制换算
计算机中是以我们二进制进行存储数据的,但是我们也会碰到像车载发送中0xFF这样的一些数据,这个就得从我们进制换算来说起了,理解了进制换算这个问题就迎刃而解了。
我们先从我们最容易理解的十进制开始
654 这个十进制数据我们可以拆分成6100+510+41,最后数据的真实大小就是我们的654,也就是说6的实际大小是610^2 ,5的实际大小为510^14 ,4的实际大小为4 10^0
看到这里其实感觉好像说的是废话,但是对于我们理解其他进制是有帮助的
比如现在给一串二进制101110001,如果进行计算他的十进制数据的真实大小可以计算么,为了方便理解我们从右侧开始
120[^4]+124+125+126+12^8(省略了值为0的位,因为0与任何数相乘的值仍为0)=1+16+32+64+256=369
所以我们得出一个结论就是(369)10=(101110001)2,即369这个十进制数和101110001这个二进制数是完全相等的,只不过是表示的形式不用而已
这是二进制转化为十进制,那么我们十进制怎么转化为二进制呢,这里有个简便方法:
我们不难发现,二进制数左边的位的权值是右边的位的权值的两倍,而最右边的位的权值为1,所以从右往左看,各个位的权值依次为:1,2, 4, 8,16, 32, 64, 128, 256, 512…,所以当一个位的值为1时,表示这个位的值就是它的权值的大小,而当一个位为0时,表示这个位的值为0
当要把一个十进制数转化为二进制数时,我们采取的策略是把它一步一步拆分。
我们首先观察一个这个数离哪一个位的权值最近,且这个位的权值要小于这个十进制数。举个例子,有一个十进制数150,我们发现比150小的权值中128是最大的,所以权值为128的这个位的值是1,此时还剩22。我们又发现比22小的权值中16是最大的,所以权值为16的位的值是1,还剩6。我们发现比6小的权值中4是最大的,所以权值为4的位的值是1,还剩2。我们发现比2小的权值中2是最大的,所以权值为2的位的值是1,没有剩余了。没有被选中的位的值全部设为0。
所以150最终可以转换为10010110。
理解了这个我们是不是就可以进行十六进制、八进制来进行换算了呢,so easy
八进制的数字:781
如果转化为十进制:782+881+18^0=457
然后转化为二进制是不是也是迎刃而解了呢?那么有一个问题我们二进制一个字节八位最多表示十进制的255,那457是不是一个字节就存储不了呢,如果要转化为二进制就需要增加字节来进行表示了
-------------------------------------------------------分割线-----------------------------------------------------
那么这些问题说完我们回归到刚刚的问题上面0xFF代表什么呢?
0x代表的是16进制的数字如果是FF,就是我们二进制中的1111 1111,表示的数字也是最大的了,转化为十进制也就是255了
八进制整常数八进制整常数必须以0开头
十六进制以0x开头
十进制整常数没有前缀
其中MB我们简称为兆,类似我们平时说的网速多少兆就是这里的MB, ↩︎
byte简称为字节,也可简写为B ↩︎
bit就是我们计算机存储的数据,称之为比特 ↩︎
这里的100也好20也好我们把它叫做权值 ↩︎
一辆汽车不管有百多少块电控单元,不管信息容量有多大,每块电控单元都只需引出两条线共度同接在两个节点上,这两条导线就称作数据总线。以前各电控单元之间好比有许多人骑着自行车来来往往,专现在是这些人乘坐公共汽车,公共汽车可以属运输大量乘客,故数据总线亦称BUS线。
感谢题主的邀请,我来说下我的看法:
目前对于汽车CAN总线协议的解析,基本上采用的都是控制变量法,具体说就是在保证汽车CAN线能够向外收发数据的前提下,我们让USBCAN分析仪和汽车CAN总线以及装有检测软件的电脑分别相连。然后,我们确定一个变量,比如说解析汽车开关车灯的CAN协议,那就反复的开关车灯。这时候,开关车灯的CAN数据就会经过USBCAN转换成USB数据显示在电脑软件接收界面上,其他的数据不变。然后我们就可以一一对应了。在进行汽车其他部分的CAN协议解析工作时,遵循的也是这个道理。现在你清楚了吗?如果您需要相关的USBCAN分析仪的话,可以前往我们的网站进行具体的咨询,欢迎来访。
感谢题主的邀请,我来说下我的看法。
ecantools软件是GCGD公司出品的CAN数据检测软件,通过对目标CAN总线收发数据,能够检测出相关的故障码,起到维护汽车安全的作用。这个软件上面有一个功能叫做OBD2,的确能够直接的解析出汽车的一些CAN总线信号内容,不过不是全部,注意哈!如果你想要解析出所有的目标汽车CAN总线数据,还是得需要变量检测法,一边动汽车,一边观测数据,一一进行对照。相信在不远的将来,这种软件能够得到升级,实现题目中您所想的那样。如果您对ecantools软件还有更多疑问的话, 可以登录GCGD官网进行具体的咨询。
感谢题主的邀请,我来说下我的看法:
CAN总线数据是没办法为我们直接看到的,一般我们都是把CAN数据先行转化为能被人理解的USB数据以后才能进行读取的,那这里就需要专门的USBCAN数据分析仪了,如果你需要这类工具读取汽车或者其他CAN设备的CAN数据的话,可以前往GCGD官网进行具体咨询,欢迎来访。
感谢题主的邀请,我来说下我的看法:
一般我们都是通过控制变量法解析汽车的未知CAN协议,当然首先我们要确保汽车的CAN接口处可以正常地进行数据的收发。然后,我们将汽车CAN接口,USBCAN以及装有检测软件的电脑相互连接。比如说,我们想要知道开关车灯的CAN数据是哪一条,我们就反复的开关车灯,这样相应的CAN数据就会形成,经过USBCAN转换为USB数据显示在电脑接收界面上,其他的数据不变,只有一条数据在变,那这条数据就是汽车开关车灯的意思了,其他的CAN数据解析工作也是这个道理。如果您需要相关的USBCAN设备的话,可以前往我们的网站进行具体的咨询,欢迎来访。
以上就是关于can报文怎么计算车辆转速和里程表数值全部的内容,包括:can报文怎么计算车辆转速和里程表数值、汽车数据总线是什么在哪个位置、请问车辆can总线的总线协议怎么解析出来呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)