UDS时间参数汇总
1.UDS时间参数2.UDS应用层时间参数解释参数定义典型值说明P2Client诊断仪成功发送请求后等待 ECU 响应的超时时间~50msClient 端参数防止无限等待P2ServerECU 收到请求后到开始发送响应的时间≤50msServer 端性能要求P2*Client诊断仪收到 NRC 0x78响应挂起后继续等待响应的超时时间~5000ms收到 0x78 后重置的超时时间P2*ServerECU 发送 NRC 0x78 后到发送下一个响应的时间≤5000msServer 端性能要求P3Client_Phys物理寻址下连续发送请求的最小间隔时间≥P2Server_max避免网络拥塞P3Client_Func功能寻址下连续发送请求的最小间隔时间≥P2Server_max避免网络拥塞P4ServerECU 收到请求到最终响应开始传输的时间≤5000ms若 P4Server_max P2Server_max则不允许发送 NRC 0x78P6Client诊断仪发送请求后等待完整接收响应的超时时间—针对多帧响应的完整接收S3Client诊断仪发送 TesterPresent0x3E请求以保持非默认会话的时间间隔~2000ms必须 小于 S3ServerS3ServerECU 未收到任何诊断报文时保持在非默认会话的超时时间~5000ms超时后自动退回默认会话2.1. 一些参数解释① 关键逻辑NRC 0x78 的处理当 ECU 无法在 P2Server 时间内完成处理时会先发送 NRC 0x78Response Pending的否定响应此时ECU 需要在 P2*Server 时间内给出最终响应或再次发送 0x78诊断仪则将等待超时从 P2Client 切换到 P2*Client约 5000ms② P4Server_max 若等于 P2Server_max意味着 ECU 不允许发送 NRC 0x78必须在 P2Server 内直接给出最终响应。③ 关于P2Client、 P2*Client、P2Server、P2*Server、S3Client、 S3Server┌─────────────────────────────────────────────────────────────┐│ 诊断仪发送请求 ──→ 等待 P2Client ──→ 收到响应 ││ (典型 50ms) ││ ↓ 若收到 NRC 0x78 ││ 切换为 P2*Client 等待 ││ (典型 5000ms) ││ ││ ECU 收到请求 ──→ 在 P2Server 内响应 ││ (最大 50ms) ││ ↓ 若无法及时响应 ││ 发送 NRC 0x78 ──→ 在 P2*Server 内响应 ││ (最大 5000ms) ││ ││ 非默认会话 ──→ 诊断仪每 S3Client 发送 0x3E ││ (典型 2000ms) ││ ↓ 若停止发送 ││ ECU 在 S3Server 后退回默认会话 ││ (典型 5000ms) │└─────────────────────────────────────────────────────────────┘④关于P2Server_max和P2Server以及P2*Server_max和P2*Server┌─────────────────────────────────────────────────────────────────────┐│ ECU 收到请求 ││ │ ││ ▼ ││ ┌─────────────────────────────────────────────┐ ││ │ 实际处理时间 P2Server │ ← 实际值 ││ │ 必须满足P2Server ≤ P2Server_max │ ││ └─────────────────────────────────────────────┘ ││ │ ││ ▼ 如果能在时限内完成 ││ 发送最终肯定/否定响应 ││ │ ││ ▼ 如果无法在 P2Server_max 内完成 ││ 发送 NRC 0x78Response Pending ││ │ ││ ▼ ││ ┌─────────────────────────────────────────────┐ ││ │ 实际处理时间 P2*Server │ ← 实际值 ││ │ 必须满足P2*Server ≤ P2*Server_max │ ││ └─────────────────────────────────────────────┘ ││ │ ││ ▼ ││ 发送最终响应 │└─────────────────────────────────────────────────────────────────────┘P2Server_max / P2*Server_max 是 ECU 写在合同里的承诺上限P2Server / P2*Server 是 ECU 每次干活时实际花掉的时间。前者是规范参数后者是实际表现且实际值永远不能超过承诺值。⑤ 关于P2Server_max / P2*Server_max在实际报文响应中的表现发送10 01回复50 01 00 32 01 F4计算得出P2Server_max50ms(00 32)P2*Server_max5000ms(01 F4 扩大10倍)3.TP网络层时间参数发送方Sender / Transmitter参数参数全称定义典型值超时后果N_AsN_As Sender发送方请求发送任意一帧FF/CF/FC到实际发送完成的最大允许时间25 ms ~ 1000 ms发送方认为发送失败终止传输N_BsN_Bs Sender发送方发送首帧FF后等待接收方流控帧FC的最大允许时间1000 ms未收到 FC发送方终止传输N_CsN_Cs Sender发送方收到流控帧FC后发送下一个连续帧CF的最大允许时间25 ms ~ 1000 ms发送方未能及时发送 CF终止传输接收方Receiver参数参数全称定义典型值超时后果N_ArN_Ar Receiver接收方请求发送流控帧FC到实际发送完成的最大允许时间25 ms ~ 1000 ms接收方认为发送失败终止传输N_BrN_Br Receiver接收方收到首帧FF或连续帧CF后到请求发送流控帧FC的最大允许时间25 ms ~ 1000 ms接收方未能及时请求 FC终止传输N_CrN_Cr Receiver接收方收到一个连续帧CF后等待下一个连续帧CF的最大允许时间1000 ms未收到下一个 CF接收方终止传输流控参数参数全称定义典型值说明BSBlock Size块大小一次允许连续发送的 CF 数量8 或 08是常见默认值0用于追求最大吞吐STminSeparation Time minimum最小间隔时间发送方发送两个 CF 之间的最小间隔0 ms 或 10 ms0表示全速发送10给接收方留缓冲时间3.1N系列参数命名规则解释格式N_XyN Network layer 网络层X大写字母 A/B/C 传输阶段y小写 s/r 角色s Sender 发送方r Receiver 接收方A是什么A Phase AN_PDU 单帧 / 独立帧发送阶段N_AsSender 侧发送一条 N_PDU 的最大耗时N_ArReceiver 侧发送一条 N_PDU主要是 FC 流控帧的最大耗时配套阶段划分整套时序流水线A 阶段发送任意一条独立 N_PDUSF/FF/CF/FC→ N_As / N_ArB 阶段等待流控帧 FC 的阶段→ N_Bs发送方等 FC、N_Br接收方准备发 FCC 阶段连续帧 CF 之间时序阶段→ N_Cs发送方 CF 间隔、N_Cr接收方等待下一条 CFISO 官方没有给出 A/B/C 对应的完整英文单词全称只是用 A、B、C 按传输流程顺序编号A第一阶段发送单条帧→ B第二阶段等待流控→ C第三阶段连续帧交互3.2 参数之间关系┌─────────────────────────────────────────────────────────────────┐│ 发送方视角 ││ ───────────────────────────────────────────────────────────── ││ N_As → 我发一帧从准备到发完不能超过这个时限 ││ N_Bs → 我发完 FF 后等你的 FC不能超过这个时限 ││ N_Cs → 我收到 FC 后发下一个 CF不能超过这个时限 ││ ││ 接收方视角 ││ ───────────────────────────────────────────────────────────── ││ N_Ar → 我发 FC从准备到发完不能超过这个时限 ││ N_Br → 我收到 FF/CF 后准备好发 FC不能超过这个时限 ││ N_Cr → 我收到一个 CF 后等下一个 CF不能超过这个时限 ││ ││ 流控协商 ││ ───────────────────────────────────────────────────────────── ││ BS → 一次最多给你发 X 个 CF发完暂停等我新指令 ││ STmin → 你发 CF 时两个之间至少间隔 Y 时间 │└─────────────────────────────────────────────────────────────────┘N_As/N_Ar 管能不能发出去N_Bs/N_Br 管流控帧能不能及时交互N_Cs/N_Cr 管连续帧能不能衔接上BS/STmin 则是接收方用来踩刹车、控节奏的流控阀门。这 8 个参数共同保证了多帧 UDS 报文在不可靠的 CAN 总线上可靠传输。3.3 BS和STmin举例解读诊断仪发送03 22 FD FC 00 00 00 00ECU回复 10 16 62 FD FC 01 02 0330021400 00 00 00 00[21] 04 05 06 07 08 09 0A[22] 0B 0C 0D 0E 0F 10 1130 02 14 00 00 00 00 00[23] 12 13 00 00 00 00 0002块的大小BSTester 最多连续发送 2 条 CF必须暂停等待 ECU 下发新 FC 帧14STmin为20ms任意两条 CF 之间帧间隔至少 20ms也就是做CF 两两之间间隔≥20msBS 是批量大小接收方说一次最多给你发 N 个 CF发完歇着等我指令STmin 是最低限速接收方说你发 CF 时两帧之间至少给我留 X 毫秒喘口气。两者配合防止接收方缓存溢出或处理不过来。扩展FC FlowStatus 流控状态另外两种状态FS≠0x0031 BS STmin→ FS01 (WAIT)Tester 暂停发送稍后重试32 BS STmin→ FS02 (Overflow)ECU 缓存满终止本次 TP 传输