KWP2000协议学习笔记(二)

KWP协议

帧:帧头,帧数据,校验
帧头:物理地址定位及其他网络信息
帧数据:数据体。
在一汽车系统中,有多个ECU,他们通过一个公共的K线联结,每个ECU都有一个唯一的物理地址,例如,enging的地址为11,设备的地址为F1,诊断仪首先向ECU广播式发送一帧命令,只有特定物理地址ECU收到后,与自己的数据进行对比。若匹配,则回复一帧命令,并开启相关功能。
KWP2000两种唤醒方式:
5 Baud Initialization(5波特触发的):持高电平时间大于300ms后,被拉低1bit(称之为起始位),紧接着向ECU发送1byte的请求命令,然后电瓶拉高1bit(称之为终止位)。当ECU收到这个字节的时候,对比自身数据,然后回复3byte(55 KB1 KB2);诊断仪收到这3byte后,将KB2取反,再发送给ECU,ECU收到后再回复取反后的地址(~Address)。之后,便进行正常的KWP2000通讯。
Fast Initialization(标准的):过程为:诊断仪保持高电平时间大于300ms后,被拉低25ms,紧接着再被拉高25ms;诊断仪向ECU发送命令后,延时25~50ms,ECU才向诊断仪回复。然后,诊断仪和ECU开始通讯。
帧格式:
格式:FMT TRG SUR LEN SID DATA CS(累加和)
发送:80 10 f1 01 81 03
回复:80 f1 10 01 c1 43
说明:
FMT-80 :有效字节长度; 帧首为FMT字节,最高两位为MODE,低六位为长度。
TRG :目标地址;
SUR :源地址;
LEN :有效字节长度;
SID :关键字;
SID+DATA :有效字节;
CS :校验位;

帧类型:
8X,80,68/48,CX,C0,0X,00,
8X是物理格式,针对某个系统而言。例如读到的故障码只能是该系统的故障码。
CX是功能格式,针对某个功能而言。例如读到的故障码会包括所有系统的故障码。

关键字
常见的关键字:
81 进系统
21 读数据流
1A 读版本信息
18/58 读故障码
13/14 清故障码
3E 链路命令
82 退系统

回命令要把关键字加0x40
如:80 11 F1 01 81 CS
81 F1 11 C1 CS
故障码类型:
0000~3fff: P码 Powertain 动力系统
4000~7fff: C码 Chassis 地盘 ABS防抱死刹车系统
8000~bfff: B码 Body 车身 SRS安全气囊等车身系统
c000~ffff:: U码 Network 网络 网络系统

KWP2000通讯电压
KWP2000根据车型的不同,通讯电压有5V、12V和24V的区别。(汽油一般为12V,柴油一般为24V),通讯逻辑为正逻辑方式。
KWP2000要求进系统前,处于高电瓶状态1,被拉低拉高各25ms后,才开始通讯。

KWP2000诊断座
以16Pin(脚)为例,4#、5#为地线,7#为K线(信号线,即诊断仪和ECU通过该引脚进行通讯)、15#为L线、16#为电源。
通过4#(5#)和16#的组合,可以给诊断仪供电。
通过7#可以实现KWP2000通讯。
通过7#和15#可以实现KL(KWP2000的一种)双线通讯。

KWP2000(通讯属性)
KWP2000规定通讯波特率一般为10416 bps,当然也有其他非主流的波特率,如9600、57600 bps等。符合标准串口数据1+8+1格式,即一个起始bit,,8个数据bit,,一个停止bit,,动力系统一般为7号脚通讯。

KWP2000(时间控制)
P4:( 5~ 20ms)诊断仪发送命令时,字节与字节,之间的时间间隔。
P2:(25~ 50ms)诊断仪命令发出后,到,ECU开始回复,之间的时间间隔。
P1:( 0~ 20ms)ECU回复命令时,自己与字节,之间的时间间隔。
P3:(55~5000ms)ECU回复命令后,到,诊断仪开始新的请求,之间的时间间隔。

ISO1230—2 数据链路层协议:报文结构、初始化过程、通讯连接管理、定时参数和错误处理等内容。报文结构:报文头,数据域,验校和。报文头:格式字节,目标地址(可选),源地址(可选),附加长度信息(可选)。
在开始诊断服务之前,诊断设备必须对ECU进行初始化,通过ECU的响应获取ECU的源地址、通讯波特率、支持的报文头格式、定时参数等信息。ECU所支持的报文头和定时参数信息包含在ECU返回的“关键字(Key Word)”中(这也是协议命名的由来)。
主要函数
read_code_home_page 显示”正在执行操作…”
wait_data 向汽车发送信息,收到帧则返回1;否则返回0.
Exit_sys 显示”正在退出系统…”
WellKeyTit 显示左下角操作提示信息
outtextxy_16 显示字符串
Cleardevice,clear_dis_win(); 清除窗口
pull_down 返回所选项的选择编号
info_win 带框输出字符串
enter_sys 检测通道能否进入系统,可以则返回1,否则返回0
goto_mid1,make_win 创建窗口

关键字(发送)
关键字(回复)肯定回答
功能
81
c1
进入系统

82
c2
退出系统

3e
7e
链路保持

1a
5a
版本号

21
61
读数据流

3b
7b
写数据流

17
57
读故障码状态

18
58
读故障码

12
52
读冻结帧

14
54
清故障码

30
70
输入输出控制

31
71
开始运行时

32
72
停止运行时

33
73
请求运行时结果

34
74
请求下载

36
76
传递数据

37
77
请求传输退出

27
67
加密

83
c3
访问通信参数

10
50
开始诊断会话

20
60
停止诊断会话

11
51
重置ECU

26
66
设置数据速率

1a 90
5a 90
读取VIN码(车辆识别号)

否定回答
SID
7f SID 10
拒绝应答

SID
7f SID 11
不支持该功能

SID
7f SID 12
子功能不支持不合法的格式

SID
7f SID 21
ECU繁忙,重新请求

SID
7f SID 22
条件不满足,或请求错误

SID
7f SID 23
事务未完成

SID
7f SID 31
请求越界

SID
7f SID 33
安全访问被拒绝,重新请求

SID
7f SID 35
错误键

SID
7f SID 36
超越目标数

SID
7f SID 37
请求时间延时过短

SID
7f SID 40
拒绝下载

SID
7f SID 41
不合适的下载类型

SID
7f SID 42
无法下载到指定的地址

SID
7f SID 43
无法下载请求字节的数量

SID
7f SID 50
拒绝上传

SID
7f SID 51
不合适的上传类型

SID
7f SID 52
无法从制定的地址上传

SID
7f SID 53
无法上传请求字节的数量

SID
7f SID 71
传递被暂停

SID
7f SID 72
传递失败

SID
7f SID 74
传递块中存在不合法的地址

SID
7f SID 75
传递块中存在不合法的字节

SID
7f SID 76
非法的传递块类型

SID
7f SID 77
传递块数据校验错误

SID
7f SID 78
请求被正确接收,但未决定回复

SID
7f SID 79
传递块中存在不正确的字节

SID
7f SID 80
在活动的诊断模式下,不支持该服务

猜你喜欢

转载自blog.csdn.net/langshi_2011/article/details/81585992