flyingstar01 发表于 2025-4-8 11:14

CANoeUDS诊断测试

本帖最后由 flyingstar01 于 2025-4-8 11:31 编辑

使用 **CANoe** 进行 **UDS 诊断测试** 时,可以通过两种主要方式来实现测试:**有CDD文件** 和 **无CDD文件**。

![微信图片_20250408111518.png](data/attachment/forum/202504/08/111825idxx6enx8mxxdkxz.png "微信图片_20250408111518.png")

**CDD文件**是基于 **ASAM MCD-2D** 标准格式的描述文件,提供了车辆诊断通信所需的详细描述,包括诊断服务、参数、PDU格式等。

![微信图片_20250408111533.png](https://bbs.21ic.com/data/attachment/forum/202504/08/111825hjii0eadjd4iiej5.png "微信图片_20250408111533.png")

通过导入 CDD 文件,CANoe 可以自动解析和识别ECU支持的UDS诊断服务及相关数据格式,从而提供更高效和自动化的测试过程。

在没有 CDD 文件的情况下,诊断测试通常依赖手动配置或脚本编写进行服务的调用。

这意味着,测试人员需要自行指定每个诊断服务的服务ID、参数ID、数据格式等。

![微信图片_20250408111545.png](data/attachment/forum/202504/08/111920wfejav08t55vlvte.png "微信图片_20250408111545.png")

1

**Diagnostics/ISO-TP Configuration窗口**

可以直接在Diagnostics/ISO-TP Configuration窗口导入CDD文件,通常CDD文件中设置好了传输层和诊断层参数。

![微信图片_20250408111556.png](data/attachment/forum/202504/08/111941ca7m7xy4gffguamm.png "微信图片_20250408111556.png")


加载 **CDD 文件** 后,会自动弹出两个窗口:**“Fault Memory”(故障**)** 和 **“Session Control”(会话控制)**。

如果使用 **CANoe** 自带的 **“Basic Diagnostic Editor”(基本诊断编辑器)** 模板(即没有 **CDD 文件**),则这两个窗口将被置为灰色,无法进行操作。

![微信图片_20250408111610.png](data/attachment/forum/202504/08/112013y5s9pz7y0smerj7p.png "微信图片_20250408111610.png")


如果没有CDD文件,就需要根据诊断问卷调查表在Diagnostics/ISO-TP Configuration窗口设置传输层和诊断层参数。

![微信图片_20250408111629.png](data/attachment/forum/202504/08/112043t7fvmfhd6x444ty7.png "微信图片_20250408111629.png")

1.1、设置传输层参数

点击 **“Transport Layer”** 打开 **“Configure Transport Layer (CAN)”** 界面,对传输层参数进行设置。主要设置项包括 **“Addressing”(诊断地址信息)** 和 **“Additional ISO TP Protocol Parameters”(TP协议参数)。**

Addressing(诊断地址信息) 包括请求地址、物理寻址和功能寻址。一般来说,诊断地址以 **0x7** 开头。ECU 所支持的诊断服务通常都支持物理寻址。功能寻址仅支持以下服务:**10**、**11**、**28**、**3E**、**85**、**22**、**14**、**19**,即不支持 **31**、**2E**、**2F**、**34**、**36**、**37**。

![微信图片_20250408111641.png](data/attachment/forum/202504/08/112415bj7pg53gkikueloz.png "微信图片_20250408111641.png")


**Additional ISO TP Protocol Parameters(TP协议参数)**

**STmin**:接收方发送流控帧之后,发送方发送连续帧之间的最小时间间隔。**Block size**:接收方发送流控帧后,发送方可以连续发送的最大帧数。如果该值为 0,则表示没有连续帧数目的限制。**FC delay**:CANoe 收到首帧或连续帧后,延迟回复流控帧的时间。**Max. length**:最大传输数据长度,通常取最大值 **4095**(3 位 DLC 最大值)。

**Mixing of CAN 2.0 and FD frames**

此项设置表示是否兼容 **CAN** 帧和 **CAN-FD** 帧。

其选项说明如下:

**Ignore**:两者不兼容。如果配置为 **CAN** 帧,**CANoe** 不接受 **CAN-FD** 帧;如果配置为 **CAN-FD** 帧,则不支持 **CAN** 帧。**Accept**:兼容。当配置为 **CAN** 帧时,**CANoe** 可以接受 **CAN-FD** 帧,但返回的是 **CAN** 帧。**Adapt**:兼容。当配置为 **CAN** 帧时,**CANoe** 可以接受 **CAN-FD** 帧,但返回的是 **CAN-FD** 帧。

1.2、配置诊断层参数

点击 **“Diagnostic Layer”** 打开 **“Configure Diagnostic Layer (CAN)”** 界面,进行 **Tester Present** 参数的设置。

![微信图片_20250408111652.png](data/attachment/forum/202504/08/112459royzn4iieoocfien.png "微信图片_20250408111652.png")

**设置“Tester Present”参数**

勾选 **“Send Tester Present”**,选择** “Manually defined”**,并填写会话保持诊断报文,通常为** “0x3E 00”**。

接着,设置 **“S3 client time”**,即会话保持报文发送的周期。

**UDS诊断中的 0x3E 服务**主要作用是确保诊断服务或之前激活的通信仍然处于激活状态,从而保持当前的非默认会话(Default Session)。通过周期性发送请求帧,防止自动跳回默认会话。

在实际应用中,当进行 **DID(Data Identifier)写入** 时,通常需要进入用户自定义会话(Custom Session),并且可能需要通过 **0x27 服务** 达到特定的安全等级。为了在写入 **DID** 时确保这些服务保持激活状态,可以使用 **0x3E** 服务定期发送会话保持报文。

添加好会话保持报文并勾选 **“Send Tester Present”** 后,后续只需通过点击 **CANoe** 中的 **“Tester Present On”** 功能,即可自动发送或停止会话保持报文,轻松实现会话保持功能。

**根据诊断信息表设置“Timing”参数**

“Timing” 参数需根据诊断信息表进行设置,通常由 OEM 或 ECU 开发方提供。具体参数如下:

**S3 client time**:诊断仪(如 **CANoe**)自动发送会话保持报文(0x3E 服务)的周期。**S3 server time**:停止发送会话保持报文后的最大时间,ECU 保持在非默认会话的时间。**P2 client**:诊断仪(如 **CANoe**)发送请求报文到接收到回复的时间间隔。**P2 server**:ECU 收到请求报文到开始回复的时间间隔。**P2 extended client**:诊断仪(如 **CANoe**)收到 **NRC 78** 错误后,到下一次回复的时间间隔。**P2 extended server**:ECU 发送完 **NRC 78** 错误后,到下一次回复的时间间隔。

**注意**:

**P2 client** 的值必须大于 **P2 server** 的值。同理,**P2 extended client** 必须大于 **P2 extended server**。

**“Security Access” - 安全访问配置**

**Seed & Key DLL**:用于 **27 服务** 安全解锁。为了保护 ECU 数据不被误改,许多诊断服务要求在不同的安全访问等级下进行访问。

在 **CANoe** 中,用户需要配置自定义的动态链接库(DLL)文件,提供解锁安全访问的算法。该 **DLL** 文件通常由 OEM 或 Tier 1 提供。

加载该文件后,当需要解锁时,只需在诊断控制台手动点击 **27 服务**,即可完成解锁操作。

若没有提供此 **DLL 文件**,也可以根据安全算法编写 **CAPL** 脚本来实现解锁功能。

2

Basic Diagnostic Editor窗口

没有CDD文件,根据诊断问卷调查表在Diagnostics/ISO-TP Configuration窗口设置好传输层和诊断层参数后,需要在Basic Diagnostic Editor窗口手动创建诊断服务。![微信图片_20250408111707.png](https://bbs.21ic.com/data/attachment/forum/202504/08/112459tlftq566kqirik6s.png "微信图片_20250408111707.png")

这是 **CANoe** 自带的模板,我们需要根据诊断信息表中的服务汇总,在每个服务的框架下手动添加项目所需的子服务,右键选择“Add New Service”可以添加子服务。

![微信图片_20250408111719.png](https://bbs.21ic.com/data/attachment/forum/202504/08/112459x7571t1fg70vx6oj.png "微信图片_20250408111719.png")

可以根据CAN矩阵和诊

断问卷调查表设置请求和响应的数据,例如以下操作:

![微信图片_20250408112804.png](data/attachment/forum/202504/08/112848fpxr3ejccca6xxf3.png "微信图片_20250408112804.png")

![微信图片_20250408111730.png](https://bbs.21ic.com/data/attachment/forum/202504/08/112459ru3muztu7ux7r777.png "微信图片_20250408111730.png")

3

Diagnostic Console窗口

在Diagnostic Console 窗口中可以选择进行发送诊断请求和查看响应。

![微信图片_20250408111743.png](https://bbs.21ic.com/data/attachment/forum/202504/08/112459s0hzqzezyj6xfc6d.png "微信图片_20250408111743.png")

点击建立好的子服务按钮,就可以测试发送诊断请求。

![微信图片_20250408111754.png](https://bbs.21ic.com/data/attachment/forum/202504/08/112459czee7vr2yr99sxuv.png "微信图片_20250408111754.png")

脑洞星球居民 发表于 2025-4-18 11:43

CDD文件确实能大幅提高测试效率,但如果没有CDD文件,手动配置和脚本编写也是可行的,就是工作量会大一些。
页: [1]
查看完整版本: CANoeUDS诊断测试