低成本智能传感器的面市提高了工业设备监控的水平,使预测性维护现已成为可能。然而,对于许多开发人员而言,由于所需硬件和应用软件的复杂性,收集、结构化处理、传输、分析和应用传感器数据以进行预测性维护的任务仍然难以完成。
为了满足业界对预测性维护快速增长的兴趣,半导体供应商正在推出结合了许多必需硬件和软件的综合平台解决方案。借助此类平台,工业应用开发人员可以更快速、更经济高效地开发并运行预测性维护系统。
本文讨论运用物联网 (IoT) 进行预测性维护的现代概念,以及它如何能够大幅改善流程和结果。然后,本文介绍 STMicroelectronics 的预测性维护平台,并阐述开发人员如何使用该硬件与软件,来评估预测性维护功能和开发自己的应用。
维护工作的演变——从猜测到预测
多年来,工业工程师使用振动分析和其他方法来检测机器中的问题。过去,工程师依靠手持式分析仪或其他专用测试设备来收集和处理数据,以进行设备分析。借助物联网概念,制造商现在可以使用低成本传感器对关键设备进行检测,从而获得实时监控所需的详细数据流。
持续评估设备性能的能力为工厂运营提供了重要优势。现在,工业工程师可以使用本地或远程监控应用来增强甚至取代计划的手动维护程序,后者可能在没有问题存在的情况下耗费精力,或者来不及防止小问题升级成设备损坏。工厂操作人员不是被动地对可能导致生产线关停的问题作出反应,而是使用基于传感器的方法提前发现问题,安排所需的资源,甚至更换机器,并在适当的时间进行维修,以便最大限度地降低对生产的影响。
通过预测性维护,设施管理人员有机会在问题酿成灾难性故障之前发现问题,从而保持生产线的完整性和工人的安全,同时还能分析数据以改进流程和结果。开发人员面临的挑战之一是创建一个平台,以便能以所需的带宽和分辨率收集数据,检测受监控设备中潜在问题的迹象。
对于振动分析,工业工程师通常要收集时域和频域两方面的振动数据。经验丰富的工程师只需查看这两个域的数据,即可识别设备中的机械问题。例如,持续时间较短且频率带宽较宽的周期性脉冲通常意味着某个部件(如滚珠轴承)有缺陷,导致其在每次旋转时都会撞击轨道壁。相反,持续时间较长且带宽较窄的事件可能意味着部件正在相互摩擦,最终导致磨损并可能发生故障。
然而,为了可靠地捕获这种数据,振动传感器需要足够坚固以维持运行,而不受突然冲击、强烈振动或工业环境中常见的其他事件的影响。即使在正常工作时,工业设备也可能产生超过早期振动传感器能力的振动和机械冲击。基于微机电系统 (MEMS) 技术的传感器的出现在很大程度上消除了这种担忧。MEMS 传感器(例如 STMicroelectronics ISM330DLC)能够承受高达 10,000 g 的突发加速度 0.2 毫秒 (ms),并且能以足够快的速度恢复,从而提供灵敏度为千分之一重力的线性加速度测量。
尽管来自运动传感器的可靠数据对于故障分析至关重要,但振动只是机器运行状况的一个指标。经验丰富的工程师不仅可以从振动数据中辨别出特定的故障模式,而且还能使用其他传感器模态,来确定从检测到症状到设备发生功能故障的时间——称为“潜在到故障” (P-F) 间隔时间。例如,对于大多数机器而言,功耗、噪声或热量增加通常表明 P-F 间隔时间缩短(图 1)。
图 1:不同传感器模态可以揭示一些表明机器有可能发生故障的状况,但通过振动分析通常可以实现早期检测,有助于消除因突发故障而导致的停机事故。(图片来源:STMicroelectronics)
为了捕获这些额外的指标,工程师需要创建至少能够捕获振动、音频、压力、温度和湿度的传感器系统。然而,对于开发人员而言,将这些传感器整合到一个稳健设计中存在一些实际挑战,这可能会明显拖延实现设备分析更大目标的进度。STMicroelectronics 的 STEVAL-BFA001V1B 开发套件及相关软件提供了一个综合性平台,使得工程师可以快速启动设备监控和预测性维护的应用开发工作。
参考平台
STEVAL-BFA001V1B 套件既可作为参考设计,也可作为现成的解决方案,包含一块用于预测性维护的工业传感器板及相关软件。该板是一个完整的独立传感器系统(图 2)。它集 STMicroelectronics 高性能 32 位 Arm® Cortex®-M4 STM32F469 MCU 和全套传感器于一体,包括前面提到的用于振动测量的 ISM330DLC 运动传感器,以及 STMicroelectronics 的下列器件:
HTS221 温度和湿度传感器
LPS22HBTR 压力传感器
MP34DT05TR-A MEMS 麦克风
图 2:基于 MCU 的工业传感器板设计包含在 STMicroelectronics STEVAL-BFA001V1B 开发套件中,含有设备监控通常需要的全套传感器。(图片来源:STMicroelectronics)
该系统为微控制器集成的 2 MB 闪存补充了 STMicroelectronics 的 M95M01-DF 1 Mb EEPROM,并通过 STMicroelectronics L6984A 开关稳压器和 LDK220 低压差 (LDO) 稳压器提供电源管理功能。为了简化工业环境中的部署,该板的一端有一个 M12 连接器,通过 ST L6362A IO-Link 收发器提供支持。该板的另一端有一个扩展连接器,供开发人员连接微控制器的 GPIO、模数转换器 (ADC) 和 I2C 串行接口。结果得到一个稳健的系统,该系统仅比 M12 工业电缆略大,却能满足设备监控的全套要求(图 3)。
图 3:STMicroelectronics STEVAL-BFA001V1B 工业传感器板包括基于微控制器的多传感器系统、扩展连接器、串行线调试 (SWD) 连接器和 M12 连接器,外形尺寸仅略大于工业电缆。(图片来源:STMicroelectronics)
开发人员既可以使用套件中包含的 M12 电缆,也可以添加自己的 M12 连接器。该套件包括一个适配器板,用于将 M12 传感器板的串行输出连接到 ST-LINK/V2-1 接口,该接口随 STMicroelectronics STM32 Nucleo-64 开发板一起提供。为了给该板供电,开发人员可以通过 M12 电缆自行供电,或将 M12 电缆插入 ST STEVAL-IDP004V1 IO-Link 评估板。使用此 IO-Link 板是最快速的开发途径,因为开发人员可以快速连接多个工业传感器板,并使用 STMicroelectronics 基于 Windows 的 STEVAL-IDP005V1-GUI_v1.0 图形用户界面 (GUI) 进行配置(图 4)。
图 4:利用 ST Windows GUI,开发人员可以快速配置传感器板,执行数据收集,查看频域和时域运动数据以及环境数据的结果。(图片来源:STMicroelectronics)
在配置屏幕上完成设置之后,开发人员可转到 VibraTIon Analysis(振动分析)屏幕进行数据收集。点击开始按钮后,开发人员可以查看 x 轴、y 轴和 z 轴上收集的振动频率和转速测量结果(图 5)。在单独的环境测量(ENV Measures(环境测量)选项卡)屏幕上,开发人员可以查看每个传感器板收集的压力、温度和湿度数据。
图 5:ST Windows GUI 提供了一种评估传感器数据的简单方法,能够呈现运动传感器的频域和时域结果。(图片来源:STMicroelectronics)
软件开发
虽然通过 GUI 应用可以快速访问传感器板的功能,但开发人员需要一种更灵活的方法,来创建自己的预测性维护应用。针对定制开发,STMicroelectronics 的 STSW-BFA001V1 软件包提供了一整套 C 软件模块,包括驱动程序、库和样例应用程序(图 6)。
图 6:ST STSW-BFA001V1 软件分发提供了一整套驱动程序、中间件以及开发人员可立即运行的样例应用程序,后者可用作定制应用的基础。(图片来源:STMicroelectronics)
STSW-BFA001V1 软件包的软件样例中有一个状态监控应用,该应用演示了从运动传感器收集数据并生成频域、RMS 和峰值加速度值的过程。对于生产设计,开发人员可以将此数据上传到旨在检测故障的主机应用。预测性维护应用扩展了此数据收集基础,提供了用于生成潜在故障警告的功能。
这种方法有许多优点,但最引人注目的是它能及早检测到指示潜在故障的状况,从而延长 P-F 间隔时间。另一个优点是让故障检测更靠近设备,从而更直接地识别故障。
STMicroelectronics 预测性维护应用展示了开发人员如何将传感器读数与速度、加速度、频率分量的一系列阈值进行比较,从而执行早期检测。在生产系统中,阈值的选择取决于多个因素,这些因素超出本文的讨论范围。
但重要的是,要注意有一些标准可供参考。例如,ISO 10816 为运行在四种不同工作区域的四类机器的振动值提供了指引,所述工作区域包括 A 区(良好)、B 区(满意)、C 区(不适合连续工作)和 D 区(危急,连续工作可能造成损坏)。正如这些区域所表明的,当机器的振动水平达到 C 区时,应向操作人员发出警告;当振动水平达到 D 区时,应发出更紧急的警报。
STMicroelectronics 设计了预测性维护应用,来支持这种特定使用模型。样例应用软件集中的头文件 (MoTIonSP_Threshold.h) 包括警告和警报级别的阈值。在这种情况下,STMicroelectronics 将警告阈值定义为 ISO 10816 介于 B 区和 C 区边界之间的推荐操作值。警报阈值是 ISO 10816 介于 C 区和 D 区边界之间的推荐操作值。典型的运动传感器(如 STMicroelectronics ISM330DLC)提供 x、y、z 平面的数据,因此针对每个被监控量——RMS 速度、加速度和快速傅里叶变换 (FFT)——的警告和警报阈值均提供三个值。该应用在四个不同的频谱子范围中使用 FFT 的阈值。
由此得到的一组阈值与各种不同的实际机器运行状态一致。不过,开发人员仍然需要调整这些警告和警报阈值,使之与受监控设备的具体特性以及警告和警报的总体目标匹配。
头文件提供关于监控的运行目标,而主例程 (main.c) 提供逻辑来检测工业板传感器所收集的数据中的阈值偏移。初始化硬件和相关软件结构之后,主例程便进入一个无限循环,以生成振动数据的 FFT,测量 RMS 和峰值加速度,检测阈值超越情况,并发送警告(清单 1)。
/* IniTIalize the moTIon sensor */
MotionSensorInit();
MotionSP_TimeDomainAlarmInit(&sTdAlarm,&sTimeDomainVal,&sTdRmsThresholds,&sTdPkThresholds);
MotionSP_FreqDomainAlarmInit(&FDWarnThresh,&FDAlarmThresh,&THR_Fft_Alarms,MotionSP_Parameters.subrange_num);
/****************************************************************************/
while (1)
{
/* Vibration Analysis */
MotionSP_Vibration_manager_run(&MotionSP_Parameters);
/* Status check during Time domain Analysis */
MotionSP_TimeDomainAlarm(&sTdAlarm,&sTimeDomainVal,
&sTdRmsThresholds,
&sTdPkThresholds,
&sTimeDomain);
if(FinishAvgFlag == 1)
{
SendVibrationResult();
TD_Thresholds_DataSend(&sTdAlarm,&sTimeDomainVal);
MotionSP_FreqDomainAlarm (&SRAmplitude, FDWarnThresh, FDAlarmThresh,
MotionSP_Parameters.subrange_num,
&THR_Check,
&THR_Fft_Alarms);
FD_Thresholds_DataSend(MotionSP_Parameters.subrange_num,
&SRBinVal,
&THR_Fft_Alarms,
&THR_Check);
MotionSP_TotalStatusAlarm(&sTdAlarm,
&THR_Fft_Alarms,
MotionSP_Parameters.subrange_num,
&TotalTDAlarm,
&TotalFDAlarm);
Thresholds_DataSend(&TotalTDAlarm, &TotalFDAlarm);
FinishAvgFlag = 0;
RestartFlag = 1;
// wait while the UART is transmitting
while((HAL_UART_GetState(&hSrvUart) & HAL_UART_STATE_BUSY_TX ) == HAL_UART_STATE_BUSY_TX);
strcpy((char *)SrvUartTxBuffer, “\r\n|#################### Next Measurement ####################\r\n”);
HAL_UART_Transmit(&hSrvUart, SrvUartTxBuffer, strlen((char *)SrvUartTxBuffer), SRV_UART_TIMEOUT_MAX);
MotionSP_TimeDomainAlarmInit(&sTdAlarm,&sTimeDomainVal,
&sTdRmsThresholds,&sTdPkThresholds);
MotionSP_FreqDomainAlarmInit(&FDWarnThresh,
&FDAlarmThresh,
&THR_Fft_Alarms,
MotionSP_Parameters.subrange_num);
/* Configure the Hardware using parameters in RAM */
MotionSP_Vibration_manager_init(&MotionSP_Parameters, 1);
Accelero_MeasurementInit();
}
}
清单 1:STMicroelectronics 预测性维护应用演示了如何使用一个无限循环,根据频域和时域传感器数据测量结果来识别和发送警报。(代码来源:STMicroelectronics)
随着循环继续执行,板级支持包中的传感器驱动程序和服务处理程序读取数据,并填充由更高级别例程监视的缓冲区。STMicroelectronics 样例软件在应用级别分配处理程序,允许开发人员轻松换用自己的例程以满足独特的需求,而无需深入了解软件架构。
在主循环的每次迭代中,主例程调用 MotionSP_TimeDomainAlarm() 来检查 RMS 速度和峰值加速度的阈值。对于频域检查,主循环重复调用 MotionSP_Vibration_manager_run(),后者间接调用另一个模块的例程 MotionSP_FrequencyDomainProcess();如果所需的循环缓冲区 (AccCircBuffer) 足够满并且 FFT 已启用,它最终会调用中间件 FFT 计算例程(清单 2)。实际上,基本状态监控应用也是使用这种模式。
/**
* @brief Frequency Domain Processing starting from the Circular Buffer
* @param pMotionSP_Parameters: Pointer to board parameters
* @return None
*/
void MotionSP_FrequencyDomainProcess(sMotionSP_Parameter_t *pMotionSP_Parameters)
{
#define FFTSIZEDELTA (MotionSP_Parameters.size*((100.0-MotionSP_Parameters.ovl)/100.0))
if (fftIsEnabled == 1) {
if (!accCircBuffIndexWaitForOvf) {
if (AccCircBuffer.IdPos 》= accCircBuffIndexForFft) {
MotionSP_FFT_All_Axes();
accCircBuffIndexForFft += FFTSIZEDELTA;
if (accCircBuffIndexForFft 》= AccCircBuffer.Size) {
accCircBuffIndexForFft -= AccCircBuffer.Size;
accCircBuffIndexWaitForOvf = 1;
}
}
}
else {
if (AccCircBuffer.Ovf) {
AccCircBuffer.Ovf = 0;
accCircBuffIndexWaitForOvf = 0;
}
}
}
}
清单 2:STMicroelectronics 样例应用程序的这个例程展示了一种使用循环缓冲区(其数据来自运动传感器)进行频域分析的机制。(代码来源:STMicroelectronics)
在每个测量时期结束时,应用程序使用另一个例程 (MotionSP_TotalStatusAlarm()) 来检查运动数据的每个属性,将频域警报 (pTotalFDAlarm) 和时域警报 (pTotalTDAlarm) 设置为最大警报值(清单 3)。清单 1 中的主例程进而通过 UART 连接发送这些警报,然后重新初始化系统以开始下一个测量时期。
void MotionSP_TotalStatusAlarm(sTimeDomainAlarm_t *pTdAlarm,
sFreqDomainAlarm_t *pTHR_Fft_Alarms,
uint8_t subrange_num,
Alarm_Type_t *pTotalTDAlarm,
Alarm_Type_t *pTotalFDAlarm)
{
Alarm_Type_t TempAlarm = GOOD;
Alarm_Type_t TempFDAlarm = GOOD;
TempAlarm = MAX4(TempAlarm,
pTdAlarm-》PK_STATUS_AXIS_X,
pTdAlarm-》PK_STATUS_AXIS_Y,
pTdAlarm-》PK_STATUS_AXIS_Z);
TempAlarm = MAX4(TempAlarm,
pTdAlarm-》RMS_STATUS_AXIS_X,
pTdAlarm-》RMS_STATUS_AXIS_Y,
pTdAlarm-》RMS_STATUS_AXIS_Z);
for(int i=0; i《subrange_num; i++)
{
TempFDAlarm = MAX4(TempFDAlarm,
pTHR_Fft_Alarms-》STATUS_AXIS_X[i],
pTHR_Fft_Alarms-》STATUS_AXIS_Y[i],
pTHR_Fft_Alarms-》STATUS_AXIS_Z[i]);
}
*pTotalTDAlarm = TempAlarm;
*pTotalFDAlarm = TempFDAlarm;
}
清单 3:STMicroelectronics 样例应用程序展示了在预测性维护应用中使用多个警报源的基本设计模式。(代码来源:STMicroelectronics)
运用 STMicroelectronics 样例应用程序,开发人员可以快速评估预测性维护特性和功能。更直接的是,开发人员只需通过终端仿真程序连接到工业传感器板,便可立即开始查看测量值和警告/警报状态。
但对于生产应用,开发人员更可能使用传感器板的串行接口连接上游资源,以实现更高级的应用监视和控制。主要云服务提供商已经为预测性维护提供了先进的机器学习解决方案。例如,Microsoft Azure 的物联网解决方案加速器组合中便有一款预测性维护解决方案。
开发人员甚至可以提前开始使用 Azure 加速器,因为其中包含的仿真设备能够呈现从 NASA 喷气发动机获取的多个传感器数据流。在此加速器工具链的末端,Azure 机器学习服务提供一个基于此数据而训练的模型。在某些情况下,开发人员可以采用迁移学习方法,将一个预训练模型(如 Azure 预测性维护模型)用作自己的定制机器学习模型的起点。
结语
为了满足业界对预测性维护日益浓厚的兴趣,开发人员需要能够快速部署适用于工业环境的、稳健的多传感器系统。STMicroelectronics 的全面开发解决方案既有硬件传感器板,又有专门针对预测性维护要求而设计的软件环境。
使用此系统解决方案,开发人员可以立即开始评估预测性维护,快速开发自己的预测性维护应用,并利用新兴的基于云的机器学习资源来创建更高级的预测性维护功能。