低成本智能傳感器的面市提高了工業設備監控的水平,使預測性維護現已成為可能。然而,對于許多開發人員而言,由于所需硬件和應用軟件的復雜性,收集、結構化處理、傳輸、分析和應用傳感器數據以進行預測性維護的任務仍然難以完成。
為了滿足業界對預測性維護快速增長的興趣,半導體供應商正在推出結合了許多必需硬件和軟件的綜合平臺解決方案。借助此類平臺,工業應用開發人員可以更快速、更經濟高效地開發并運行預測性維護系統。
本文討論運用物聯網 (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 的全面開發解決方案既有硬件傳感器板,又有專門針對預測性維護要求而設計的軟件環境。
使用此系統解決方案,開發人員可以立即開始評估預測性維護,快速開發自己的預測性維護應用,并利用新興的基于云的機器學習資源來創建更高級的預測性維護功能。
評論
查看更多