与UDS相关的一些时间参数

P2Server和P2*Server_max :

在ECU的软件中,需要设置P2Server这个timer,而这个timer应该被赋P2Server_max或P2Server_max这两值。定性地来说,P2Server_max指的是ECU在收到请求和给出响应之间的这个时间间隔,它描述了ECU的反应速度。定量地来说,它指的是T_Data.ind(ECU收到请求)和T_Data.req(ECU给出响应)这两个函数被调用之间的时间。P2Server_max与P2Server_max的含义类似,区别在于,P2Server_max这个时间参数是在ECU给出NRC 0X78之后生效的,ECU返回NRC 0X78,说明ECU当前处理能量不足,所以需要更长的反应时间,即P2Server_max。所以P2Server_max通常比P2Server_max大很多。在讲0x10这个诊断命令的时候,我提过这个诊断命令的响应格式是类似50 01 xx xx yy yy这种, xx xx就表示P2Server_max,yy yy 就表示P2Server_max。诊断仪收到这两个参数之后,就对ECU的响应速度有了认知,可以据此来判断ECU的响应是否及时。

∆P2:

∆P2定义了最恶劣情况下的信息传输延时,比如由网关、总线负载等因此引入的延时等。∆P2和P2Server_max或P2*Server_max加在一起就是诊断仪期望的最晚接收到响应的时间。∆P2 = ∆P2request + ∆P2response,即请求和响应在总线上的传输延时之和。

P2Client:

诊断仪在成功发出请求之后,会期望在一定的时间内收到响应,这个时间就是P2Client,这个时间的开始点是T_Data.con,结束点是T_Data.ind。根据前面的描述,容易知道,P2Client = P2Server_max + ∆P2max

P2*Client:

P2Client与P2Client类似,当诊断仪在没有超时的情况下收到NRC 0X78后,就会启动这个时间参数,有一点需要注意的是,P2Client = P2*Server_max + ∆P2response,因为在收到NRC 0X78之后,诊断仪不再发请求,而只是等待ECU的下一次响应,所以不是加上 ∆P2max,而是加上 ∆P2response。

P3Client_Phys和P3Client_Func:

这两个参数定义诊断仪在发送完一条UDS命令之后,下次再发送命令的最小时间间隔,分别适用于物理寻址和功能寻址的情况。在ISO24229中,它俩的值与P2Client相同。

S3Server:

在讲UDS服务的时候,说过ECU需要收到诊断服务才能维持在某个非default session中,或者收到诊断仪持续发送的3E服务,testerpresent。S3Server定义的是ECU多长时间收不到任何诊断服务会回退到default session中。

S3Client:

S3Client与S3Server相对应,它定义的是诊断仪发送3E服务(testerpresent)的循环周期。

你可能感兴趣的:(uds)