3. 测量数据导入与格式解析

在 INCA 的测量数据分析链路中,MDA 并不直接“读原始记录仪文件”,而是先把测量数据导入为内部可分析的数据集。导入阶段决定了后续能看到哪些通道、时间轴是否可信、信号能否与标定/模型对应。因此,理解支持格式、MDF/MF4 的物理结构、通道映射规则以及采样率与时间同步处理,是使用 MDA 做可靠分析的前提。

一、MDA 支持导入的数据格式

INCA 生态中,测量数据最常见的载体是 MDF(Measurement Data Format)系列,包括 MDF 3.x(.dat/.mdf)与 MDF 4.x(.mf4)。MDA 对这两类文件都能解析,但内部处理路径不同:MDF 3 使用块式结构,MDF 4 使用基于 XML 元数据 + 数据块的结构。除 MDF 外,实际项目中还会遇到:

  • INCA 原生实验数据:由 INCA 记录生成的 .dat/.mf4,通常已带完整通道描述与标定信息,导入后可直接分析。
  • 第三方 MDF 文件:来自 CANape、CANoe、Vector 工具链或其它记录仪,通道命名与单位可能不统一,需要映射。
  • CSV/TXT 文本数据:常用于快速导入台架或手工记录数据,但缺少元数据,时间列与通道列需人工指定。
  • BLF、ASC 等总线记录:通常先经转换工具转为 MDF 再导入,MDA 本身不直接解析原始总线日志。

导入时首先要确认文件是否包含“测量变量描述”和“时间戳”两类信息。若只有数值矩阵而无通道名,MDA 只能按列号导入,后续分析会非常困难。因此,优先选择带完整元数据的 MDF/MF4 文件。

二、MDF/MF4 文件结构:从块到通道

MDF 文件不是简单的表格,而是由多个“块”组成的层次结构。理解这一结构,才能在导入异常时定位问题。MDF 3 的核心块包括:

  • IDBLOCK:文件标识,记录格式版本与创建工具。
  • HDBLOCK:头块,包含文件级信息,如时间起点、通道组数量。
  • DGBLOCK:数据组块,一个文件可含多个数据组,每组有独立采样率与记录区间。
  • CGBLOCK:通道组块,描述一组同步采样的通道,是“采样率”的归属单位。
  • CNBLOCK:通道块,定义单个通道的名称、单位、数据类型、转换公式与物理量。
  • CCBLOCK:通道转换块,保存线性或多项式转换系数,把原始值转为物理值。
  • DTBLOCK:数据块,存放实际采样值,按通道组顺序排列。

MDF 4(MF4)在概念上类似,但用 XML 描述元数据,数据块独立存放,并支持更丰富的数据类型与压缩。导入 MF4 时,MDA 先解析 XML 中的 ChannelGroup、Channel、Conversion 等节点,再按 DataBlock 读取数值。若 XML 中缺少转换信息,通道会以原始值显示,需要手动补充转换。

MDF/MF4 文件结构到 MDA 数据集的映射 文件物理结构 IDBLOCK / XML 头 HDBLOCK 文件头 DGBLOCK 数据组 CGBLOCK 通道组(采样率) CNBLOCK 通道定义 CCBLOCK 转换系数 DTBLOCK 采样数据 解析 MDA 内部数据集 时间轴 绝对时间起点 + 相对时间戳,统一为秒或毫秒 通道组 A(100 Hz) n_eng / T_eng / p_rail 同步采样,共享时间戳 物理值 = 原始值 × a + b 通道组 B(10 Hz) T_cool / v_veh 独立采样率,需重采样对齐 导入后按时间轴插值 通道与信号映射 MDF 通道名 → INCA 测量变量 → 标定/模型信号 导入检查点 时间起点是否一致 · 采样率是否正确 · 单位与转换是否生效

三、通道与信号映射

MDF 中的“通道”是文件里的数据列,而 INCA 中的“测量变量”是标定与模型可识别的信号。导入时,MDA 需要把通道名映射到测量变量名。映射通常有三种情况:

  1. 名称完全一致:INCA 记录的文件中,通道名就是测量变量名,导入后自动匹配,无需干预。
  2. 名称有差异:第三方文件可能用 EngSpeed 而 INCA 用 n_eng,此时需要在导入向导中建立映射表,或使用别名规则批量替换。
  3. 无名称或名称重复:只能按列号导入,建议导入后立即重命名,否则后续分析无法区分。

映射不仅影响名称,还影响单位与转换。例如某通道原始值为 0~65535 的 ADC 码,CCBLOCK 中定义物理值 = 原始值 × 0.0015259 + 0,则导入后应显示为 0~100 %。若转换块缺失,MDA 会显示原始码,此时需手动指定转换公式。实际项目中,建议在导入前用 MDF 查看工具确认每个通道的 Unit、Conversion 和 DataType,避免把原始码当成物理值分析。

四、采样率与时间同步处理

一个 MDF 文件常包含多个通道组,每组有独立采样率。例如发动机转速以 100 Hz 记录,冷却液温度以 10 Hz 记录。MDA 导入时不会强行统一采样率,而是保留各组原始时间戳,在分析时按需重采样。这里的关键是“时间同步”:

  • 绝对时间起点:每个数据组有自己的起始时间。若两组起点不同,直接叠加会导致相位错位。MDA 会读取各组时间戳,按绝对时间对齐。
  • 相对时间戳:组内每个采样点的时间相对于该组起点。导入后统一换算为绝对时间或统一相对时间。
  • 重采样:当需要把 10 Hz 信号与 100 Hz 信号画在同一时间轴时,MDA 对低速信号做插值(线性或保持),对高速信号做抽取。插值会引入误差,因此分析快速瞬态时应优先使用原始高速通道。
  • 时间偏移修正:若记录仪与 ECU 时钟不同步,可能出现固定时间偏移。可在导入后手动输入偏移量,把两组信号对齐。
导入前先确认三件事:文件是否含转换系数、通道名能否映射到测量变量、各组时间起点是否一致。这三项决定了后续分析是否可信。

五、导入操作中的实际判断

以一份典型的 MF4 文件为例:文件含两个通道组,组 A 为 100 Hz 的 n_eng、T_eng,组 B 为 10 Hz 的 T_cool。导入时,MDA 先解析 XML,识别出两个 ChannelGroup,再读取各自的数据块。若发现 T_cool 的单位为 degC 而 INCA 期望 °C,映射时需统一单位,否则数值虽对但单位标注错误。

导入完成后,建议立即做一次快速检查:在 MDA 中同时绘制 n_eng 与 T_cool,观察时间轴是否从同一时刻开始、曲线是否出现异常台阶或跳变。若 T_cool 在 100 Hz 时间轴上呈现阶梯状,说明重采样使用了保持插值,属于正常现象;若出现明显时间偏移,则需回到导入设置中修正时间起点。只有确认时间轴与通道映射正确,后续的统计分析、滤波和报告才有意义。