BOSCH协议解析


原文链接: BOSCH协议解析

BOSCH协议是BOSCH公司开发的一种通信协议,符合ISO9141标准。下面从物理层特性、系统进入、帧结构、命令交互、交互时间参数、常用命令字等几个方面来介绍这种协议。
Ø 物理层特性:空闲电平通常为12V;数据位格式为1+8+1,没有校验位。本协议的波特率在进入系统后确定。确定方法如下:
进入系统时,Ecu接到Tools以5bps的波特率发送的地址码后,向Tools发送 0X55H,Tools通过计算0X55H的波特率,并把此波特率做为Tools的通讯波特率,并且在整个通讯过程中,波特率固定不变。
Ø 系统进入初始化:
本协议使用K、L的方式通讯,因此,需要用K线和L 线进行触发,唤醒Ecu,进入系统,具体步骤如下:
u Tools在K、L线上同时以5bps的波特率发送地址码,以进入地址码所对应的系统。
u 关闭L线;
u Tools等待接收Ecu回送0X55H,接到后计算出0X55H的波特率并设置通讯波率;
u Tools继续接收Ecu发送的Keyword 1和Keyword 2,在接收到Keyword2后,延时20ms将Keyword2取反发回给ECU。
u 在整个系统进入过程中Tools接收一个byte最长等待时间为2s。若系统进入有错误必须保证通讯线上有3s的时间无任何数据传输,确保Ecu已经是睡眠状态,再按以上步骤重新触发,进入系统。
u Ecu接收到求反的 Keyword2后,将发送第一帧系统信息,并在收到链路保持命令继续(03h,xxh,09h,03h)时按顺序发送其它系统信息。
u 系统信息的解释与读取系统版本信息同。
u 系统初始化请见下图:


                     图2-5-1

Ø 帧结构:

长度 记数字节 命令字 数据区 结束标志
长度:1个字节,表示本命令中长度字节后跟随的字节数。
记数字节:命令计数器,1个字节,每一条命令都会在上一条命令的命令记数字节基础上加1,作为本次通信数据的命令记数值,以保证接收发送的连续性校验。
命令字:1个字节,表明所要做的操作。
数据区:附加信息,若干字节不定。
结束标志:固定以03H为Request命令的结束符。
举例如下:
04H 01H 29H 01H 03H
第一个字节04H为长度信息
第二个字节01H为命令计数器
第三个字节29H为命令字,表示读取数据流
第四个字节01H为附加信息,表示读取通道01的数据
最后一个字节03H为结束标志
Ø 命令交互:在命令交互过程中,接收方每接到一个byte,就立即取反发回,直到接收到结束标志为止(注:结束标志0x03不取反发回)。一旦接到结束标志,接收方则可以开始下一帧命令的发送。基本交互模型下图:

                        图 2-5-2

实际命令如下:
Tools:03H 01H 09H 03H
ECU: 03H 02H 09H 03H
Ø 交互时间参数:包括4个时间参数,如下:
ECU返回keywod2与设备发送/keyword2的时间间隔:40ms
设备接收到ECU命令字到发送命令字取反的时间间隔:2ms
设备发送命令字到ECU发送命令字取反的时间间隔:2ms
设备发送完一帧命令后等待ECU响应的时间,通常为75ms~90ms
设备接收到ECU响应后到发送下一帧命令的时间,通常为20ms~26ms
Ø 常用命令字:
链路保持:09H
读故障码:07H
清除故障码:05H
读版本信息:00H
读数据流:29H
系统退出:06H

`