【车载开发系列】UDS当中的时间参数

【车载开发系列】UDS当中的时间参数

一. 术语定义

缩写全称中文说明
BSBlock Size块大小
STminSeparation time min时间间隙
SIService Identifier服务标识符
SNSequence Number连续帧编号
SFSingle Frame单帧
FFFirst Frame首帧
FCFlow Control流控制
FSFlow Status流控帧状态
CFConsecutive Frame连续帧
FF_DLFirst Frame Data Length首帧字节长度
SF_DLSingle Frame Data Length单帧字节长度
L_DataDataLinkLayer_Data数据链路层数据
N_PDUNetwork Layer Protocol Data Unit网络层协议数据单元

二. 网络层时间调整参数

网络层时间参数主要定义了多帧交互过程中首帧、流控制帧、连续帧之间的时间参数要求。

网络层时间参数定义描述追加说明
N_As发送方发送一帧报文所需时间Sender任意帧类型从请求发送到发送完成的时间间隔
N_Ar接收方发送一帧报文所需时间Receiver任意帧类型从请求发送到发送完成的时间间隔
N_Bs发送下一流控制帧超时的时间Sender从XXX到收到流控帧的时间
N_Br接收下一流控制帧超时的时间Receiver从XXX到请求发送流控帧的时间
N_Cs发送下一连续帧超时的时间Sender从XXX到请求发送连续帧的时间
N_Cr接收下一连续帧超时的时间Receiver从XXX到收到下一个连续帧的时间
STminSeparation time min是Sender发送两连续帧之间的最小间隔,单位为ms
BSBlock Size块的大小是Sender收到一个流控帧后,发送连续帧的个数,0代表无限制,收到流控帧后可以一直发连续帧至数据发送完毕

※XXX表示收到首帧,收到流控帧,发送完流控帧(状态为Wait)
在这里插入图片描述
在这里插入图片描述

三. ECU诊断层与会话层参数

No术语说明
01P2server当tester给ECU发送请求时,ECU要在P2server时间内给出响应
02P2server*如果ECU在处理别的任务,不能给出响应,现在P2server内给出pending的响应,同时在P2server*时间内给出响应
03P2Client在tester端成功发送诊断请求后等待ECU发送响应时的超时时间
04P2*Client在接收到ECU应答的NRC为0x78时,到Tester收到ECU响应的单帧或首帧的超时时间
05P4ServerECU 接收一个请求(T_Data.indication)到最终响应(T_Data.request)开始传输的时间间隔
06S3Server保持在非默认会话下的超时时间,超时后返回默认会话模式
07S3Client发送下个TesterPresent以保持在非默认会话模式的时间
08P3client_phys诊断工具连续请求的时间间隔 - 物理
09P3client_func诊断工具连续请求的时间间隔 - 功能

S3server补充说明:
在非默认会话,如此时请求进入扩展会话10 03,且没有请求0x3E握手服务。则会在定时器S3server超时后,会话模式退回默认会话。一般该时间会设置为5000ms。
在这里插入图片描述

### UDS协议中会话层超时时间的设置方法 在UDS(Unified Diagnostic Services)协议中,会话层的时间参数对于确保诊断工具与ECU之间通信的稳定性起着至关重要的作用[^1]。具体来说,会话层涉及多个时间参数,其中包括超时时间的设定。 #### 时间参数的作用 超时时间主要用于防止因网络延迟或其他异常情况而导致的通信中断。如果某个响应未能在规定时间内返回,则认为该请求失败并触发相应的错误处理机制。这种设计可以有效提升系统的鲁棒性。 #### 会话层超时时间的具体设置 通常情况下,会话层的超时时间由以下几个因素决定: 1. **N_As 和 N_Ar 参数** 这两个参数分别表示服务请求和服务响应的最大允许等待时间。它们属于ISO 15765-2标准的一部分,并直接影响到UDS协议的行为。当客户端发送一条消息后,如果没有在`N_As`指定的时间内接收到确认帧,则重新传输;而服务器端则需在`N_Ar`限定的时间范围内完成数据准备并向客户端反馈结果。 2. **应用层自定义逻辑** 部分实现可能还会引入额外的应用级控制变量来进一步细化管理流程。例如某些场景下可能会基于当前工作模式动态调整预期延长时间限值以适应不同负载条件下的性能需求[^3]。 以下是关于如何配置上述提到的关键属性的一个简单Python伪代码示例: ```python class UDSSessionConfigurator: def __init__(self, n_as=200, n_ar=200): # 默认单位毫秒 self.n_as = n_as # 客户端最大应答等待时间 self.n_ar = n_ar # 服务器最长响应构建周期 def set_timeout(self, new_n_as=None, new_n_ar=None): """更新现有的超时期望""" if isinstance(new_n_as, int) and new_n_as > 0: self.n_as = new_n_as if isinstance(new_n_ar, int) and new_n_ar > 0: self.n_ar = new_n_ar @property def timeout_settings(self): return {"Client Response Wait": f"{self.n_as}ms", "Server Process Time Limit":f"{self.n_ar}ms"} if __name__ == "__main__": configurator = UDSSessionConfigurator() print(configurator.timeout_settings) # 修改默认值测试新策略效果 configurator.set_timeout(300, 400) updated_times = configurator.timeout_settings print(updated_times) ``` 此脚本展示了基本的对象模型以及修改操作过程,实际项目开发过程中还需要考虑更多边界状况及兼容性问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值