Canmetry
打开工作台

拆分和截取大型 ASC 文件

只保留需要的时间段和 CAN ID,或按时长、大小拆分。每一份仍是标准 ASC 文件。

在浏览器里流式读取 · 不限大小 · 不上传

把 .asc 日志拖到这里

或

文件按块读取,几 GB 的日志也没问题。文件不会离开你的电脑。

CAN · CAN FD · 1 µs 时间戳

为什么大型 ASC 文件难打开、难导入、难分享

ASC 是纯文本,读起来方便,体积却很大。每一帧都是一行大约 50 字节的文本,繁忙的整车总线每秒要记录几千帧。几路 CAN 记录一小时,很快就超过 1 GB。

  • 导入 MATLAB 时内存不够

    canMessageImport 会先把 ASC 文件里的每一条报文读进一个 timetable,之后才能用 DBC 解码信号。几个小时里那些用不上的总线报文,在分析开始前就把内存占满了。

  • 工具变慢,文件也发不出去

    几 GB 的日志在 CANoe 和 CANalyzer 里要加载好几分钟,文本编辑器直接打不开,邮件和缺陷系统也会拒收几十 MB 以上的附件。

  • 脚本和评审都耗在无关数据上

    只关心一个 ECU 时,python-can 或正则脚本仍要解析每一行。评审的人要翻过一小时的正常行驶,才能找到故障发生的那十秒。

四步拆分 ASC 文件

ASC 拆分工具把日志按块读两遍:第一遍展示文件里有什么,第二遍写出文件。全程不上传。

  1. 打开 ASC 日志

    拖入或选择 .asc 文件。第一遍读取会按通道列出每个 CAN ID 及其帧数,并画出整段记录的报文密度,繁忙和空闲的时段一目了然。

  2. 选择时间段

    在密度图上拖动框选需要的那几分钟,拖动边缘微调,或者直接输入开始和结束的秒数。

  3. 保留需要的 CAN ID

    取消勾选只会带来干扰的通道和 ID。可以按十六进制 ID 或通道搜索,错误帧等其他带时间戳的行用一个复选框决定去留。

  4. 选择输出并下载

    写出一个截取后的文件,或每 N 秒、每 N MB 拆分一次 ASC 文件。截取前会实时预估行数、大小和文件数。

截取、筛选还是拆分:ASC 拆分工具的四种用法

想拆分 ASC 文件的人,大多遇到的是下面几个问题之一,每个问题都对应工具里的一个设置。

  • 把大型 ASC 文件导入 MATLAB

    只保留 DBC 能解码的 ID 和要分析的那段行驶,再对截取后的文件运行 canMessageImport。如果还是太大,就按时长拆分,在循环里逐个导入,边导入边追加解码后的信号。这样内存只和一份文件有关,而不是整段日志。

  • 给缺陷单附上一段事件

    框选故障前后三十秒,保留原始时间戳。截取后的 ASC 日志能和视频、测试报告、完整记录对上时间,修问题的人能准确看到当时发生了什么。

  • 把长记录拆成规整的几份

    把一次台架测试或耐久试验拆成每份十分钟的 ASC 文件,每份都以同样的文件头开头。文件按时间顺序编号,批量处理和并排对比都很方便。

  • 满足上传或邮件的大小限制

    文件共享、缺陷系统或客户门户限制附件大小时,按大小拆分。设成每份 25 MB 或 100 MB,当前文件一到上限就自动开始下一份。

输出文件里什么会变,什么不变

拆分工具只复制日志行,不做解码再重写,所以每个输出都忠实于原始的 Vector ASC 日志。

不限文件大小

日志按块流式读取,无论 ASC 文件是 50 MB 还是 5 GB,内存占用都很平稳。一个 500 MB、一千万帧的日志,在笔记本上几秒就能扫描完。

日志行原样复制

经典 CAN 与 CAN FD 行、注释和厂商附加列都原样写回。十六进制和十进制日志都支持。

每份都有文件头

date、base、internal events 等行会复制到每个输出文件的开头。如果日志开了 trigger block,每份都会正确结束它,CANoe 能单独打开任何一份。

时间戳由你决定

默认保留原始时间,各份文件之间能对齐。勾选“时间戳从 0 开始”会减去时间段起点,小数位数和原文件一致。

错误帧和其他行

错误帧、统计和标记由一个复选框统一保留或去掉。正文中不带时间戳的行不会复制。

数据留在你的电脑上

文件由浏览器读取和截取。不上传任何内容,不需要账号,关闭标签页后全部清除。

ASC 文件拆分常见问题

大型 ASC 文件导入 MATLAB 内存不够,怎么办?

在 MATLAB 读取之前先把文件变小:把 ASC 日志截取到需要的时间段,只保留 DBC 能解码的 CAN ID,或者按时长拆分后用 canMessageImport 逐个导入。如果只需要解码后的信号,ASC 转 MAT 工具可以直接写出 .mat 文件,不需要 Vehicle Network Toolbox。

有文件大小限制吗?

没有。ASC 拆分工具流式读取文件,不会整个读进内存,几 GB 的日志也能处理。输出很大时写出需要更久,进度条会显示进度。

CANoe 和 CANalyzer 能打开拆分后的文件吗?

能。每份文件都以原始文件头开头,事件行按原样保留,CANoe、CANalyzer、MATLAB 和 python-can 都能像读原日志一样读取。

按时间拆还是按大小拆?

各份文件需要和测试步骤、驾驶循环或其他记录对齐时,按时间拆。限制来自上传、附件或处理不了大文件的工具时,按大小拆。

错误帧和非 CAN 行会怎样?

错误帧、统计、标记等带时间戳但不是 CAN 帧的行默认保留,取消勾选“保留其他带时间戳的行”即可去掉。

能拆分 BLF 或 MF4 日志吗?

暂时不能,这个工具读取 Vector ASC。想从 BLF 或 MF4 取出信号,可以用 BLF 转 MAT 或 MF4 转 MAT;也可以先用 BLF 转 ASC 把 BLF 转成 ASC。