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