提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
CAN 最早出现在 80 年代末的汽车工业中,由德国 Bosch 公司最先提出,全称是“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。随着汽车电子装置越来越多,它们之间的通信的控制也越来越复杂,CAN总线在汽车上的应用也越来越多。做为汽车电器开发人员或是汽车检修人员,很有必要掌握CAN的相关知识,本系列将重点介绍CAN通信解析方面的内容,通过读取报文,知道各电子装置的工作状态。
一、用CANTest在线读取报文信息
1、硬件连接:将CAN分析仪的2个通道分别接到要测试的CAN网络中,USB线接到电脑上。
2、打开CANTest,点选“选择设备”菜单下的“USBCAN2”,打开下一窗口。
3、选择“同时打开全部CAN通道”,即可打开设备的2个通道,同时侦测。在“波特率”标签后选择CAN网络的实际波特率值,再点击“确定并启动CAN”,即可启动测试。
4、窗口左上部的通道0和通道1,用于两个通道之间的切换。主窗口显示接收和发送的报文信息,包括时间、ID、帧格式、类型、数据长度、实时数据等。下半部分的“基本操作”,用于向CAN网络发送一条报文。也可点击左下角的“高级操作”标签,切换到发送报文的高级模式。
5、在“高级操作”模式下,可同时设置多条报文内容,再控制发送模式。
6、将一段时间内的报文信息保存到文件中:点击“实时保存”,弹出“另存为”窗口,依次选择保存位置,输入文件名,选择文件类型,再点击保存。其中文件类型最好选择“ASC File(*.asc)”,以便于用CANalyzer软件离线分析,其它格式一般只能看文件。
7、要结束保存文件时,点击“停止保存”即可,上述定义的报文文件就生成完了。
8、窗口中的报文正常是实时滚动,按“暂停”可以停止滚动显示,便于查看当前数据。按“继续显示”就恢复继续滚动显示。
9、按上图中的“DBC”按钮,打开DBC查看窗口,点选“加载协议”,选择DBC文件加载,点开每行最左侧的“+”号,即可展开显示出各个信号的状态。
二、报文解析说明
1、一般情况下,一条报文消息包含8个字节的数据,共64位。
比如上图第一行中,ID为0x18FFC5A9的消息数据是:05 00 01 09 00 00 00 08,数据格式是16进制数,从左到右是第一个字节到第八个字节,也有称为每0个字节到第7个字节的。
2、8个字节数据的布局图如下:每一行代表一个字节,每个单元格代表一个位。第一个字节包含bit0bit7,第二个字节包含bit8bit15,依此类推。
3、比如第一个字节数据0x05,转换到布局图上的值是下图:
4、当一个信号的数据比较大时,超过8位,这就出现了跨字节的情况,这时就存在两种数据方向的类型。一种叫Intel格式,另一种叫做Motorola格式。
(1)Intel格式
假设上面举例中:05 00 01 09 00 00 00 08的第三、第四字节代表的是转速数据,格式是Intel格式,分辨率是1,偏移量是0。
数据的解码计算方法:实际值 = 数字量分辨率 + 偏移量
数字量:报文中的实际数值,一般要转换成十进制数;
分辨率:单位数值代表的实际值;
偏移量:数值为0时的实际值;
本例中:十六进制数字量即为0x0901,转换成十进制数是2305,所以转速 = 23051+0=2305。数据按位排列如下图所示:
(2)Motorola格式
Motorola格式的数据方向与Intel格式相反,如下图:
同样为上述数据,十六进制数字量变为0x0109,转换成10进制数是265,所以转速 = 265*1+0=265。
由以上两图可以看出,如果信号在同一个字节内,两种格式的方向是一样的。
总结
本篇介绍了用CANTest在线读报文方法,以及报文的数据解析方法。