车载网络测试实操源码_使用CAPL脚本模拟发送错误帧

系列文章目录

车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件
车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter、CRC、周期、错误帧进行实时监控
车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文
车载网络测试实操源码_使用CAPL脚本实现安全访问解锁
车载网络测试实操源码_使用CAPL脚本进行DTC自动化测试
车载网络测试实操源码_使用CAPL脚本进行UDS刷写及其自动化测试
车载网络测试实操源码_使用CAPL脚本进行UDS协议测试
粉丝问题解答系列文章… …
其他持续更新中… …



前言

CAN(Controller Area Network)通信中的错误帧是用于在通信过程中检测和通知错误的报文。当CAN总线上的节点在发送或接收报文时检测到错误,会发送错误帧来通知总线上的其他节点,以便采取相应的错误处理措施。
在开发调试或测试时,有时候需要模拟发送错误帧,以验证错误帧对DUT的通信是否有异常影响。本文将介绍如何使用CAPL脚本模拟发送错误帧。


一、模拟发送错误帧

1、方法1

void output(errorFrame);
output除了可以传参message发送相应CAN报文,还可以传参errorframe,直接发送错误帧。详细说明如下:
在这里插入图片描述

2、方法2

long canOutputErrorFrame(errorFrame, long dominant, long recessive);
canOutputErrorFrame函数可以发送错误帧,并且可以通过传参设置显性位的数量和隐性位的数量。详细说明如下:
在这里插入图片描述

二、示例代码

在日常开发或测试过程中,一般会用在验证错误帧对DUT的通信是否有影响时用到模拟发送错误帧。以下示例为:验证CAN总线上出现100ms的周期错误帧时,DUT发出的报文周期是否收到影响。
(关于如何实时监控CAN报文周期是否异常,可查看之前的文章《车载网络测试实操源码_使用CAPL脚本对CAN报文的通信周期进行实时监控》)

以100ms周期模拟发送错误帧,同时监控DUT发出的报文周期是否异常。CAPL脚本示例如下:

variables
{
	msTimer timer_ErrorFrame;//定义定时器
}

//定义定时器
on timer timer_ErrorFrame
{
  output(CAN1.errorframe); // output Error Frame on CAN channel 1
//  canOutputErrorFrame(CAN1.errorFrame, 6, 0); //output Error Frame with 6 dominant bits on CAN channel 1

  setTimer(timer_ErrorFrame,100);//100ms周期发送
}

//测试用例:以100ms周期模拟发送错误帧,持续10秒,此过程中监控DUT发出的0x15C报文周期是否异常
testcase TC_ErrorFrame_test()
{
  dword checkId;
  
  // 检查DUT发出的0x15C报文周期是否在40~60ms范围内
  checkId = ChkStart_MsgAbsCycleTimeViolation(0x15C, 40, 60);
  TestAddCondition(checkId);//添加检测条件
  
  setTimer(timer_ErrorFrame,0);//启动发送错误帧的定时器,以100ms周期发送错误帧
  
  // 持续检查的等待时间,以10秒为例
  TestWaitForTimeout(10000);
  
  cancelTimer(timer_ErrorFrame);//停止发送错误帧的定时器
  
  TestRemoveCondition(checkId);//移除检测条件
}

//执行测试用例
void MainTest()
{
  TC_ErrorFrame_test();
}

以上是模拟发送错误帧并实时监控DUT发出的报文周期是否受到影响的CAPL脚本示例。执行效果如下:
在这里插入图片描述
在这里插入图片描述


总结

以上就是如何使用CAPL脚本模拟发送错误帧的讲解,并结合了一个运用场景的实例进行介绍,希望对大家有所帮助。各位可根据本文的示例,结合自己的需求,进行完善和二次开发。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,CAPL 脚本编写验证预期接收测试的具体步骤如下: 1. 打开 CANoe 软件,创建一个新的配置文件,设置好相应的硬件接口、波特率等参数。 2. 在配置文件中打开一个新的测试模块,选择 CAPL 编辑器,开始编写验证预期接收的测试脚本。 3. 首先,定义一个消息的结构体,包括消息的 ID、数据长度和数据内容等信息。 4. 接着,使用 `on message` 事件来捕获收到的消息。在事件中,可以通过 `message` 对象获取到收到的消息的 ID 和数据内容等信息。 5. 对于每个收到的消息,都需要判断它是否为预期的消息。如果是,就可以进行相应的操作,如打印消息内容、修改数据内容等。 6. 最后,通过向 CANoe 发送预期的消息来验证系统的响应。可以使用 `output` 函数来发送消息,同时可以设置发送消息的 ID 和数据内容等信息。 需要注意的是,CAPL 脚本编写的关键在于对事件和函数的理解和使用。只有深入掌握了这些内容,才能编写出高效、准确的测试脚本。 ### 回答2: CAPL是一种用于汽车通信系统脚本语言,用于验证预期接收测试。预期接收测试是指在通信系统中,通过发送特定的消息,验证接收端是否按照预期接收到正确的。 首先,编写CAPL脚本需要建立测试环境,包括定义CAN通信信道、设定波特率和需要测试的节点等。然后,通过编写脚本模拟发送具有特定数据和标识符的。 接下来,可以使用CAPL脚本的各种函数和命令来验证预期的接收情况。例如,可以使用`output`函数来打印接收到的的数据和标识符,以便观察是否符合预期。还可以使用`on message`事件来定义当收到特定时执行的操作,例如打印日志或触发其他操作。 脚本编写时,可以使用循环结构来重复发送特定,以验证接收端是否持续按照预期接收到正确的。可以在脚本中添加条件语句,根据接收到的的数据来判断是否符合预期,如果不符合,则输出错误信息或执行其他错误处理操作。 最后,可以通过运行CAPL脚本进行测试,观察接收端是否按照预期接收到正确的。根据测试结果,可以进行必要的调试和改进。 通过CAPL脚本编写验证预期接收测试,可以有效地模拟真实的通信场景,快速验证通信系统的可靠性和正确性,提高开发和测试的效率。 ### 回答3: CAPL脚本是一种用于开发和测试汽车电子系统脚本语言。它可以用来验证预期接收测试,即检查系统是否正确接收到了预期的CAN。 首先,我们需要定义预期的CAN。通过使用CAPL脚本中的message信号声明来描述的标识符、数据长度和数据类型。而预期的CAN数据可以在脚本中直接指定或通过从文件中读取。 然后,我们可以定义一个接收触发条件。例如,当系统接收到预期的CAN时,我们可以在CAPL脚本使用on message触发事件进行处理。在触发事件中,我们可以执行一系列操作来验证接收到的是否与预期一致。 在事件处理程序中,我们可以使用if语句来检查预期的的标识符和数据是否与接收到的匹配。如果匹配成功,我们可以输出一条成功的消息或将测试结果记录到日志文件中。如果不匹配,我们可以输出一个错误消息或记录错误信息。 此外,CAPL脚本还可以进行更复杂的验证,如检查的周期性、接收顺序或与其他信号的关系等。我们可以使用循环结构和其他条件语句来实现这些测试。 最后,在所有预期的CAN都被接收并验证后,我们可以输出一个总体的测试结果,指示测试是否通过或失败。这可以作为测试报告的一部分,为开发人员提供关于系统接收功能的有关信息。 总的来说,使用CAPL脚本编写验证预期接收测试可以帮助我们确保汽车电子系统正确接收到预期的CAN,并及时识别和解决接收异常的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MrxMyx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值