CANoe入门(11)-- 诊断模块
CANoe的诊断模块是其核心功能之一,支持多总线(如CAN、LIN)的诊断解析、自动化测试及ECU交互模拟,主要通过集成化的窗口和CAPL脚本实现高效诊断操作。以下详细介绍关键模块的使用方法:
一、首先打开诊断模块
很简单,在CANoe界面上点击“Diagnostics”即可,界面如下
一、诊断模块核心功能与配置
Diagnostic/ISO TP(诊断参数配置)
- 用于导入诊断数据库(CDD/ODX/PDX文件)并配置传输层参数,如CAN ID地址、ISO-TP帧格式(BS/STmin时间)、诊断层超时设置(P2超时)等。
- 示例步骤:在CANoe工程中打开此窗口,看到如上图的CAN(以CAN工程为例,LIN工程的话这里显示为LIN)右键可以看到添加诊断描述文件的选项,如下:
- 如果有CDD或 PDX/ODX文件可以选择第一个选项,选择对应的诊断数据库,
- 如果没有,可以选择第二个选项,添加一个基础诊断文件。
- 后面两个先不管,等我弄清楚先
- 选择添加基础诊断文件后,在这个文件里做一些基本的UDS配置
- Transport Layer:
在这个界面上我们把请求ID,应答ID,以及物理寻址ID填好,还有下面的一些时间也填好:
STmin:流控帧参数,用于告知发送方发送连续帧时的最短间隔时间。
Block Size:用于告知发送方在接收到下一条流控帧之前,本次可以发送的连续帧的数量,为0表示没有限制。
FC Delay:流控帧与FF CF之间的间隔时间
Max length:传输层支持的最大字节数,当接收到的长度大于该长度时,CANoe将会报错并结束传输。
Mixing of CAN 2.0 and CANFD Frames:
若配置为ignore,则忽略与配置不符的CAN报文,如:本工程配置为CAN工程,则会忽略CANFD的诊断报文;
若配置为accept,则可以接收与本工程配置不符的CAN报文,但仅接收;
若配置为adapt,则不仅可以接收与本工程配置不符的CAN报文,且在接收到之后会使用对应的报文类型进行发送。 - Diagnostic Layer
- Transport Layer:
Tester Present Request:若勾选此选项,则CANoe会在发送完成一次诊断服务后会每隔S3 Client ms之后自动发送诊断仪在线请求(0x3E服务)
若勾选上方的From Description,则会默认发送诊断文件中的诊断仪在线命令,若勾选Manually,则可以自定义发送的诊断仪在线命令。
S3 Server Time:ECU离开非默认会话的超时时间,此时间必须大于S3 Client。
Basic Diagnostic(基础诊断)
- 适用于未导入完整数据库的场景,自定义简单诊断服务格式(如定义请求字节和响应处理逻辑)。
- 一键生成基础诊断服务:
点击如上图的“edit”,选择“add all services”
右侧可以看到生成的服务
点击服务可以修改发送数据以及应答数据。
Diagnostic Console(诊断控制台)
- 手动发送诊断请求并实时显示ECU响应的主界面,需先导入诊断数据库或激活Basic Diagnostic。
- 使用流程:选择目标ECU→输入服务ID(如UDS $22读取数据标识符)→发送请求→解析响应数据或负响应码(NRC)。
进入:
进入后,双击服务即可发送相应诊断报文,如上图所示。
三、注意事项
- 数据库依赖:需导入CDD/ODX文件以支持完整服务解析,否则依赖Basic Diagnostic手动定义。
- 错误处理:诊断超时可调整
Diagnostic Parameters
中的重传机制,或在CAPL中捕获on errorFrame
事件。 - 会话权限:默认会话权限受限,扩展会话需成功执行$27安全访问才能操作高权限服务