工业数据清洗:车间脏数据、时间戳与振动信号的工程化处理

凌晨两点,注塑机旁边的边缘网关又丢包了。屏幕上主轴电流曲线像心电图一样抽风,报警却死活不触发。那一刻我特别想砸键盘——后来发现,不是模型不行,是数据清洗没做透。工业数据清洗,说白了就是把传感器、PLC、MES、手工记录里那些带刺的原始记录,变成能算、能信、能追溯的中间层。它不性感,但它决定你后面做特征工程、故障诊断、数字孪生时,到底是在挖金矿还是在扒垃圾。

时间戳:机械工程师最容易轻视的暗礁

车间里最贵的往往不是传感器,是时间。振动采集卡跑在 25.6 kHz,PLC 扫描周期 2 ms,温度变送器 1 Hz,MES 工单按分钟落库。你想把主轴振动和注塑节拍对齐?先过时间戳这一关。Modbus 寄存器没有时标,OPC UA 的 SourceTimestamp 和 ServerTimestamp 还会差一截,边缘网关再缓存五分钟——完蛋,顺序全乱。

我的做法很土,但管用:所有原始数据先落 UTC 微秒时间戳,保留原始时钟源和网关接收时间。做多源融合时,用 as-of join 而不是简单等值连接,容差按设备动态设定。比如温度这种慢过程,50 ms 容差足够;振动和电流这种快过程,容差压到 1 ms 以内。别小看这个参数,容差放到 100 ms,轴承故障冲击可能被错配到下一个冲程,特征直接废掉。

工业设备多源传感器时间戳对齐与as-of连接示意图
工业设备多源传感器时间戳对齐与as-of连接示意图

还有采样抖动。理想采样是等间隔,实际 DAQ 的晶振会漂。短时分析忍一忍,做阶次分析就必须上转速参考。没有转速计怎么办?从电机电流基频估转速,再用 相位重采样 把时域信号转成角域,不然轴承外圈故障频率 BPFO 会糊成一片。公式不复杂:f_nyq = f_s/2,抗混叠截止频率必须小于 f_nyq,通常取 f_s ≥ 2.56 × f_max。但工程里最怕的是,你根本不知道 f_max 在哪,就敢设低通截止,结果把 3 kHz 的结构共振滤掉了。

3σ不是万能钥匙:野值、异常和真实故障得分开

很多同行一上来就 3σ。x_i 偏离均值 μ 超过 3σ,标红删除。对稳定工况的温度、压力,这招还行。对振动?简直是灾难。轴承早期故障的冲击幅值本来就落在尾部,你删得越勤,故障特征越干净——干净到消失。

更稳一点的是 稳健 z-score:z_i = 0.6745 × (x_i – median(x)) / MAD,其中 MAD = median(|x_i – median(x)|)。阈值取 3.5 比 3 更抗污染。注意,MAD 如果接近零,说明数据几乎不变,这时候别硬算,直接检查传感器是不是卡死。还有 峰度 kurtosis,健康轴承振动接近高斯分布,kurtosis 约 3;出现局部损伤后,kurtosis 可能冲到 5 以上。所以看到尖峰,先别删,问一句:这是干扰,还是故障在敲门?

旋转机械振动信号异常值清洗与轴承故障特征区分图
旋转机械振动信号异常值清洗与轴承故障特征区分图

工程上我常把异常分三层:野值,比如传感器断线、量程溢出、通信 CRC 错误;工况异常,比如负载突变、启停过程;故障异常,比如轴承剥落、齿轮断齿。前两类可以修,第三类要留给诊断模型。ISO 20816 里对振动烈度有明确的分区阈值,但那是 RMS 速度有效值,不是让你拿单点峰值去对表。标准得看场合,ISO 10816 老版本、ISO 20816 新版本,机器类别、支撑方式、功率档位不同,阈值差不少。

缺失值:插值不是许愿池

缺失值最考验人。温度缺 2 秒,线性插值没人反对。缺 20 分钟?你敢插,模型就敢信。热过程有一阶惯性,时间常数 τ = RC,如果缺失长度超过 5τ,线性插值基本是编故事。我的底线:短缺口用 样条或卡尔曼平滑,长缺口标 缺失质量码,别填。振动原始波形更狠,缺一块就补零?那会在频谱里造出方波边带,自己骗自己。

工业传感器数据缺失值填补策略与质量码标注流程图
工业传感器数据缺失值填补策略与质量码标注流程图

分类状态量也麻烦。PLC 的阀门开闭状态用 LOCF,听着合理,但阀门如果真在缺失期间动作了,你永远不知道。这时候事件日志比插值可靠。OPC UA 的 QualityCode 要保留,Good、Uncertain、Bad 别一扔了之。很多清洗脚本只留数值,最后现场扯皮:这个报警到底是不是误报?没有质量码,死无对证。

滤波与重采样:别把故障频率也滤掉

低通滤波是双刃剑。抗混叠必须有,截止频率得按关注频带定。比如关注轴承故障,先算 BPFO、BPFI、BSF、FTF,再考虑共振带。包络分析常用 5 kHz 到 20 kHz 的加速度共振,你如果设 1 kHz 低通,等于把诊断信息提前枪毙。重采样降采样时,先滤波再抽取,顺序不能反。反了就是混叠,频谱里全是假峰,到时候哭都来不及。

还有个细节:单位。振动位移 μm、速度 mm/s、加速度 m/s² 或 g,混用会出人命。清洗阶段就要把单位归一,量纲检查写进规则。温度热电偶、RTD 分度号不同,K 型、PT100 的换算别搞错。压力表是表压还是绝压,差 1 atm 在液压系统里足够让特征漂移。

清洗流水线:可追溯比干净更重要

我见过太多项目,清洗脚本一跑,原始数据被覆盖,三个月后想复现,鬼知道当时删了哪些点。所以流水线要分三层:原始层 immutable,清洗层 versioned,特征层 derived。每条规则带 rule_id、参数、影响行数、执行时间。谁改了阈值,调出来一目了然。ISO 8000 系列讲数据质量,核心不是追求 100% 干净,而是让质量可度量、可沟通。

监控指标也得有。缺失率、越界率、时间戳乱序率、重复率、单位异常率。比如某批次清洗后缺失率突然从 0.5% 跳到 8%,别庆功,先查网关。重复数据同样隐蔽,边缘缓存重发、MQTT QoS 1、数据库 at-least-once 写入,都会造重复。用 (tag, timestamp) 做唯一键不够,还要考虑值相同但合法重复的工况,比如压力稳定在 5.00 bar 采一万次。哈希去重只适合完全相同的行,别一刀切。

几句实在话

工业数据清洗没有一劳永逸的算法。它更像机加工里的去毛刺——不改变零件功能,但决定装配能不能过。先保时间戳,再谈异常检测;先看质量码,再想插值;先问故障机理,再动滤波。公式可以背,标准可以查,但现场那点脏数据,永远会给你新惊喜。别怕返工,怕的是你把脏数据喂给模型,还怪模型不争气。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:工业数据清洗:车间脏数据、时间戳与振动信号的工程化处理
文章链接:https://yqhljx.com/list_9/5847.html