電動馬達(dá)預(yù)測性維護(hù):企業(yè)部署算法集中管理、保護(hù)與擴充
為了提升生產(chǎn)力,企業(yè)級規(guī)模的應(yīng)用架構(gòu)工程部署項目通常會采用主-從式軟件開發(fā)模型,確認(rèn)在足夠數(shù)量的機臺上所安裝的函式能滿足使用量。本文以一個估測電動馬達(dá)健康的預(yù)測性維護(hù)應(yīng)用來說明上述所需的功能。
如果你想把MATLAB函式分享給另一位同事,只要簡單地透過Email就可以達(dá)成,不過這種方式可能不太適合較大的團隊。舉例來說,你沒有辦法確保每一個人都使用最新版本的函式,你也沒有辦法限制他人存取這些具有所有權(quán)的程序代碼。而且如果為了滿足高峰期間的使用量而在足夠數(shù)量的機臺上安裝了函式,離峰期間則會有機臺處在閑置狀態(tài)。為了處理這樣的問題,企業(yè)級規(guī)模的應(yīng)用架構(gòu)工程部署項目通常會采用主-從式軟件開發(fā)模型(client-server software development model)來解決。
MATLAB Client for MATLAB Production Server這組支持套件,可為桌上型MATLAB提供了主-從式運算(client-server computing)帶來好處。它的作法是將算法集中在一個位置存放,這可確保所有客戶端使用的版本都相同;由遠(yuǎn)程執(zhí)行并加密,則可以保護(hù)智慧財產(chǎn)(intellectual property;IP):終端用戶可以呼叫算法,但不能存取源代碼。
為了提升生產(chǎn)力,可以增加用戶端的workers,或者將MATLAB Production Server的范例部署在云端計算,如Microsoft Azure和Amazon Web Services等環(huán)境中。本文將以一個估測電動馬達(dá)健康的預(yù)測性維護(hù)應(yīng)用來說明這些功能。
應(yīng)用:以預(yù)測性維護(hù)方法評估馬達(dá)健康狀態(tài)
透過預(yù)測性維護(hù)系統(tǒng)來監(jiān)測設(shè)備的健康狀態(tài)可預(yù)防意外的故障。舉例來說,估計馬達(dá)的剩余使用壽命(remaining useful life;RUL)以判斷何時該替換馬達(dá),以及偵測異常行為來決定是否需要進(jìn)行馬達(dá)檢驗。
我們的應(yīng)用范例是把馬達(dá)傳感器收集來的時間序列數(shù)據(jù)發(fā)送到預(yù)測性維護(hù)算法,而該算法則使用機器學(xué)習(xí)來估計RUL和檢查異常行為(圖1)。
圖1 : 馬達(dá)健康應(yīng)用范例的架構(gòu)。
這個應(yīng)用包含了兩部分:一是MATLAB馬達(dá)健康狀態(tài)app,它展示特定馬達(dá)的狀態(tài),另一部分是MATLAB Production Server預(yù)測性維護(hù)的解析應(yīng)用,內(nèi)含兩組預(yù)測性維護(hù)算法。這個主從式架構(gòu)把功能性的責(zé)任歸屬分為:使用者(client)端的app,用來管理數(shù)據(jù)存取與顯示,而服務(wù)器(server)端的算法則負(fù)責(zé)分析這些資料。使用者需仰賴服務(wù)器端提供的應(yīng)用程序編程接口(application programming interface;API)連結(jié),不需要、也不能存取執(zhí)行結(jié)果。
服務(wù)器端:算法與接口
對馬達(dá)傳感器產(chǎn)生的時間序列數(shù)據(jù),每一組算法采用不同的機器學(xué)習(xí)技術(shù)來進(jìn)行判定。RUL算法是使用一個線性回歸模型來估計故障發(fā)生的時間,此模型是由「預(yù)測性維護(hù)工具箱」(Predictive Maintenance Toolbox)的predict函式所提供。異常行為偵測算法則使用一個客制的單類(one-class)支援向量機(support vector machine;SVM)和一個線性求解器,將傳感器事件分類為正常或異常,這些函式是來自于「統(tǒng)計與機器學(xué)習(xí)工具箱」(Statistics and Machine Learning Toolbox)。
這兩組算法都使用漸進(jìn)式的學(xué)習(xí)來持續(xù)更新它們的模型,同時也考慮到因為馬達(dá)磨損退化導(dǎo)致的傳感器數(shù)據(jù)偏移,因此,兩個模型都不需要在部署之前先經(jīng)過訓(xùn)練。
由于終端使用者都會把同樣的數(shù)據(jù)流跑在這兩組算法上,服務(wù)器就提供一個入口點,所以透過processMotorData函式,針對時間序列數(shù)據(jù)上每一個元素,processMotorData就會送回一個RUL估計結(jié)果以及一個是否出現(xiàn)異常的標(biāo)幟。
在處理數(shù)據(jù)流時使用者端通常會呼叫processMotorData好幾次,然后把數(shù)據(jù)流分割為依時間排序的窗口,并且在每個窗口完成時送出。MATLAB Production Server有一個無狀態(tài)(stateless)的架構(gòu):它會在每一次呼叫之后重置執(zhí)行狀態(tài),以避免數(shù)據(jù)在用戶之間泄漏。
由于算法使用漸進(jìn)式學(xué)習(xí),它們會透過處理每一個窗口之后的模型更新來改善。不過,執(zhí)行狀態(tài)的重置功能會從MATLAB Production Server的內(nèi)存清除掉這些變更。
為了讓變更保留到下一次的呼叫,將它們儲存在透過mps.cache.connect函式所建立的外部數(shù)據(jù)高速緩存中,完成部署的算法就會將數(shù)據(jù)流依馬達(dá)編號ID來分組,并且為每一個馬達(dá)保留一個數(shù)據(jù)高速緩存和機器學(xué)習(xí)的模型。
使用者端:執(zhí)行算法和數(shù)據(jù)可視化
我們將processMotorData 部署到一個MATLAB Production Server范例、命名為 MotorAnalytics檔案的中,讓使用者端的開發(fā)人員可以使用它。如果要從MATLAB呼叫processMotorData ,可以使用MATLAB Client for MATLAB Production Server里,從MotorAnalytics安裝MATLAB add-on套件。
安裝這個add-on套件時,把processMotorData函式放置到MATLAB的路徑中。呼叫processMotorData時,會有一條需求被傳送給MATLAB Production Server主機上去執(zhí)行預(yù)測性維護(hù)算法內(nèi)的processMotorData函式,每一個安裝了add-on的使用者端就能去執(zhí)行這個相同的預(yù)測性維護(hù)算法,如圖2所示。
圖2 : MATLAB桌上型使用者透過MATLAB Production Server存取processMotorDat。
使用者開發(fā)
當(dāng)add-on套件被安裝之后,這些終端使用者就可以從他們桌面端的MATLAB來跟 processMotorData函式進(jìn)行互動。舉例來說,MATLAB的help指令顯示了來自原始函式的協(xié)助文字訊息,后記則標(biāo)明processMotorData是在MATLAB Production Server上執(zhí)行。
add-on套件上人類都可以讀懂的全部內(nèi)容,任何執(zhí)行 processMotorData算法的IP智財會在MATLAB Production Server主機上以AES加密來確保安全性。
接著我們透過MATLAB App Designer來建立帶有兩個內(nèi)嵌儀表板的MATLAB app應(yīng)用程序,讓用戶可以選擇一個馬達(dá)數(shù)據(jù)集,并檢視該數(shù)據(jù)執(zhí)行預(yù)測性維護(hù)算法后所產(chǎn)生的結(jié)果。這個馬達(dá)數(shù)據(jù)集是由48小時、一分鐘取樣一次的傳感器讀數(shù)所構(gòu)成。該馬達(dá)在這48小時期間內(nèi)的RUL,會以距離到故障發(fā)生的估計分鐘數(shù)的線性圖表來呈現(xiàn);當(dāng)偵測到異常時,會以紅色圓點標(biāo)示在線性圖表上。
圖3呈現(xiàn)了第8號馬達(dá)的狀態(tài)。圖表上標(biāo)出了幾個異常與一個估計RUL在跌入零之前的一段暫時性下降,這個在大約12小時內(nèi)機器余命從72小時快速的下降到零,顯示出有替換馬達(dá)的急迫性。
圖3 : 可視化呈現(xiàn)第8號馬達(dá)的健康狀態(tài)。
水平方向的擴充
接下來,把算法部署至MATLAB Production Server進(jìn)行規(guī)模擴充:MATLAB Production Server可自動地加入容載量(在條件內(nèi))來響應(yīng)增加的需求。每單一個MATLAB Production Server容納案例可以最多有24個workers,每一個worker可獨立地處理需求?如果主機有足夠的CPU資源的話,還可以同時間進(jìn)行。我們會建議每個worker分配一個核心。
為了說明需求導(dǎo)向的擴充,我們從三個分開的桌上型MATLAB單元開啟predictive analytics app,先執(zhí)行其中一個app副本,并等待它完成,接著讓三個app全部同時執(zhí)行。
圖4為執(zhí)行結(jié)果。在左邊的圖表可以看到每一個app副本的解析結(jié)果。右邊的MATLAB Production Server儀表板展示了現(xiàn)行worker處理程序數(shù)量以及需求的處理量。在實時的截圖上,儀表板顯示有三個現(xiàn)行worker處理程序,以及每秒大約18筆訊息的處理量。
圖4 : 需求導(dǎo)向的水平擴充結(jié)果。
儀表板上的柱形圖繪制了處理量的歷史。每一組直條代表一段時間的活動。較短的直條捕捉到的是只有一個app傳送需求至MATLAB Production Server的那段時間,當(dāng)時的處理量大約為每秒6筆需求。較長的直條代表三組桌上型app都在傳送需求的時候。在第二段時間,MATLAB Production Server自動地啟動兩個額外的workers,藉由需求來帶動擴充,并且讓處理量增加到每秒18筆訊息。
集中化管理、保護(hù)與擴充
藉由開發(fā)之后,processMotorData這個算法范例已經(jīng)具備了安裝于網(wǎng)絡(luò)的一個位置、以AES加密機制保護(hù)、并且可動態(tài)擴展性的特點,已經(jīng)是一項企業(yè)層級的服務(wù)。因此,可以利用MATLAB Compiler SDK和MATLAB Production Server即可建立如同本文所示范的MotorAnalytics可部署檔案一樣。不過,如果是要安裝或使用 processMotorData等函式,只需要MATLAB和MATLAB Client for MATLAB Production Server支持套件就足夠了。
(本文由鈦思科技提供;作者Peter Webb任職于MathWorks公司)
評論