石天祥
(寧夏天地奔牛實(shí)業(yè)集團(tuán)有限公司,寧夏 銀川 750001)
我國(guó)是一個(gè)煤炭大國(guó),煤炭開采屬于勞動(dòng)力密集型行業(yè),因此,提高井下開采設(shè)備的可靠性、并盡可能減少工作面工作人員的數(shù)量就非常重要。提高設(shè)備的可靠型,一是保證設(shè)備設(shè)計(jì)、制造的高技術(shù)水準(zhǔn);二是要靠設(shè)備使用中的日常維護(hù)。如果能開發(fā)適用的井下輸送設(shè)備健康管理系統(tǒng),則首先可以做到對(duì)設(shè)備主要部件的故障診斷和壽命預(yù)估,實(shí)現(xiàn)提前發(fā)現(xiàn)故障,提早解決故障,避免故障擴(kuò)大化,減少設(shè)備停機(jī)時(shí)間和進(jìn)行維護(hù)工作量;其次,健康管理系統(tǒng)可以記錄并存儲(chǔ)設(shè)備在不同狀態(tài)下的運(yùn)行參數(shù),并通過后臺(tái)分析軟件對(duì)其進(jìn)行分析,結(jié)合關(guān)鍵零部件壽命預(yù)估模型,向用戶提供設(shè)備的事前性維護(hù)保養(yǎng)建議。
井下輸送設(shè)備健康管理系統(tǒng)的設(shè)計(jì)分為系統(tǒng)架構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)功能設(shè)計(jì)、系統(tǒng)界面設(shè)計(jì)等幾個(gè)部分。主要技術(shù)棧為Python、PyQt、Flask、SQL、HTML、CSS、JS等。
井下輸送設(shè)備健康管理系統(tǒng)的架構(gòu)采用線上和線下的方式,主要分為4個(gè)部分:線下的邊緣網(wǎng)關(guān)、線上數(shù)據(jù)平臺(tái)、數(shù)據(jù)可視化、輔助程序,如圖1所示。
圖1 井下輸送設(shè)備健康管理系統(tǒng)架構(gòu)設(shè)計(jì)Fig.1 Architecture of underground transportation equipment health management system
線下邊緣網(wǎng)關(guān):①線下邊緣網(wǎng)關(guān)運(yùn)行于采煤工作面設(shè)備列車上的防爆計(jì)算機(jī)上,和井下輸送設(shè)備的智能控制系統(tǒng)保持定時(shí)通信,負(fù)責(zé)采集井下輸送設(shè)備的狀態(tài)數(shù)據(jù)(如電流、電壓、轉(zhuǎn)速、軸承溫度、潤(rùn)滑油油位、振動(dòng)等),經(jīng)過本地存儲(chǔ)和基本計(jì)算后,發(fā)送至線上的數(shù)據(jù)平臺(tái);同時(shí)還會(huì)對(duì)傳感器和設(shè)備關(guān)鍵部件進(jìn)行閾值報(bào)警和故障報(bào)警,以及設(shè)備關(guān)鍵部件的壽命預(yù)估分析。②線下邊緣網(wǎng)關(guān)使用Python+PyQt開發(fā),具有良好的跨平臺(tái)性,既可以在Windows系統(tǒng)下運(yùn)行,也可以在Linux系統(tǒng)下運(yùn)行,結(jié)合煤礦的實(shí)際情況和使用體驗(yàn)等考慮,主要在Windows系統(tǒng)下運(yùn)行。
線上數(shù)據(jù)平臺(tái):線上數(shù)據(jù)平臺(tái)由多個(gè)不同功能的服務(wù)器組成,主要有數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)同步服務(wù)器、Web服務(wù)器、數(shù)據(jù)分析服務(wù)器、API服務(wù)器等等,后期根據(jù)具體的需求,還可以靈活的進(jìn)行橫向和縱向的擴(kuò)充。這些服務(wù)器涉及到的健康管理系統(tǒng)的業(yè)務(wù)應(yīng)用程序全部使用Python開發(fā),而且為了確保業(yè)務(wù)穩(wěn)定,全部運(yùn)行在Linux系統(tǒng)上。①數(shù)據(jù)庫(kù)服務(wù)器用于存儲(chǔ)健康管理系統(tǒng)的所有數(shù)據(jù),并對(duì)上層應(yīng)用提供數(shù)據(jù)服務(wù);后期根據(jù)數(shù)據(jù)量和并發(fā)量可以進(jìn)行負(fù)載均衡和讀寫分離以優(yōu)化性能。②數(shù)據(jù)同步服務(wù)器用于接收邊緣網(wǎng)關(guān)發(fā)送的設(shè)備狀態(tài)數(shù)據(jù)和基礎(chǔ)運(yùn)算結(jié)果,對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理并存儲(chǔ)至數(shù)據(jù)庫(kù)中,同時(shí)還要對(duì)邊緣網(wǎng)關(guān)是否在線進(jìn)行判斷和標(biāo)識(shí);因?yàn)閿?shù)據(jù)同步服務(wù)器可能會(huì)面臨大量的并發(fā),所以使用Python的協(xié)程方式開發(fā)運(yùn)行,極大地提高了系統(tǒng)的運(yùn)行效率。③Web服務(wù)器讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù),提供管理員使用的配置界面和所有用戶使用的數(shù)據(jù)可視化界面,同時(shí)還提供手機(jī)APP所需要的RESTFUL接口;Web服務(wù)器使用Python+Flask開發(fā)。④數(shù)據(jù)分析服務(wù)器通過對(duì)收集的海量數(shù)據(jù)進(jìn)行建模分析,根據(jù)分析結(jié)果改進(jìn)設(shè)備的硬件設(shè)計(jì)及其它方面。⑤API服務(wù)器提供健康管理系統(tǒng)的API接口,用于和ERP和庫(kù)存系統(tǒng)等通信,以便后期實(shí)現(xiàn)設(shè)備的全壽命周期管理。
數(shù)據(jù)可視化:數(shù)據(jù)可視化旨在通過瀏覽器、APP等多種方式,通過圖表、曲線等直觀手段,為用戶呈現(xiàn)井下輸送設(shè)備的各種原始數(shù)據(jù)、分析數(shù)據(jù)、閾值報(bào)警、故障報(bào)警、壽命分析等。
輔助程序:井下輸送設(shè)備健康管理系統(tǒng)數(shù)據(jù)庫(kù)涉及上千個(gè)字段,在為客戶進(jìn)行健康管理系統(tǒng)部署的時(shí)候,有很多字段需要進(jìn)行初始化賦值,比如客戶名稱、設(shè)備名稱、傳感器名稱等等,因?yàn)槊總€(gè)客戶配套的設(shè)備不一樣,所以每次需要初始化的字段也不一樣,而初始化系統(tǒng)能夠通過友好易用的GUI界面極大地提高初始化速度,進(jìn)一步提升部署效率。線上平臺(tái)的諸多服務(wù)器需要7×24 h全年不間斷運(yùn)行,為了保證業(yè)務(wù)正常運(yùn)行,需要部署諸如Zabbix、Nagios等監(jiān)控系統(tǒng),以便實(shí)時(shí)了解整個(gè)系統(tǒng)當(dāng)前的運(yùn)行情況,盡量降低業(yè)務(wù)中斷所造成的損失。后期隨著業(yè)務(wù)量的持續(xù)上升,可能會(huì)有其他的輔助服務(wù)上線,比如認(rèn)證服務(wù)等。
井下輸送設(shè)備健康管理系統(tǒng)采用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),因?yàn)榻】倒芾硐到y(tǒng)定位于SaaS(Software as a Service,軟件即服務(wù))系統(tǒng),且還有運(yùn)行于采煤工作面的邊緣網(wǎng)關(guān),所以數(shù)據(jù)庫(kù)設(shè)計(jì)模式相對(duì)來(lái)說較為復(fù)雜。以下從數(shù)據(jù)庫(kù)選型、唯一標(biāo)識(shí)符、線下邊緣網(wǎng)關(guān)數(shù)據(jù)庫(kù)設(shè)計(jì)、線上數(shù)據(jù)平臺(tái)數(shù)據(jù)庫(kù)設(shè)計(jì)等幾個(gè)方面做簡(jiǎn)單闡述。
數(shù)據(jù)庫(kù)選型:根據(jù)主流性、性能、可靠性、擴(kuò)展性、經(jīng)濟(jì)性、跨平臺(tái)性等多個(gè)方面,結(jié)合實(shí)際業(yè)務(wù)需求,選擇開源的MySQL作為健康管理系統(tǒng)的數(shù)據(jù)庫(kù)管理系統(tǒng)。MySQL 數(shù)據(jù)庫(kù)體積小、速度快、總體擁有成本低、開放源代碼,在互聯(lián)網(wǎng)上應(yīng)用非常廣泛。
唯一標(biāo)識(shí)符:井下輸送設(shè)備健康管理系統(tǒng)定位于SaaS系統(tǒng),數(shù)據(jù)同步服務(wù)器會(huì)同時(shí)接收到不同采煤工作面的健康管理系統(tǒng)的數(shù)據(jù),所以需要一個(gè)唯一標(biāo)識(shí)符對(duì)各個(gè)健康管理系統(tǒng)進(jìn)行區(qū)分,該唯一標(biāo)識(shí)符作為健康管理系統(tǒng)的身份證,會(huì)貫穿在健康管理系統(tǒng)的各個(gè)應(yīng)用方面。因?yàn)樵谏a(chǎn)每一套井下輸送設(shè)備之前,都會(huì)給分配一個(gè)唯一的生產(chǎn)令號(hào),非常符合唯一標(biāo)識(shí)符的特征,所以健康管理系統(tǒng)采用該生產(chǎn)令號(hào)作為唯一標(biāo)識(shí)符。
線下邊緣網(wǎng)關(guān)數(shù)據(jù)庫(kù)設(shè)計(jì):在明確需求的情況下,通過定義實(shí)體、繪制E-R圖、把E-R圖轉(zhuǎn)換為模型、模型檢查、根據(jù)模型定義數(shù)據(jù)庫(kù)等標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)設(shè)計(jì)步驟后,生成邊緣網(wǎng)關(guān)數(shù)據(jù)庫(kù)的數(shù)據(jù)字典。
線上數(shù)據(jù)平臺(tái)數(shù)據(jù)庫(kù)設(shè)計(jì):SaaS系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì),一般也被稱為多租戶數(shù)據(jù)庫(kù)設(shè)計(jì),而常見的多租戶數(shù)據(jù)庫(kù)模型有3種,分別是獨(dú)立數(shù)據(jù)庫(kù)、共享數(shù)據(jù)庫(kù)(獨(dú)立schema)和共享數(shù)據(jù)庫(kù)(共享表),結(jié)合數(shù)據(jù)隔離度、數(shù)據(jù)庫(kù)成本、開發(fā)復(fù)雜度、運(yùn)維復(fù)雜度等性能參數(shù)綜合考慮,健康管理系統(tǒng)采用獨(dú)立數(shù)據(jù)庫(kù)的多租戶模式,雖然該模式數(shù)據(jù)庫(kù)成本較高,但是數(shù)據(jù)隔離度高,開發(fā)復(fù)雜度低,也便于維護(hù)。獨(dú)立數(shù)據(jù)庫(kù)模式下,每套井下輸送設(shè)備的健康管理系統(tǒng)在數(shù)據(jù)平臺(tái)的數(shù)據(jù)庫(kù)中都是一個(gè)單獨(dú)的數(shù)據(jù)庫(kù),使用“統(tǒng)一的前綴.唯一識(shí)別符”作為數(shù)據(jù)庫(kù)名稱,每套健康管理系統(tǒng)的數(shù)據(jù)庫(kù)都具有同樣的數(shù)據(jù)結(jié)構(gòu),也就是線下邊緣網(wǎng)關(guān)數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)。
數(shù)據(jù)共享:除每套健康管理系統(tǒng)擁有自己的獨(dú)立數(shù)據(jù)庫(kù)外,數(shù)據(jù)平臺(tái)的其他服務(wù)程序還需要共享一些公共的、統(tǒng)一的數(shù)據(jù),比如權(quán)限角色、管理員和用戶、機(jī)構(gòu)名稱等獨(dú)立于健康管理系統(tǒng)數(shù)據(jù)之外的數(shù)據(jù),這類數(shù)據(jù)也使用一個(gè)獨(dú)立的數(shù)據(jù)庫(kù),使用“統(tǒng)一的前綴.public”作為數(shù)據(jù)庫(kù)名稱。類似的還有初始化系統(tǒng)的數(shù)據(jù)庫(kù),“統(tǒng)一的前綴.initialize”作為數(shù)據(jù)庫(kù)名稱。
線下邊緣網(wǎng)關(guān)功能設(shè)計(jì):本質(zhì)上來(lái)說,線下邊緣網(wǎng)關(guān)其實(shí)也是一個(gè)獨(dú)立的健康管理系統(tǒng),只為和它通信的井下輸送設(shè)備提供服務(wù),并且具有一個(gè)基本健康管理系統(tǒng)的全部功能,主要有數(shù)據(jù)采集、運(yùn)行狀態(tài)、閾值報(bào)警、故障報(bào)警、壽命預(yù)估、歷史查詢、數(shù)據(jù)同步、報(bào)表生成、使用幫助等9大功能。①數(shù)據(jù)采集功能使用預(yù)先設(shè)定好的協(xié)議和井下輸送設(shè)備的智能控制系統(tǒng)(一般是PLC)進(jìn)行定時(shí)通信,取到數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行分類并存儲(chǔ)至數(shù)據(jù)庫(kù),同時(shí)交由閾值報(bào)警、故障報(bào)警、壽命分析等功能進(jìn)行進(jìn)一步計(jì)算分析,如果沒有正常采集到數(shù)據(jù),則會(huì)報(bào)警并提示對(duì)應(yīng)的錯(cuò)誤信息。②運(yùn)行狀態(tài)以圖表、曲線、進(jìn)度條等直觀的形式展現(xiàn)井下輸送設(shè)備當(dāng)前的運(yùn)行狀態(tài),如啟停狀態(tài)、鏈速、負(fù)載、煤量、運(yùn)行時(shí)間、運(yùn)行里程、使用壽命、報(bào)警燈信息。③閾值報(bào)警是通過將采集到的數(shù)據(jù)與預(yù)先存儲(chǔ)在數(shù)據(jù)庫(kù)中的閾值判斷規(guī)則進(jìn)行比對(duì),以判斷該傳感器當(dāng)前的狀態(tài)是否觸發(fā)報(bào)警,如潤(rùn)滑油油位是否過低、冷卻水壓力是否過低、軸承溫度是否過高等;如果觸發(fā)報(bào)警,系統(tǒng)會(huì)進(jìn)行報(bào)警并將報(bào)警記錄存儲(chǔ)至數(shù)據(jù)庫(kù),除非該傳感器的狀態(tài)值恢復(fù)正常,否則會(huì)持續(xù)報(bào)警。④故障報(bào)警是將采集到的數(shù)據(jù)與預(yù)先存儲(chǔ)在數(shù)據(jù)庫(kù)中的故障診斷規(guī)則進(jìn)行比對(duì),以判斷是否觸發(fā)報(bào)警。故障分為2大類,一類是傳感器故障,如傳感器數(shù)據(jù)超出有效值范圍等,另一類是關(guān)鍵部件(如減速器、電動(dòng)機(jī)、鏈輪軸組等)故障,如減速器潤(rùn)滑油油質(zhì)惡化、減速器軸承故障等。故障診斷規(guī)則是由多個(gè)閾值判斷規(guī)則通過數(shù)學(xué)模型耦合而來(lái)。如果觸發(fā)故障報(bào)警,系統(tǒng)會(huì)進(jìn)行報(bào)警并將報(bào)警記錄存儲(chǔ)至數(shù)據(jù)庫(kù),除非該故障恢復(fù)正常,否則會(huì)持續(xù)報(bào)警。⑤壽命預(yù)估是將井下輸送設(shè)備關(guān)鍵部件的運(yùn)行時(shí)間根據(jù)當(dāng)前的設(shè)備負(fù)載、工作溫度、工作面地質(zhì)條件等多個(gè)因素的權(quán)重系數(shù)進(jìn)行計(jì)算分析,然后將結(jié)果與該關(guān)鍵部件的出廠壽命進(jìn)行對(duì)比,如果達(dá)到觸發(fā)報(bào)警的條件則進(jìn)行報(bào)警,如使用壽命已經(jīng)達(dá)到了設(shè)計(jì)壽命的80%。除非該部件進(jìn)行了更換,否則會(huì)持續(xù)報(bào)警。⑥通過歷史查詢功能可以查詢傳感器的歷史數(shù)據(jù)、傳感器歷史閾值報(bào)警、傳感器歷史故障報(bào)警、關(guān)鍵部件的歷史故障報(bào)警、關(guān)鍵部件歷史壽命報(bào)警等數(shù)據(jù),并支持將查詢結(jié)果導(dǎo)出為Excel文件。⑦數(shù)據(jù)同步功能主要用于將采集到的傳感器數(shù)據(jù)、經(jīng)過分析計(jì)算后的各種報(bào)警、壽命分析結(jié)果實(shí)時(shí)同步至數(shù)據(jù)平臺(tái)的同步服務(wù)器,同時(shí)也會(huì)實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)情況,如果網(wǎng)絡(luò)中斷或者和同步服務(wù)器斷開連接,也會(huì)進(jìn)行提醒。數(shù)據(jù)同步使用多線程獨(dú)立運(yùn)行,以免阻塞主界面影響用戶體驗(yàn)。⑧報(bào)表生成功能會(huì)生成一個(gè)井下輸送設(shè)備截至當(dāng)前時(shí)間的健康體檢報(bào)表,包含了當(dāng)前各個(gè)主要部件的壽命分析、是否有報(bào)警等,及各個(gè)傳感器的情況等等,并可以導(dǎo)出為Excel或PDF文件。⑨使用幫助功能類似一個(gè)用戶手冊(cè),包含了健康管理系統(tǒng)各個(gè)功能的使用說明,用戶可以通過查看使用幫助了解健康管理系統(tǒng)的使用方法、常見問題及解決方法。
線上數(shù)據(jù)平臺(tái)功能設(shè)計(jì):線上數(shù)據(jù)平臺(tái)除了有線下邊緣網(wǎng)關(guān)的所有功能外,還有如下功能。①設(shè)備分布功能使用高德地圖SDK,將各井下輸送設(shè)備依據(jù)經(jīng)緯度顯示在地圖上,在線的顯示為藍(lán)色圖標(biāo),離線的顯示為紅色圖標(biāo);點(diǎn)擊圖標(biāo)后,可顯示健康管理系統(tǒng)的所有功能。管理員權(quán)限可以看到所有設(shè)備,普通用戶只能看到自己所在組織的設(shè)備。②數(shù)據(jù)面板功能將給運(yùn)維人員看的主要數(shù)據(jù)如啟停狀態(tài)、在線狀態(tài)、報(bào)警狀態(tài)等進(jìn)行匯總、顯示。③數(shù)據(jù)分析功能根據(jù)已有的數(shù)據(jù)進(jìn)行一些簡(jiǎn)單的分析,如同一時(shí)刻下,軸承溫度和潤(rùn)滑油油質(zhì)間的關(guān)系等等。④角色管理的角色是一系列權(quán)限的集合,處于這個(gè)角色下的用戶,就具有了該角色下的所有權(quán)限,可以對(duì)角色進(jìn)行添加、修改、刪除等操作。⑤用戶管理的用戶分為普通用戶和管理員用戶,普通用戶必須要依托于某一個(gè)組織架構(gòu)下,如“XX集團(tuán)→YY煤礦→ZZ工作面”和“XX集團(tuán)→WW煤礦→ZZ工作面”這2個(gè)組織架構(gòu),用戶如果是在“XX集團(tuán)”下,則該用戶可以看到“XX集團(tuán)”下所有煤礦工作面的設(shè)備;用戶如果是在“YY煤礦”下,則該用戶可以看到該“YY煤礦”下所有工作面的設(shè)備;用戶如果是在“ZZ工作面”下,則只能看到該工作面下的設(shè)備;管理員用戶由超級(jí)管理員維護(hù),普通用戶由具有權(quán)限的管理員維護(hù)。⑥組織架構(gòu)是樹狀目錄,可以對(duì)組織架構(gòu)進(jìn)行添加、修改、刪除等操作;如果要?jiǎng)h除的組織架構(gòu)下面還有子架構(gòu),則不允許刪除,必須先刪除所有的子架構(gòu)后,才能刪除父架構(gòu)。⑦系統(tǒng)初始化通過漸進(jìn)式步驟,對(duì)健康管理系統(tǒng)相關(guān)字段進(jìn)行初始化操作。初始化完成后會(huì)自動(dòng)生成該設(shè)備的業(yè)務(wù)數(shù)據(jù)庫(kù),并自動(dòng)生成該數(shù)據(jù)庫(kù)SQL文件,使用該SQL文件即可快速部署線下的邊緣網(wǎng)關(guān)的健康管理系統(tǒng),以達(dá)到初始化同步。
線下邊緣網(wǎng)關(guān)界面設(shè)計(jì):因?yàn)榫€下邊緣網(wǎng)關(guān)采用的C/S模式,所以使用Python+PyQt進(jìn)行界面開發(fā)。使用標(biāo)簽頁(yè)的方式進(jìn)行布局,每一個(gè)標(biāo)簽頁(yè)就是一個(gè)主要功能。為了方便調(diào)試,在右上方添加了數(shù)據(jù)源狀態(tài)指示燈和服務(wù)器狀態(tài)指示燈,用以實(shí)時(shí)顯示和數(shù)據(jù)源的通信狀態(tài)以及和同步服務(wù)器的通信狀態(tài)。
線上數(shù)據(jù)平臺(tái)界面設(shè)計(jì):因?yàn)榫€上數(shù)據(jù)平臺(tái)采用的B/S模式,所以使用開源的Python+AdminLTE框架模板。AdminLTE是一個(gè)完全響應(yīng)管理模板?;贐ootstrap3,jQuery 3.3.1 這2個(gè)框架,易定制模板。適合多種屏幕分辨率,從小型移動(dòng)設(shè)備到大型臺(tái)式機(jī)。內(nèi)置了多個(gè)頁(yè)面,包括儀表盤、郵箱、日歷、鎖屏、登錄及注冊(cè)、404錯(cuò)誤、500錯(cuò)誤等頁(yè)面??梢园凑誂dminLTE的默認(rèn)方式,對(duì)主要功能進(jìn)行布局。
萬(wàn)丈高樓平地起,一個(gè)好的系統(tǒng)一定要有一個(gè)良好的設(shè)計(jì)作為基礎(chǔ)。本文結(jié)合可靠性、健壯性、可修改性、先進(jìn)性、可擴(kuò)展性、安全性等多個(gè)角度,詳細(xì)介紹了井下輸送設(shè)備健康管理系統(tǒng)的架構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)功能設(shè)計(jì)、系統(tǒng)界面設(shè)計(jì)等,重點(diǎn)介紹了一些關(guān)鍵技術(shù)點(diǎn),如SaaS系統(tǒng)的技術(shù)架構(gòu)、多租戶數(shù)據(jù)庫(kù)模型、獨(dú)立線程數(shù)據(jù)同步等,為開發(fā)井下輸送設(shè)備健康管理系統(tǒng)打下了堅(jiān)實(shí)的基礎(chǔ)。