杜德鋒,周文進,何江賢,孟凡凱
(1.中國人民解放軍91388部隊,廣東 湛江 524002; 2.海軍工程大學(xué),武漢 430033)
隨著人類對海洋資源的開發(fā)利用不斷深入,大型船舶數(shù)量井噴式增長。振動的評價與控制是大型船舶日常管理的重要方面。機械設(shè)備的振動噪聲過大,不僅影響其使用壽命,且易對船體結(jié)構(gòu)造成損壞,還會對船舶的遠洋航行安全造成危害[1-2]。船員長期處于嘈雜的艙室環(huán)境中,也易對身心造成損害,引發(fā)健康問題[2]。隨著振動噪聲測試系統(tǒng)的不斷發(fā)展、對設(shè)備振動噪聲的認識不斷提高,在整個船舶上布設(shè)振動噪聲測試系統(tǒng)越來越受到重視。但因大型船舶船體結(jié)構(gòu)龐大、機械設(shè)備繁多、管路復(fù)雜[3-5],對全船的振動噪聲測試系統(tǒng)的數(shù)據(jù)融合性提出了較高要求[6]。
現(xiàn)行的船舶振動測試標準對機械設(shè)備、船體結(jié)構(gòu)、推進裝置等振動測試分別做出了具體規(guī)定。機械設(shè)備的振動評價需要在機腳、基座、管路、隔振裝置、設(shè)備與船體連接處上布設(shè)振動測點[7-8];船體結(jié)構(gòu)振動評價需要在沿船體方向在船殼上布設(shè)振動測點;船舶推進裝置的振動評價需要在動力裝置、軸系、以及各種支撐軸承上布設(shè)振動測點。安裝于船舶不同艙室、隸屬于不同類型設(shè)備的振動測點,又因其安裝空間位置、隔振層級、以及不同的測試時間與組合工況的不同,具有復(fù)雜的多重屬性[9-14]??梢钥闯?,全船的振動測試評價數(shù)據(jù)量巨大、振動測點屬性多,在不同的應(yīng)用場景下,一方面需要利用數(shù)據(jù)冗余形成結(jié)構(gòu)性數(shù)據(jù)塊進行批量分析;另一方面需要根據(jù)測點屬性內(nèi)在的聯(lián)系,將測試數(shù)據(jù)與測點屬性解耦剝離開來分別形成易擴展維護的數(shù)據(jù)模塊,進行深度的數(shù)學(xué)挖掘。
Brüel & Kj?r(BK)測試系統(tǒng)[15-16]和LMS測試系統(tǒng)[17-21]都是國際領(lǐng)先、被廣泛應(yīng)用于大型船舶振動噪聲測試的主流代表,均具有一定的智能化管理數(shù)據(jù)能力,可以進行初步的過濾和排序,對于簡單的振動測試分析可以勝任。但對于大型船舶海量振動測試,因設(shè)備間復(fù)雜的耦合關(guān)系、隔振方式的多樣性及傳遞路徑的復(fù)雜性,這些系統(tǒng)能夠開放給用戶的數(shù)據(jù)管理功能還很有限,不能實現(xiàn)歷史數(shù)據(jù)工程化的查詢與調(diào)用,還無法滿足全系統(tǒng)、全周期管理。本文聚焦BK振聲測試系統(tǒng)的數(shù)據(jù)分類、可視化及運行效率問題,為有效控制振聲數(shù)據(jù)顆粒度,基于MySQL關(guān)系型數(shù)據(jù)庫和Python混合編程[22],分別設(shè)計面向查詢結(jié)果的數(shù)據(jù)庫和面向數(shù)據(jù)解耦的數(shù)據(jù)庫交互平臺。著力解決數(shù)據(jù)顆粒度低、交互性弱、提取效率不足等問題,為后續(xù)海量數(shù)據(jù)特征的深度挖掘打下基礎(chǔ)。
MySQL由瑞典MySQL AB公司開發(fā)以來,目前已成長為最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),有著體積小、速度快、支持跨平臺、開源、數(shù)據(jù)存儲量大(支持TB級數(shù)據(jù))等優(yōu)點,可以稱得上是目前運行速度最快的SQL語言數(shù)據(jù)庫之一。在工程領(lǐng)域得到廣泛應(yīng)用。因此以MySQL作為船舶測試系統(tǒng)振聲數(shù)據(jù)庫的開發(fā)平臺。
在大型船舶振聲測試中主要以壓電加速度傳感器來測量旋轉(zhuǎn)機械及船體的振動沖擊[23-24],以傳聲器(麥克風(fēng))來測量艙室的空氣噪聲,這兩種測量元件所采集的數(shù)據(jù)經(jīng)各種預(yù)處理會得到多樣的數(shù)據(jù)類型。
下面以BK測試系統(tǒng)為例來闡明整個數(shù)據(jù)采集及預(yù)處理的主要過程:1)采集階段,按照艙室分布采集前端,各艙室傳感器匯總連接至所在艙室的采集前端(具體數(shù)量由該艙室的傳感器數(shù)量和采集前端的容量決定),利用網(wǎng)絡(luò)交換機將各艙室的采集前端匯總至終端采集軟件,并進行前端配置以便數(shù)據(jù)錄取,每單次采集的數(shù)據(jù)以單個二進制文件格式存儲于硬盤介質(zhì)上,每單次采集即是一個工況下一個單程的總數(shù)據(jù),這樣在多次不同工況的測試下,便得到多個二進制文件,其文件總數(shù)等于各工況乘以其單程數(shù)并求和;2)預(yù)處理階段,根據(jù)振動噪聲評價標準需要:針對壓電加速度傳感器獲取的數(shù)據(jù),需要根據(jù)不同的Reflex數(shù)據(jù)處理鏈對二進制原始數(shù)據(jù)在振動加速度、振動烈度上進行預(yù)處理,振動加速度預(yù)處理數(shù)據(jù)包含振動加速度功率線譜(FFT)、振動加速度特征線譜(CLS,characteristic line spectrum,)、三分之一倍頻程加速度級(CPB)、振動加速度總級(OVERALL)、振動加速度頻域提取(RMS);振動烈度預(yù)處理數(shù)據(jù)包含振動烈度功率線譜(FFT)、振動烈度特征線譜(CLS)、振動烈度頻域提取(RMS);針對傳聲器獲取的數(shù)據(jù),需要根據(jù)Reflex數(shù)據(jù)處理鏈在空氣噪聲上進行預(yù)處理,空氣噪聲預(yù)處理數(shù)據(jù)包含空氣噪聲三分之一倍頻程聲壓級(CPB)、空氣噪聲A計權(quán)聲壓級、空氣噪聲總聲級[15, 25-27],以上共計11種數(shù)據(jù)類型。除振動加速度、烈度的特征線譜數(shù)據(jù)(CLS)需要根據(jù)功率譜(FFT)計算人工干預(yù)分析獲得以外,其他9種數(shù)據(jù)類型存儲在不同的預(yù)處理結(jié)果文本中,各文本文件依靠文件夾系統(tǒng)分類管理,每個數(shù)據(jù)文本都有其獨特的格式,如圖1所示。通常在進行振聲數(shù)據(jù)處理過程中,以非標準數(shù)據(jù)格式實現(xiàn)調(diào)用,數(shù)據(jù)抽取效率低,給后續(xù)的機械振動、船體振聲特性、振動能量傳遞特性的標準化分析帶來困難。
圖1 振動測試系統(tǒng)數(shù)據(jù)預(yù)處理流程框架圖
從數(shù)據(jù)邏輯屬性和后續(xù)分析來看,這11種數(shù)據(jù)類型附屬于某個工況下某個單程的某個測點上,記做數(shù)據(jù)元(工況,單程,測點)。當數(shù)據(jù)元三要素確定了,數(shù)據(jù)也就唯一確定。數(shù)據(jù)元與這11種數(shù)據(jù)類型的對應(yīng)關(guān)系可劃分為兩類,一類是一對一關(guān)系:振動加速度總級、振動加速度頻域提取、振動烈度頻域提取、空氣噪聲A計權(quán)聲壓級、空氣噪聲總聲級;另一類是一對多關(guān)系:振動加速度功率線譜、振動加速度特征線譜、三分之一倍頻程振動加速度級、振動烈度功率線譜、振動烈度特征線譜、三分之一倍頻程聲壓級。
一對一對應(yīng)是一個數(shù)據(jù)元確定了一個一維數(shù)據(jù);一對多對應(yīng)是一個數(shù)據(jù)元確定了一個二維數(shù)據(jù)。以某空調(diào)系統(tǒng)測試為例,額定工況下測得該空調(diào)左側(cè)機腳測點原始數(shù)據(jù)、空調(diào)機體烈度數(shù)據(jù)、空調(diào)開啟時周圍空氣噪聲,經(jīng)BK處理鏈分析得11種數(shù)據(jù)類型,其中一維數(shù)據(jù)為:該左側(cè)機腳的振動加速度總級(OVERALL)、振動頻域提取(RMS)、機體烈度測點頻域提取(RMS)、設(shè)備空氣噪聲A聲級、總聲級;二維數(shù)據(jù)為:該左側(cè)機腳的振動加速度功率譜(FFT)、振動加速度特征譜線(CLS)、振動加速度三分之一倍頻程加速度級、機體烈度功率譜、機體烈度特征譜線(CLS)、設(shè)備空氣噪聲三分之一倍頻程聲壓級。
為有效管理數(shù)據(jù),本文面向查詢結(jié)果和數(shù)據(jù)解耦設(shè)計了兩種數(shù)據(jù)庫系統(tǒng)。
在多次測試并存儲全船振動數(shù)據(jù)信息時,可將每次測試結(jié)果信息解構(gòu)為三大層面:船舶層面信息、測點屬性層面信息、測試數(shù)據(jù)層面信息。其中船舶層面信息查詢變化最少,測點屬性層面查詢變化居中,測試數(shù)據(jù)層面信息查詢變化最大。
船舶層面信息包含:測試船型(posship)(便于同類型船舶橫向比較)、測試等級(posstate)(便于船舶修理前后縱向比較),屬于一維數(shù)據(jù)。
測點屬性層面信息包含:測點名稱(posname)、測點所屬工況(poscondition_name)、測點所屬單程編號(pos_single-passnnumber)、測點所處艙室(poscabine)、測點所處方位(posorientation)、測點所處振動傳遞級別(posposition_level)、測點所屬設(shè)備(posequipment)、測點在空間的三維坐標分量(poscoordinate_x、poscoordinate_y、poscoordinate_z)(便于抽取振動空間分布特性),屬于一維數(shù)據(jù)。
測試數(shù)據(jù)層面信息包含:測點數(shù)據(jù)ID(posid)、測點數(shù)據(jù)單位(posunit)、測試原始數(shù)據(jù)選取時間起點(posstarttime)、測試原始數(shù)據(jù)選取時間終點(posendtime)、測試處理對應(yīng)的文件名稱(posfilename)(便于后續(xù)復(fù)查)、測點數(shù)據(jù),其中測點數(shù)據(jù)就是文中前述的11種數(shù)據(jù)類型,既有一維數(shù)據(jù),也有二維數(shù)據(jù)。
從數(shù)據(jù)元三要素來看,工況、單程、測點所涉及的外延信息主要是船舶層面信息、測點屬性層面信息兩部分構(gòu)成,數(shù)據(jù)涉及的外延信息主要來自測試數(shù)據(jù)層面信息。從數(shù)據(jù)物理屬性來看,數(shù)據(jù)可以分為振動加速度數(shù)據(jù)、振動烈度(速度)數(shù)據(jù)、空氣噪聲數(shù)據(jù);從數(shù)據(jù)元與數(shù)據(jù)對應(yīng)關(guān)系來看,數(shù)據(jù)又可分為一維數(shù)據(jù)(振動加速度OVERALL、振動加速度RMS、空氣噪聲A計權(quán)聲壓級、空氣噪聲總聲級)、二維數(shù)據(jù)(振動加速度FFT、CPB、CLS;振動烈度FFT、CLS;空氣噪聲三分之一倍頻程聲壓級)。
根據(jù)振聲數(shù)據(jù)常規(guī)分析方法,結(jié)合預(yù)處理數(shù)據(jù)文本各自特點,利用數(shù)據(jù)的物理屬性和維度屬性交叉組合,可以建立9個自完備的數(shù)據(jù)關(guān)系表,每張表信息都是可以獨立檢索,不涉及關(guān)系表之間的交叉查詢。以加速度信息為例,其關(guān)系表包含:1)振動加速度一維總表(其中測點數(shù)據(jù)分解為兩個字段posoverall、posrms),如表1所示;2)振動加速度功率線譜二維表(其中測點數(shù)據(jù)分解為兩個字段posx、posy),如表2所示。只需要將測點數(shù)據(jù)分解為對應(yīng)的字段,同時調(diào)整一下測點屬性層面的字段,就可以建立其他7個數(shù)據(jù)關(guān)系表:3)振動三分之一倍頻程加速度級二維表(其中測點數(shù)據(jù)分解為兩個字段poscpbx、poscpby);4)振動加速度特征線譜二維表(其中測點數(shù)據(jù)分解為兩個字段pos_peakx、pos_peaky);5)振動烈度功率線譜二維表(其中測點數(shù)據(jù)分解為兩個字段posx、posy);6)振動烈度功率特征線譜二維表(其中測點數(shù)據(jù)分解為兩個字段pos_peakx、pos_peaky);7)振動烈度頻域提取一維表(其中測點數(shù)據(jù)字段為posrms);8)振動空氣噪聲一維表(其中測點數(shù)據(jù)字段可分解為兩個字段pos_a_weighted_level和pos_totalsound_level);9)振動空氣噪聲三分之一倍頻程頻帶聲壓級表(其中測點數(shù)據(jù)分解為兩個字段poscpbx、poscpby)。
表1 加速度單值總表
表2 加速度功率線譜表
該架構(gòu)數(shù)據(jù)庫采用InnoDB存儲引擎,各表信息是自完備的,沒有利用到多表查詢,因而存在數(shù)據(jù)冗余,但是在撰寫振動圖譜報告時,查詢邏輯簡單。也正是因為數(shù)據(jù)冗余,所占硬盤空間大,在實際測試中,隨著測試數(shù)據(jù)的累積,數(shù)據(jù)庫越來越大,查詢速度變得越來越慢,已經(jīng)不再適合快速給出查詢結(jié)果。為此需要建立數(shù)據(jù)解耦的關(guān)系表,將數(shù)據(jù)元信息與數(shù)據(jù)剝離開來,分別建表存儲,利用表的主外鍵關(guān)聯(lián),建立多表查詢,這樣一來,這些與測試數(shù)據(jù)本身關(guān)聯(lián)的測試變量可以獨立維護,可擴充新的需求變量字段,數(shù)據(jù)庫靈活性更高。
在數(shù)據(jù)分析處理過程中,所有需要檢索的數(shù)據(jù)條目都建立在測點基礎(chǔ)上,當被測船舶、測試工況、測點3個因素明確時,被檢索的數(shù)據(jù)內(nèi)容即被鎖定。
圖2 被測船舶信息表、測試工況信息表、測點信息表三表之間的關(guān)系
被測船舶信息表的固有屬性字段包含:對象名稱、測試等級(狀態(tài)分類)、船舶類型、管理單位、測試水文條件、振聲數(shù)據(jù)采集時間等。測試工況信息表的固有屬性字段包含:工況名稱、原始采集數(shù)據(jù)名稱、預(yù)處理數(shù)據(jù)名稱、工況實施時間等。測點信息表的固有屬性字段包含:測點名稱、測點所屬艙室、測點所屬設(shè)備、測點方位、測點級別等。被測船舶信息表、測試工況信息表、測點信息表三表之間的關(guān)系如圖所示,3個表之間信息是獨立的,用主外鍵形式將三表固連在一起,被測船舶信息表中字段shipID分別對應(yīng)測試工況信息表的字段condi_shipID和測點信息表的字段pos_shipID。
建立的面向數(shù)據(jù)解耦的關(guān)系型數(shù)據(jù)庫也采用InnoDB存儲引擎,所有關(guān)系表總計7個,如圖 3所示,相較于面向查詢結(jié)果的關(guān)系型數(shù)據(jù)庫(如表1和表2所示),數(shù)據(jù)結(jié)構(gòu)進一步優(yōu)化、單表字段明顯減少、表與表之間的關(guān)系更加緊密。測點固有屬性字段歸納到Table_Ship、Table_Condition、Table_Pos三個關(guān)系表中,通過關(guān)系表中主外鍵約束關(guān)系,把測點數(shù)據(jù)特征映射到Table_singlevalue、Table_fft、Table_cpb、Table_peak中去,實現(xiàn)測點名稱固有屬性和測點數(shù)據(jù)的分離。
圖3 面向數(shù)據(jù)解耦的關(guān)系型數(shù)據(jù)庫表
在設(shè)計面向查詢結(jié)果的關(guān)系型數(shù)據(jù)庫時,主要考慮用戶查詢、分析時,SQL語言編寫簡單直觀,因此采用反范式化的schema,讓參與分析的所有數(shù)據(jù)都在一張表中,很好地避免關(guān)聯(lián),如果不需要關(guān)聯(lián),即使表中沒有使用索引,當數(shù)據(jù)比內(nèi)存大時這可能比關(guān)聯(lián)要快得多[28]。但其弱點是:在數(shù)據(jù)入庫時要插入大量重復(fù)的信息,入庫時間慢,修改測點信息時需要修改大量數(shù)據(jù)。為此,面向數(shù)據(jù)解耦的關(guān)系型數(shù)據(jù)庫采用范式化的schema,將重復(fù)的信息抽離出來單獨建表,利用表之間的關(guān)聯(lián)查詢信息,數(shù)據(jù)冗余小,磁盤占用空間小,更新數(shù)據(jù)比反范式要快。但這樣存儲和查詢邏輯復(fù)雜,不按既定規(guī)則來存儲就會混亂。兩種數(shù)據(jù)庫各有優(yōu)點,完全的范式化和完全的反范式化都不是必須追求的,根據(jù)用戶的需要進行選擇。
為保證振動數(shù)據(jù)能高效自動入庫,數(shù)據(jù)庫要同時滿足測點名稱規(guī)范、入庫數(shù)據(jù)格式統(tǒng)一兩個要素,具體步驟如下:
在進行首次測試或增加測點時,先依次讀取各數(shù)據(jù)類文本文件進行測點名稱遍歷匯總,去重得到測點名稱集,進行同一測點的不同名稱數(shù)據(jù)清洗,確保各測點都有規(guī)范唯一的名稱,形成標準測點名稱字典,實現(xiàn)各測點名稱變量到名稱字典間的標準化映射。
振聲測試系統(tǒng)預(yù)處理后的類文本數(shù)據(jù)文件的通常格式較為單一,但未能按圖 1中數(shù)據(jù)類型區(qū)分,比如:加速度類文本文件包含頻帶加速度級和總級,空氣噪聲聲壓頻帶級類文本文件包含頻帶聲壓級、A計權(quán)聲壓級、聲壓總級。因此需要從類文本數(shù)據(jù)格式中抽取特征數(shù)據(jù),轉(zhuǎn)化標準格式。針對面向查詢結(jié)果的關(guān)系型數(shù)據(jù)庫,不同數(shù)據(jù)類型分別隸屬不同關(guān)系表中,標準格式入庫數(shù)據(jù)分別對應(yīng)不同關(guān)系表,因此數(shù)據(jù)類型間不存在約束關(guān)系,見圖4(a)所示。
圖4 數(shù)據(jù)入庫示意圖
在以上標準入庫數(shù)據(jù)格式轉(zhuǎn)化基礎(chǔ)上,基于Python與MySQL混合編程[8],實現(xiàn)數(shù)據(jù)的智能入庫,利用Python庫包pandas,將預(yù)處理數(shù)據(jù)按照預(yù)先指定的字典格式加載到DataFrame后,再使用DataFrame屬性和方法與MySQL進行交互,偽代碼如下:
import pandas as pd
from sqlalchemy import create_engine
sql_link = ‘MySQL+pyMySQL://root:password@localhost:3306/database?charset=utf8’
engine = create_engine(sql_link)
循環(huán)遍歷插入標準入庫數(shù)據(jù)格式
table_insert= pd.DataFrame(標準入庫數(shù)據(jù)格式字典)
table_insert.to_sql(name=‘table_fft’, con=engine, if_exists=‘a(chǎn)ppend’, index=False)
在BK產(chǎn)生的結(jié)果文件中,可通過文件中標記位置信息自動識別數(shù)據(jù)文件類型如圖4所示。
利用pandas庫中的數(shù)據(jù)結(jié)構(gòu)DataFrame與關(guān)系型數(shù)據(jù)庫進行數(shù)據(jù)交互。首先將數(shù)據(jù)按照數(shù)據(jù)庫中關(guān)系表形式轉(zhuǎn)化為字典,后寫入到數(shù)據(jù)結(jié)構(gòu)中DataFrame去形成數(shù)據(jù)集。這樣數(shù)據(jù)入庫要比傳統(tǒng)的單條數(shù)據(jù)逐一入庫效率要高很多。
為實現(xiàn)數(shù)據(jù)的可視化及快速調(diào)用,需要在數(shù)據(jù)庫中進行數(shù)據(jù)查詢。
以加速度功率譜為例,查詢”XXX號”船舶,在“YYYY年-MM月-DD日”時“XXX等級修理前”,工況”Condi_01”下,”01艙”艙室內(nèi)”1#空調(diào)風(fēng)機”設(shè)備上“左前”“機腳”上振動測點的功率譜。其中,面向查詢結(jié)果的關(guān)系型數(shù)據(jù)庫的查詢語句為:
Sql=“SELECT posname, posx as ‘f/(Hz)’, posy as ‘a(chǎn)/(m/s2)’ FROM Database1.Table_vibration_acceleration_fft_manytoone where posship=‘XXX號’ and posstate=‘XXX等級修理前’ and convert(char(10),posstarttime,120)=‘YYYY-MM-DD’ and poscondition_name = ‘Condi_01’ and poscabin=‘01艙’ and posequipment = ‘1#空調(diào)風(fēng)機’ and posorientation = ‘左前’ and pospositon_level = ‘機腳’”
面向數(shù)據(jù)解耦的數(shù)據(jù)庫的查詢SQL語句為:
SELECT shipID into @shipid from Database2.table_ship where ship_num = ‘YYY號’ and ship_state=‘XXX等級修理前’;
SELECT condi_id into @conid from Database2.table_condition WHERE condi_shipID = @shipid and condi_name=‘Condi_01’ and STR_TO_DATE(condi_time,‘%m/%d/%Y’)= STR_TO_DATE(‘YYYY-MM-DD’,‘%Y-%m-%d’);
SELECT pos_id,pos_name into @posid, @posname from Database2.table_pos WHERE pos_shipID = @shipid and pos_cabin=‘01艙’ and pos_equipment= ‘1#空調(diào)風(fēng)機’ and pos_orient = ‘左前’ and pos_pospositon_level =‘機腳’;
SELECT @posname as ‘測點名稱’ ,fft_freq as ‘f/(Hz)’,fft_amp as ‘a(chǎn)/(m/s2)’ from Database2.table_fft where fft_posID=@posid and fft_conID=@conid
頻帶加速度級、頻帶聲壓級、總級、頻域提取等數(shù)據(jù)提取方法與上述查詢語句類似。
在振動測試中,常見的分析有設(shè)備振動隔振效果計算、設(shè)備烈度計算,以及沿船體的振動分布曲線繪制。隔振效果、烈度可依據(jù)計算相關(guān)公式進行SQL語句的編寫,對于批量設(shè)備的隔振效果排序、烈度排序能夠快速得出結(jié)果。對于沿船體的振動分布曲線,既可以在數(shù)據(jù)入庫后,按照物理位置排序的測點集合依次查詢提取數(shù)據(jù)繪圖,也可以在table_pos關(guān)系表中增加測點三維物理位置字段,在執(zhí)行查詢時,任意選取一維坐標進行排序后數(shù)據(jù)提取繪制,用來觀測船體振動狀態(tài),快速定位異常振動源。
以某型船舶全船振動噪聲分析為例,該型船舶共分兩個型號,共測得6艘該型船舶、9個條次的振動噪聲測試歷史數(shù)據(jù),數(shù)據(jù)量累積達15Tb。利用建立的上述分析管理系統(tǒng)建立數(shù)據(jù)庫。由于振動數(shù)據(jù)庫中各個振動測點不是嚴格按照設(shè)備、艙室分類依次出現(xiàn),無法直接從工況提取數(shù)據(jù)集進行圖譜分析,不便于進行查閱。在撰寫分析結(jié)果報告之前,應(yīng)預(yù)先給定一個設(shè)備測點的順序,按照這個順序依次查詢相關(guān)數(shù)據(jù)進行編寫,如圖 5所示。
圖5 數(shù)據(jù)分析報告撰寫示意圖
針對常見的分析所需結(jié)果,例如設(shè)備振動隔振效果計算、設(shè)備烈度計算,以及沿船體的振動分布曲線繪制等要素,都可以根據(jù)上述所建數(shù)據(jù)庫進行數(shù)據(jù)提取分析。隔振效果、烈度可依據(jù)計算相關(guān)公式進行SQL語句的編寫,結(jié)果顯示:對于批量設(shè)備的隔振效果排序、烈度排序能夠快速得出結(jié)果。對于沿船體的振動分布曲線,既可以在數(shù)據(jù)入庫后,按照物理位置排序的測點集合依次查詢提取數(shù)據(jù)繪圖,也可以在table_pos關(guān)系表中增加測點三維物理位置字段,在執(zhí)行查詢時,任意選取一維坐標進行排序后數(shù)據(jù)提取繪制,結(jié)果顯示:該系統(tǒng)可以用來觀測船體振動狀態(tài),快速定位異常振動源。
本文根據(jù)大型船舶振動噪聲測試海量數(shù)據(jù)分析的實際需要,將基于MySQL和BK-Reflex預(yù)處理數(shù)據(jù)文件,按照直接面向查詢結(jié)果和數(shù)據(jù)耦合關(guān)系分別設(shè)計了兩套振動噪聲數(shù)據(jù)庫,在Python環(huán)境下與MySQL進行交互,完成了數(shù)據(jù)庫的智能入庫、快速查詢和批量分析。在此基礎(chǔ)上,還可以按照分析意圖,進行數(shù)據(jù)挖掘,利用SQL靈活編寫查詢語句用于輔助分析,輔助發(fā)現(xiàn)船體振動狀態(tài),快速定位異常振動噪聲源。
經(jīng)過實際的應(yīng)用檢驗,兩套數(shù)據(jù)庫均能達到預(yù)期效果,對比發(fā)現(xiàn):1)面向查詢結(jié)果的關(guān)系型數(shù)據(jù)庫,在數(shù)據(jù)查詢分析時更加友好,sql語句相對簡單、好理解,缺點是數(shù)據(jù)冗余信息多,占用空間大;2)面向數(shù)據(jù)解耦的關(guān)系型數(shù)據(jù)庫,各表之間交互緊密,附加信息字段容易擴展,因邏輯復(fù)雜編寫的sql語句較復(fù)雜,但擴展性好,適合更加復(fù)雜的分析,同樣的測試數(shù)據(jù),數(shù)據(jù)庫所占空間相是前者的1/10。這兩套數(shù)據(jù)庫的優(yōu)缺點在實際運用也充分展現(xiàn),可以根據(jù)不同需要進行選擇。結(jié)合故障診斷學(xué),本文的數(shù)據(jù)庫也可為故障機器學(xué)習(xí)奠定基礎(chǔ)。