【AUTOSAR案例分析】CANFD 诊断路由为CAN诊断,诊断仪显示超时问题分析

文章讨论了在汽车诊断过程中,TestTool通过GWECU向DESTECU传输数据时遇到的效率问题。当使用CANFD的高速传输与DESTECU仅支持CAN诊断的不匹配时,GWECU需将CANFD数据转换为CAN。为解决转发延迟导致的响应超时,提出在TPThreshold设置为DESTECU一帧CAN报文长度,允许GWECU在接收到一定量数据后即开始转发,实现更高效的并行传输。

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

一. 背景

在车上,诊断仪(Test Tool)需要诊断其他ECU很多需要通过GW ECU路由诊断报文给到目标ECU,大多数时候为了节省链路上交互的时间,Test Tool和GW ECU会通过CAN FD 64 Byte的形式传输诊断数据,提高一次传输的速度和一次传输的长度,但是有些时候DEST ECU只支持CAN诊断的形式,因此GW ECU就需要实现基于CAN TP模块的路由,将CAN FD(64 Byte)诊断转换成CAN(8 Byte)的诊断,如下图所示:

部分ECU在实现的时候,GW ECU是在接收完诊断仪的完整一包数据之后,在转发给到DEST ECU,由于GW ECU转发给到DEST ECU的时候用的是CAN诊断,速率比较慢,长度比较短,传输完完整一包耗费的时间△t会比较久,因此会导致Tester ECU等待响应超时的问题(如下图所示),因此可以考虑配置成在Tester给GW发送包的中间,GW也同步给DEST_ECU发送数据,类似于并行传输数据。

二. 解决方法

在PDUs-->Routing Paths-->需设置的PduR-->TP Threshold,设置为DEST一帧CAN报文的长度,如8个Byte,这样,当GW ECU接收到Tester Tool发送的诊断数据长度达到8 Byte时,其就开始转发给到DEST ECU了,这样避免需要等待GW ECU接收完完整诊断数据之后才能转发导致的延时

 Tp Threshold的解释如下:

<think>嗯,用户要求用中文回答,并且最后必须提供3-5个相关问题问题焦点是AUTOSAR框架下CAN诊断报文的收发流程。用户可能是汽车电子工程师,正在开发或调试诊断功能。ta需要完整的流程说明,说明需要深入技术细节。从专业角度看,这个问题涉及AUTOSAR分层架构的核心交互,得拆解三层结构:应用层、RTE层、BSW层。 首先考虑应用层触发流程。诊断管理器DEM通过RTE调用Dcm模块,Dcm会处理UDS服务解析。这里需要强调Dcm的PduR接口调用,这是报文进入通信栈的起点。BSW层的处理链是关键。CanIf模块负责调度,CanDrv直接操作硬件寄存器。特别要注意CanSM的状态管理,如果总线未激活整个流程会阻塞。最后硬件层面的收发中断处理需要说明,包括错误重传机制。最后设计相关问题时要覆盖延伸知识点:第一个问题针对时间参数,因为实际开发中最常遇到超时问题;第二个问题指向多帧传输,这是诊断协议的核心难点;第三个问题涉及安全机制,ISO14229标准有明确要求;第四个问题考虑网络管理交互,很多人会忽略休眠场景的影响;第五个问题聚焦配置工具,因为Vector工具链的使用是工程实施的痛点。所有回答必须严格遵守用户要求的格式,特别是"§§相关问题§§"的固定标题和连续编号形式。最后的代码块示例提醒自己保持Python语法高亮,但本次回答不需要代码所以忽略。</think>### AUTOSARCAN诊断报文的完整收发流程 在AUTOSAR架构下,CAN诊断报文(如UDS协议)的收发涉及多个软件模块的协同工作,主要流程如下: #### **发送流程(ECU -> 诊断仪)** 1. **应用层发起** - 诊断服务处理模块(如`Dcm`)生成诊断响应(如`0x7E8`响应报文) - 通过`RTE`调用通信接口层 2. **通信协议层处理** - `PduR`(PDU Router)路由报文到`CanIf`模块 - `CanTp`(传输协议层)处理多帧传输(如流控帧、连续帧的分包) 3. **CAN驱动层** - `CanIf`配置CAN控制器参数(波特率、ID过滤) - `CanDrv`将报文数据写入硬件邮箱(Mailbox) - `CanSM`(状态管理器)确保总线处于`FULLCOM`状态 4. **物理层** - CAN控制器自动按仲裁机制发送报文 #### **接收流程(诊断仪 -> ECU)** 1. **物理层接收** - CAN控制器通过硬件中断接收报文 - `CanDrv`读取邮箱数据并触发中断通知 2. **CAN驱动层处理** - `CanIf`解析接收的PDU,执行ID过滤和掩码匹配 - 通知上层模块(`CanTp`/`PduR`) 3. **协议层解包** - `CanTp`重组多帧报文(如拼接连续帧) - `PduR`将完整PDU路由至`Dcm`模块 4. **应用层处理** - `Dcm`解析UDS服务(如`0x2E`写数据) - `Dem`(诊断事件管理)记录DTC或执行诊断操作 - 调用SWC(软件组件)执行具体功能 #### **关键模块交互** ```mermaid graph LR Dcm[Dcm] -->|请求/响应| RTE RTE -->|PDU传递| PduR PduR -->|单帧| CanTp PduR -->|多帧| CanTp CanTp -->|CAN帧| CanIf CanIf -->|硬件控制| CanDrv CanDrv -->|Tx/Rx| CAN_Bus CanSM[CanSM] -->|总线状态| CanIf ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值