文章目录
- 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文件,点击...
,选择文件确认导入 - 3) 运行回放报文
- 点击
Start
运行CANoe,此时Replay节点还未工作,还需要点击Replay节点上的播放符号:三角符号
,才能完成报文回放 - 回放后,从
Trace窗口
可以看到回放的报文
2. Replay Block 模块的设置说明
2.1 General 界面设置
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文件,例如记事本打开一个.asc
log文件,文件存储格式如下图所示,因此可以通过时间对报文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