系列文章目录
车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件
车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter、CRC、周期、错误帧进行实时监控
车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文
车载网络测试实操源码_使用CAPL脚本实现安全访问解锁
车载网络测试实操源码_使用CAPL脚本进行DTC自动化测试
车载网络测试实操源码_使用CAPL脚本进行UDS刷写及其自动化测试
车载网络测试实操源码_使用CAPL脚本进行UDS协议测试
粉丝问题解答系列文章… …
其他持续更新中… …
文章目录
前言
CAN(Controller Area Network)通信中的错误帧是用于在通信过程中检测和通知错误的报文。当CAN总线上的节点在发送或接收报文时检测到错误,会发送错误帧来通知总线上的其他节点,以便采取相应的错误处理措施。
在开发调试或测试时,经常会需要对错误帧进行监控,本文将介绍如何使用CAPL脚本实现通信过程中对错误帧的实时监控。
一、实时监控错误帧
1、函数说明
on errorFrame
{
… …
}
错误帧处理程序:在接收到错误帧或过载帧后调用。详细说明如下:
2、CAPL脚本示例
实时监控CAN总线上错误帧的CAPL脚本示例如下:
/*@!Encoding:936*/
includes
{
}
variables
{
dword errorFrame_cnt = 0;
}
on errorFrame
{
float time_now;
time_now = timeNow();
errorFrame_cnt++;
write("时间:%f时,出现第%d次错误帧",time_now/100000,errorFrame_cnt);
}
以上是实时监控CAN总线上错误帧的CAPL脚本示例,实时监控过程中,如果CAN总线上出现错误帧,会在canoe的write窗口中进行打印输出,以便定位问题。效果如下:
以上示例代码比较简单,只是用于检测错误帧,并没有对错误帧的类型进行判断。如果需要对错误帧的类型进行判断,可以参考上面官方给出的示例代码。
二、定时监控错误帧
1、函数说明
使用到的相关函数如下:
ChkStart_ErrorFramesOccured:开始检测错误帧
TestAddCondition:添加检测条件
TestRemoveCondition:移除检测条件
ChkControl_Stop:停止检测
ChkQuery_NumEvents:分析检查结果
ChkControl_Destroy:终止检查
每个函数的详细介绍这里就不展开了,相关的官方示例如下:
2、CAPL脚本示例
定时监控CAN总线上错误帧的CAPL脚本示例如下:
testcase TC_Detect_errorFrame()
{
dword checkId;
dword numCheckEvents;
checkId=ChkStart_ErrorFramesOccured();//开始检测错误帧
TestAddCondition(checkId);//添加检测条件,如果出现了错误帧,则输出报告中会记录下来
//模拟一些测试场景、异常条件等......
testWaitForTimeout(10000);//持续监测10s的错误帧
TestRemoveCondition(checkId);
ChkControl_Stop(checkId);//停止检测错误帧
numCheckEvents=ChkQuery_NumEvents(checkId);//对检测情况进行获取,若函数返回0则没有出现错误帧
if(numCheckEvents>0)
{
TestStepFail("","持续监测10s,过程中出现了%d次错误帧,测试失败!",numCheckEvents);
}
else
{
testStepPass("持续监测10s,过程中未出现错误帧,测试成功!");
}
ChkControl_Destroy(checkId);
}
以上是定时监控CAN总线上错误帧的CAPL脚本示例,主要运用在某个特定场景、特定时间段的监控。执行上述测试用例,可检测设定的时间段内是否有出现错误帧。执行效果如下:
总结
以上就是如何使用CAPL脚本对CAN总线上的错误帧进行实时监控的讲解,希望对大家有所帮助。各位可根据本文的示例,结合自己的需求,进行完善和二次开发。
标签:脚本,测试,错误,示例,CAPL,源码,实操,监控 From: https://blog.csdn.net/Vista7Malone/article/details/141067996