工业异常检测基础:什么是异常检测、常见工业异常类型、传统方法与ML方法对比

各位同学好,我是你们的老朋友。今天咱们聊聊工业异常检测的基础。说实话,这玩意儿看着简单,但坑不少。我刚开始做工业项目时,也踩过不少雷。

先问大家一个问题:什么是异常?

说白了,异常就是「跟平时不一样」。在工厂里,机器正常运转时,振动、温度、电流这些信号都有个稳定的范围。一旦某个参数跑出这个范围,那就是异常。

但这里有个关键点——异常不等于故障。异常是信号层面的偏离,故障是功能层面的失效。我见过不少新手,一看到振动值高了就喊「坏了坏了」,结果只是传感器松了。嗯,这里要注意区分。

常见工业异常类型

工业现场常见的异常,我归纳为三大类:振动异常、温度异常、电流异常。咱们一个一个说。

1. 振动异常

振动是旋转机械的「体温计」。电机、泵、风机、压缩机,这些设备一旦出问题,振动信号往往最先报警。

我在项目里遇到过一台离心泵,振动值突然飙升到正常值的3倍。现场老师傅说「没事,再跑跑看」。结果三天后轴承烧了。后来分析数据发现,振动频谱里早就出现了轴承故障特征频率——只是没人看。

常见的振动异常类型:

  • 不平衡:转子质量分布不均,振动以1倍转频为主
  • 不对中:联轴器两端轴线偏移,振动以2倍转频为主
  • 松动:地脚螺栓松动或轴承间隙过大,振动波形杂乱
  • 轴承故障:内外圈、滚动体点蚀或磨损,出现高频冲击
我的经验:振动分析别只看幅值。幅值高不一定严重,幅值低也不一定安全。关键看趋势和频谱结构。我习惯用「时域波形+频谱」双确认,能过滤掉80%的误报。

2. 温度异常

温度异常,说白了就是「发热不正常」。电机绕组温度、轴承温度、冷却液温度,这些都是重点监控对象。

温度异常分两种:

  • 缓慢上升型:比如散热器积灰、冷却风扇转速下降,温度每天涨个0.5℃,持续一周
  • 突变型:比如轴承卡死、绕组短路,温度几秒钟内飙升几十度

我记得有个项目,电机绕组温度连续三天缓慢上升,现场没人当回事。我建议加装一个温度趋势报警——当温度斜率超过0.3℃/小时就预警。结果第二天就触发了,检查发现冷却风道被棉絮堵了一半。要是再晚两天,电机就该冒烟了。

避坑指南:我曾经犯过一个错误——只设了温度上限报警,没设温升速率报警。结果温度缓慢上升时,系统一直不报警,直到超过上限才响。但那时候已经晚了。所以,温度异常检测一定要同时监控「绝对值」和「变化率」

3. 电流异常

电流异常,是电气设备的「心电图」。电机、变压器、电源模块,电流信号能反映很多问题。

常见的电流异常:

  • 过流:负载过大或短路,电流超过额定值
  • 缺相:三相电机缺一相,电流不平衡,电机嗡嗡响但不转
  • 谐波畸变:变频器产生的谐波污染,电流波形不再是正弦波
  • 启动电流异常:启动时间过长或启动电流峰值异常

你想想看,电流信号采样频率通常不高(1kHz以内),但信息量很大。我习惯用电流的RMS值做长期趋势监控,用电流波形做短期故障诊断。两者结合,效果不错。

传统方法与ML方法对比

好了,异常类型讲完了。接下来聊聊怎么检测这些异常。

工业异常检测的方法,大致分两类:传统方法和机器学习方法。我两种都用过,各有优劣。

对比维度 传统方法 机器学习方法
原理 基于阈值、规则、统计模型 基于数据驱动,学习正常模式
典型技术 3σ法则、箱线图、FFT频谱分析、包络分析 孤立森林、自编码器、LSTM、1D-CNN
数据需求 少量正常数据即可 需要大量正常数据,最好有少量异常数据
可解释性 高,规则透明 低,模型是黑盒
部署难度 低,单片机都能跑 高,需要一定算力
泛化能力 差,换台设备就得重新调参 好,同一类设备可迁移
适用场景 简单、稳定的工况 复杂、多变的工况

传统方法:简单但够用

传统方法的核心思想是「设定一个边界,超出就是异常」。比如:

  • 固定阈值法:振动值超过10mm/s就报警
  • 统计法:计算历史数据的均值和标准差,超过3σ就算异常
  • 频谱分析法:在FFT频谱中找特定频率成分的幅值变化

我刚开始做工业项目时,用的就是传统方法。说实话,对于工况稳定的设备,传统方法完全够用。比如一台恒速泵,转速固定,负载固定,振动值长期稳定在5mm/s左右。设个8mm/s的阈值,能管用好几年。

但传统方法有个致命弱点——对工况变化不敏感。你想想看,如果设备转速从1000rpm变成2000rpm,振动值自然就高了。但这不是异常,是工况变化。传统方法分不清这个。

机器学习方法:灵活但复杂

机器学习方法的核心思想是「学习正常模式,偏离就是异常」。比如:

  • 孤立森林:随机切分数据空间,异常点更容易被孤立
  • 自编码器:训练一个神经网络,让它学会重构正常数据。异常数据的重构误差会很大
  • LSTM预测:用历史数据预测下一个时刻的值,预测误差大就是异常

我记得有个项目,设备工况变化特别频繁——转速从500rpm到3000rpm随机切换。传统方法根本没法用,阈值设低了误报,设高了漏报。后来我用了一个简单的自编码器,输入是振动+转速+温度三个信号,输出是重构误差。效果出奇的好,误报率从30%降到了2%。

但机器学习方法也有坑:

  • 数据标注成本高:异常数据本来就少,还得人工标注
  • 模型部署麻烦:在MCU上跑神经网络,需要做量化、剪枝、优化
  • 模型漂移:设备老化后,正常模式变了,模型需要重新训练
我的建议:不要一上来就上机器学习。先试试传统方法,如果误报漏报能接受,就别折腾。如果传统方法搞不定,再考虑ML。我个人的习惯是「传统方法打底,ML做补充」——先用阈值法做快速报警,再用ML模型做二次确认。

小结

今天的内容就这些。总结一下:

  • 异常检测的本质是「找不同」
  • 工业异常三大类:振动、温度、电流
  • 传统方法简单可靠,适合稳定工况
  • ML方法灵活强大,适合复杂场景
  • 实际项目中,两者结合效果最好

下一章,咱们会深入讲TinyML在工业异常检测中的具体应用。到时候我会带大家手写一个在STM32上运行的异常检测模型。敬请期待。

对了,有任何问题,欢迎交流。我的联系方式在页脚。