Kwp2000协议的应用(硬件原理使用篇)
作者:良知犹存
转载授权以及围观:欢迎添加微信: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协议的应用(硬件原理使用篇)的更多相关文章
- Kwp2000协议的应用(程序原理篇)
作者:良知犹存 转载授权以及围观:欢迎添加微信:becom_me 总述 接上篇文章Kwp2000协议的应用(硬件原理使用篇),本篇针对kwp2000协议标准的服务ID详细介绍,以及针对程序实现 ...
- TCP协议、算法和原理
TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获. 关于TCP这个协议的细节,我还是推荐你 ...
- 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制
[原创]分布式之数据库和缓存双写一致性方案解析(三) 正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...
- arm-linux内存管理学习笔记(1)-内存页表的硬件原理
linux kernel集中了世界顶尖程序猿们的编程智慧,犹记操作系统课上老师讲操作系统的四大功能:进程调度 内存管理 设备驱动 网络.从事嵌入式软件开发工作,对设备驱动和网络接触的比較多. 而进程调 ...
- SSL协议与数字证书原理
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- Nodejs的运行原理-架构篇
前言 本来是想只做一个Nodejs运行原理-科普篇,但是收到了不少私信,要我多分享一些更进阶,更详细的内容,所以我会在接下来的两个月里继续更新Nodejs运行原理. PS:此系列只做Nodejs的运行 ...
- Ajax原理一篇就够了
Ajax原理一篇就够了 一.什么是Ajax Ajax(Asynchronous JavaScript and XML的缩写)是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助.简 ...
- Atitit.协议的转换smb2http 原理
Atitit.协议的转换smb2http 原理 1. 协议的转换原理 stream的转换.. 2. 常用协议转换的情形 android通过SMB访问局域网共享文件 作者:: ★(attilax)&g ...
- Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理【转】
本文转载自:http://blog.csdn.net/liuxd3000/article/details/17464779 一.基本概念 帧缓冲(Framebuffer)是Linux系统为显示设备提供 ...
随机推荐
- github下载大文件太慢/失败
场景 github下载大文件,使用浏览器下载zip包到本地在下载到1G时失败, 使用 git clone ssh下载速度20k/s以下,已fq. 解决方法(亲测) 1.下载Github Desktop ...
- Akka Typed 官方文档之随手记
️ 引言 近两年,一直在折腾用FP与OO共存的编程语言Scala,采取以函数式编程为主的方式,结合TDD和BDD的手段,采用Domain Driven Design的方法学,去构造DDDD应用(Dom ...
- (一)React Ant Design Pro + .Net5 WebApi:先搞定服务器,顺手装个Nginx
腾讯云搞定服务器,具体过程就不赘述了,文档都有,咨询客服或者自行百度,体验一下过程. 一. 服务器 1. 云服务器 cvm 1核2G centos8.0 2. 域名注册 www.homejok.com ...
- 【Java】变量
变量 文章目录 变量 1.变量的概念 2.变量的三要素 3.变量的使用应该注意什么? 4.变量的声明和赋值.使用的语法格式? 5.code 1.变量的概念 变量的作用:变量用来存储数据. 变量的本质: ...
- 【栈和队列】5、队列概述与数组队列的基本实现 - Java
3-5 数组队列 简单记录 - bobo老师的玩转算法系列–玩转数据结构 - 栈和队列 队列Queue 队列也是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另 ...
- 树莓派3B装ubuntu server后开启wifi
树莓派官网选择ubuntu server下载映像 step 1: 使用SDFormatter格式化SD卡: step2: 使用win32diskimager工具将映像写入准备好的SD卡: step3: ...
- VB基础总结
前段时间用VB写了一个简单窗口小应用,久了不碰VB,都忘了,下面用思维导图简单总结了一些基础的东西,方便以后快速查阅.
- 运行.bat执行sql文件 —— mysql
参考地址:https://www.cnblogs.com/dingjiaoyang/p/9990188.html 运行test.bat 执行 test.sql文件 test.bat: @ECHO OF ...
- 安卓开发视频教程!想找工作的你还不看这份资料就晚了!Android校招面试指南
前言 准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司.谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿 ...
- 配置MySQL主从复制报错Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work
配置MySQL主从复制报错 ``` Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave ha ...