早期KWP2000/Can协议培训,主要从物理层,链路层方面讲解这两种协议在汽车通信中的物理属性,电气属性,帧结构,交互方式,应答方式等,应用层中只提到了几个常见的应用,如系统进入,读版本信惠,读故障码,清除故障码,读数据流等。在实际通讯数据中,以上应用功能均用到了各种恃定格式的命令,以及命令组合;有些复杂恃殊功能甚至用到了更多的命令组合。这些特定格式的命令组合即为今夫我们要讲的SID、PID应用。
KWP2000协议是汽车行业最常用的通信协议之一,属于标准OBDII协议的一种,KWP又称为关键字协议,下面从通信过程,物理层特性,系统进入,帧结构、命令交互、交互时间参数、常用命令来介绍。以后会针对这些要素具体分析,比如物理层特性具体深入到硬件电路方面,现在先简单大概的描述。
在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000 (Keyword Pro-tocol 2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)标准。KWP2000最初是基于K线的诊断协议。由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN (Controller Area Network)网络由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1 M bps )和灵活可靠的通讯方式,在车载网络领域广受青睐,因此,近年来欧洲汽车领域广泛采用了基于CAN总线的KWP2000,即ISO 15765协议,而基于K线的KWP2000物理层和数据链路层协议将逐步被淘汰。
TP2.0 的应用层的数据是根据大众KWP2000 定义的,命令定义及数据流格式相同,编程时用统一的数据转换函数。
UDS实践性强,逻辑复杂,很多服务非要体验过一次才能理解,导致包括我在内的初学者感觉晦涩难懂,不明觉厉,因此将自己的理解写下来、整理下来,与君共勉。
本文是对 ISO 15765-2-2011 协议的一些解读。
本篇文章简要介绍一下基于CAN总线实现的诊断协议的传输层。本文以classical CAN为例,CAN FD原理类似,不单独讲述。
ISO15031支持的汽车OBD口读取的数据项:
其中服务ID,即SID。还有具体一类参数的参数ID,即PID
本篇文章主要从以下几个方面进行讲解
1.OBD用来做什么
2.OBD和UDS的区别
3.OBD硬件接口简介
4.OBD的9大模式介绍
网络层的国际标准是ISO 15756-2,该标准详细规定了协议的具体细节。CAN总线是一帧8个字节,该协议可以使CAN总线高效的传输大约8个字节(up to 4095 bytes)的命令和数据。基于该标准文档,我开发出了一个独立性良好的协议栈,工作在上层诊断协议之下和下层CAN驱动之上,下面详解开发协议栈时需要实现的部分(基于 ISO 15765-2:2004(E))