通信
UDS 诊断服务的通信协议基本相似,但又有所区别。 以诊断和通信管理功能单元(Diagnostic and Communication Management functional unit )为例,服务请求和响应有两类:一类是具有 Subfunction(子功能),另一类是不具有 Subfunction(子功能)。 不具有 Subfunction(子功能)的 UDS 诊断服务请求和响应机制如下图所示:
诊断方(Tester)向 ECU 发送指定的请求数据(Request),这条数据中需要包含 SID,且 SID 处于该应用层数据的第一个字节。 ECU 接收到请求数据(Request)后会返回响应,可返回肯定响应或者否定响应。 肯定响应(Positive Response)格式为:(SID+0X40)+数据。例如,请求 0X10 服务,肯定响应第 1 个字节为 0X50;请求 0X22 服务,肯定响应第 1 个字节为 0X62。 否定响应(Negative Response)格式为:0X7F+SID+NRC。例如,请求 0X10 服务,否定响应第 1 个字节为固定的 0X7F,第 2 个字节为 0X10,第 3 个字节为 NRC。NRC 是否定响应码,可以根据返回的 NRC 判断是什么原因导致的否定响应。 具有 Subfunction(子功能)的 UDS 诊断服务请求和响应机制如下图所示: 诊断方(Tester)向 ECU 发送指定的请求数据(Request),这条数据中需要包含 SID,且 SID 处于该应用层数据的第一个字节。 ECU 接收到请求数据(Request)后会返回响应,可返回肯定响应或者否定响应。 肯定响应(Positive Response)格式为:(SID+0X40)+Subfunction(子功能)+数据。例如,请求 0X10 服务,Subfunction(子功能)为 0X02,肯定响应第 1 个字节为 0X50,第 2 个字节为 0X02。 否定响应(Negative Response)格式为:0X7F+SID+NRC。例如,请求 0X10 服务,否定响应第 1 个字节为固定的 0X7F,第 2 个字节为 0X10,第 3 个字节为 NRC。NRC 是否定响应码,可以根据返回的 NRC 判断是什么原因导致的否定响应。
|