CANoe:第5个仿真工程:仿真+测试

本文详细介绍了如何在CANoe中使用TestModule进行CAN总线报文的周期检测、长度验证、功能测试以及未定义报文的识别,通过CAPL编写测试用例并进行实际工程测试,同时探讨了故障注入和测试报告的生成。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

目录

工程背景

工程目的

报文发送情况

工程实现

工程步骤概述

1 测试方法分析

1-1 检测报文周期

1-2 检测报文长度DLC

1-3 功能测试

1-4 检测未定义报文

2 添加Test Module

2-1创建测试环境

 2-2 插入CAPL Test Module

3 CAPL编写测试用例

 3-1 测试模块入口函数MainTest

3-2 CAPL测试用例——检测报文周期

3-3 CAPL测试用例——检测报文长度DLC

3-4 CAPL测试用例——检测未定义报文undefined msg

3-5 CAPL测试用例——功能测试

4 工程运行测试

 5 故障注入

5-1 系统变量控制报文发送

5-2  IG节点发送自定义报文

 6 测试报告


工程背景

本工程主要目的是: 基于第3个仿真工程, 熟悉CANoe的报文测试功能。

工程目的

本工程将围绕CAN总线中的报文,在Test Module中实现测试功能。主要包括:

  1. 检测周期性报文的周期
  2. 检测报文的长度
  3. 检查网络中是否有未定义的报文
  4. 简单的功能测试:通过修改相关系统变量的数值,模拟真实测试环境的操作,最后检验总线上的信号数值的改变。
  5. 生成测试报告

报文发送情况

第3个仿真工程报文发送与接收情况如下:

报文的相关属性整理如下表:

报文中的信号属性如下表:

 

工程实现

工程步骤概述

本章实例基于第12章的仿真工程,为了便于区别,需要将原工程的文件夹复制并 名为Vehicle_System_Simulation_Test, 工程名称也另存为Vehicle_System_CAN_Test.cfg, 在该工程文件夹下创建一个名为Testmodul的文件夹,用于存放相关的测试代码。

接下来,将在此基础上添加测试模块及故障注入面板等。

工程包括以下几个关键步骤:

  1. 测试方法分析
  2. 添加Test Module,
  3. CAPL测试用例编写,
  4. 运行工程,运行测试用例。
  5. 故障注入,运行测试用例。
  6. 查看测试报告。

1 测试方法分析

本工程的目的是分别测试不同报文的发送周期、报文长度DLC;功能测试(检测信号值是否在期望的数值范围内 );未定义报文。

1-1 检测报文周期

检测报文周期的方法是划定某一段特定的时间,选取该时间段中第一条待测报文作为起始时间戳,观察此待测报文后续重复的时间间隔。

TSL函数——检测函数

检测函数1

ChkStart_MsgAbsCycleTimeViolation ( Message aObservedMessage,duration aMinCycleTime, duration aMaxCycleTime)

函数功能:观察总线周期性报文aObservedMessage的每次出现,如果该报文的间隔不符合规范要求,则会触发一个代表异常出现的特殊事件。

返回值:>0,返回一个IDaCheckedId,即观察待测报文的事件;=0报错。

TSL函数——状态报告函数

状态报告函数1long ChKQuery_NumEvents(dword aCheckId) 

函数功能:查询该时间段内异常出现的特殊事件的个数

状态报告函数2double ChkQuery_StatProbeIntervalAvg(dword aCheckId)

返回该时间段内,该报文的平均周期间隔时间

状态报告函数3double ChkQuery_StatProbeIntervalMin(dword aCheckId)

返回该时间段内,该报文的最小周期间隔时间

状态报告函数4 double ChkQuery_StatProbeIntervalMax(dword aCheckId)

返回该时间段内,该报文的最大周期间隔时间

TSL函数——检测控制函数

检测控制函数1 long ChkControl_Destroy(Check aCheckId)

用于测试结束时,销毁该事件对象aCheckId,释放资源。返回0操作成功,<0报错。

1-2 检测报文长度DLC

函数:

  • 状态报告函数 ChkQuery_NumEvents

  • 检测控制函数 ChkControl_Destroy

  • 检测函数:dword ChkStart_InconsistentDLC(Message aMessage,char [] aCallback)

    • 检测发送到总线上指定报文长度是否与DBC数据库中的定义一致

    • aMessage待测报文;char [] aCallback回调函数名,可选参数

    • 返回值:>0:返回一个事件对象aCheckId;=0报错

1-3 功能测试

功能测试用过CAPL程序逻辑来设置某信号的数值,然后使用ChkStart_MsgSignalValueInvalid函数来检测信号值是否在期望的数值范围内。

dword ChkStart_MsgSignalValueInvalid (Signal aObservedSignal,double aMinValue, double aMaxValue, Callback aCallback)

函数参数:待测信号,必须是定在DBC中的信号,最小信号值,最大信号值,回调CAPL函数名,可选。

返回值:返回一个事件对象aCheckId,即检测未定义报文的事件

1-4 检测未定义报文

检测函数:dword ChkStart_UndefinedMessageReceived (char [] CaplCallback)

作用:观察当前总线上是否有未定义的报文

返回值:>0:返回一个事件对象aCheckId,即待观测报文的事件;=0报错。

状态报告函数:long ChkQuery_EventMessageId (dword aCheckId)

作用:返回触发该事件的报文的MessageId

返回值:>0返回触发该事件的报文ID;<0报错。

2 添加Test Module

2-1创建测试环境

创建测试环境,命名为NetworkTester。

 2-2 插入CAPL Test Module

插入CAPL Test Module,并配置此模块Configuration对话框

 配置Module的Name为:Network Tester,在TestModule文件夹下创建CAPL文件NetworkTester.can

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

picoasis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值