CANoe自动化工程的搭建


前言:用CAPL或其他语言实现测试的自动化仅仅时一种把手动测试转变为自动化测试的过程,在实现这个过程之前,比具备编程思维和经验更重要的是准确,严谨的理解测试用例的真实意图和必要输入等信息,思路不要被测试步骤的先后、设备的使用方法所局限。

1、导入ini文件

工程的配置的文件,配置DUT相关信息,具体视工程而编写内容。
ini文件是控制器系统级别参数配置,通过配置ini文件可以实现控制器报文信息的配置。例如子网报文ID、数据长度DLC、报文周期、报文类型以及状态掩码;可以实现电源参数配置,具体测试用例执行环境的输入、例如限制电压、限制电流等。
配置DUT相关信息,ini文件的编写格式,以及编写内容是根据什么来写的,以及在工程中是如何用的?
在工程开始load进去ini文件里的信息,并进行相应存储。
在这里插入图片描述

[Title]
DUT=BD
BusType=0
Project= Example
; 0=CAN_Protocol CAN2.0
; 1=CAN_Protocol CANFD

[Power]
DUT_POWER_SUPPLY=0
; 0=DUT_POWER_SUPPLY 使用VH1150做程控电源
; 1=DUT_POWER_SUPPLY 使用第三方程控电源
; 2=DUT_POWER_SUPPLY 使用恒压适配器做电源

DUT_NORMAL_VOLTAGE=14.0
; DUT_NORMAL_VOLTAGE DUT正常工作电压,单位V

DUT_LIMIT_VOLTAGE_MIN=5.0
; DUT_LIMIT_VOLTAGE_MIN DUT最小限制电压,单位V

DUT_LIMIT_VOLTAGE_MAX=20.0
; DUT_LIMIT_VOLTAGE_MAX DUT最大限制电压,单位V

DUT_LIMIT_CURRENT=2.5
; DUT_LIMIT_CURRENT DUT最大限制电流,单位A

DUT_WAIT_SLEEP_TIME=10
; DUT_WAIT_SLEEP_TIME 等待DUT进入睡眠的最大超时时间,单位S

DUT_CAN_BUS_SLEEP_COFIRM_TIME=5000
; DUT_CAN_BUS_SLEEP_COFIRM_TIME 表明DUT报文停发到确认休眠的时长,单位ms

DUT_AWAKE_SLEEP_CALLED_TYPE=1
; 0=DUT_AWAKE_SLEEP_CALLED_TYPE测试时,既不能用本地IO使能唤醒和睡眠也不能用IGN(KL15)使能唤醒和睡眠,只能用网络唤醒
; 1=DUT_AWAKE_SLEEP_CALLED_TYPE测试时,用IGN(KL15)使能唤醒和睡眠
; 2=DUT_AWAKE_SLEEP_CALLED_TYPE测试时,用本地IO使能唤醒和睡眠

DUT_DELAY_AFTER_SLEEP=1000
; DUT_DELAY_AFTER_SLEEP 为了方便测试,使DUT睡眠后的延时时间,单位ms

DUT_DELAY_AFTER_POWERON=1000
; DUT_DELAY_AFTER_POWERON 为方便测试,使DUT KL30 ON之后的延时时间,单位ms

[Terminating_Resistor]
TR_MIN=55
TR_MAX=65

[NetworkManagement]
NM_TYPE=2
; 0:KL15OFF后不需要CAN通信的节点
; 1:KL15OFF后需要CAN通信的节点,遵循OSEK_DIRECT_NM
; 2:KL15OFF后需要CAN通信的节点,遵循AUTOSAR_NM_GWM

T_SHUTDOWN_MAX=200
T_SHUTDOWN_MIN=0
; T_SHUTDOWN_MAX代表KL15OFF后不需要CAN通信的节点的网络关闭时间,单位ms

[UDSonCAN]
CAN_Protocol=0
; 0=CAN_Protocol CAN2.0
; 1=CAN_Protocol CANFD

MaxCANFDFrameLength=64
; MaxCANFDFrameLength表示CANFD的最大帧字节长度

DIAG_FUN_ID=0x7DF
; DIAG_FUN_ID 诊断功能寻址ID

DIAG_APP_BLOCK_SIZE=0x0
; DIAG_APP_BLOCK_SIZE 传输层BLOCK_SIZE

IS_USER_BLOCK_SIZE=1
; 0=IS_USER_BLOCK_SIZE 使用DUT响应的BlockSize
; 1=IS_USER_BLOCK_SIZE 使用用户自定义的BlockSize

DIAG_APP_ST_MIN=0
; DIAG_APP_ST_MIN 单位ms

IS_USER_ST_MIN=1
; 0=IS_USER_ST_MIN 使用DUT响应的STmin
; 1=IS_USER_ST_MIN 使用用户自定义的STmin

DIAG_PADDING=0xCC
; DIAG_PADDING 发送诊断命令时,无效字节填充值

P2C_MAX=1500
;P2Client时间最大值,单位ms
P2CEx_MAX=5100
;P2ClientEx时间最大值,单位ms

[DIDInfo1]
[DIDInfo3]
DIDName=HardwareVersion
DIDValue=0xF193

2、新建 Test Environment

1、新建XML测试用例环境
Xml文件是系统级别参数配置及测试用例配置文件,用来描述项目数据、存放数据、文件包含项目名称、测试类型、测试环境、测试用例等信息。不同的测试项目只需更改xml配置文件就可以实现自动化测试目的,具体的测试用例也可以通过xml文件测试参数来完成。该文件是自动化测试脚本必要的配置文件。
在这里插入图片描述
2、导入XML测试用例文件
XML文件是调用CAPL测试用例函数,以及向CAPL函数传入参数。
在这里插入图片描述
1、testmodule
测试模组的总名称,最终会打印在报告中。
2、preparation
测试用例执行前的初始化,可以有多个preparation。比如,全局参数的载入,一些软硬件外设的初始化等。硬件比如 1150,scope,程控电源,软件,通讯协议的初始化。
3、sysvardef
定义全局的系统变量。之前讲过,系统变量也可以定义在 CANoe/Environment/System Variable
4、capltestfunction
测试函数,capltestfunction类型的测试函数可以被capltestcase调用的,也可以被preparation调用,也可以被completion调用。仅仅一个函数,执行一个任务。
5、testgroup
测试用例的集合,用户可以按照自己的方式使用testgroup对capltestcase进行分组
6、capltestcase
CAPL编写的测试用例,这就是XML与CAPL测试用例的接口函数,参数的传递也在这里实现
7、completion
与preparation形式前后对应,preparation表示测试开始前的初始化,completion表示执行测试结束后的一些必要任务,比如关闭设备电源,断开TCP连接等。

<?xml version="1.0" encoding="iso-8859-1"?>
<!--Vector Test Automation Editor 2.1.34.0-->
<testmodule title="Indirect Network" version="1.0" >

		<capltestcase name="T1" title="T1 to start CAN communication at start-up">
		<caplparam name="caseName" type="string">T1 to start CAN communication at start-up</caplparam>
		<caplparam name="caseDesc" type="string">Add your description here</caplparam>
		</capltestcase>	
	
</testmodule>

3、生成报告以及报告位置
在这里插入图片描述
4、导入CAPL文件(.can)
实现测试用例的源码。
在这里插入图片描述

3、报告类型

选择HTML格式,方便传递给用户打开报告。
在这里插入图片描述

4、代码编写

1、模块化
硬件模块化,比如,VH6501/VH1150/Scope(CAN通信测试)编写对应代码
公用功能模块化,比如,UDSOnCAN/TCPIP/RS232;
大功能模块化,比如通信/NM/FBL。
2、兼容性
扩展性,需求多样性,也要考虑局限性

<think>好的,我现在需要帮用户了解如何在CANoe中使用CAPL进行ECU自动化测试的设置。首先,用户可能对CANoe和CAPL不太熟悉,所以需要先简要介绍这两个概念。CANoe是Vector公司开发的用于汽车网络分析和测试的工具,而CAPL是CANoe的编程语言,用于编写测试脚本。用户提到的是自动化测试,所以重点应放在如何配置和编写自动化测试脚本上。 接下来,用户想了解如何设置ECU进行自动化测试。ECU的自动化测试通常涉及模拟节点、发送接收消息、验证响应等步骤。我需要分步骤解释这些过程。首先,用户需要在CANoe中创建或加载一个现有的ECU测试环境,这可能包括配置网络数据库(如DBC文件)、添加ECU节点以及设置硬件接口。 然后,编写CAPL脚本是关键部分。需要说明如何在CAPL中处理事件,比如on start,on message,以及定时器事件。用户可能需要知道如何发送CAN消息,检查ECU的响应是否符合预期。例如,发送一个请求帧,等待ECU的响应,并验证响应数据。同时,自动化测试可能需要循环测试不同的用例,这时候需要用到测试模块或测试单元,可能涉及到Test Feature Set和XML的测试用例管理。 另外,用户可能关心如何集成测试用例到CANoe自动化测试框架中,比如使用Test Module或Test Unit来组织测试用例,以及生成测试报告。还需要提到如何通过CAPL调用外部DLL或函数,处理更复杂的逻辑,或者与硬件进行交互。 可能还需要考虑错误处理,比如超时机制,当ECU没有响应时如何处理,以及如何记录测试结果。此外,自动化测试的日志记录和结果分析也很重要,用户可能需要知道如何配置CANoe来生成详细的测试报告。 用户可能的疑问点包括:如何在CAPL中模拟ECU节点,如何设置发送和接收消息的触发条件,如何处理多个测试用例的组织,如何断言ECU的响应是否正确,以及如何将测试自动化集成到持续集成流程中。需要确保解释清晰,步骤详细,并提供示例代码片段帮助理解。 最后,总结整个流程,并可能推荐一些学习资源或官方文档,供用户进一步深入学习。需要避免使用过于专业的术语,或者在使用时进行解释,确保内容对新手友好。</think>以下是如何在 CANoe 中使用 CAPL 进行 ECU 自动化测试的简明指南,分步骤说明关键配置和实现方法: --- ### **1. 环境搭建** - **加载 ECU 描述文件** 在 CANoe 中导入 ECU 的通信数据库(DBC/A2L文件),定义 CAN/LIN 消息、信号及诊断服务(UDS)。 - **配置硬件接口** 选择正确的硬件通道(如 CANoe 虚拟通道或真实 Vector 硬件),设置波特率与 ECU 匹配。 --- ### **2. CAPL 脚本核心功能** #### **模拟节点 & 触发动作** ```capl // 模拟发送请求报文 on key 's' { message ECU_Request msg; msg.signal1 = 0x55; // 设置信号值 output(msg); } // 监听 ECU 响应报文 on message ECU_Response { if (this.signal2 == 0xAA) { write("ECU 响应正确!"); TestPass(); // 标记测试通过 } else { TestFail("信号值错误"); } } ``` #### **定时器与循环测试** ```capl variables { int testCase = 0; } on timer MyTimer { switch(testCase) { case 0: SendRequest(0x10); // 自定义发送函数 testCase++; break; case 1: // 检查响应... break; } } on start { setTimer(MyTimer, 100); // 每100ms触发 } ``` --- ### **3. 自动化测试框架集成** - **Test Module 配置** 使用 `Test Setup` 窗口添加 `Test Module`,将 CAPL 脚本绑定到测试单元,支持批量用例管理。 - **XML 测试用例** 通过 XML 定义结构化测试步骤(如发送特定诊断服务 UDS $22),与 CAPL 逻辑联动执行。 - **断言与报告** 调用 `TestStepPass()`、`TestStepFail()` 标记结果,CANoe 自动生成 HTML/Excel 格式测试报告。 --- ### **4. 高级技巧** - **诊断协议集成** 使用 `CDD/ODX` 文件结合 `Diagnostic Console`,直接通过 CAPL 调用 `diagSendRequest()` 发送 UDS 指令。 - **自动化参数化** 从 CSV 文件读取测试数据,实现数据驱动测试: ```capl dll "FileIO.dll" // 调用外部 DLL 读取文件 ``` - **错误注入测试** 修改报文 CRC 或超时阈值,验证 ECU 容错机制: ```capl corruptMessage ECU_Response with CRC_ERROR; // 模拟报文错误 ``` --- ### **5. 调试与优化** - **Trace 窗口监控** 实时查看报文收发时序,结合 `Write Window` 输出调试日志。 - **断点与单步执行** 在 CAPL 代码中插入断点,逐步跟踪变量状态。 --- ### **学习资源推荐** - **官方文档** CANoe 安装目录下的 `CAPL Help`(按 F1 直接搜索函数说明)。 - **实例模板** 查看 `C:\Users\Public\Documents\Vector\CANoe\Sample Configurations` 中的 Demo 工程。 - **Vector 培训** 参加官方课程(如“CANoe Advanced”)系统学习自动化测试设计。 --- 通过上述步骤,您可快速搭建 ECU 自动化测试框架,实现功能验证、回归测试及持续集成(CI)流水线集成。实际开发中需根据 ECU 协议规范调整报文和信号处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值