4. 诊断数据预处理与质量检查

TCMS 诊断数据的可靠性,不取决于分析算法有多先进,而取决于进入分析环节的数据本身是否干净、对齐、可信。车载 TCMS 通过 MVB/以太网总线周期采集车辆状态、故障码、事件记录和模拟量,这些原始数据在落地时往往带有三类"先天缺陷":一是缺失,例如某站点通信中断导致连续若干帧没有记录;二是时间错位,不同子系统(牵引、制动、车门、空调)的时钟源不一致,同一物理事件在各日志中的时间戳相差数百毫秒甚至数秒;三是异常值,包括传感器跳变、量程溢出、重复上报和故障瞬间的毛刺。预处理的任务,就是在诊断之前把这三类问题识别出来并妥善处置,使后续的故障定位、趋势分析和工单生成建立在可信输入之上。

数据清洗:先统一口径,再谈分析

数据清洗的第一步不是删数据,而是统一数据口径。城轨车辆诊断数据通常包含多个来源:事件日志(带时间戳的故障码与状态字)、模拟量采样(如网压、电机电流、制动缸压力)、里程与站点信息、以及维护人员手工录入的检修记录。清洗时要处理的问题包括:字段类型不一致(同一故障码在不同子系统里可能是字符串"P0123"或整数123)、单位不统一(压力有的用 bar 有的用 kPa)、编码重复(同一故障在不同日志中用了不同别名)、以及无效记录(全零行、测试模式下的占位数据)。

实际操作中,建议先建立一份字段映射表,把各来源的关键字段对齐到统一命名和单位,再按记录级别过滤明显无效行。例如某线路车辆的事件日志中,故障码字段存在"0x0000"占位值,这类记录应在清洗阶段标记为无效而非直接删除,保留其时间戳用于判断通信是否正常。清洗的原则是"可追溯":每一条被修改或剔除的记录都应留下标记字段,便于后续复核,而不是静默丢弃。

缺失值处理:区分"没采到"和"没发生"

缺失值是诊断数据中最容易被误处理的问题。关键判断在于:这条缺失记录代表"传感器没采到",还是"该事件本来就没有发生"?前者需要插补或标记,后者不应插补。例如车门状态量在列车运行区间内本应持续有值,若出现连续缺失,说明通信或采集环节异常;而某些故障码只在触发时上报一次,未上报即代表正常,不能按缺失处理。

对于确实需要插补的连续模拟量,常用方法有三种:短时缺失(如少于3个采样周期)可用线性插值;较长缺失且变化平缓的量(如网压)可用前值保持并标注置信度下降;对于故障诊断关键的开关量,宁可不插补,而是标记为"未知"并在诊断规则中显式处理该状态。下面是一段示例性的缺失标记逻辑(参数为教学假设值):

# 示例:按采样周期判断连续缺失并标记
SAMPLE_PERIOD = 0.1      # 秒,假设10Hz采样
MAX_GAP_LINEAR = 3       # 允许线性插值的最大连续缺失点数
for signal in ["网压", "电机电流", "制动缸压力"]:
    gap = 0
    for t, v in signal_stream[signal]:
        if v is None:
            gap += 1
            if gap <= MAX_GAP_LINEAR:
                mark(t, "插补-线性")
            else:
                mark(t, "缺失-未知")
        else:
            gap = 0

插补后的数据必须带质量标记,诊断规则在引用插补点时降低其权重,避免用"编造"的数值得出确定性结论。

时间对齐:把多源日志拉到同一时间轴

时间对齐是城轨车辆诊断中最具工程价值的一步。不同子系统的时钟独立运行,长期累积会产生漂移;即使同一总线上的数据,事件日志与模拟量采样的时间基准也可能不同。对齐的目标是:让"牵引故障触发"与"当时网压跌落"这两个来自不同来源的记录,在时间轴上能够正确对应。

常用做法是选取一个主时钟源(通常是 TCMS 中央记录单元),以它为基准,对其他来源做偏移校正。偏移量可通过共同事件估计:例如某次受电弓升降或车门开关动作会同时出现在多个日志中,用这些"锚点事件"计算各来源相对主时钟的平均偏差,再整体平移。对于存在时钟漂移的来源,还需按时间段分段校正,而不是只用一个固定偏移。对齐精度要求取决于诊断对象:故障码与状态字的关联通常要求百毫秒级,而趋势分析可放宽到秒级。对齐完成后,应输出一份时间偏差报告,记录各来源的校正量和残余偏差,作为数据质量证据保留。

多源诊断数据预处理流程与质量检查 事件日志 故障码/状态字 模拟量采样 网压/电流/压力 里程与站点 位置上下文 检修记录 人工录入 数据清洗 字段映射统一 单位/编码归一 无效行标记 保留可追溯标记 缺失值处理 区分"未采到/未发生" 短缺失线性插值 长缺失标记未知 时间对齐 主时钟基准 锚点事件估偏移 分段校正漂移 异常值识别 量程/跳变检查 重复上报去重 毛刺与溢出标记 质量检查 完整率/缺失率 时间偏差报告 异常占比阈值 可靠 诊断 输入 带质量标记 时间对齐示意:锚点事件将各来源拉到主时钟轴 t0 t1 锚点 来源A 来源B偏移

异常值识别:用规则和统计双管齐下

异常值识别要避免"一刀切"。城轨车辆数据中的异常有两类:一类是物理上不可能的,如制动缸压力为负值、网压超过量程上限、车速在1秒内从0跳到80 km/h,这类可用硬阈值规则直接标记;另一类是统计上偏离但物理上可能,如某电机电流在正常波动范围内突然出现一个尖峰,可能是真实故障前兆,也可能是采样毛刺,需要结合持续时间和相邻点判断。

工程上常用的组合策略是:先做量程与变化率检查(硬规则),再做基于滑动窗口的统计检查(如3σ或中位数绝对偏差),最后对重复上报做去重(同一故障码在短时间内多次出现,保留首次并计数)。异常值不一定删除,更合理的做法是标记为"可疑"并保留原值,让诊断规则决定是否采信。例如某次牵引故障分析中,电机电流出现单点尖峰,若直接删除可能丢失故障线索,标记后结合前后趋势判断,反而能定位到真实的电流传感器接触不良。

质量检查:给诊断输入一个"体检报告"

预处理完成后,应输出一份可量化的质量检查结果,作为诊断结论可信度的依据。建议至少包含四项指标:数据完整率(有效记录数/应有记录数)、缺失率及缺失分布、时间对齐残余偏差(各来源相对主时钟的最大偏差)、异常值占比。可以为每项设定阈值,例如完整率低于95%或时间偏差超过200 ms时,诊断结果需标注"输入质量受限"。这份报告不必复杂,但必须与具体数据绑定,能够回答"这次诊断用的数据到底靠不靠谱"。

预处理不是一次性动作。城轨车辆数据随运营持续产生,建议将清洗规则、缺失标记逻辑、时间对齐参数和质量阈值固化为可重复执行的脚本或工具配置,每次诊断前自动运行,避免人工处理带来的口径漂移。

把上述环节串起来看,数据清洗解决"口径一致",缺失值处理解决"信息完整",时间对齐解决"多源可关联",异常值识别解决"数值可信",质量检查则给出整体判断。四者共同构成诊断输入的质量防线,任何一环缺失,后续的故障定位和工单处理都可能建立在错误前提上。