在UDS协议中主要有三种类型的帧。
携带子功能ID的请求帧;
不带子功能ID的请求帧;
肯定响应帧;
否定响应帧;
在了解各个帧之前,咱们必须先了解以下术语:
Service ID - 即诊断服务ID,简称SID,它是ISO14229-1中定义的服务的ID号,长度为一个字节。服务端,也就是ECU收到这个ID号的消息时,会执行与这个服务相关的特定功能。
Sub-Function - 即子功能,它是一个可选字段,是服务ID的子部分。
例如:
功能 :诊断会话控制 (session control)
SID: 0x10
子功能:默认会话,可编程会话,扩展会话。
所以,在诊断会话控制(0x10) 服务中,有三个子功能。
携带子功能ID的请求帧
请求帧是诊断工具向服务端发送请求的帧。它通常遵循下面的结构:
带子功能ID的请求帧
不带子功能ID的请求帧
不带子功能ID的请求帧
诊断工具发送请求时,我们希望能够得到服务端ECU回复一个响应信号,这个回复可能是肯定的,也可能是否定的。我们分别来了解一下。
肯定响应帧
如果是肯定的响应(Positive Response),ECU 就在诊断请求的SID上+0x40表示确认例如诊断请求是10,ECU回复响应50;请求22,响应62,紧接着回复一组数据。
肯定响应帧
子功能可以决定是否需要回复响应
有时候,我们并不需要回复响应,我们可以通过子功能字节的第7个bit位来设置。
bit-7(D1)=0 —> 需要肯定响应
bit-7(D1)=1 —> 不需要肯定响应
否定响应帧
当ECU反馈为否应响应时,回复7F+SID+NRC,NRC表示的是Negative Response Code(否定响应码,表示否定的理由。
否定响应帧
下一节