智能汽车安全新媒体
服务描述
诊断服务31服务主要用于实现针对某类测试场景,由客户端请求服务端开始、结束一个例程,以及获取例程执行的状态和结果。主要应用场景为以下场合:
车钥匙学习,四轮胎压学习,车窗防夹标定,存储器擦除,数据校验,功能控制,软件内部测试的功能检测等。
以下内容详细讲述了引用了例程的开始例程,停止例程,并且请求例程结果的使用方法。
开始例程:在接收到开始例程的请求后,开始执行指定的例程。
停止例程:EUC在接收到停止例程的请求后,停止指定的例程。
请求例程:一般例程,在前面的两个指令的响应里,就会带有例程执行的结果。
这三个例程的存在完全可以自定义,其中开始例程是必须支持的,而停止例程和请求例程结果就是看各主机厂的需求或者具体的功能需要,可有可无。例如打开背光灯,这个动作是一瞬间执行完成的,那么很明显我们无法对其进行停止操作,因此停止例程的功能有没有就没有什么必要了。
请求格式
参数解释
RequestServiceIdentifier:请求 SID:0x31,占用一个字节
RoutineControlType:包含01/02/03 三种子功能,其中01代表启动例程,02停止例程,03代表获取例程结果。占用一个个字节
RoutineControlOptionRecord:可选的,根据实际功能来决定,有些例程需要额外的数据,就需要通过这个参数来放入一些内容,如数据校验需要把校验标准发送给服务端,这样服务端就可以根据自身计算结果和接收到的校验数据进行校验比对,来判断校验结果。
肯定响应格式
参数解释
PositiveResponseServiceIdentifier:该参数固定为SID + 0x40 = 0x71
RoutineControlType:和请求格式格式中RoutineControlType保持一致
RoutineIdentifier:和请求格式格式中RoutineIdentifier保持一致
RoutineStatusRecord:可选的,和请求格式格式中RoutineControlOptionRecord保持一致,也可以根据客户需求进行自定义回复
否定响应格式
负响应的诊断格式:7F +SID + NRC。
NRC全称为Negetive Responce Code,每个NRC具有唯一的含义来代表当前诊断请求错误的原因所在。当然每个诊断服务支持的NRC不尽相同,具体支持的NRC需要参考ISO14229-1标准文档,对于31服务而言支持的NRC如下图所示:
NRC12:请求的SID不在服务支持的范围内时,会发送该NRC
NRC13:请求报文长度不正确时,会发送该NRC
NRC22:服务端的运行条件不满足去执行对应动作时,会发送该NRC
NRC24:请求顺序做错,会发送该NRC
NRC31:请求超出范围时,会发送该NRC
NRC33:DID是保密的并且服务端处于未解锁状态,会发送该NRC
NRC72:若在写入一个存储单元时服务器检测到错误时,会发送该NRC
应用场景与作用
a.例程控制(31)和输入输出(2F)的功能是不是一样的?
输入输出控制的功能,都可以通过例程控制来实现,而且,例程控制服务可以实现更复杂的功能。按照标准对服务功能的定义,输入输出控制服务大部分都是对服务端的一些变量做临时控制,基本上都是静态的,也就是说不能形成有序的操作。
而例程控制前面说过,是由一段代码来执行的,所以它是可以让服务端的某些接口按照一定的顺序执行一系列的控制,通过连贯操作,实现一些复杂场景的功能实施。该服务用于较复杂的控制,而输出控制用于相对简单的输出控制。
b.诊断发送报文长度或格式不对时
发送请求 08 04 31 01 F3 01 00 00 00
否定响应 08 03 7F 31 13 AA AA AA AA
7F 31 13:7F表示否定响应,31是SID,13是NRC表示当前发送报文格式不对
7F 31 13: 7F表示否定响应
c.前置条件不满足
发送请求 08 05 31 01 F3 01 01 00 00
否定响应 08 03 7F 31 22 AA AA AA AA
7F 31 22 7F表示否定响应,31是SID , 22是NRC表示前置条件未满足
d.安全访问失败
发送请求 08 05 31 01 F3 01 01 00 00
否定响应 08 03 7F 31 33 AA AA AA AA
7F 31 33 7F表示否定响应,31是SID,33是NRC表示安全访问失败
e.请求顺序错误
发送请求 08 05 31 03 F3 02 01 00 00
否定响应 08 03 7F 31 24 AA AA AA AA
7F 31 24 7F表示否定响应, 31是SID,24是NRC表示请求顺序错误f.请求超出范围
f.请求超出范围
发送请求 08 04 31 01 30 30 00 00 00
否定响应 08 03 7F 31 31 AA AA AA AA
7F 31 31 7F表示否定响应, 31是SID,31是NRC表示请求超出范围
来源:
https://mp.weixin.qq.com/s/4AodCwqYs9u0sUTPjMrjlw
- THE END -
精品活动推荐
因文章部分文字及图片涉及到引用,如有侵权,请及时联系17316577586,我们将删除内容以保证您的权益。