服务请求格式
诊断请求是指诊断工具向车辆发送的请求消息,用于请求执行某个服务。诊断请求消息由三个部分组成:SID、子功能和实际数据。
每个诊断请求由1个Byte的SID + 1个Byte的 sub-function(实际上是1bit spr + 7bit sub-function)+ 不定长的实际数据构成。
响应抑制
目的:spr存在的目的是告诉ECU针对某个服务请求是否需要发送正响应数据,用于减少ECU发送不必要的响应,节约系统资源。
如果某个服务没有sub-function,即没有第二个字节,那默认是要发正响应。
SPR=1, 抑制正响应,即ECU不给出正响应。
SPR=0, 需要ECU给出正响应。
正响应 Positive Response
诊断工具向车辆发送服务请求后,如果服务执行成功,则返回的响应消息称为正响应,反之返回的响应消息称为负响应。
例子:
负响应 Nagetive Respons
负响应消息由两部分组成:SID 和 负响应码(NRC)。SID用于标识响应的服务,负响应码指示服务执行失败的原因。
负响应码
10服务
UDS基础服务10,即诊断会话控制服务,是统一诊断服务(Unified Diagnostic Services)协议中的一个关键服务。
它主要用于控制ECU(电子控制单元)在不同诊断会话(session)之间进行切换。诊断会话可以理解为ECU软件的一种状态,不同的会话状态下,ECU支持的诊断服务或功能可能有所不同。
$10包含3个子功能:
01 Default 默认会话,
02 Programming 编程会话,
03 Extended 扩展会话,
ECU上电时,进入的是默认会话(Default)
会话保持
Tester会在S3 client时间内周期性发送3E给ECU【如3E00, 3E08】,ECU收到这个请求之后,会让ECU维持在非默认会话;
如果Tester在S3 server时间内都没有给ECU发送诊断请求报文,那么ECU就会从非默认会话跳转到默认会话,此时如果ECU 处于解锁状态,也会从解锁状态跳转到锁定状态。
10服务否定响应
时间参数
例子:
TX : 10 03
RX : 50 03 00 32 01 F4
S3 client 是对Tester要求的时间,是Tester来主动保持ECU 处于非默认会话的最大时间。
S3 server 是对ECU要求的时间,是保持非默认会话的最大时间。如果在此时间段内未收到请求,ECU就会从非默认会话跳转到默认会话
P2 client 是 对Tester要求的时间,是指当Tester发完一帧请求后,等待ECU给出响应的最大时间。如果超出这个时间,就会报超时错误。
P2 server 是 对ECU要求的时间,是指当ECU接收到一帧请求后,给出响应的最大时间。
P2*client 是指Tester接收到ECU发送的挂起指令后,额外的等待ECU响应的最大时间。
P2*server 是指ECU发送挂起(NRC:78)后,额外争取到处理响应的最大时间,经过这段时间后ECU必须给出响应,无论是否定还是肯定。