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 中央记录单元),以它为基准,对其他来源做偏移校正。偏移量可通过共同事件估计:例如某次受电弓升降或车门开关动作会同时出现在多个日志中,用这些"锚点事件"计算各来源相对主时钟的平均偏差,再整体平移。对于存在时钟漂移的来源,还需按时间段分段校正,而不是只用一个固定偏移。对齐精度要求取决于诊断对象:故障码与状态字的关联通常要求百毫秒级,而趋势分析可放宽到秒级。对齐完成后,应输出一份时间偏差报告,记录各来源的校正量和残余偏差,作为数据质量证据保留。
异常值识别:用规则和统计双管齐下
异常值识别要避免"一刀切"。城轨车辆数据中的异常有两类:一类是物理上不可能的,如制动缸压力为负值、网压超过量程上限、车速在1秒内从0跳到80 km/h,这类可用硬阈值规则直接标记;另一类是统计上偏离但物理上可能,如某电机电流在正常波动范围内突然出现一个尖峰,可能是真实故障前兆,也可能是采样毛刺,需要结合持续时间和相邻点判断。
工程上常用的组合策略是:先做量程与变化率检查(硬规则),再做基于滑动窗口的统计检查(如3σ或中位数绝对偏差),最后对重复上报做去重(同一故障码在短时间内多次出现,保留首次并计数)。异常值不一定删除,更合理的做法是标记为"可疑"并保留原值,让诊断规则决定是否采信。例如某次牵引故障分析中,电机电流出现单点尖峰,若直接删除可能丢失故障线索,标记后结合前后趋势判断,反而能定位到真实的电流传感器接触不良。
质量检查:给诊断输入一个"体检报告"
预处理完成后,应输出一份可量化的质量检查结果,作为诊断结论可信度的依据。建议至少包含四项指标:数据完整率(有效记录数/应有记录数)、缺失率及缺失分布、时间对齐残余偏差(各来源相对主时钟的最大偏差)、异常值占比。可以为每项设定阈值,例如完整率低于95%或时间偏差超过200 ms时,诊断结果需标注"输入质量受限"。这份报告不必复杂,但必须与具体数据绑定,能够回答"这次诊断用的数据到底靠不靠谱"。
把上述环节串起来看,数据清洗解决"口径一致",缺失值处理解决"信息完整",时间对齐解决"多源可关联",异常值识别解决"数值可信",质量检查则给出整体判断。四者共同构成诊断输入的质量防线,任何一环缺失,后续的故障定位和工单处理都可能建立在错误前提上。