嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > 一文搞懂UDS的各种时间参数

一文搞懂UDS的各种时间参数


大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是UDS的各种时间参数介绍,希望能对你有所帮助


一、应用层时间参数

在一开始做诊断的时候,看到这么多时间参数,真是头大,很多还长得很像,N_As,N_Bs, N_Cs等,这些到底代表啥含义呢?刚开始确实很头疼,我也是直接忽略,做其他任务开发,等基本功能都开发完了,后面发现升级的时候,出问题了,定位到和这些时间参数有问题,这才去研究这些参数的含义。接下来介绍一下这些参数。

a)P2 Client:诊断工具成功发送诊断报文请求之后,等待ECU回复诊断响应的时间间隔

b)P2* Client:诊断工具接收到 NRC 0x78 之后继续等待 ECU 响应的时间间隔

c)P2Server_max :ECU 在收到请求和给出响应之间的这个时间间隔,它描述了ECU 的反应速度,通常最大值为50ms

d)P2* Server_max:ECU 发送 NRC 0x78 之后继续发送 下帧诊断响应报文的时间间隔

e)P3 Client Phys:诊断工具成功发送 物理寻址诊断请求之后,且无需ECU 回复继续发送下次物理寻址诊断请求的最小时间间隔

f)P3 Client Func:诊断工具成功发送功能寻址之后再次发送功能寻址的最小时间间隔

示例图:

最后说一下P2Server_max和P2* Server_max,这两个在10服务中会体现出来

我们可以看到10服务正响应的格式为:

[SID +0X40] + [sub-function] + [sessionParameterRecord]

sessionParameterRecord又为P2Server_maxP2* Server_max,官方规范ISO14229-1中有说明这两个的含义和取值范围,如下:

其中resolution是表示分辨率的意思

看个例子,P2Server_max:0x0032,转换为十进制就是50;分辨率为1ms,那P2* Server_max的值就是50ms;

P2* Server_max:0x01F4,转换为十进制就是500,分辨率为10ms,那么,P2* Server_max的值就是5000ms

二、会话层时间参数

这两个时间参数主要用在保持在某一个会话模式下,因为某些服务必须在特定的服务下才能执行,这个时候就要用到3E服务了,就会涉及到这两个参数

a)S3 Client:诊断工具为了保持非默认会话模式而发送 $3E 服务请求报文的时间间隔,最小值2000ms

b)S3 Server:有时也称为S3Timeout,表示ECU未接收到任意诊断报文时维持在非默认会话下的时间间隔

发送的示例图:

三、传输层时间参数

a)BS:Block Size,该参数与STmin一般同时出现。这两个参数主要用于诊断报文传输多帧(首帧FF,流控帧FC,连续帧CF)时会使用到;

表示接收方在发送流控帧之后,发送方被允许连续发送的最大流控帧数目。特殊情况下,如果该值为0,则表示发送连续帧没有限制,如果值为5,表示发送方最多能连续发送5帧CF就会继续收到接收方的流控帧;

b)STmin :在接收方发送流控帧之后,发送方发送的连续帧之间的最小时间间隔。如果值为0,表示对于发送方发送CF的最小时间没有要求。

多帧的传输过程:

发送报文的长度过长时,一帧发不完,就会用到多帧,BS与Stmin的大小可用来评估接收方的接收能力,如果都为0,表示接收方接收能力最强

四、网络层时间参数

a)N_As:发送方 任意帧类型 从请求发送到发送完成 (接收到对应的ACK) 的时间间隔

b)N_Ar接收方 任意帧类型 从请求发送到发送完成 (接收到对应的ACK) 的时间间隔

c)N_Bs:发送方收到流控帧 的时间。分为3种情况,分别为:

发送端 从 发送完首帧(FF)收到流控帧FC) 的时间;

发送端 从 发送连续帧(CF)到 收到流控帧 FC)的时间;

发送端从收到流控帧(FC)(状态为Wait)到 收到下一个流控帧FC) 的时间

d)N_Br:接收方请求发送流控帧 的时间。为3种情况,分别为:

接收端从收到首帧(FF)到 请求发送流控帧 FC)的时间;

接收端从收到连续帧(CF)到 请求发送流控帧FC) 的时间;

接收端从 发送完流控帧(FC)(状态为Wait) 到 请求发送下一个流控帧 FC)的时间;

e)N_Cs:发送方请求发送连续帧(CF) 的时间。为2种情况:

发送端从收到流控帧(FC)到 请求发送连续帧(CF)的时间;

发送端从 发送完连续帧(CF)到 请求发送下一帧连续帧(CF) 的时间

f)N_Cr:接收方收到下一个连续帧(CF) 的时间。为2种情况:

接收端 从 发送完流控帧(FC)到 收到连续帧(CF) 的时间;

接收端从 收到连续帧(CF)到 收到下一帧连续帧(CF) 的时间

详细的过程如下:

下图圈出了N_Bs,N_Br的3情况,N_Cs,N_Cr的2情况

各个时间参数的描述和值的定义如下:

想更深入的学习请自行翻阅ISO15765-2

最后,如果觉得有帮助,希望你能一键三连(分享,点赞,在看),你们的认可是我持续输出的动力,感激不尽

欢迎大家骚扰,请备注“公众号”