UDS协议帧结构

在UDS协议中主要有三种类型的帧。

  1. 携带子功能ID的请求帧;
  2. 不带子功能ID的请求帧;
  3. 肯定响应帧;
  4. 否定响应帧;

在了解各个帧之前,咱们必须先了解以下术语:

Service ID - 即诊断服务ID,简称SID,它是ISO14229-1中定义的服务的ID号,长度为一个字节。服务端,也就是ECU收到这个ID号的消息时,会执行与这个服务相关的特定功能。

Sub-Function - 即子功能,它是一个可选字段,是服务ID的子部分。

例如:

功能 :诊断会话控制 (session control)

SID: 0x10

子功能:默认会话,可编程会话,扩展会话。

所以,在诊断会话控制(0x10) 服务中,有三个子功能。

携带子功能ID的请求帧

请求帧是诊断工具向服务端发送请求的帧。它通常遵循下面的结构:

RequestFrameUDS

带子功能ID的请求帧

不带子功能ID的请求帧

RequestUDS-2

不带子功能ID的请求帧

诊断工具发送请求时,我们希望能够得到服务端ECU回复一个响应信号,这个回复可能是肯定的,也可能是否定的。我们分别来了解一下。

肯定响应帧

如果是肯定的响应(Positive Response),ECU 就在诊断请求的SID上+0x40表示确认例如诊断请求是10,ECU回复响应50;请求22,响应62,紧接着回复一组数据。

ResponseFrame

肯定响应帧

子功能可以决定是否需要回复响应

有时候,我们并不需要回复响应,我们可以通过子功能字节的第7个bit位来设置。

bit-7(D1)=0 —> 需要肯定响应
bit-7(D1)=1 —> 不需要肯定响应

否定响应帧

当ECU反馈为否应响应时,回复7F+SID+NRC,NRC表示的是Negative Response Code(否定响应码,表示否定的理由。

NegativeFrame

否定响应帧

下一节