KWP2000协议

KWP2000协议是汽车行业最常用的通信协议之一,属于标准OBDII协议的一种,KWP又称为关键字协议,下面从通信过程,物理层特性,系统进入,帧结构、命令交互、交互时间参数、常用命令来介绍。以后会针对这些要素具体分析,比如物理层特性具体深入到硬件电路方面,现在先简单大概的描述下。
通讯过程
诊断仪在K-线上传送一个唤醒模式(WUP)的信号该信号在一段空闲时间以后以25ms的低电平开始在TWUP的时间后接着第一个下降沿诊断仪发送启动通信服务的第一个位,诊断仪必须使用10400的波特率进行初始化和通信
物理层特性
通常采用波特率0x28A0;
空闲电平通常为12V;数据位格式为1+8+1,没有校验位。
系统进入初始化
有快速初始化和5bps初始化两种方式。其中5bp初始化常是车型年限较老的,或者柴油卡车类型。
快速初始化:由诊断仪发送25ms的拉低电平(常态是高电平),然后是25ms的高电平,再发送系统进入数据,系统进入数据通常为5个字节,ECU响应7个字节,完成系统初始化交互。具体参见下图:
KWP2000协议_第1张图片
5bps初始化:诊断仪发送5bps的地址码,回馈若干个字节作为回应,回馈的字节来源于字节,回馈的第一字节是0x55,ECU响应0x55方波,测试仪根据测试此方波的时间间隔来计算波特率KW1,KW2,设备对KW2取反发回给ECU(也可能不发,如果不发,这初始化直接完成),ECU对地址码取反发回给设备,完成系统初始化交互。其中0x55这个字节用来规定后面的通信波特率。
KWP2000协议_第2张图片
帧结构
帧格式:FMT(帧头) TRG(目标地址)SRC(源地址)LEN(长度)DATA(数据)CS(校验码)
举例:

rece:81 10 f1 01 81 03
send:81 f1 10 01 c1 43

命令交互
回复的格式通常是pos位(有效位)+0X40,目标地址和源地址互换
5bps协议的会比较特殊
各个车型各个系统的系统ID不一样,通常需要要采集数据,比如发动机0xE0对应0xE8
交互时间参数
ECU应答的字节间隔时间间隔P1,通常为5ms
诊断仪请求和ECU应答或两个ECU应答的间隔时间P2,通常为0ms
ECU应答结束和新的诊断仪请求开始间隔时间P3,通常为75ms~90ms
诊断仪请求的字节间隔时间P4,通常为20ms
P1必须大于实际侦测到的字节间间隔,一般情况比实际侦测到的字节间间隔多3ms
服务命令
系统进入:0x81,系统退出:0x82 写数据流:0x3b
通信保持:0x3E,读故障码状态:0x17 清除故障码:0x14
读版本信息:0x1A,读数据流:0x21 读故障码:0x18
读冻结帧:0x12 输入输出控制:0x30 开始运行时:0x31
停止运行时:0x32请求运行时结果:0x33请求下载:0x34
传递数据:0x36请求传输退出:0x37加密:0x27
访问通信参数:0x83

深圳程序员交流群550846167

你可能感兴趣的:(汽车通信协议)