最近在研究汽车诊断规范,其中涉及到好几个类似的国际规范,比如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文件,风险很大, 弄错了 , 发动机启动不了,或者仪表报错。

谈谈汽车诊断之KWP2000/ISO14229/ISO15765/SAEJ1939相关推荐

  1. 汽车诊断协议 - KWP2000

    KWP2000协议是最常用的通信协议之一,是属于OBDII标准协议的一种.KWP系统又称为关键字协议,因为这种协议在系统进入时,会涉及到关键字的校验而得名.下面从物理层特性.系统进入.帧结构等几个方面 ...

  2. 汽车诊断协议,(K线/CAN总线、kwp2000、ISO14230、ISO1575...)

    相信像我这样的小白第一次接触汽车诊断协议肯定有点懵逼,什么鬼kwp2000,那什么又是ISO-14230,ISO-15765,ISO-14229,UDS,UDSonCAN???它们到底是什么关系,还有 ...

  3. 汽车诊断协议(K线/CAN总线、kwp2000、ISO14230、ISO1575...)

    一.初步认识 KWP 2000和IS0-14230  在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,最早欧洲出现了一种标准诊断协议KWP2000(Keyword Protocol 200 ...

  4. 汽车诊断协议,(K线/CAN总线、kwp2000、ISO14230、ISO1575...)(转)

    相信像我这样的小白第一次接触汽车诊断协议肯定有点懵逼,什么鬼kwp2000,那什么又是ISO-14230,ISO-15765,ISO-14229,UDS,UDSonCAN???它们到底是什么关系,还有 ...

  5. 汽车诊断-KWP2000协议

    汽车诊断-KWP2000协议 目录 一.物理层 二.链路层 1.帧格式 2.握手方式 附录 目录 一.物理层 引脚用途: 采用标准OBDII-16诊断接头: 4号引脚:电源地:5号引脚:信号地:16号 ...

  6. UDS汽车诊断入门01 - 简介

    前言 ​ 一直想写一个关于UDS学习的系列文章,却一直没有动笔,一来是由于觉得自己学得还不够透彻,二来想一开始就把文章写得很完美,然而事实上真正要做到对协议非常透彻得话,又谈何容易,协议是死的,人是活 ...

  7. 14229汽车诊断协议学习笔记

    14229汽车诊断协议学习笔记 什么是14229协议 诊断服务基本知识 确认的服务 未确认的服务 请求原语格式 响应原语格式 诊断分层结构 诊断服务 诊断会话控制(0x10)服务 ECU 重置(0x1 ...

  8. 【图解UDS】UDS汽车诊断开发流程及Vector解决方案工具链介绍

                                   [图解UDS]UDS诊断开发流程及Vector解决方案工具链介绍 目录 为了便于学习ISO 14229 UDS诊断协议,提供三个资源链接: ...

  9. 汽车诊断-KWP1281协议

    文章目录 前言 一.物理层 1.诊断接口 2. 物理特征: 二.链路层 1.命令格式 2.握手方式 三.总结 1.KWP1281的特点: 2.KWP2000,ISO9141,KWP1281协议的异同点 ...

最新文章

  1. bootstrap之双日历时间段选择控件—daterangepicker(汉化版)
  2. 请求外部图片的时候,遇到403的错误的解决方案
  3. matplotlib可视化_EDA:Geopandas,Matplotlib和Bokeh中的可视化
  4. Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持
  5. UVA 11198 Dancing Digits
  6. JVM02----垃圾收集上(堆)
  7. 计算机等级考试一级宝典,计算机等级考试一级通关宝典
  8. 仿微信朋友圈发表图片拖拽和删除功能
  9. 输入一个三位数,分别求出x的个位数字,十位数字,百位数字的值。
  10. IAR 中的 Fatal Error[Lc002]: could not open file 解决办法
  11. 微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析
  12. python井字棋代码_python井字棋算法及代码
  13. 我的Docker学习笔记:从入门到实战过程全记录
  14. 一键锁屏源代码c语言,Android一键锁屏开发全过程【源码】【附图】
  15. 魏则西事件中,百度属于一般的龌龊
  16. 微信小程序哪个能唱歌_微信K歌最实用的小程序有哪些?求推荐几个有意思的!...
  17. 计算机应用基础闲情赋答案,计算机应用基础网络统考试卷 答案.doc
  18. 合成游戏开发 一起来养猪 幸福饭店 山海经
  19. 操作系统1—4章(最全复习题)
  20. Camera2 介绍

热门文章

  1. python自动化测试——测试报告以附件形式发送邮件
  2. Node.js构建可扩展的Web应用1
  3. Kotlin学习笔记(六) 伴生对象 对象表达式
  4. Eiblog 初体验,搭建教程
  5. 许昌:让便捷支付成为智慧城市新名片
  6. 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法...
  7. 模型OnMouseXXX事件
  8. SpringBoot启动出现java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
  9. 三星Note2 行货 水货 型号版本
  10. tomcat下运行cxf异常 java.lang.ClassCastException