CAN 信号通常是通过屏蔽双绞线,进行差分电压传送,两条信号线被称为“CAN_H”和“CAN_L”,CAN_H一般是用黄色线,CAN_L一般是用绿色线。静态时均是 2.5V 左右,此时状态表示为逻辑“1”,也可以叫做“隐性”。用 CAN_H 比 CAN_L 高表示逻辑“0”,称为“显性”,此时,通常电压值为:CAN_H = 3.5V 和 CAN_L = 1.5V 。
1、硬件连接:将CAN工具接到要测试的CAN网络中(若有多路CAN,需要接到对应CAN的pin脚上,连接后对应的CAN才会有收发报文),USB线接到电脑上。
2、打开CANTest,点选“选择设备”菜单下的“USBCAN-E-U”,打开下一窗口。
3、在“波特率”标签后选择CAN网络的实际波特率值,再点击“确定并启动CAN”,即可启动测试。(若有多个通道需要测试,比如2个,选择“选择所有CAN”,即可打开设备的2个通道,同时侦测。
4、窗口左上部的通道0,主窗口显示接收和发送的报文信息,包括时间、ID、帧格式、类型、数据长度、实时数据等。下半部分的“基本操作”,用于向CAN网络发送一条报文。也可点击左下角的“高级操作”标签,切换到发送报文的高级模式。
5、在“高级操作”模式下,可同时设置多条报文内容,再控制发送模式。
6、将一段时间内的报文信息保存到文件中:点击“实时保存”,弹出“另存为”窗口,依次选择保存位置,输入文件名,选择文件类型,再点击保存。其中文件类型最好选择“ASC File(*.asc)”,以便于用CANalyzer软件离线分析,其它格式一般只能看文件。
7、要结束保存文件时,点击“停止保存”即可,上述定义的报文文件就生成完了
8、按上图中的“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,所以转速 = 2305+0=2305。数据按位排列如下图所示:
(2)Motorola格式
Motorola格式的数据方向与Intel格式相反,如下图:
同样为上述数据,十六进制数字量变为0x0109,转换成10进制数是265,所以转速 = 265*1+0=265。
由以上两图可以看出,如果信号在同一个字节内,两种格式的方向是一样的。
应用:
如下报文为Intel格式
can通讯用的Motorola格式,举例:
跨字节解析:
1.FCSHCPSpdFb位数长度为12位
第1字节取8位作为12位中的前面8位,第二字节取第二字节中的高4位作为12位中的后面4位
用计算器按Hex的289、28B、28A 看十进制的结果
2.FCSHCPV位数长度为10位(第二字节后4位作为10位中的高4位,第三字节前6位作为10位中的低6位)或
第二字节的低4位值为8,左移6位,即1000_ _ _ _ _ _
第三字节值位6C即01101100,与fc即11111100取且的关系,即01101100,再右移2位,即011011
再和前面的取或的关系,即1000011011 得到十进制为539
另外:由于通过CANTest导入DBC后,无法正常完成信号的解析,可以通过周立功CAN测试工具,直接完成对DBC 的解析。打开工具加载DBC,在要看的信号中双击解析,同时也可以使用CANoe导入DBC进行解析。