Canmetry
打开工作台

BLF 里的每一帧 CAN 报文,各占一行

导出的是原始报文而不是解码后的信号:一份 CSV,可以用 Excel、pandas 或数据库处理,字节排布、ID 格式和文件大小都由你决定。

第 1 步,共 3 步 · 上传日志

把 BLF 文件拖到这里

或

.blf 文件最大 150 MiB,一次最多 5 个。转换在你的浏览器里完成,文件不会离开你的电脑。

CAN · CAN FD · 1 µs 时间戳

报文表格适合做什么

报文流水适合读某一小段,表格适合对整份采集提问。

  • 在 Excel 里筛选和透视

    按 ID 排序、只看某个通道,或者透视出每个 ID 的帧数,看哪些报文占满了总线。

  • 载入 pandas、R 或 SQL

    一帧一行,对 ID 列做分组就能得到各报文的数量,对时间列做差分就能得到每个 ID 的真实周期。

  • 盯住某一个字节

    每字节一列后,滚动计数或状态位就是一列可以画图、可以筛选的数据,不用再切十六进制字符串。

  • 交给没有 Vector 工具的人

    CSV 在哪里都能打开。同事或供应商不需要 CANoe、BLF 读取器或脚本,就能看你的报文。

导出之前先定好表格的样子

四个选项决定 CSV 怎么读。默认是紧凑形式,其余几个是为电子表格准备的。

数据字节:一列,或每字节一列

一列把数据保留为十六进制字符串,例如 8F 02 11。每字节一列会生成 D0、D1 等列,列数取日志里最长的那一帧。

ID:十六进制或十进制

十六进制与 DBC 和 CANoe 的显示一致;十进制更方便排序、关联和在数值工具里比较。

时间:从第一帧起,或 Unix 时间

从第一帧起的秒数让每份采集都从 0 开始;Unix 时间会保留 BLF 记录的真实时钟时间。

文件大小:单个文件,或 Excel 可开的分段

Excel 最多 1,048,576 行。拆分选项会写出每段 1,000,000 行的文件,每段都有自己的表头。

每一列是什么

每一行就是记录仪记下的一帧,不做解码,也不做过滤。

Time (s)ChannelID (hex)LengthData (hex)
0.00000011A088F 02 11 00 00 00 00 3C
0.01000313E8800 40 1F 00 01 00 00 00
0.012180218DAF1101262 F1 90 57 41 55 …
列示例含义
Time (s)0.012180距第一帧的秒数,精确到微秒;选择 Unix 时间时则是 Unix 秒。
Channel2通道号,和 CANoe 一样从 1 开始。
ID (hex)18DAF110仲裁 ID,不带 0x。29 位 ID 会显示全部位数。
ID format29-bit标准 ID 为 11-bit,扩展 ID 为 29-bit。
TypeCAN FDCAN、CAN FD、Remote 或 Error。
Length12数据长度(字节),CAN FD 最多 64。
Data (hex)62 F1 90 …十六进制数据:一列,或 D0、D1 等多列。

用 Excel、pandas 或 DuckDB 打开

文件是带表头的 UTF-8,打开时不需要导入向导。

drive_part1.csvData → Get Data → From FolderID (hex) → Text

Excel

直接双击打开。如果选了 Excel 可开的分段,可以用「数据、获取数据、从文件夹」一次加载。把 ID 列设成文本,避免 1E3 这样的 ID 被当成数字。

import pandas as pd
df = pd.read_csv("drive.csv",
                 dtype={"ID (hex)": str})
# cycle time of one ID
df[df["ID (hex)"] == "1A0"]
  ["Time (s)"].diff().describe()

pandas

把 ID 按字符串读取,让 1A0 和 257 这样的值保持同一种列类型。

SELECT "ID (hex)", count(*) AS n
FROM 'drive.csv'
GROUP BY 1 ORDER BY n DESC;

DuckDB

直接在文件上查询,不需要导入。

上限、文件大小和大型采集

报文表格很容易变得很大,规划时可以参考这几个数字。

  • 单个文件最多 2,000,000 行

    选单个文件时,帧数更多的日志会提示后停止。选 Excel 可开的分段后,一份日志最多可以有 5,000,000 帧,前提是 CSV 总大小不超过约 400 MB。

  • 每行大约 90 到 140 字节

    十六进制一列的形式更小;CAN FD 下每字节一列更大。每段 1,000,000 行大约是 90 到 140 MB。

  • 一次五份日志,每份最大 150 MiB

    每个 BLF 生成自己的 CSV(或自己的一组分段),并保留原来的名字。

  • 想要的是信号值而不是报文?

    这个页面写出的是记录下来的原始报文。要带单位的解码信号,请用 BLF 转 MAT 转换器,它会套用你的 DBC。

BLF 转 CSV 常见问题

怎么在 Excel 里打开 BLF 文件?

Excel 不能直接读 BLF。先在这里导出成 CSV,再用 Excel 打开 CSV。如果采集超过 1,048,576 帧,选 Excel 可开的分段,让每个文件都能放进一张工作表。

为什么 Excel 把 1E3 这样的 ID 变成了数字?

Excel 会把 1E3 当作科学计数法,显示成 1000。把 ID 列按文本导入,或者导出时让 ID 用十进制。

这和 BLF 转 MAT 有什么区别?

这个页面写出原始报文:ID、长度和字节。BLF 转 MAT 会套用 DBC,写出带单位的解码信号值。想检查总线就用报文,想要物理量就用信号。

时间戳是绝对时间吗?

默认是距第一帧的秒数。如果 BLF 记录了时钟时间,并且你选了 Unix 时间,第一帧会保留真实时间;没有时钟时间的日志会退回成距第一帧的秒数。

错误帧和 CAN FD 帧会包含吗?

会。Type 列会写 CAN、CAN FD、Remote 或 Error,Length 列最多显示 64 字节。错误帧没有 ID。

我的 BLF 会被上传吗?

不会。文件在你的浏览器标签页里读取,CSV 也在本地写出,所以试制车辆的采集不会离开你的电脑。

为什么提供每字节一列?

电子表格没法干净地切开 8F 02 11 这样的十六进制字符串。用 D0、D1 等列,每个字节都是一列,可以单独转换、画图或筛选。