作者:良知犹存

转载授权以及围观:欢迎添加微信:becom_me

发现K线没有过多的文章描述,作为一个开发过K线的人,不写些文章帮助后来的人岂不是太浪费开发经验了呢。

总述

    KWP2000是一套协议,它符合OSI七层协议模型,即即ISO14230-1,ISO14230-2,ISO14230-3,ISO14230-4这4个协议文件。

ISO14230-1协议规定了物理层标准,要求使用K线

ISO14230-2 规定了链路层,即帧格式、计时器等、错误处理机制以及交换关系。

ISO14230-3 规定了应用层,及链路层中的数据域是如何解析的,怎么样为用户提供服务(请求数据、接受数据、解析数据),这部分参考了ISO14229-1协议。

ISO14230-4 则是对一种特殊应用(排放相关系统要求),他分别对ISO14230-1,ISO14230-2,ISO14230-3作出了特例化要求和一些补充,又形成了一个体系协议(这个不太相关)

目前欧洲汽车领域广泛采用了基于CAN总线的KWP2000,即ISO 15765等协议,而基于K线的KWP2000物理层和数据链路层协议基本淘汰,国内也只有一些底端车型有用,但是在摩托车领域,电喷普及进程中,ECU广泛使用BOSH和德尔福等厂家设备的时候,都在同步使用KWP2000协议,开发相关设备的时候,还是需要懂k线协议的。

一、物理接口

K线的特点:

最大通讯速率达10.4 kbit/s(和现在动辄几十、几百M的通讯速度来比,确实很小)

诊断报文最大长度255Byte,k线是单总线,属于关键字协议,通过不同ID实现主从的应答。

总线电平:0~12V

一般电喷的摩托车的ECU不是BOSH就是德尔福或者日本产的,它负责控制整车的运动相关的逻辑,就是整车的CPU。

设备开发K线电路的选择

一般我们开发时候会选择相应的通讯的芯片,如图为K线芯片的电路,使用的是SI9241的k线芯片,一端连接到MCU的串口TX RX引脚,另一端接入K线

K线通讯现在基本上属于被逐渐淘汰的使用,只不过在摩托车电喷的领域还在使用。所以K线芯片也大都停产了,现有的芯片也基本都是以库存料为主,量不大但是很贵,所以设计有一套其他方式做的K线电路,一边连接到K线,一边连接到MCU的串口引脚,通讯很稳定,可以给大家做参考。

其次,大家也可以在某宝购买一些K线测试的开发板,用作测试,用来加快开发的进度。

如图为K线完整的一次初始化应答的信息抓取:

二、通信关键字

搭建好了硬件,这个时候我们需要进行软件的攻关了。首先准备好相关ECU的协议介绍手册。查看相应的协议规则,以及相应的关键词识别位置。

如图K线通讯几种常见的数据格式:

大家看到上面的一些数据格式刚开始可能有些头疼,但是实际上我们用的时候只会有一种使用,我以我使用过的举例解释(如上第二种数据格式)。

StartCommunication:

TEST->ECU  (设备端发往ECU请求应答的数据)hex:C1 33 F1 81 66

ECU ->TEST (ECU 应答设备的回复)hex :83 F1 11 C1 E9 8F BE

其中:0xF1代表 设备端的默认地址,0x11代表 ECU的地址

C1(FMT格式字节,0xC1转化为2进制为,11000001,bit7~6 为11,代表请求信息,bit5~0 为1,数据字节长度为1,如下只有一个数据byte SDIRQ)

33(Target字节) 

F1(Source字节)

81(SDIRQ,关键字,属于数据段) 

66(0xC1+0x33+0xF1+0x81 = 0x266,取一个byte的大小,所以去掉高位变成0x66)

此时候关键字就是81

由上可以知道,K线通讯的注意点:

1.信息里面包括该信息的数据段的长度;

2.协议数据在最后一个byte进行累加和的校验,用来判断数据;

3.协议信息中进行读取关键ID即可判断出当前应答服务的机制;

通过这些信息,我们大致对协议就有一个判断,我们可以通过一些关键词的填写,进行与ECU通信,获得我们需要的信息。例如读取ECU的故障码。

如下是不同的服务ID对应的不同ECU应答信息

这就是我分享的开发Kwp2000的协议,由于太晚了,所以也准备休息了,明天继续分享我的开发经验。如果大家有什么更好的思路,欢迎分享交流哈。

Kwp2000协议的应用(硬件原理使用篇)的更多相关文章

  1. Kwp2000协议的应用(程序原理篇)

    作者:良知犹存 转载授权以及围观:欢迎添加微信:becom_me 总述     接上篇文章Kwp2000协议的应用(硬件原理使用篇),本篇针对kwp2000协议标准的服务ID详细介绍,以及针对程序实现 ...

  2. TCP协议、算法和原理

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获. 关于TCP这个协议的细节,我还是推荐你 ...

  3. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  4. arm-linux内存管理学习笔记(1)-内存页表的硬件原理

    linux kernel集中了世界顶尖程序猿们的编程智慧,犹记操作系统课上老师讲操作系统的四大功能:进程调度 内存管理 设备驱动 网络.从事嵌入式软件开发工作,对设备驱动和网络接触的比較多. 而进程调 ...

  5. SSL协议与数字证书原理

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  6. Nodejs的运行原理-架构篇

    前言 本来是想只做一个Nodejs运行原理-科普篇,但是收到了不少私信,要我多分享一些更进阶,更详细的内容,所以我会在接下来的两个月里继续更新Nodejs运行原理. PS:此系列只做Nodejs的运行 ...

  7. Ajax原理一篇就够了

    Ajax原理一篇就够了 一.什么是Ajax Ajax(Asynchronous JavaScript and XML的缩写)是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助.简 ...

  8. Atitit.协议的转换smb2http 原理

    Atitit.协议的转换smb2http 原理 1. 协议的转换原理 stream的转换.. 2. 常用协议转换的情形 android通过SMB访问局域网共享文件 作者::  ★(attilax)&g ...

  9. Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理【转】

    本文转载自:http://blog.csdn.net/liuxd3000/article/details/17464779 一.基本概念 帧缓冲(Framebuffer)是Linux系统为显示设备提供 ...

随机推荐

  1. 解决github下载速度慢问题

    众所周知,GitHub是一个巨大的开源宝库,以及程序员和编程爱好者的聚集地,包括我之前推荐的诸多优秀的开源项目全部都是位于GitHub上.但是每当我们看到优秀的开源项目,准备去 下(bai)载(pia ...

  2. dede 织梦的安装 出现dir

    安装dede系统.(如果您已经安装,请跳过本步.)直接运行:http://您的域名/install如果没有出现该页面,而是出现了一个空白页面写着dir 那么请删除install文件夹中的 instal ...

  3. idea破解方式:永久激活

    相信很多小伙伴都发现了,每年到年底的时候,idea注册码都大面积的失效,早上到办公室打开电脑发现注册码过期,还要花很长时间找新的: 这里介绍两种破解方式,都是有生之年不到期:与网上现有的方式基本一致. ...

  4. python实现99乘法表

    for x in range(1,10): for y in range(1,10): if x>=y: print("%d*%d=%d\t"%(y,x,x*y),end=' ...

  5. 关于vuex的数据不直接给data而要通过computed

    # 为什么vuex的数据不直接给data而要通过computed计算 ## 疑惑 其实一直以来使用vue的状态管理vuex都有一个疑惑,文档中介绍,vue的状态数据`$store.state.xx`的 ...

  6. Hash Tables and Hash Functions

    Reference: Compuer science Introduction: This computer science video describes the fundamental princ ...

  7. python模块详解 | psutil

    目录 psutil 简介 psutil的功能函数 cpu memory_内存 disk_磁盘 net_网络 pid_进程管理 sensors_传感器 其他(用户,启动时间) psutil简介 psut ...

  8. 【Linux】CentOS7中修改中文字符集

    CentOS 7中字符集查看的方式是 locale -a   或者locale 如果想显示中文的话,应该修改为 LANG="zh_CN.UTF-8" 在命令行界面临时修改字符集的话 ...

  9. 敏感信息泄露 - Pikachu

    概述: 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到. 比如:---通过访问url下的目录,可以直接列出目录下的文件列表;---输入错误的url参数后报错信息里面包含 ...

  10. 【转】自定义ALV控件的工具条按钮

    1 CLASS lcl_event_receiver DEFINITION DEFERRED. 2 3 DATA: itab TYPE TABLE OF spfli, 4 wa TYPE spfli. ...