心跳服务
该服务又称为心跳服务,诊断仪通过这个服务告诉ECU,我跟你还连着,所以让你保持之前的状态,这个状态可能是会话状态,解密等级。换句话说就是:上路啊!我没有挂机,只是在打野,你在前面先顶一会,我很快就到,你可别摆烂啊!
例如是要保持会话状态,0x10控制会话服务有个退出高级会话的定时器,时间到了就会回到低级会话,可能是默认会话。每次收到0x3E服务之后,这个定时器就会重新计时,不会因为时间到了回到低级会话,诊断仪又要切换到高级会话才能做高级会话的事情。
请求报文格式
请求报文格式为0x3E + 0x00子功能
抑制正响应
这个服务的请求报文格式很有趣,有个0x80的可选项,千万不要以为他是个子功能,其实是一个关于抑制正响应的功能。抑制正响应,其实是诊断仪不需要回复正响应的时候使用的,每个服务都可以用这个功能,只是这个功能最常见是用在0x3E服务上面。因为这个服务只是用来保持状态的,并没有什么太多实际的动作,所以绝大部分情况下都是正响应,就没有太大必要看它是正响应还是负响应。
它只是不需要回复正响应,负响应还是需要回复的。所以,当服务需要回复正响应的时候,ECU就会直接执行服务,不进行回复;当服务需要回复负响应的时候,ECU就会回复负响应。
当诊断仪想抑制正响应的时候,就会将子服务的最高位置1,所以你就会看到在0x3E服务里面,需要正响应的子服务是0x00,抑制正响应的服务就是0x80了。当然啦,其他的服务也是一样,控制会话服务0x10想要切换到默认会话0x01,又不需要正响应时,就可以发0x10 + 0x81就可以了。
肯定响应格式
肯定响应格式0x7E + 0x00子服务 这里就不会有0x80子服务了,因为都抑制掉就不会有正响应了。