http://www.dpfdoctor.net/content/?220.html

SAE J1850 VPW协议也是OBD II标准中的一种,通常应用于GM车系中。

VPW英文全称是Variable Pulse Width Modulated,即可变脉宽调制。

下面从物理层特性、电平接口、帧结构、命令交互、交互时间参数、常用命令字等几个方面来介绍这种协议。

Ø  物理层特性
采用10.4KB/S的波特率;通讯电平通常为7.5V;每个字节采用8位二进制数形式,没有起始位、停止位和校验位;通讯引脚为J1850 BUS+,既为OBD-2PIN。

Ø  电平接口:
协议通讯采用10.4Kbps VPW方式,初始电平为0V,在第1帧数据前有一个163至239微秒(us)的高电平表示SOF(帧头即数据开始标志),

接下来以不同长短的高低电平表示二进制数据0或1,其中:
高电平宽度介于34-96us表示“1”,高电平宽度介于96-163us表示“0”,
低电平宽度介于34-96us表示“0”,低电平宽度介于96-163us表示“1”,

传输时按字节顺序,且每个字节都是高位在前,低位在后的顺序,高低电平相间用于表示传输的数据,

字节与字节之间没有间隔,传送完一帧数据之后有一个宽度大于239us的低电平表示EOF(帧尾即帧结束标志)。

Ø  帧结构:
GM车型中的帧结构:
Tools: 0x6C + ECU地址 + 设备地址 + Fun_ID + (command information) + CRC
ECU:   0x6C + 设备地址 + ECU地址 + Fun_ID + (command information) + CRC

OBDII中的帧结构:
Tools: 0x68 + 0x6A + ECU地址 + Fun_ID + (command information) + CRC
ECU:   0x48 + 0x6B + 设备地址 + Fun_ID + (command information) + CRC
ECU地址为每个系统的标示号,设备地址一般为0xF1或0xF0;

而Fun_ID为不同功能的标示号,ECU响应的Fun_ID在tools命令的基础上+0x40;

CRC(循环冗余校验)为校验字节。

Ø  命令交互:命令交互通常情况下为1对1,但也存在1对多或者多对1的情况。

下面是两组命令交互举例:

GM:
Tools: 6CH 10H F1H 20H 64H
ECU:   6CH F1H 10H 60H 72H

OBDII:
Tools: 68H 6AH F1H 01H 00H 17H
ECU:   48H 6BH 10H 41H 00H BEH 3FH B8H 10H C9H

在交互中,因为发送命令的对象不一样,所以目标地址和源地址是进行了互换;

同时,ECU响应设备的命令字在设备命令字的基础上+0x40

Ø  交互时间参数:

设备发出命令后到ECU应答命令的时间间隔为320微秒(us)到100毫秒(ms)。
ECU应答命令后到设备发下一条命令的时间间隔为320微秒(us)到100ms。
如果设备或ECU同时发送多帧命令时,每帧之间的时间间隔为3到5ms。
同一帧命令中的字节与字节之间无时间间隔。

Ø  常用命令字:

GM车型中的常用命令字:

系统进入:20H
数据流设置:2CH
数据流读取:2AH
读故障码:19HH
清除故障码:14H
读版本信息:3CH

OBD II中常用命令字:

读数据流:01H
读故障码:03H
清除故障码:04H
读版本信息:09H

VPW协议解析的更多相关文章

  1. ts 协议解析

    pes : http://wenku.baidu.com/link?url=KjcA0qXqZ1bWVQTa8i1YOmygofldSQL7Pjj-zGRw1e_6_LFmVLo5DIWF0SNwVn ...

  2. [转]netty对http协议解析原理

    本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...

  3. twemproxyRedis协议解析探索——剖析twemproxy代码正编

    这篇文章会对twemproxyRedis协议解析代码部分进行一番简单的分析,同时给出twemproxy目前支持的所有Redis命令.在这篇文章开始前,我想大家去简单地理解一下有限状态机,当然不理解也是 ...

  4. B/S 架构中,网络模型的分解与协议解析

    前言 如果是C/S专业毕业的或者是学过计算机网络课程的童鞋们,相信大家都知道网络模型的划分,本文首先来聊一聊目前对于B/S结构中,网络模型分解的两种方式. 没错,相信大家看到这个图片的时候就已经明白了 ...

  5. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  6. netty对http协议解析原理解析

    本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...

  7. MODBUS协议解析中常用的转换帮助类(C#)

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  8. AOSP中的HLS协议解析

    [时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, AOSP, 源码分析,HttpLiveSource, LiveSession,PlaylistFetcher] ...

  9. WebSocket协议解析

    WebSocket协议解析 转载请注明出处:WebSocket解析 现在,很多网站为了实现推送技术,所用的技术都是轮询.轮询是指在特定的时间间隔(如每一秒),由浏览器对服务器发起HTTP请求,然后由服 ...

随机推荐

  1. Eclipse中安装可以新建html文件的插件(Eclipse HTML Editor)

    最近在eclipse中开发android项目,用到了jquery mobile框架,则会涉及到新建html文件,发现eclipse不自带新建html文件的插件,必须得新建一个其他形式的文件,譬如xml ...

  2. Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. ......

    mkdir jre cd jre ln -s 你的JDK目录/bin bin 例如:ln -s /usr/lib/jvm/jdk1.8.0_25/bin bin 原文地址:http://www.cnb ...

  3. ADO.NET+Access: 3,参数 @departmentName 没有默认值

    ylbtech-Error-ADO.NET+Access: 3,参数 @departmentName 没有默认值. 1.A,错误代码返回顶部  3,参数 @departmentName 没有默认值. ...

  4. strus2中获取表单数据 两种方式 属性驱动 和模型驱动

    strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...

  5. Java并发编程-synchronized

    多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题.同步机制可以使用synchronized关键字实现.synchronized关 ...

  6. Ubuntu上用快捷键关闭没有响应的程序

    Linux 上有很多方法可以强制关闭无响应的程序,比如你可以通过按快捷键 Ctrl + Shift + T 来调出 Terminal 或者用 Ctrl + Shift + F1 进入 Console ...

  7. Array.prototype.slice.call

    Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组 ,::'age'}; Array.prototype.slice.call(arr); ...

  8. Mapreduce执行过程分析(基于Hadoop2.4)——(二)

    4.3 Map类 创建Map类和map函数,map函数是org.apache.hadoop.mapreduce.Mapper类中的定义的,当处理每一个键值对的时候,都要调用一次map方法,用户需要覆写 ...

  9. Hadoop学习记录(7)|Eclipse远程调试Hadoop

    1.创建Hadoop项目 2.创建包.类 这里使用hdfs.WordCount为例 3.编写自定Mapper和Reducer程序 MyMapper类 static class MyMapper ext ...

  10. 自定义延时查询控件---valen

    当查询已经成标配 查询是已成为每个应用常用的功能,也正是这样前端后对查询的设计需求也日益增加,本文针对前端(Android端)查询控件做一个例子: 控件设计与逻辑 产品的设计UI图; 要达到如下 1| ...