跳到主要内容

ETStudio 诊断

ETStudio 的诊断模块提供了一个强大的诊断控制台,允许用户高度定制发送(Tx)和接收(Rx)请求以进行整车通信测试。本指南说明通过配置传输层、服务层和安全访问(seed 与 key)等参数来确保诊断性能达到最佳状态。

诊断配置文件

要充分利用 ETStudio 的诊断功能,需要将 Diagnostic Description 导入到 ETStudio 的仿真项目中。ETStudio 常将诊断规范类文档称为 “diagnostic instructions”(诊断说明),本文也采用该术语以避免混淆。对于较简单的诊断场景,用户也可以使用 ETStudio 自带的 DiagnosticsISOTP

诊断测试窗口

执行默认会话的步骤示例:

  1. 单击 Start

  2. 右键单击 10 01 Excute 来执行默认会话

  3. 响应将在 Response 列显示

DTC 查看器

ECU 包含用于存储故障诊断码(DTC)及其相关故障日志的专用区域。所有检测到的异常事件(例如传感器断开、信号异常、ECU 自检错误)都会记录在故障内存中,供售后、测试和开发团队使用。

  • 操作:点击 UDS -> DTC

Tester on/off(会话保活机制)

  • 功能:Tester Present 服务(0x3E)用于维持诊断会话处于活动状态,防止超时。如果在扩展/编程会话期间(例如高权限操作)没有收到诊断,则 ECU(示例:0x03、0x02)会在超时时间(如 5000ms 或 10000ms)后自动回到默认会话并终止高权限操作。

更新故障内存(0x19 服务)

  • 功能:强制 ECU 重新执行当前故障快照检测,更新 DTC 状态并刷新内部故障列表。

  • 结果:DTC 会填写至表格。

启用定期更新(0x19 服务)

  • 功能:按计划重复发送 0x19 服务以刷新内部故障列表。

  • 结果:DTC 会填写至表格。

删除 DTC(0x14 服务)

  • 功能:清除 ECU 中存储的指定 DTC 记录。当检测到异常(如传感器断开、信号错误)时,ECU 会将其记录为故障内存中的 DTC。

  • 操作:选择某个 DTC,然后单击 Delete 将其从 ECU 中移除。

  • 功能:清除 ECU 中的所有 DTC 记录并将故障内存重置为初始状态。

导出 DTC 记录

  • 功能:将 DTC 记录保存为本地文件。默认日志路径为 ETStudio 安装目录,可在属性页面中配置自定义路径。

属性配置页面

常规(General)选项卡

  • 更新故障内存间隔:默认值为 5 秒,用于配置定期更新的间隔。

  • 日志文件路径:修改 DTC 日志的存储路径。

消息(Message)选项卡

  • PDU 配置:查看或修改特定服务的协议数据单元(PDU),PDU 中包含与协议控制相关的信息。

  • 操作:在左侧菜单中单击对应项以编辑或查看该服务的 PDU。

会话控制(Session Control)

  • 用于切换 ECU 的当前会话状态。点击菜单 UDS --> UDS Setup

在 ETStudio 基础诊断配置页面中,所有配置的会话控制服务会显示在会话控制页面上。选择指定服务后双击即可执行。例如,双击扩展会话即可进入扩展会话。

  • 设置诊断请求、响应以及功能帧在 PC 工具端的 ID。

  • Request Id Type / Response Id Type / Function Id Type:设置请求/响应/功能帧的 ID 类型,是标准帧(11 位)还是扩展帧(29 位),如下图所示:

  • 填充字节(Filled Byte):在传输过程中,当实际有效字节少于 CAN 数据域长度时,其余部分将使用填充字节。例如,当 CAN 帧长度为 8 字节且有效传输字节为 0x02 0x10 0x02,填充字节为 0xAA,则实际消息可能为 0x02 0x10 0x02 0xAA 0xAA 0xAA

  • ST min:最短接收间隔。当 ETStudio 的诊断模块作为接收端时,支持以最短间隔接收连续帧消息。将其设为 0 表示支持尽可能短的接收间隔。

  • Block Size:一次接收块的大小。作为接收端时,表示每次可接收的数据块大小;设置为 0 表示可接收任意大小的块。

  • FD Max DLC:当传输层为 CAN FD 时,单帧最大可传输字节数为 64 字节(DLC=15),此参数可调整,取值范围见下图:

  • Max Length:对于标准 CAN/LIN,此参数无意义。在多帧传输中,当 DLC 为 8 字节时,首帧中的字节与后续字节联合表示单次传输的数据长度(最多 4095 字节),如下图所示。

服务层配置

控制诊断会话的时序及 ECU 的响应行为。

S3 Server Time:ECU 回退到默认会话前的超时时间。
S3 Client Time:发送 TesterPresent (0x3E) 以维持会话活跃的时间间隔。可点击 View Schematic Details 查看示意图。
P2 Timeout:表示 ECU 必须在此时间内回复诊断请求帧;诊断工具可据此判断是否超时。若在 P2 Timeout 内未收到回复,则视为请求超时失败。
P2 Extension:当 ECU 无法在 P2 超时时间内回复时,会返回 7F XX 78 通知诊断工具需等待更长时间,之后等待时间参数切换为 P2Extended,诊断工具应相应切换超时判断。

添加 Tester 节点

虚拟诊断响应

自动化诊断流程

ETStudio 的自动化诊断流程用于简化并管理诊断操作,适用于单次用例也适用于整个项目周期。用户可自定义诊断测试工作流,系统提供界面用于配置、执行和监控诊断流程,以提高效率与准确性。

要访问流程用例管理菜单,请在 UDS Process Management Bar 上右键单击,即可显示可用操作列表:

主要功能包括:

  • Add New Uds Flow:创建新的诊断流程用例,用户可在其下定义并组织诊断步骤。
  • Edit Name:选中用例后右键选择 Edit Name 修改节点标签。
  • Start Uds Flow:启动选中用例的诊断流程,系统将按预配置顺序在右侧仪表盘依次执行每步设置。
  • Abort Uds Flow:中断当前正在执行的诊断流程。
  • Delete Selected:删除所选节点。
  • Delete all flows:清空所有用例节点。

配置诊断流程(UDS Flow)

基本配置步骤:

  • 在左侧管理仪表盘中选择诊断流程节点。
  • 在右侧编辑区添加、删除或编辑诊断步骤。
  • 添加步骤后可修改步骤名称。
  • 选择步骤类型。
  • 选择步骤的地址类型(physical 或 functional)。
  • 配置详细的诊断请求和响应报文。

工具栏:

  • 启动诊断流程执行。
  • 中断当前运行的诊断流程。
  • 切换诊断流程设置的可编辑状态以防止误修改。

诊断步骤类型

ETStudio 支持四种步骤类型,适用于不同诊断场景:

  1. 常规步骤(Normal steps):
  • 适用场景:请求与预期响应都已定义的简单诊断用例。
  • 示例:
    • 请求:10 03
    • 预期响应:50 03 12 34
    • 操作:在请求字段输入请求字节,在响应字段输入预期响应。如果 ECU 未返回响应,可取消勾选 Responsive
  1. 选择配置(Select Config):选择已有配置以复用在 Diagnostics 中已调试的诊断步骤,推荐先在诊断控制台完成子流程的配置与测试,再在自动化流程中引用。

在自动化诊断流程中,其执行行为与诊断控制台一致。

  1. Seed & Key 步骤(Seeds and key steps):
  • 目的:处理需要 seed/key 的安全认证挑战。
  • 配置选项:
    • 方案 A:通过 SelectConfig 引用已有的 SeedAndKey 配置。
    • 方案 B:在自动化流程中直接选择 SeedAndKey 配置类型。
  • 关键参数:指定 SeedLevel;DLL 解密与 TP 参数配置会自动关联。
  1. Tester 操作步骤:
  • 目的:管理 TesterPresent 命令的启用/禁用。
  • 配置参数:
    • 启用/禁用命令:根据测试需要切换。
    • 命令数据与发送间隔:定义消息内容和发送频率。

C applet 诊断测试模块实现

请求与响应是诊断的基本要素,在 CAPL 中发送诊断请求并获取响应是测试的基本步骤。

  1. 实现步骤:
  • 定义测试条件:根据软硬件需求定义测试条件(硬件检查、内存检查、通信检查等)。
  • 实现测试逻辑:在 runDiagnostics 函数中实现具体测试逻辑,例如读取寄存器值并检查通信接口状态。
  • 输出结果:根据测试结果输出日志信息,便于调试与排查。
  1. 集成到 ETStudio:
  • 创建项目:在 ETStudio 中创建新的 C 项目。
  • 添加代码文件:将代码拷贝到主文件(例如 main.c)。
  • 编译与下载:使用 ETStudio 的编译工具生成二进制并下载到目标硬件。
  • 运行测试:通过串口或调试工具观察测试结果。

工程运行测试

手动诊断测试仪表盘

首先需要创建新的 UDS 文件,然后使用手动诊断测试仪表盘发送诊断请求并接收响应。

当配置界面出现后,选择合适配置并保存。

然后选择 UDS Setup 进行配置,右键添加新的服务。

右键单击执行以运行。

自动化诊断测试模块
选择 UDS Auto Sequence 模块,完成配置并运行,即可获得如下结果: