本文以最基本的KWP2000协议为例说明诊断仪与汽车ECU是怎样通讯的。 通讯时序请看上图。 K线上空闲状态为高电瓶。诊断仪执行通讯后,先在K线上拉低25ms,再拉高25ms,间隔P2时间,诊断仪启动通讯命令,汽车ECU接收到诊断仪请求命令后,间隔一定时间后会(P3时间=诊断仪发送请求时间+ECU延时应答时间),这样就完成了诊断仪与汽车ECU之间一请求一应答的命令交互过程。 诊断仪请求命令: 81 11 F1 81 04 ECU应答命令 : 83 F1 11 C1 EF 8F C4 P1:ECU应答的字节间隔时间,一般为0ms; P2:诊断仪请求和ECU 应答或两个ECU 应答的间隔时间,一般为25ms; P3:ECU应答结束和新的诊断仪请求开始的间隔时间,一般为55ms; P4::诊断仪请求的字节间隔时间。一般为5ms; 以上命令的数据为16进制。 诊断仪请求命令: 81 11 F1 81 04 {dy}个字节81:此为帧格式字节,81的低位1表示服务ID+data区域共1个字节(此字节为81); 第二个字节11:目标地址,即发动机ECU地址,如果K线上共搭建有发动机ECU、自动变速箱ECU、ABS等,则每个ECU都有自己的地址,比如发动机地址一般为11,自动变速箱地址一般为18,ABS地址一般为28(这里的地址都是举例,也可以是其他),有了地址,诊断仪与ECU之间才会知道谁与谁通讯。 第三个字节F1:源地址,即诊断仪地址,诊断仪的地址一般为F1; 第四个字节81:服务ID,此服务ID是诊断仪通知ECU执行什么工作用的。 第五个字节04:校验和字节,81+11+F1+81=204,单字节,取04。 |