使用 CANoe 进行 UDS 诊断测试 时,可以通过两种主要方式来实现测试:有CDD文件 和 无CDD文件。
CDD文件是基于 ASAM MCD-2D 标准格式的描述文件,提供了车辆诊断通信所需的详细描述,包括诊断服务、参数、PDU格式等。
通过导入 CDD 文件,CANoe 可以自动解析和识别ECU支持的UDS诊断服务及相关数据格式,从而提供更高效和自动化的测试过程。
在没有 CDD 文件的情况下,诊断测试通常依赖手动配置或脚本编写进行服务的调用。
这意味着,测试人员需要自行指定每个诊断服务的服务ID、参数ID、数据格式等。
1
Diagnostics/ISO-TP Configuration窗口
可以直接在Diagnostics/ISO-TP Configuration窗口导入CDD文件,通常CDD文件中设置好了传输层和诊断层参数。
加载 CDD 文件 后,会自动弹出两个窗口:“Fault Memory”(故障记忆) 和 “Session Control”(会话控制)。
如果使用 CANoe 自带的 “Basic Diagnostic Editor”(基本诊断编辑器) 模板(即没有 CDD 文件),则这两个窗口将被置为灰色,无法进行操作。
如果没有CDD文件,就需要根据诊断问卷调查表在Diagnostics/ISO-TP Configuration窗口设置传输层和诊断层参数。
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。
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 参数的设置。
设置“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窗口手动创建诊断服务。
这是 CANoe 自带的模板,我们需要根据诊断信息表中的服务汇总,在每个服务的框架下手动添加项目所需的子服务,右键选择“Add New Service”可以添加子服务。
可以根据CAN矩阵和诊断问卷调查表设置请求和响应的数据,例如以下操作:
3
Diagnostic Console窗口
在Diagnostic Console 窗口中可以选择进行发送诊断请求和查看响应。
点击建立好的子服务按钮,就可以测试发送诊断请求。