文章目录

  • Replay Block - CANoe回放CAN报文log模块详细介绍
  • 1. Replay Block 模块基本操作方法
  • 2. Replay Block 模块的设置说明
  • 2.1 General 界面设置
  • 2.2 Channel Mapping 界面设置
  • 2.3 CAN Options界面设置
  • 3. replay block模块CAPL函数简单说明
  • 4. log文件的截取


Replay Block - CANoe回放CAN报文log模块详细介绍

1. Replay Block 模块基本操作方法

  • 常需要将采集的报文log文件,比如.asc / .blf 等log文件,在台架上回放发给台架的控制器,进行模拟回放操作,Replay Block 模块就是专门进行回放操作的模块
  • 采用CANoe工具的操作方法步骤如下:

1 )建立虚拟节点

  • 建立虚拟节点,即在Simulation Setup界面的虚拟总线上插入Replay Block CAN节点:

2 )导入回放的log文件

  • 导入采集报文.asc文件 : 在插入Replay Block CAN节点上点击右键,进入Configuretion界面,进入节点编辑界面
  • Source file中导入将要回放的log文件,点击...,选择文件确认导入
  • python发送 spi_python发送 spi

  • 3) 运行回放报文
  • 点击Start运行CANoe,此时Replay节点还未工作,还需要点击Replay节点上的播放符号:三角符号,才能完成报文回放
  • python发送 spi_python发送 spi_02

  • 回放后,从Trace窗口可以看到回放的报文
  • python发送 spi_多路_03

2. Replay Block 模块的设置说明

2.1 General 界面设置

python发送 spi_Source_04


1)General

  • Replay name : Replay Block名称
  • Source file : 要回放的日志文件

2)Output modes

  • Standard :根据事件的时间戳回放事件
  • Step (不支持 FlexRay):工程启动后Replay Block默认处于暂停状态,需要按Replay三角符号播放才开始回放
  • Animated with … ms (不支持 FlexRay):不根据日志时间戳而是根据用户自定义的时间来回放log
  • Repetitive output sending mode :被激活时log会被循环回放,否则只回放一次

3)Start timing conditions

  • immediately:测量开始就立即从首次事件开始的地方回放
  • with the first event time :根据日志中首次事件出现的时间开始回放
  • after timeout of … ms :根据自定义的时间确定开始回放的时间

4)Start options

  • Start replay on measurement start :被激活时回放会从工程启动就开始,否则需要点击开始按钮或是在脚本中调用replayStarrt()方法启动

5)keys

  • Start/Stop key : 定义开始/停止按键
  • Pause/Resume key :定义暂停/恢复按键

2.2 Channel Mapping 界面设置

  • log文件中保存的可能是多路CAN信号,需要将多路CAN信号转发到CANoe工程的CAN线上来,需要在如下界面进行设置,配置将源通道映射到工程中的通道
  • Source : log文件采集的CAN路
  • Target : 工程目标CAN路

2.3 CAN Options界面设置

  • 选择回放的方向:选择播放log记录的接收报文还是发送报文

3. replay block模块CAPL函数简单说明

  • CAPL脚本编程中对replay block模块控制的函数如下:

函数

作用

示例

返回值

replayStart ()

启动replay模块

replayStart( replayName)

1:成功

0 :失败

replayStop()

停止replay模块

replayStop( replayName)

1:成功

0 :失败

replayState()

查询replay模块状态

replayState( replayName)

0:停止

1:运行

2:暂停

-1: 模块不存在

replaySuspend()

暂停replay模块

replaySuspend( replayName)

1:成功

0 :失败

replayResume()

恢复播放暂停的replay模块

replayResume( replayName)

1:成功

0 :失败

4. log文件的截取

  • 需求说明 :实车采集的log文件很大,报文数据很多,有时候需要对log文件进行截取,只播放需要的那一段报文即可
  • 思路 :打开log文件,例如记事本打开一个.asclog文件,文件存储格式如下图所示,因此可以通过时间对报文log进行截取,比如用一个简单的python脚本即可实现报文截取
  • python截取脚本示例 :
"""
Describe  : can log time modify 
Autoar    : QWQ
Function  : modify can log time
----------------------------------------------------------
Version      Data              Information
v1.0       22/03/24          init creation finish
"""

if __name__ == "__main__" : 
    finput = open("E:\Python_workpace\log.asc","r")           # open input file
    foutput = open("E:\Python_workpace\logOutput.asc","w")    # open output file
 
    inputLines = finput.readlines()   # read input file datas
    time = 110                        # modify time value
    str1 = '00'
    str2 = '0'
    for inputLine in inputLines:
        head = inputLine[1:4]   # read time, get frort char
        all = inputLine[4:]
        headnum = int(head)     # if time is 001, the this value is 1, same as : 023->23, 116 -> 116
        if headnum >= 170 and headnum <= 230 :  # time filer
            headnum2 = headnum - time           # time modify
            headnumstr = str(headnum2)
            if len(headnumstr) == 1 :
                headnumstr = str1 + headnumstr
            elif len(headnumstr) == 2 :
                headnumstr = str1 + headnumstr
            outstr = ' ' + headnumstr + all
            foutput.write(outstr)              # output