系列文章目录
车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件
车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter、CRC和周期进行实时监控
车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文
车载网络测试实操源码_使用CAPL脚本实现安全访问解锁
车载网络测试实操源码_使用CAPL脚本进行DTC自动化测试
车载网络测试实操源码_使用CAPL脚本进行UDS刷写及其自动化测试
车载网络测试实操源码_使用CAPL脚本进行UDS协议测试
粉丝问题解答系列文章… …
其他持续更新中… …
文章目录
前言
在之前的文章《车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter和CRC进行实时监控》中,已经讲解了如何实时监控报文的Counter和校验码,今天我们接着来讲一下如何使用CAPL脚本对CAN报文的通信周期进行实时监控。
一、实时监控报文周期
1、函数说明
timeNow()函数可以获取当前的时间,单位是10微秒。详细说明如下:
2、CAPL脚本示例
针对0x123报文的通信周期进行实时监控的CAPL脚本示例如下:
on message can1.0x123
{
float msg_cycle;
float cycle_error;
float time_last,time_now;
msg_cycle = 50; //假设要监控的报文周期为50ms
cycle_error = 0.05; //假设允许的周期误差为5%
time_now = timeNow() / 100; //ms
if( (time_now - time_last >= msg_cycle*(1-cycle_error)) && (time_now - time_last <= msg_cycle*(1+cycle_error)) )
{
//write("msgTEST_0x123:Cycle RIGHT! cycle_error = %f",time_now - time_last);
}
else
{
write("msgTEST_0x123:Cycle ERROR!!! cycle_error = %f",time_now - time_last);
}
time_last = timeNow() / 100; //ms
}
以上是针对CAN报文的通信周期进行实时监控的CAPL脚本示例,可根据需要修改需要进行监控的报文ID,以及报文周期和允许的误差值。实时监控过程中,如果监控的报文周期不符合要求,会在canoe的write窗口中进行打印输出,以便定位问题。效果如下:
二、定时监控报文周期
1、方法一
①、函数说明
ChkStart_MsgAbsCycleTimeViolation函数可用于检查一段时间内指定ID的报文周期是否在指定的时间范围内。详细说明如下:
②、CAPL脚本示例
针对0x123报文的通信周期持续监控10秒的CAPL脚本示例如下:
testcase TC_Monitor_MsgAbsCycleTimeViolation()
{
dword checkId;
// 检查报文周期是否在45~55ms之间
checkId = ChkStart_MsgAbsCycleTimeViolation(0x123, 45, 55);
TestAddCondition(checkId);
// 检查报文的等待时间
TestWaitForTimeout(10000);
TestRemoveCondition(checkId);
}
执行上述测试用例,可得到设定的这一段监控时间内,该报文周期的时间分布情况。测试报告如下:
2、方法二
①、函数说明
ChkStart_MsgRelCycleTimeViolation函数可用于检查一段时间内指定报文(必须在DBC中存在)周期是否在允许的误差范围内。详细说明如下:
②、CAPL脚本示例
针对ACU_state报文(DBC中的报文名)的通信周期持续监控10秒的CAPL脚本示例如下:
testcase TC_Monitor_MsgRelCycleTimeViolation()
{
dword checkId;
// 检查报文周期是否在DBC规定报文周期的90%~110%范围内
checkId = ChkStart_MsgRelCycleTimeViolation(ACU_state, 0.9, 1.1);
TestAddCondition(checkId);
// 检查报文的等待时间
TestWaitForTimeout(10000);
TestRemoveCondition(checkId);
}
执行上述测试用例,可得到设定的这一段监控时间内,该报文周期的时间分布情况。测试报告如下:
总结
以上就是如何使用CAPL脚本对CAN报文通信周期进行实时监控的讲解,希望对大家有所帮助。各位可根据本文的示例,结合自己的需求,进行完善和二次开发。
标签:脚本,周期,报文,CAPL,源码,实操,监控,time From: https://blog.csdn.net/Vista7Malone/article/details/139890251