【车载开发系列】UDS诊断—诊断设备在线($0x3E)
一.概念定义
- 此服务用于向ECU指示诊断工具在线。
- 当其他UDS服务不存在时,为防止ECU自动转入默认会话模式并停止通信,必须使用此服务。
- 建议以功能寻址的方式发送该指令
- 它唯一的功能就是保持当前状态,不执行任何功能。所以它就是总线上的心跳功能。
二.背景
- 用诊断工具给ECU发送一些数据,而填写数据的时候,没有操作诊断工具给ECU发送任何诊断请求的。而一般遵照ISO14229-2的要求,超过PServer3时间,ECU就会从非默认会话切换到默认会话。为了避免这种情况,就可以使用3E这个服务了。
- 这里为什么子功能为0x00这么一个呢?
00没有特定的含义,它存在的意义只是为了发送请求的时候可以将抑制肯定响应位置1,也就是子功能字节从00变成80。这一位有什么用,在这儿再复习一下,将名字断句为“抑制”和“肯定响应”,含义就很明显了,抑制就是压抑、控制,抑制的内容就是肯定响应,也就是说这一位表示控制肯定响应不要回了 - 控制肯定响应的回复有什么用呢,主要就是为了减少不必要的带宽占用,因为有些服务大部分时候都是由功能寻址发出来的请求,如果要求所有节点都进行响应,就会出现很多响应报文发出来占用总线带宽,而这些响应是没必要的。所以,ECU在接收到抑制肯定响应位是1的请求报文时,如果处理结果是肯定响应,就不需要回复了,这个位适合所有带子功能的服务。
三.报文格式
1)请求报文
zeroSubFunction此参数值用于指示此服务不支持 suppressPosRspMsgIndicationBit外的其他子功能。
且除了0之外都是ISO保留位。