报文回放

在线回放

为什么需要在线回放报文?

  1. 复现问题场景

    在网络通信系统(如CAN总线)中,某些问题可能只在特定的报文交互场景下才会出现。通过在线回放报文,可以将之前记录的报文重新发送到总线上,从而精确地复现问题发生的场景,便于定位和解决问题。

    例如,某些偶现的故障可能与特定的报文序列有关,通过在线回放可以重现这些报文序列,帮助快速找到问题。因为偶发性故障很难在实时环境中捕捉,通过在线回放报文,可以在离线环境中反复重现故障场景,从而更高效地排查问题。

  2. 模拟真实网络环境

    在线回放报文可以模拟真实的网络通信环境,包括报文的发送时间间隔、报文内容等。支持基于时间戳的报文发送,可以按照实际记录的时间顺序和间隔发送报文,从而更真实地模拟真实环境。这对于测试网络设备、协议栈或软件在实际运行中的表现非常重要。

    例如,通过在线回放可以模拟高负载的网络环境,测试系统在极端条件下的稳定性和性能。

  3. 优化开发和测试流程

    在线回放提供了一种灵活的测试手段,可以快速切换不同的报文序列和测试场景,减少测试准备时间。

    例如,通过脚本和通道映射功能,可以灵活地选择需要回放的报文和发送通道,甚⾄可以屏蔽某些不需要的报文。

如何在线回放报文?

  1. 以同星工具为例,打开同星工程,找到总线回放的选项卡,选择在线回放。

  2. 选择要回放的文件。

  3. 报文回放设置。

    根据需要修改配置,下图只是一个示例配置(只修改了红框的配置,其他都是默认的)。

  4. 开始回放。

关于通道映射

我的工程只用了一个通道,如果是台架测试的报文,默认也是通道1,所以通道映射不用修改。

如果要回放实车报文,需要知道ECU所在的通道,假设ECU所在通道是通道8,就需要将通道8映射到通道1。

离线回放

以CANoe工具为例,其他工具的方法大同小异。

  1. 导入DBC文件。

    DBC文件是用于描述和解释车辆中CAN网络上传输的数据的数据库文件。主要用来做数据解析:DBC文件包含有关CAN总线上各个信号的信息,例如每个信号的比特位置、长度、比例因子、偏移量等。这些信息使得接收报文的电子控制单元(ECU)或分析人员能够理解报文中的各个数据位代表的物理或逻辑含义。

  2. 导入要回放的文件。

  3. 确定CAN报文中,我们要看的是哪个通道的报文。

    可以根据ECU的网络管理报文确认通道,先点start运行,在Trace窗口过滤网络报文ID。确认通道后,要在simulation里面设置,确保通道一致。

  4. 添加想要分析的信号,添加完后,再点一次Start运行。

  5. 设置图形样式,方便查看。按照个人习惯设置即可,一般设置如下:

    1:选中,用来显示信号图例。

    2/3:设置光标。

    4:不选择,关掉。

    5:Start运行后,选择Fit All Signals Y。

    6:选择Show Signals in Separate Diagrams(分离显示)。

    7:如下图,网格,采样点,纵坐标,都打开。

问题分析

CAN报文时间查看方式:

  1. 在Graphics窗口里面配置;

  2. 查看时间报文。一般会有ECU节点发送时间报文,时间数据可能来源于GPS,如果没有GPS,则数据不准确。注意:如果是UTC时间,小时的数据会存在相差8小时的情况。

问题记录

如果导入回放文件出现上面这种红色感叹号的图标,那么有可能回放出来的报文,在Trace窗口什么都看不到,但是把文件拖拽到Trace窗口又是有报文的。而且,用notepad++打开也是有数据的。这种情况把文件拖拽到Trace窗口,然后右键export,重新导出asc/blf格式,然后保存。再用这个新保存的文件去回放就可以了。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2025 wrd
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信