栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CANoe的数据回放(Replay Block),还是要结合CAPL脚本才能说的明白

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CANoe的数据回放(Replay Block),还是要结合CAPL脚本才能说的明白

 相关文章

  • 从零开始学习CANoe 系列文章目录汇总,点击跳转

  • 本章节内容演示源码下载,点击跳转


前言
  • Trace logging文件是我们分析问题的重要数据,我之前也说过,CANoe的分析工具很多,什么data,graphics等,但是日常工作中分析问题用的最多的最方便的还是Trace.

  •  但是对对局进行在线回放的时候,不是把直接选了文件就可以回放的,还需要对文件进行必要的过滤

  •  全网对这个知识点感觉都是在做笔记,没有结合CAPL和实际工程项目进行阐述,但是我觉得这这是十分有必要的

  • 演示软硬件环境 Win10 x64 ; CANoe 11 SP2 x64

  • 本章节内容演示源码下载,点击跳转

目录
  •  相关文章
  • 前言
  • 先录制一段Trace备用
  • offline mode加载logging文件分析`trace(快速模式)
  • 数据回放(Replay Block)(慢速模式)
    • 默认配置,Run 了CANoe 就触发Replay Block
    • 手动触发Replay Block
    • 按键触发Replay Block
    • 重复回放Replay
    • 过滤通道(Channel Mapping)
    • RX/TX过滤(CAN Option)
    • CAPL脚本触发Replay
  • 数据回放过程中的节点过滤
  • Logging File 类型转换
  • 总结

先录制一段Trace备用

1️⃣ 先创建工程,然后创建一个logging block,我们先录制一段logging文件

  • 这里选择按键触发开始录制
  • 录制文件格式选择blf格式,这种格式要比ASC格式节省内存


2️⃣ 按下‘t ’开始录制,差不多录制了有 3分钟 ,再按‘t’停止录制


offline mode加载logging文件分析`trace(快速模式)

1️⃣ 上面我们已经录制了logging ,那么我们看下怎么使用这个logging 来分析问题

  • 方法一:直接按住文件拖进Trace 里面,很快就加载完毕了,最方便快捷,推荐用法


2️⃣ 通过打到offline mode,然后将文件拖到选择框中,然后按Start按钮,也会很快加载完毕,那么费那么大事,和直接拖到Trace中有啥区别呢

  1. 通过offline mode 对话框,可以选择多个文件同时回放
  2. 看到那个step 按钮没,后面还有个时间输入框,什么意思呢,就是,如果我不想一下子全部读完,我向先读5ms的数据,看完了,我再按下step ,它就又加载5s的数据。懂了吧,就是根据你设置的时间,每按一次step,就加载多少的数据
  3. 时间框默认单位事ms ,你可以写h, m, s, 来表示小时,分钟,秒,比如1s,你可以 写1s


数据回放(Replay Block)(慢速模式) 默认配置,Run 了CANoe 就触发Replay Block

1️⃣ 如下图,Replay Block 是一个节点,这里我们把其它节点都屏蔽掉,创建一个Replay Block 节点


2️⃣ 这里我们直接选择logging文件,其它先不用配置


3️⃣ 直接Start ,我们看下Run了 156s, Trace就停止了

  • 上面为什么156s就停了,因为我们录制Trcae 就 156s ,当你回放的时候,时间戳是从零开始的。
  • 而且默认选择的是logging文件只回放一次,可以选择循环回放的



手动触发Replay Block
  • Start Option不要勾选 Start replay on measurement start


  • 想要触发Replay ,需要点击开始按键才行


按键触发Replay Block


重复回放Replay
  • 重复回放Replay


过滤通道(Channel Mapping)
  • 下图是基于真实ECU,双CAN通道测试的一段Trace截图,回放选择两个通道
    、

  • 下图是基于真实ECU,双CAN通道测试的一段Trace截图,回放统统选择CAN1通道


RX/TX过滤(CAN Option)
  • 以CAN总线为例,其它总线参考help文档
  • 不管录制Trace时,各个节点时RX还是TX;回放的Trace 都是TX
  • 如果勾选RX message ,只有真实节点的数据被回放,也就是说录制Trace时的 TX 节点数据被过滤掉了
  • 如果勾选TX message ,实节点和仿真节点的数据都会被回放,也就是TX message 就是回放所有数据了


CAPL脚本触发Replay
  • 下面脚本是控制Replay 开始,停止的几个函数,在实际工程项目中,基本上都是通过CAPL脚本控制Replay来完成测试任务的

variables
{
char replayName[32] = "ReplayBlock 1";
}

on key 'b'
{
replayStart( replayName);
writeReplayState( replayName);
}

on key 'e'
{
replayStop( replayName);
writeReplayState( replayName);
}

on key 's'
{
replaySuspend( replayName);
writeReplayState( replayName);
}

on key 'r'
{
replayResume( replayName);
writeReplayState( replayName);
}


void writeReplayState( char name[])
{
switch ( replayState( name))
{
case 0:
   write( "Replay Block %s is stopped", replayName);
   break;
case 1:
   write( "Replay Block %s is running", replayName);
   break;
case 2:
   write( "Replay Block %s is suspended", replayName);
   break;
default:
write( "Error: Replay Block %s has an unknown state!", replayName);
   break;
};
}

数据回放过程中的节点过滤
  • 实际项目中,拿到的不管是车辆测试跑回来的数据也好,还是台架测试的数据,都需要经过数据清洗才能用来回放和分析的,而上面介绍的功能根本不够用,甚至很少用的
  • 车辆测试跑回来的数据肯定会包含目标ECU的,回放过程,我们要踢掉目标ECU的数据,这里方法大致有两种常用,
  • 一种是如果是ASC格式的数据(blf也可以转为ASC),是可以通过脚本(Python /c++等)对该文件进行清洗,具体项目具体实现了
  • 另一种就是回放报文的时候,再录制一份报文,在录制的时候添加过滤节点,下面代码演示下这中方式

1, 如下图,我们创建Logging Block 并且加入 Event Filter


2, 如下图,这个Trace总共就两个节点(Light和Engine),那我们就把Engine节点数据过滤掉


3, 如下图,我们配置下logging的触发方式,因为为了统一Replay Block 和 Logging Block的同时进行和停止,我们写一点CAPL脚本控制下时序,其实这也是实际工程项目中的一般做法(这里简化代码,讲述核心逻辑)


4, 如下图,通过按键‘h’


variables
{
  char replayName[32] = "ReplayBlock 1";
  char loggingName[32] = "Logging";
  msTimer ReplayState ;
}

on timer ReplayState
{  
  if(replayState(replayName) == 0)//replay结束
  {
      stopLogging(loggingName);//停止logging
  } 
  else
  {
      setTimer(ReplayState,100); //100ms
  }
}


on key 'h'
{
  replayStart( replayName);  //开始回放
  setTimer(ReplayState,100); //100ms
  startLogging(loggingName); //开始录制
}


5, Run起工程后,按下按键‘h’,然后等待Run完毕,看到录制的logging -2022xxx文件.直接拖到Trace中,看到我们把Engine节点报文都过滤掉了,然后这个报文,才可以用于我们的Replay Block


Logging File 类型转换
  • blf 文件格式,占用内存小但是无法用txt打开,也就无法用脚本去解析
  • asc 文件格式,占用内存大,但是可以用txt直接打开,然后根据需求去对文件某些节点数据做删除或者其它更改等
  • CANoe中可以直接将logging文件进行格式转换

End
总结


 有需要演示中所用demo工程的,可以关注下方公众号网盘自取啦,感谢阅读。

  • 要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  •  有微信的小伙伴可以关注下浪哥车载诊断,一个行业内小小圈子,群里有网盘资料,源码,还有各路大神 闲时交流交流技术,聊聊工作机会啥的。

  • 如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号