来源 | 开心果Need Car
对于经常排查bug的同学来说,Replay(回放)数据并不陌生。很多时候,受限于资源,排查问题的工程师,不能获取到问题车辆。所以,为了更好的模拟整车问题时的通信工况,将车辆问题时的数据(log)在小台架上replay就是一个不错的选择。本文,基于CANoe,分享Replay的基本操作步骤。
1、Simulation->Simulation Setup->在需要回放的Network(eg:CAN Network)中添加Replay blocks
2、Replay blocks添加完成,如下所示:
这里的Source通道是指录取的log中,要回放数据的Channel。eg:录取数据为A.log,其中目标Network在Channel 2,此处的Target选择CAN2。
为了便于信号的识别,Databases选择对应Network的通信矩阵。
这里的Channel选择要与log(eg:*.blf)中Network Channel保持一致,此处为CAN2。
1、右击Replay blocks虚拟线->Insert Filter
右击添加的过滤模块->Configuration...
本文使用过滤节点方式进行过滤设置,eg:过滤VDDM的发送报文(Transmitted messages)。这里选择Stop filter,即:不回放log中VDDM的发送数据。
提示:回放数据的目的,让整车其他节点的报文发送给目标节点,同时,过滤掉log中目标节点的发送报文,让目标节点真实的发送报文。
如果有未关联的Channel,需要Deactive Unmapped,操作:Deactive Unmapped->OK
Deactive Unmapped以后,未关联的Channel变成灰色,不再使用,如下所示:
其中VDDM节点真实发送的数据,由CANoe接收(Rx),其他节点数据,由CANoe发送(Tx)给VDDM节点。
1、需要回放数据的目标板确认物理连接正确(eg:供电是否正常、总线连接是否正常等);
2、回放数据开始阶段,由于节点需要唤醒,可能存在错误帧,属于正常现象。如果不可用,可以重新给目标板上电。
General界面配置与CAN总线类似,如下所示:
注意:这里取消目标节点VDDM和VectorSimulationNode的勾选,如下所示:
为了确保目标板的Flexray能被唤醒,可以在Hardware中进行如下配置:
目前在实现Flexray的回放时,回放的数据流中,其他节点发空帧(NULL Frame),目前还不能确认配置操作哪里设置不对,或者存在怎样冲突,示意如下:
关闭Flexray回放操作,使用IG模拟其他节点的NM发送,唤醒目标板的Flexray。
回放原始录制的log数据,单独将Flexray总线数据重新录制。具体操作步骤如下:
1、选择需要过滤的Flexray Channel并回放原始log数据,过滤"Chn"如下所示:
2、保存过滤后的Flexray Channel数据,操作:右击Trace界面->Import/Export->Export...
4、在Flexray的Replay blocks中,重新加载录制后的Fr数据
提示:上述措施一、措施二如果均无效,参考措施三中的Flexray数据重新录制和Replay操作。
Analysis->Measurement Setup->切换至Offline模式,加载原始log数据。
右击->Insert Event Filter->Flexray
从通信矩阵中选择要过滤的节点(eg:VDDM),选择VDDM的所有发送报文,即:回放数据时,VDDM节点的所有外发报文不回放,由真实节点发送。之后Apply->OK
单击启动按钮,数据开始回放。VDDM节点数据由真实控制器发送(CANoe Rx),其他节点数据由CANoe通过数据log仿真发送(Tx),如下所示: