-  InputOutputControlByIdentifier (0x2F)----通过ID对输入输出进行控制 2F的03子功能是"暂时接管控制权" 
-  ReadDataByIdentifier(0x2A)—通过ID读取数据或特定器件状态 
-  ClearDiagnosticInformation(0x14)—清除故障诊断信息 UDS规定用FF FF FF表示所有种类的DTC 
-  RoutineControl (0x31)—例行程序控制服务 $31服务是调用ECU内置的一些操作序列的接口 
-  RequestDownload (0x34):诊断仪向ECU请求下载数据 
-  **RequestUpload (0x35)**诊断仪向ECU请求上传数据 
-  TransferData(0x36) 诊断仪向ECU传数据(下载),或者服务器向客户端传数据(上传) 
-  **RequestTransferExit(0x37)**数据传输完成,请求退出 
-  RequestFileTransfer(0x38) 传输文件的操作,可以用于替代上传下载的服务。 
-  ECUReset (0x11) 请求ECU重启 ECUReset 这条指令的用途是通过诊断请求使ECU重启。 01 硬件复位 02 模拟点火开关复位 03 软件复位 
-  SecurityAccess(0x27) 安全访问 
-  **ControlDTCSetting (0x85)**该服务用于控制ECU的DTC(diagnostic trouble code,故障诊断码)存储,这个服务常常和前面提到的28服务一起使用 
-  **ResponseOnEvent (0x86)**尽管诊断通信过程是问答式的,诊断仪发请求,ECU给响应 
-  **LinkControl (0x87)**这个服务用于转化ECU数据链路层和物理层的状态,验证ECU是否支持要调整到的目标波特率 
-  详细服务ID 
  
 否定响应码:
  
Positive response肯定响应的格式是由三部分组成,其中的response SID这个字节作为诊断请求的echo,回复[SID+0x40],例如请求10,响应50;请求22,响应62,回复的是一组数据。后面的两个字节分别为子功能及其他,视具体的诊断服务而定。
Negative response否定响应的格式固定为3个字节,回复[7F+SID+NRC],第一个字节为0x7F,第二个字节是被拒绝掉的SID,第三个字节是NRC否定响应码。比如,若ECU给出7F22 13这个negative response,则说明SID=22这个服务因为诊断请求数据长度不对(NRC=13)的原因而无法执行。
举例:
 对该片段报文进行解析 
 
 10 表示连续帧的第一帧(First Frame),FF_DL表示第一帧数据长度,N_data表示报文数据
 
 Byte1:
 30 表示流控帧
 FS(Flow Control):
 FS=0:表示允许发送方继续发送连续帧;
FS=1: 表示发送方需等待下一条流控制帧[1],该流控制帧称为等待流控制帧;
FS=2: 表示报文长度超出接收方的网络层缓存大小,此流控制帧将迫使发送方中断多帧报文的发送,并且发送方网络层使用N_USData.con向应用层报告N_Result = N_Buffer_Overflow。FS = Overflow的流控制帧接收方只能在接收到第一帧后发送。
Byte2:
 BS(Block Size)—块的大小(允许连续传输帧的数目,下一次需接受方发送流控制帧)
BS=00: 表示允许发送方连续发送连续帧,而不需要等待接收方发出的流控制帧;
BS>=01||BS<=FF: 表示允许发送方连续发送连续帧的数目,发送完成相应数目的连续帧后,发送方必须等待接收方发出的流控制帧;
BS为当前接收数据的数据长度,通过控制数据长度来防止通道堵塞;
Byte3:
 STmin(Separation Time minimum),最小间隔时间
20一定跟在2F之后的一帧,并且20也带有数据



















