前言:首先介绍两种不同回放方式的不同使用场景。首先需要明确的是这两种方式都是利用已经存在的数据文件(blf,asc,vsb等常见数据帧的格式)。从新播放一遍的手段。
但是二者的使用场景却非常不同,同时他们实现的方法也是不同的。
(1)首先来看Trace回放
1.1Trace回放前提条件
trace回放,需要在home界面,将整体状态设置为online(在线转态),对real bus或者simulation没有要求。
1.2 trace回放的设置
trace回放,需要在simulation中添加一个ReplayBlock模块。
如上图所示,选择图标右单击,出现选择diagram,选择configuration,如下图
1.2.1 先看General设置项
(1)General-->General 下有两个设置项 ReplayBlockName,就是反馈模块的名称,没啥好说的,唯一注意的点是,因为CANoe目前对简体中文支持度比较差,尽量使用英文字符来命名。
(2)General-->SourceFlie ,就是选择需要Trace回放的源文件,这里必须是设置好的。这个也比较简单。唯一需要注意的是Edit按键,它会将导入文件以二进制文本的形式打开。对常见的BLF,VSB等文件是没有作用的。它只支持asc格式的导入文件起作用。
一个比较冷门的注意点:如果我们导入的是mdf类型的文件,那么如果该源文件录制时存在报文间隔>240s的帧间隔,那么Trace回放时,将无法正确按照源文件的时间戳回放。基于此,我们尽量避免录制时,使用MDF格式的文件。如果必须要用,建议先将MDF格式转换为其他格式。
1.2.2 outputModes和StartTimingCondition
outputModes和StartTimingCondition这两部分相互关联,相互影响。
(1)OutputModes是配置报文输出方式,有以下几种方式
(1.1)standard标准模式,此模式下,trace报文按照录制时的顺序和节奏输出
(1.2)step模式下,此模式下,重播在启动时暂停。
它在replayResume()CAPL调用或Pause/Resume键上输出一条消息,然后再次进入挂起状态。也就是说,此模式下,除了使用replayResume函数外,还可以通过按键控制使得回放按帧输出(实测发现,每按下一次自定义的pause按键,报文输出一帧)。此模式下我们可以非常缓慢的去观察报文。
(1.3)animate with 模式下,报文原有的时间戳将不能再使用,而是按照设置好的周期依次往外发送。比如我们想更快或以更慢的速速来,回放报文。
(1.4)Repetitive output sending Mode ,此模式就是循环的回放。此模式下,在step模式下不可用
(2)StartTiming Condition
(2.1)immediately立即开始,在我们打开主界面的start,也就是这个图标。后就开始回放数据。
(2.2)with the first event time 根据第一次事件时间,暂时不知道是什么意思。
(2.3)After Time out of
如上图,这个就是启动工程后,延时xxxms后,开始数据回放。这个xxx就是我们输入的值。在模拟仿真时,系统上电初始化,就可以这样来模拟。
(2.4)这几个选项 ,第一个strat replay on measurement start勾选后,就是
在点击测量开始后,开始trace回放
1.2.2 channelMaping
如上图,此选项主要是配置通道映射的关系,不过可能有部分同学感到不解。这个ReplayBlock就是按照总线(严格来说是逻辑总线)放置的,相对应的(映射)物理总线已经配置好。
如:在工程中添加一路Steer CAN.将其余CANoe上的物理通道can1映射。此时在SteerCan的simulation中添加一个ReplayBlock。所有信息不是都应该发送到can1通道上吗?
这里非常有必要说明:目前已知的两种模块 IG和 ReplayBlock这两种。虽然是添加到逻辑总线上。但是它们却可以对其他总线上产生影响。准确来说,是可以向其他总线上发送数据。
可以看到通道的映射是基于物理通道的,分为source和Target通道。也就是说我们可以将回放文件can1通道上的数据,回放到can2,can3上去。其余不使用的通道,我们一律使用ignore。
1.2.3 CANoe Option
此选项三个勾选项是选择把那些数据发送到总线上
*1:Tx message是把源文件中基于CANoe为主体的发送信息接收文件,这样描述其实并不是很准确,应该说基于报文信息收集方角度来说,属于发送方。此选项勾选后,TxMessage将会被再次发送到对应的总线上。
*2:RxMessage同上,
*3:Do Not SendMeaageViaCANSimulation。在模拟总线上禁止发送数据。
1.2.4 总结说明和知识扩展
必须要说明的是,在实际工作中,有很多工程师将ReplayBlock当做一种报文回放功能使用。其实这是一种错误的用法。
如果只想实现报文回放,有两种方式
1:offline模式下,在Measurement配置窗口,使用数据回放功能。
2:在trace窗口,使用import命令,也可直接导入数据文件,并显示在Trace窗口显示。如果文本很大,需要注意可能显示的数据会产生溢出和被覆盖。
比较 1和2两种方式,建议在文件比较小的时候,直接在trace窗口添加。文件较大时使用offline模式下的数据回放。方式1可以进行筛选观察总线负载率,有无错误帧等功能。复杂分析时应该用到方式1.
知识扩展:ReplayBlock是可以基于online模式,进行全仿真或半仿真测试的。可以对总线上其他的实体节点或虚拟节点产生影响和相互交互。
(2)看看offline模式下的数据回放
前提:在home界面将模式打到offline
或在Measurement界面上,将开关打到Offline模式,然后鼠标移动到步骤2处,右单击一下。出现3菜单。有三个选项
*1:Offline FileList
*2:offline Mode Configuration (离线模式配置)
*3:Simulink AnalysisModel
首先看*1:Offline FileList,单击一下就出现以下画面。
画红线的部分,就是添加源文件的按键。需要注意的是Offline模式下的数据回放,是可以同时添加
多个源文件,同时源文件前可以勾选,被勾选的文件会自动跳转到比较靠前的位置。
最重要的是我们要选择好配置点击上图中的3位置,得到如下界面。
2.1.1 离线数据回放的配置
可以看到配置总的任务栏
分为三个部分
(1)TimeSection(时序选择)
这部分配置好很重要,尤其是之前提到过,Offline模式下是可以添加多个文件的,那么该如何处理多源文件中回放到同一个trace窗口下,就显得非常重要了。必须是避免冲突。
时间配置上也提供了我们几种选择。1)According to Time Stamp Without reference to data/time。(根据时间戳(但是不包含具体到年月时分秒的时间))这句话该怎么理解?
我们知道,在Trace窗口配置时,我们可以设置基于data(具体到年月时分秒的时间),如下图
将d:hh:mm:ss天/时/分/秒
第二个设置项:是设置回放的时间范围。配置项也提供了四个选择
*1)Use entire range from all logging files(使用所有文件的全部时间),此选项下不能定制和选择时间范围
*2)use interval specified in seconds(以秒为单位指定的使用间隔)
use interval specified in day,hours,minutes and seconds(以日/时/分/秒、为单位指定的使用间隔)
*3)use interval specified by date and time
其中2和3都是需要源文件中有day,hours,minutes and seconds这种时间格式的。
(2)channelMaping(通道映射)
如下图,依次添加通道映射即可,很好理解
需要注意的一点就是,此处的映射是一一对应的,不能出现一映射多的情况。
(3)Breaking point(断点)
在脱机模式下,您可以将数据源配置为在出现特定消息或信号值时停止脱机重播。这就是所谓的全局断点。
如上图所示:提供了两种打断点的方式,一种是按照时间戳,一种是按照特定的条件(如收到特定ID的信号,收到特定的信号=特定的值)
第二种方式点击下图中的:
点击Newcondition,下图以两个信号是否等于特定值,且相互与的关系。
(3)trace回放和离线回放中的过滤filter设置
trace回放中的过滤器添加步骤
**1) 鼠标移动到simulation界面的总线上,鼠标右单击,出现InsertFilter
**2)添加之后如图所示:
而数据回放时,能添加过滤器更多了
通过在MeasureSetup界面,鼠标右单击,热点可在弹出diagram中添加
1:PE PassFliter
2:SE:StopFliter
3:ChannelFlier
4:CFB
具体功能后面有时间详细说明