UDS-传输层参数

本文详细介绍了UDS(统一诊断服务)在传输层的参数设定,包括P2Client、P2Server、P2*Client、P2*Server、S3Client和S3Server等,这些参数关乎诊断服务的超时与性能要求。同时,解释了为何需要 Tester Present 服务来维持非默认会话,并讨论了P3ClientPhys和P3ClientFunc对于物理寻址和功能寻址请求消息的时间间隔规定,确保服务器能够有效响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UDS-传输层参数

前言

““诊断服务作为应用层的服务功能,实现逻辑很简单,请求-响应,一来一回之间,需要对每个间断进行时间设置””

之前在介绍UDS服务时,UDS由物理层、链路层、网络层和应用层组成,其中并没有传输层

然而不管是ISO官方文档还是CANoe工具,把应用层的定时参数看作是传输层功能,其中有以下几种:

  • P2Client

客户端在成功发送请求消息到收到响应消息的超时时间

  • P2Server

服务器在收到请求消息后到发出响应消息时的性能要求

  • P2*Client

客户端在接收到78 hex的否定响应后等待服务器发送响应时的增强型超时设置

78否定响应码表示服务器暂时繁忙,用来提示客户端继续等待,而P2*Client就是继续等待的超时时间

  • P2*Server</
### AUTOSAR UDS 报文传输协议详解 #### 协议概述 AUTOSAR (Automotive Open System Architecture) 定义了一套标准化的通信机制用于车辆内部网络中的节点间数据交换。UDS (Unified Diagnostic Services) 是基于 ISO 14229-1 的标准,旨在提供一种统一的方法来访问 ECU 中的数据并执行各种类型的诊断操作。 在 CAN 总线上传输 UDS 请求和服务响应时,通常通过 CanTp 模块完成物理层到传输层之间的转换工作[^1]。CanTp 负责处理单帧(SF),多帧(MF)以及首帧跟续帧(CONSECUTIVE FRAME, CF)间的交互逻辑,并支持不同的 DLC 配置以适应不同长度的消息体需求。 #### 数据链路控制(DLC) 当涉及到 CanFD 支持下的 UDS 诊断报文发送接收流程时,DLC(Data Length Code)的选择至关重要。它不仅影响着每次传输所能携带的有效载荷大小,还决定了整个通讯过程中所需的时间开销。对于较短的信息可以直接采用 SF 形式一次性发出;而对于超过最大允许尺寸的情况,则需要分割成多个部分依次传送,在这种情况下就需要考虑如何合理规划 MF 结构及其对应的超时管理策略等问题。 #### 实现方法 为了实现可靠的 UDS 报文传输功能,开发者可以遵循如下原则: 1. **初始化配置** - 设置好必要的参数如波特率、仲裁ID等; - 初始化 CanTp 组件以便能够正确解析来自上层的应用请求并将它们打包成适合底层硬件转发的形式。 2. **构建 PDU** ```c++ // 构建一个简单的UdsRequest结构体表示要发送的服务请求 struct UdsRequest { uint8_t serviceId; // 服务标识符 std::vector<uint8_t> params; // 参数列表 }; void buildPdu(UdsRequest& req, PduInfoType* pdu){ pdu->sduLength = req.params.size() + 1; memcpy(pdu->sduRef, &req.serviceId, sizeof(req.serviceId)); memcpy((uint8_t*)pdu->sduRef + 1, req.params.data(), req.params.size()); } ``` 3. **调用 CanTp 发送函数** ```cpp bool sendUdsMessage(const UdsRequest& request){ static PduInfoType txPdu; buildPdu(request, &txPdu); return CanIf_Transmit(TX_PDU_ID, &txPdu); } ``` 以上代码片段展示了怎样创建一条包含特定服务 ID 及其关联参数在内的 UDS 请求消息,并将其传递给 CanIf 层准备进一步分发出去[^2]。 #### 关键特性说明 - **会话模式切换**:每当从当前活动的工作环境转移到另一个新的上下文中去之前,都应当确保所有先前定义好的条件得到妥善清理或重置。例如,在退出扩展诊断会话返回默认状态下时,应该解除之前可能存在的安全锁闭状态以及其他临时性的设定项[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汽车通信技术

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

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

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

打赏作者

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

抵扣说明:

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

余额充值