预测性维护

Posted chocolate2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预测性维护相关的知识,希望对你有一定的参考价值。

1. 预测性维护

1.1. 介绍
预见性维护(PdM)承诺在工厂车间达到前所未有的效率和安全水平,目前已建立的系统和流程的最佳实践。机器停机是生产线上最大的挑战之一。目前的MRO(维护、维修、操作)方法远未达到最佳生产水平。通过预测性维护,一旦数据实时(或接近实时,取决于应用程序需求)来自设备,高级分析可用于识别可能影响业务运营的资产可靠性风险。通过对关键资产生成的运营数据应用机器学习和分析,以更好地了解资产绩效,公司可以将这些见解作为持续改进过程的一部分。
预测性维护对从终端传感器节点收集的机器数据进行高级分析,以得出有意义的见解,从而更准确地预测机器故障。它由三个步骤组成:感知、计算和行动。通过添加新的传感器或使用控制输入,从机器中已有的传感器收集数据。根据机器类型和所需的故障分析,分析不同的传感器信号(如温度、声音、磁场、电流、电压、超声波、振动)以预测故障。从传感器数据分析中得到的预测信息用于生成事件、工作指令和通知。传感器数据也用于可视化机器的整体运行状况。当事件报告异常、机器接近其使用寿命结束或在机器部件中检测到磨损时,就会采取行动。
以下是使用分析进行预测性维护的优点:
在早期阶段检测早期故障和故障,便于早期修复
建立资产的保质期,评估产品质量
维护备件的库存和标签
探讨了假设的场景提前通知和提醒现场操作人员,提高安全标准
防止生产过程中不必要的停机
最大化设备的生命周期
实现产品创新。新功能、服务和定价模式

现实场景中预测性维护的一些示例包括:
在肉眼看到缺陷之前很久就发现有缺陷的轴承
发现两个旋转设备之间的不对中
当风扇不平衡时要识别出来
识别轴承何时需要润滑
当需要紧固电气连接时,请告知
当油被污染或需要更换时,应发出警报
Processor SDK Linux现在提供了一个预测性维护演示,它利用递归神经网络(RNN)对电机驱动控制进行异常检测。下面的小节将详细描述该演示,包括使用RNN进行异常检测的系统模型、使用分步指令开发PdM演示的工作流程、基准测试结果以及Processor SDK Linux的PdM演示可交付成果。
1.2. 基于RNN的异常检测系统模型
除了卷积神经网络(CNN)外,RNN最近作为高质量的通用时间序列逼近方法出现。在GPU加速支持的许多桌面工具的支持下,它变得更加有效。
对于异常检测,建立了一个系统模型来预测正常情况下输入的输出。如果对输出值的预测是好的,系统模型可以作为物理系统的高精度近似。在这个系统模型中,如果存在显著的、连续的预测误差,则表明异常正在发生。

图1 RNN异常检测系统模型
1.3. PdM演示开发流程
下图说明了开发PdM演示的工作流。它从获取描述物理系统在一系列健康和故障状态下的数据开始。数据可以来自传感器,也可以从物理模型生成。然后对采集到的数据进行降采样等预处理,降低数据的维数。之后进入模型开发阶段。对于PdM,该模型可以是用于状态监测的检测模型(例如,异常检测)或用于预测的预测模型(例如,估计剩余使用寿命)。模型开发需要确定适当的条件指标,然后训练模型来解释这些条件指标。这可能是一个迭代过程,因为您尝试不同的模型和指标,并调整模型参数,例如RNN层和节点的数量。最后一步是部署模型并将解决方案集成到边缘设备的机器监控和维护系统中。

图2 PdM演示开发流程
在以下小节中,以电机驱动异常检测为例,详细介绍了此工作流的各个步骤。
1.3.1. 传感器数据采集
在我们的PdM异常检测演示中,传感器数据来自电机驱动TI设计。在这种TI设计中,AM437x IDK((运行处理器SDK RTOS、PRU-ICSS EtherCAT Slave和PRU-ICSS Industrial Drives)执行电机控制。它还接收有关相电流测量和位置测量的反馈。另一方面,AM437x IDK充当Ethercat从机,并与主机上的TwinCAT主机通信,以设置目标速度、目标位置等。
为了实时采集传感器数据,采用高速(921600波特率)UART,以10KHz的采样率输出两相电流(各2字节)和电机位置(4字节)。为了获得连续的传感器数据,采用PyAutoGUI实现了对TwinCAT的自动控制,使电机可以从位置1到位置2,再从位置2回到位置1。

图3 电机驱动的传感器数据采集
1.3.2. 传感器数据预处理
对频率为10KHz的传感器数据进行简单的低通滤波降采样到50Hz的预处理,以降低高频噪声。然后对降采样的传感器数据进行归一化处理。
根据应用的不同,可以应用其他一些预处理技术,如FFT、高阶统计量和小波。
1.3.3. 建立线下训练模式
为了建立RNN模型,在MATLAB中对两个下采样相电流进行离线桌面训练。RNN拓扑包含一个LSTM (Long Short-Term Memory)层和一个FC (full Connected)层。LSTM层有31个隐藏节点,FC层有31个输入和2个输出。这是一个简单的RNN模型,它的指定是为了避免过拟合和控制计算负荷。训练模型采用开放式神经网络交换(ONNX)格式。最后一层回归层,是用于预测的输出层。

图4 具有LSTM和FC层的离线训练RNN模型
RNN模型使用正常场景数据进行训练:电机以每秒100度的速度从45度移动到270度,然后返回到45度,以此类推。用Matlab在台式机上进行训练,训练序列长约50秒,不到3分钟。
其他一些开源工具,如Keras/tensorflow、Pytorch,也可以用于训练。
1.3.4. 部署和集成
在得到模型之后,最后一步是部署模型并将其集成,以便在边缘进行异常检测。
构建RNN推理库
为了建立实现LSTM和FC层的RNN推理库,我们的初始解决方案是使用python脚本将ONNX模型转换为CPP头文件,其中包含初始化的数据结构和所有的权重信息。python脚本支持N个堆叠的LSTM层,外加一个FC层。然后用LSTM库编译生成的CPP头,用初始化和处理APIs创建ARMv7对象文件。

图5 构建RNN推理库
边缘实时异常检测
利用RNN推理库,我们构建了运行在Arm上的Linux用户空间应用程序来执行异常检测。异常检测的调用流程如下图所示。在AM4 IDK上运行的电机控制应用程序实时接收到两相电流。然后对相电流进行低通滤波和下采样,再进行归一化处理。然后利用上面建立的RNN推理库对预处理后的相电流进行RNN预测。然后对预测的相电流进行反归一化,并与实际相电流进行比较,计算预测误差。利用正常场景开始时的预测误差进行校正:该阶段的最大预测误差按大于1的比例缩放,作为异常检测阈值。之后,将使用预测误差报告异常:如果预测大于校准阶段发现的阈值,则报告异常。

图6 实时异常检测
1.4. Processor SDK Linux的可交付成果
Processor SDK Linux从Matrix GUI提供了一个开箱即用的PdM演示。它还支持从顶级Makefile重新构建演示。还提供了基于python的转换工具,用于将ONNX模型转换为CPP头文件。
1.4.1. 带预录传感器数据的开箱即用演示
异常检测的PdM演示由Matrix GUI提供,位于Analytics(分析)子菜单“PdM异常检测与RNN”下。

图7 Matrix GUI中PdM异常检测演示
对于这个开箱演示,使用预先记录的传感器数据(/usr/share/ti/examples/pdm/normal100-anomaly150-normal100.log)作为测试序列,如演示脚本(/usr/bin/runpdmanomalydection.sh)所示。此测试序列从正常场景数据开始,即电机以每秒100度的速度从45度移动到270度,然后返回到45度,依此类推。为了制造异常,电机在一段时间后以每秒150度的较高速度移动。下图显示了演示的Qt GUI显示。左侧面板显示实时传感器输入:蓝色和绿色为两相电流,橙色为电机位置。右侧面板显示检测结果:蓝线为校准发现的异常检测阈值,橙线为预测误差,红线为检测到的异常的时间段。

图8 异常检测演示显示
Processor SDK Linux的文件系统还打包了两个预先录制的测试序列(在/usr/share/ti/examples/pdm/下),以解决其他一些异常。
normal270-anomaly170-normal270.log:电机从45度移动到不同的(170度而不是270度)度。
normal45-270-v100-with-friction2-iter10-15.log:手动按压电机和编码器之间的耦合器,增加摩擦。
1.4.2. 支持从顶级Makefile重建demo
用于实时推断的PdM演示的源代码可从pdm-anomaly-detection git rep获得。该源代码还与Processor SDK Linux安装程序捆绑在一起,位于 example-applications目录下:

[plsdk_install_dir]/example-applications/pdm-anomaly-detection-1.0

可以通过Processor SDK Linux的顶级Makefile重建演示:

cd [plsdk_install_dir]
make pdm-anomaly-detection

编译完成后,可以在[plsdk_install_dir]/example-applications/pdm-anomaly-detection-1.0/RnnPdmAnomalyDetection找到演示二进制文件。
1.4.3. ONNX模型转换工具
Python脚本在PdM演示源代码的model文件夹下提供,用于将ONNX模型转换为具有初始化数据结构的CPP头文件。它支持N个堆叠的LSTM层,加上完全连接的层作为最后一层。
在运行脚本之前,如果之前没有安装,请安装下面的python包。

sudo apt install python-pip
pip install numpy pandas scipy onnx

然后,运行以下命令进行转换:

cd pdm-anomaly-detection/model or pdm-anomaly-detection-1.0/model
python ./make_header.py -m ./[onnx-model-file]

输出的CPP头文件名为LSTM_model.h,它位于同一个model文件夹下。
1.5. 基于RNN的异常检测基准
为了对基于RNN的异常检测进行基准测试,使用了两个线程,Qt/QML显示不在图片中。
线程1:具有RNN预测和异常检测的主处理线程
线程2:解析读取senor数据的线程
Linux clock_gettime()函数用于读取时间:

clock_gettime(CLOCK_REALTIME, &ts0);
/*运行LSTM网络进行预测*/
runLstm(lstm_in1, lstm_in2, &lstm_out1, &lstm_out2);
clock_gettime(CLOCK_REALTIME, &ts1);
ns_lstm = (ts1.tv_sec-ts0.tv_sec) * 1000000000 + ts1.tv_nsec-ts0.tv_nsec;

使用两个基准点:
预处理:低通滤波和下采样,将200个样本减少为1个样本
一个样本的RNN预测(LSTM+FC)
每个样本的平均计算时间:
RNN预测:0.083ms
预处理:0.014ms
总计(RNN预测和预处理):0.097ms
在采样率为50Hz的情况下,基于RNN的异常检测在1GHz下消耗了约0.5%的CPU,显示出较低的计算负载。

以上是关于预测性维护的主要内容,如果未能解决你的问题,请参考以下文章

预测性维护

预测性维护

添加到后台堆栈时如何维护片段状态?

方向/配置更改后如何维护 ListView 片段状态?

设备预测性维护,为企业生产保驾护航!

如何在每个操作栏选项卡中维护多个Fragment堆栈或多个子片段