目录
3-4 CAPL测试用例——检测未定义报文undefined msg
工程背景
本工程主要目的是: 基于第3个仿真工程, 熟悉CANoe的报文测试功能。
工程目的
本工程将围绕CAN总线中的报文,在Test Module中实现测试功能。主要包括:
- 检测周期性报文的周期
- 检测报文的长度
- 检查网络中是否有未定义的报文
- 简单的功能测试:通过修改相关系统变量的数值,模拟真实测试环境的操作,最后检验总线上的信号数值的改变。
- 生成测试报告
报文发送情况
第3个仿真工程报文发送与接收情况如下:

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

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



工程实现
工程步骤概述
本章实例基于第12章的仿真工程,为了便于区别,需要将原工程的文件夹复制并 名为Vehicle_System_Simulation_Test, 工程名称也另存为Vehicle_System_CAN_Test.cfg, 在该工程文件夹下创建一个名为Testmodul的文件夹,用于存放相关的测试代码。
接下来,将在此基础上添加测试模块及故障注入面板等。
工程包括以下几个关键步骤:
- 测试方法分析
- 添加Test Module,
- CAPL测试用例编写,
- 运行工程,运行测试用例。
- 故障注入,运行测试用例。
- 查看测试报告。
1 测试方法分析
本工程的目的是分别测试不同报文的发送周期、报文长度DLC;功能测试(检测信号值是否在期望的数值范围内 );未定义报文。
1-1 检测报文周期
检测报文周期的方法是划定某一段特定的时间,选取该时间段中第一条待测报文作为起始时间戳,观察此待测报文后续重复的时间间隔。
TSL函数——检测函数
检测函数1:
ChkStart_MsgAbsCycleTimeViolation ( Message aObservedMessage,duration aMinCycleTime, duration aMaxCycleTime)
函数功能:观察总线周期性报文aObservedMessage的每次出现,如果该报文的间隔不符合规范要求,则会触发一个代表异常出现的特殊事件。
返回值:>0,返回一个IDaCheckedId,即观察待测报文的事件;=0报错。
TSL函数——状态报告函数
状态报告函数1:long ChKQuery_NumEvents(dword aCheckId)
函数功能:查询该时间段内异常出现的特殊事件的个数
状态报告函数2:double ChkQuery_StatProbeIntervalAvg(dword aCheckId)
返回该时间段内,该报文的平均周期间隔时间
状态报告函数3: double 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

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

被折叠的 条评论
为什么被折叠?



