汽车诊断协议:K线/CAN线、kwp2000、ISO14230、ISO1575、SAEJ1939

初次进入汽车行业的小白, 肯定会被诊断协议的各种名字搞得一头雾水,区别不出来到底有啥区别。下面我们就来梳理一下各种名字的区别。


KWP 2000和IS0-14230 
在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,最早欧洲出现了一种标准诊断协议KWP2000,那时候KWP2000是基于K线的诊断协议,有一条线K,或两条线(K线和L线),那具体KWP2000协议是什么?这时候就要讲讲ISO-14230协议。 采集设备要从K先采集数据,需要电平拉高特定时间, 然后在拉低特定时间才能通讯。
当时的KWP2000只有三个子层有定义说明,即:应用层、数据链路层、物理层。并且这三个层分别由ISO-14230-1、ISO-14230-2、ISO-14230-3定义标准,所以一直都这么说,ISO-14230就是基于K线的KWP2000


                     |(1)   应用层             ISO-14230-1

KWP2000     |(2)   数据链路层      ISO-14230-2

                     |(3)   物理层             ISO-14230-3


ISO-14229和UDS 
先知道一件事,ISO-14229协议就是UDS(Unified diagnostic services),这个标准定义了诊断的应用层服务,不基于任何底层标准。它是诊断服务的规范化标准,比如读取故障码应该向ecu发什么指令,读数据流又是发什么指令等…

比如说给ECU发送    22    F1    86  

               ECU回复    62   F1     86    01

简单点说就是: ISO-14229就是UDS

ISO-15765 和UDSonCAN 
由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。这时候CAN总线出现并代替了K线,也就是我们说的ISO-15765。ISO-15765是基于CAN,它的ISO-15765-2、ISO-15765-3定义了诊断数据网络层和应用层的定义标准。

又因为ISO-15765-3使用了ISO-14229(UDS)的诊断服务,所以ISO-15765也叫UDSonCAN。

简洁一点的理解就是:

基于K  线的KWP2000协议就是ISO-14230

基于CAN的KWP2000协议就是ISO-15765

简单理解就是:ISO-15765就是基于CAN线的kwp2000

目前国内的车子使用K线的新车是没有了, 市面上存量的K线的车也不多了,十年前生产的柴油车,估计才有采用K线的ECU。

SAE J1939  

SAE J1939是美国汽车工程协会(SAE)基于CAN总线而设计的一个标准协议,它的数据链路层规定了CAN总线使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps。

J1939协议,采集数据的时候比较方便,ECU一直会主动外发,从OBD口采集数据只需要监听ECU的广播报文即可。收到的报文可以过滤掉不需要的0xAABBCCDD地址,只挑选自己需要的地址数据,然后根据厂家的通讯协议,解析8个Byte里具体的数据存储到数据库即可。

而14230, 14229, 15765都是需要主动向ECU请求数据,ECU才会返回,需要知道请求每个数据的具体指令,ECU就相当于Web服务器,采集设备就相当于浏览器。具体的指令可以从厂家获取, 厂家获取不到,就需要购买一个官方的诊断仪,用CAN盒抓包进行分析了。

当然了, 汽车的数据也不是你想读取就能读取的,就好比京东淘宝你要是没有账号密码,你是无法购物的,ECU也要认证采集设备是不是合法的,有安全算法,安全算法的破解就需要购买市面上能读取数据的诊断仪去破解分析了。

J1939虽然主动外发数据, 但是外发的数据都是一些常规数据, 有很多数据是不外发的,比如油门开度之类,要让ECU主动外发,就涉及到要配置ECU的参数,需要专用软件配置了之后刷写HEX文件,风险很大, 弄错了 , 发动机启动不了,或者仪表报错。

猜你喜欢

转载自blog.csdn.net/langeldep/article/details/83989197