谈谈汽车诊断之KWP2000/ISO14229/ISO15765/SAEJ1939

最近在研究汽车诊断规范,其中涉及到好几个类似的国际规范,比如KWP2000、ISO-14229、ISO-15765、SAE-J1939等等。有的规范彼此之间相互引用,有的规范却又各自独立,简直就是一团乱麻,于是静下心来好好整理整理。

一、KWP2000

KWP 2000 代表 Keyword Protocol 2000,即关键字协议 2000,它是 ISO 标准 ISO 14230的工作名称。ISO 14230 由三部分组成,第一部分定义物理层,它实际上就是在 ISO 9141-2中定义的物理层,但是扩展到可以工作在24V系统中。这意味着凡是满足ISO 9141-2的车辆、模块或测试设备,只需对软件进行修改,就能满足 KWP 2000 接口需求;第二部分定义数据链路层,其中包括信息格式和时序。它们兼容 ISO 9141-2,但是也提供了额外选项。其中包括头部是否带有地址信息和长度信息。信息最大可达 255 字节长。另外还定义了通讯初始化方法;ISO 14230 的第三部分定义了应用层,兼容了 ISO 14229 中描述的诊断维修实施方法。同时对于数据的排放在 ISO 15031 中进行了定义。

总的来说,对于 KWP2000 协议可以理解为 ISO 14230 协议的简版,而ISO14230 中涉及到 ISO9141、ISO14229、ISO15031 等协议内容。同时 KWP2000 新增了一些自己的内容。

在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000(Keyword Protocol 2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)标准。KWP2000最初是基于K线的诊断协议,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN网络(Controller Area Network)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1M bps)和灵活可靠的通讯方式,在车载网络领域广受青睐,越来越多的汽车制造商把CAN总线应用于汽车控制、诊断和通讯。近年来欧洲汽车领域广泛采用了基于CAN总线的KWP2000,即ISO 15765协议,而基于K线的KWP2000物理层和数据链路层协议将逐步被淘汰。

二、ISO-14229

首先简要介绍什么是ISO-14229,至于可以在网上找到的大篇理论介绍我就略过不讲了,有兴趣可以自行搜索。简单的说,它就是一个用于汽车行业诊断通信的需求规范,它只规定了与诊断相关的服务需求,并没有涉及通信机制,因此要实现一个完整的诊断通信还需要定义网络层协议(比如ISO-15765),还有底层硬件实现方式(比如CAN控制器)。由于不涉及网络通信机制,可以架设在各种网络之上,因此ISO-14229也称为UDS(Unified Diagnostic Services)。换句话说,它是诊断服务的规范化标准,比如读取故障码应该向ecu发什么指令,读数据流又是发什么指令等。比如说:

  • 给ECU发送:22 F1 86
  • ECU则回复:62 F1 86 01

三、ISO-15765

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

ISO 15765 协议是一种基于CAN 总线上的诊断协议。该协议按照ISO/OSI标准7层参考模型建立的,其中ISO 15765-1 包括了物理层和数据链路层,ISO 15765-2 对网络层进行了说明,ISO 15765-3 则是规定了应用层的具体服务。目前ISO 15765 协议已经广泛的使用在轿车、汽车控制工业等方面。

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

简洁一点的理解就是:

  • 基于K 线的KWP2000协议就是ISO-14230;
  • 基于CAN的KWP2000协议就是ISO-15765;

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

四、SAE J1939

SAE J1939 协议是美国汽车工程师协会(SAE)为了实现总线协议的标准化,在CAN2.0B 的基础上制定的应用于大型货车和客车的车辆网络串行通信和控制协议。该协议是按照ISO/OSI标准7层参考模型建立的,在物理层和数据链路层基本上沿用了CAN 规范,并增加了网络层、应用层和网络管理规范,规定了CAN总线使用29bit的扩展标识符和扩展数据帧,网络通信速率可达250Kbps。J1939 协议因其独特的设计理念和优异的性能广泛应用于货车、客车、卡车、农业装备、林业电子设备、柴油机控制、海洋电子设备、公共交通、铁路等等。

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章