Canmetry
打开工作台

ASC 转 MAT 转换器:把 CANoe 日志用 DBC 解码。

这个 ASC 转 MAT 转换器把 CANoe 的 ASC 日志转成 .mat 或 CSV,用你的 DBC 解码,不需要工具箱。

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

把 ASC 文件拖到这里

或

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

CAN · CAN FD · 1 µs 时间戳

什么时候 ASC 日志需要变成信号

ASC 是文本日志:打开容易,分析很难。用 DBC 把 ASC 转成 MAT 或 CSV,就能在真正做分析的工具里直接用上有名字的信号。

804000 s60 skm/h

不装工具箱也能 ASC 转 MAT

MATLAB 的 canSignalImport 读取 ASC 文件需要 Vehicle Network Toolbox。这个转换器写出的是普通结构体和数组,.mat 文件在 MATLAB 里不用任何附加组件就能打开。

批量 ASC 转 MAT

台架每跑一次就生成一个 ASC。一次最多转换 5 个,各自生成 .mat 或 .csv,不用在 CANoe 里反复做 Logging File Conversion。

from scipy.io import loadmat
d = loadmat('drive.mat', squeeze_me=True,
            struct_as_record=False)
# fields: time, value, unit
speed = d['ESP_VehicleSpeed']

替换手写的 ASC 解析脚本

正则脚本遇到十六进制或十进制文件头、CAN FD 行和错误帧就容易出错。转换器能读取这些变体,直接给你解码后的信号。

给 Excel 和 Python 用户的 ASC 转 CSV

.csv 和 .mat 在哪里都能打开。把解码后的信号发给同事或附在缺陷单里,不用连原始 ASC 日志一起发出去。

让 ASC 日志过一遍你的 DBC

四步都在浏览器标签页里完成。ASC 文件和 DBC 都不会离开你的电脑。

  1. 添加 ASC 日志

    拖入最多五个 .asc 文件。读取时会应用文件头里的十六进制或十进制设置,并列出其中的 CAN 通道,包括 CAN FD。

  2. 给 ASC 里的每个通道关联 DBC

    ASC 的每一行都带通道号,所以每个通道都可以有自己的数据库。给每个通道选一个,或者把 DBC 拖到通道文件夹上。

  3. 选择 .mat 或 .csv 输出

    给 MATLAB 和 SciPy 选 .mat,给 Excel 和 pandas 选 .csv,然后起个文件名。

  4. 完成 ASC 转 MAT 并下载

    每个 ASC 用你的 DBC 解码,各自保存成 .mat 或 .csv,可以直接下载。

MAT 文件里会有什么

ASC 转 MAT 只保留解码后的信号,保持完整精度,时间以第一帧解码报文为起点,单位是秒。

infostruct
source'drive.asc'
channels[1 2]
signal_count630
time_unit's'
ESP_VehicleSpeedstruct
timeN×1 double
valueN×1 double
signal'VehicleSpeed'
message'ESP'
unit'km/h'
channel1
VCU_DrvTorReq · BMS_PackVoltage · …
  • .mat 里的信号结构体

    信号以名为“报文名_信号名”的结构体保存,各带时间和数值数组、单位、报文和通道。每个信号保留自己的时间数组,不做重采样,info 结构体写明源 ASC 及其通道。

  • 给电子表格用的 CSV

    每个采样点一行,列为 time_s、time_us、channel、message、signal、value 和 unit,可以直接在 Excel 或 pandas 里打开。

  • 没有解码成 CAN 帧的行会被跳过

    只写出解码后的 CAN 帧。没有任何已关联 DBC 定义的 ID、没有 DBC 的通道、远程帧、错误帧,以及 LIN 或状态事件这类非 CAN 行都会被跳过;给每个通道关联 DBC,才能把其余的带进来。

  • 批量与大小上限

    一次五个 ASC,每个最大 150 MiB。单个 CSV 最多 2,000,000 行,所以较长的日志更适合写成没有行数限制的 MAT。

ASC 转 MAT:你可能想问

把 ASC 日志转成 MAT 要几步?

添加 .asc,给每个 CAN 通道关联 DBC,选 MAT,点击转换后下载。ASC 的读取、解码和写出都在你的浏览器里完成。

ASC 本来就是文本,为什么还要 DBC?

因为它是文本形式的原始报文:每行是时间、通道、ID 和数据字节。只有 DBC 才说明这些字节如何拆成有名字、有系数的信号。

一定要 Vehicle Network Toolbox 吗?

在这里不需要。MATLAB 的 canSignalImport 能读 Vector ASC,但要有 Vehicle Network Toolbox。这个转换器写出的是普通结构体和数组,.mat 用普通 MATLAB 或 SciPy 就能打开。

它能读懂哪些 ASC 格式?

CANoe 和 CANalyzer 的 Vector ASC,十六进制或十进制取自文件头,支持经典 CAN、CAN FD 和错误帧。其他工具按同样格式写出的 ASC,比如 python-can,通常也能按同样方式读取。

能一次转换一整轮测试吗?

一次最多五个 .asc,每个 150 MiB,每个文件各生成自己的 .mat 或 .csv。这样就不必反复用 CANoe 的 Logging File Conversion,也不用维护脚本。

哪些行不会进入输出?

所有不是已解码 CAN 帧的内容:ID 不在已关联 DBC 里的报文、没有 DBC 的通道、远程帧和错误帧,以及 LIN 或状态事件这类非 CAN 行。

CAN FD 行会被解码吗?

会,数据最长 64 字节,FD 信号不会在第 8 个字节处被截断。

ASC 日志转 MAT 还是 CSV?

MATLAB 和 SciPy 选 MAT:没有行数限制,每个信号保留自己的时间数组。Excel 和 pandas 选 CSV,上限是 2,000,000 行,较长的日志可能会超出。