工作日志之CAN BUS总线——————汽车诊断

   经常使用下位机开发的同志们或者从事汽车开发卫星开发等研发朋友们,对CAN总线的使用并不陌生,上期我们提到了K线在汽车诊断中的使用非常广泛,现在大部分汽车诊断都是使用的K线,而CAN总线在汽车诊断中也是使用非常广泛的,像BWM,AUDI等汽车品牌都是使用CAN总线进行与诊断仪器的交互,下面同K线的讲解一样,我将从物理层,数据链路层,应用层三个方面去讲解CAN BUS在汽车诊断中的使用。

一.物理层

  CAN BUS的物理层和KWP还是非常大区别的,汽车上会有一个诊断座,K线和CAN分布的引脚也是不一样的。

  1. 诊断接头:OBDII-16标准接头
  2. 引脚定义
    引脚号引脚作用空载电压
    6,14BUS+,BUS-2.5V
    4电源线0V
    5信号线0V
    16电源正极12-14.6V
  3. 工作电平
    ECU工作电平:1.5-3V
    Tools工作电平:1.5-3V
  4. 通讯电平:1.5-2.5V
  5. 通讯波特率:500kbps,最高可到1Mbps,也还有其他波特率;
  6. 通讯引脚:6#,14#,全双工通信,差分格式;
    差分格式:两个脚的波形相反,可以降低误差率;

二.数据链路层

1.帧格式
   CAN2.0A(重点掌握)标准帧为11个字节,包括信息和数据两部分,前3个字节为信息部分

 字节1为帧信息第7位FF表示帧格式(在标准帧中FF= 0 ,在扩展帧中FF= 1)
第6位RTR表示帧的类型(RTR=0fe示为数据帧RTR=lfe示为远程帧)
DLC 表示在数据帧时实际的数据长度
字节2-3为报文识别码11位有效
字节4-11为数据帧的实际数据,远程帧时无效
命令帧示例:
Tools: 08H FCH 00H03H 19H 02H FFH0OH 00H 00H 00H (标准数据帧、长度为8)
ECU : 08H FDH 00H10H 0FH 59H 02H FFH 01H 80H 00H
我们在工作中使用模拟工装采集的以及模拟通讯时看到的命令是上面的格式,但其中
报文识别码FC 00 ( 我们常说的系统过滤ID )是不准确的,应该右移5位,即0x7E0
才是真正的报文识别码。通常情况下,标准CAN协议的响应帧报文识别码就是请求帧
的报文识别码加上8,即0x7E8,左移5位后就是我们所看到的FD 00.

CAN2.0BT展帧信息为13个字节,包括信息和数据两部分,前5个字节为信息部分

 字节1为帧信息第7位FF表示帧格式(在标准帧中FF= 0 ,在扩展帧中FF= 1 )
第6位RTR表示帧的类型( RTR=0fe示为数据帧RTR=ft示为远程帧)
DLC 表示在数据帧时实际的数据长度
字节2一5为报文识别码其咼29位有效
字节6- - 13为数据帧的实际数据,远程帧时无效
命令帧示例:
Tools: 88H C6H D0H 87H 88H03H 19H 02H FFH0OH 00H 00H 00H (扩展数据帧 8)
ECU : 88H C6H D7H 88H 80H10H 0FH 59H 02H 01H FFH 01H 00H
我们在工作中使用模拟工装采集的以及模拟通讯时看到的命令是上面的格式,
但其中
报文识别码C6 D0 87 88 ( 我们常说的系统过滤ID )是不准确的,应该右移3位,即18H
DAH10H F1H才是真正的报文识别码,移位后可以清楚地看到后面两个字节就是
目标地址( ECU地址)和源地址(设备地址) , 通常情况下,响应帧的报文识别码只需要
把目标地址和源地址交换位置即可,如18H DAHF1H 10

命令交互:
CAN协议的主要命令交互形式有发1帧回1帧、发1帧回多帧、发多帧回1帧及发多
帧回多帧,下面分别举例说明。
发1帧回1帧:
Tools: 08H FCH 00H03H 19H 02H FFHOOH 00H 00H 00H
CAN2.0A
ECU: 08H FDH 00H04H 59H 02H FFH 01H 80H 01H 00H
第一个字节的低4位表示除报文识别码的两个字节外其他字节的长度,第四个字节
03表示后面有效数据的长度。
Tools: 08H FCH 00H03H 19H 02H FFH 00H 00H 00H 00H

ECU : 08H FDH 00H1 0H 0FH 59H 02H FFH 01H 80H 00H

Tools: 08H FCH 00H 30H 00H00H 00H 00H 00H 00H 00H   (流控帧)

ECU : 08H FDH 00H21H FFH 01H 79H F1HE3H 01H 62H

ECU : 08H FDH 00H22H F1H FFHOOH 00H 00H 00H 00H

发出第一条请求帧后,如果响应帧的第四个字节高四位大于帧的有效数据长度为
OxIOOF&OxOFFF=OxOF表示有15个有效数据的回复帧。设备紧跟着发0,则表示回多帧。响
送流控制帧Tools: 08H FCH 00H 30H 00H 00H 00H 00H 00H 00H 00H来接收、下面的有效
回复数据,这个流控制帧在不同的车.上可能会不一样

发多帧回1帧:
Tools: O8H FCH 00H10H O9H 01H O2H O3H O4H O5H O6H CAN2.OA
ECU : O8H FDH 00H 3OH O0H O0H O0H 00H 00H 0OH 00H 流控制帧
Tools: O8H FCH 00H21H O7H O8H O9H O0H O0H 00H 00H
ECU : O8H FDH 00HO4H 59H O2H FFH O1H 8OH O1H 0OH
发第一条请求帧的时候,如果请求帧第4个字节高四位大于0,则表示发多帧,发送的命令
数据长度有第4,第5个字节-起决定,在这里数据长度为9这时候ECU响应Ox30的流
控制帧, Tools继续发送请求帧,蓝色为有效数据,发送完后,ECU响应正确的命令回
复。

发多帧回多帧:
Tools: O8H FCH 00H 1 OH O9H O1H O2H O3H O4H O5H O6H .

ECU : O8H FDH 00H 3OH 00H 00H 0OH 00H 00H 00H 00H  流控制帧

Tools: O8H FCH 00H 21H O7H O8H 09H 00H O0H 00H 00H
ECU:O8HFDHOOH1OHOFH59HO2HFFHO1H8OHOOH
Tools: O8H FCH OOH 3OH O0H O0H O0H O0H O0H O0H O0H  流控制帧
ECU : O8H FDH OOH 21H FFH 01H 79H F1H E3H 01H 62H
ECU : O8H FDH 00H 22H F1H FFHOOH O0H 00H 00H 00H
在这种情况下的交互,将发1帧回多帧和发多帧回1帧结合就可以了。需要注意的是,
对于不同的ECU由于细微协议的区别,在对于通过流控制帧来发送或接收剩余数据是不一
样的,有的时候会通过一条流控制帧将所有数据一次收完,有时候则是采用1对1的方式。
 

三.应用层

当今汽车应用领域,车内电控单元(Electrical Control Unit, ECU)可能多达 70 个,除了引擎控制单元(Engine Control Unit, ECU )外,还存在传动控制、安全气囊、ABS、巡航控制、EPS、音响系统、门窗控制和电池管理等模块,虽然某些模块是单一的子系统,但是模块之间的互连依然非常重要。例如,有的子系统需要控制执行器和接收传感器反馈,CAN总线可以满足这些子系统数据传输的需求。汽车内子模块的总线互连架构使得软件可以更轻易地实现安全、经济和便利等新特性,相比传统汽车网络架构中模块单元直接连接更加经济。 CAN总线实现汽车内互连系统由传统的点对点互连向总线式系统的进化,大大降低汽车内电子系统布线的复杂度

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值