饒臻浩, 張翱龍, 金澤淏, 王俊杰, 武新軍, 何嶺松
(華中科技大學(xué) 機械科學(xué)與工程學(xué)院,湖北 武漢 430074)
大型鋼結(jié)構(gòu)件在建筑、倉儲、化工等行業(yè)得到廣泛應(yīng)用,由于受到制造水平、加工工藝、使用環(huán)境等因素的影響,容易出現(xiàn)疲勞、腐蝕、大面積減薄等多種失效形式,因此需要對鋼結(jié)構(gòu)件進行定期檢測和維護[1-4]。電磁檢測具有非接觸、效率高的優(yōu)勢,在鐵磁構(gòu)件檢測中得到廣泛應(yīng)用。目前,國外的商業(yè)化電磁檢測系統(tǒng)如加拿大Eddyfi公司的Floormap3D型儲罐底板漏磁檢測軟件系統(tǒng),可在檢測過程中接收并處理漏磁檢測(Magnetic Fluxleakage Testing,MFL)信號,生成缺陷分布圖,便于操作人員觀察,具有響應(yīng)快、直觀的優(yōu)點[5];帝國理工大學(xué)開發(fā)的WavePro4導(dǎo)波檢測軟件系統(tǒng)可實現(xiàn)A掃并自動生成檢測報告,還能拓展試件仿真和缺陷定位的功能,具有很好的可拓展性[6]。以上均是專用型檢測系統(tǒng),不能實現(xiàn)多種檢測方式。國內(nèi)多所高校也進行了電磁檢測系統(tǒng)的開發(fā),大連理工大學(xué)材料工程系利用LabVIEW開發(fā)了高溫爐管無損檢測系統(tǒng)[7],可同時進行爐管蠕變損傷的超聲檢測和管壁蠕脹情況的連續(xù)檢測,提升了軟件操作的便捷性和友好性;華中科技大學(xué)儀器系研制了漏磁與電磁超聲復(fù)合檢測系統(tǒng)[8],該軟件系統(tǒng)使用了瀑布模型,實現(xiàn)了漏磁與電磁超聲檢測功能的一體化設(shè)計。這些檢測軟件系統(tǒng)的功能性較強,但是比較依賴于開發(fā)平臺,不利于拓展且開發(fā)周期長。
隨著電磁無損檢測技術(shù)不斷發(fā)展,現(xiàn)有一種電磁檢測儀器可實現(xiàn)漏磁檢測、電磁超聲檢測和導(dǎo)波檢測,通過集成多種檢測方式以提升適用性和檢測效率[9]。同時該儀器對軟件系統(tǒng)提出了新要求,檢測軟件不但需要具備較好的穩(wěn)定性和便捷性,還要提高可重用能力,縮短軟件開發(fā)周期?;谠撾姶艡z測儀器提出了一種軟件可復(fù)用結(jié)構(gòu)設(shè)計方法,以實現(xiàn)功能模塊的獨立開發(fā),提高系統(tǒng)的復(fù)用性和可維護性,并在Windows環(huán)境下的VS2013 MFC(Microsoft Foundation Classes)開發(fā)了電磁檢測軟件,通過測試驗證了該設(shè)計方法的可行性。
按圖1所示的電磁檢測硬件系統(tǒng)進行軟件開發(fā)。電磁檢測硬件系統(tǒng)包括電磁檢測儀器、通信線纜和上位機,其中電磁檢測儀器由檢測探頭、主控電路和運動裝置組成。檢測探頭包括漏磁傳感器、電磁超聲傳感器和導(dǎo)波傳感器。儀器工作時,首先進行導(dǎo)波掃查,初步判斷構(gòu)件損傷情況,如發(fā)現(xiàn)嚴重損傷部位,軟件發(fā)送命令控制檢測儀器運動至損傷位置,再使用電磁超聲和漏磁進行連續(xù)檢測,并實時顯示信號波形圖,檢測完畢后回到初始位置按照規(guī)劃的軌跡繼續(xù)進行導(dǎo)波掃查,不斷循環(huán),直到完成整個構(gòu)件的檢測。
圖1 電磁檢測系統(tǒng)硬件系統(tǒng)圖
電磁檢測軟件采用如圖2所示的“模塊化層次結(jié)構(gòu)”進行設(shè)計[10]。頂層包括漏磁檢測、電磁超聲檢測、導(dǎo)波檢測等,中間層包括通信模塊、數(shù)據(jù)處理模塊、波形顯示模塊等,底層由實現(xiàn)各模塊功能的單元組成。其中通信模塊用于控制通信連接、選擇采集方式、發(fā)送檢測命令和接收檢測數(shù)據(jù);數(shù)據(jù)處理模塊用于解析數(shù)據(jù)包,提取數(shù)據(jù)并進行分析處理;波形顯示模塊包括繪圖算法和圖形設(shè)備接口(Graphics Device Interface,GDI)繪圖,用于實現(xiàn)波形圖繪制及顯示。
圖2 電磁檢測軟件模塊化層次結(jié)構(gòu)
各模塊通過自身的標準接口進行數(shù)據(jù)通信,可獨立進行開發(fā),下面論述其模型設(shè)計。
保障軟件與硬件之間正常通信是完成電磁檢測的重要前提,通信方式有USB、TCP等。軟件的通信功能主要包括連接檢測儀器、發(fā)送檢測命令和采集檢測數(shù)據(jù)。檢測命令能夠完成對電磁檢測儀器的控制和初始化操作,包括參數(shù)設(shè)置命令、開始采集命令、停止采集命令和運動控制命令。檢測數(shù)據(jù)包括不同檢測方式采集的信號。
結(jié)合C++面向?qū)ο筇匦?,對通信功能函?shù)和數(shù)據(jù)對象進行封裝,UML類結(jié)構(gòu)如表1所示。當(dāng)設(shè)計完通信類結(jié)構(gòu)后,使用前首先需要創(chuàng)建通信設(shè)備句柄,然后初始化通信參數(shù),例如ID、IP地址或端口號等。等待建立連接成功后,即可使用標準化接口sendCmd(UCHAR * cmd)對下位機發(fā)送采集命令,使用recvData(unsigned short * data)接收數(shù)據(jù)。
表1 通信模塊類結(jié)構(gòu)
數(shù)據(jù)處理功能主要包括數(shù)據(jù)包解析和數(shù)據(jù)后處理操作,流程如圖3所示。首先將采集的數(shù)據(jù)包內(nèi)容放入unsigned char類型數(shù)組中;然后將數(shù)組指針按序移位對數(shù)組的值逐一解析轉(zhuǎn)換為unsigned short類型,提取出版本號、序列號、信號數(shù)據(jù)量和數(shù)據(jù)值,其數(shù)據(jù)包結(jié)構(gòu)如圖4所示;再使用if語句對數(shù)據(jù)進行逐個驗證,例如:判斷版本號是否匹配;判斷序列號是否溢出;判斷數(shù)據(jù)包中的數(shù)據(jù)值是否出現(xiàn)錯位或丟失;最后通過判斷結(jié)果舍棄錯誤的數(shù)據(jù)包,對正確的數(shù)據(jù)包進行后處理操作,再把序列號、數(shù)據(jù)量和數(shù)據(jù)值放入新的unsigned short類型數(shù)組中,使用標準化接口getData(unsigned short * data)輸出。
圖3 數(shù)據(jù)處理流程
圖4 數(shù)據(jù)包結(jié)構(gòu)
MFC可以支持GDI繪圖,提供了兩個重要的類:繪圖對象類和設(shè)備環(huán)境DC類。其中前者封裝了各種GDI繪圖對象,包括畫筆、顏色和繪圖區(qū)域等,可以用于設(shè)置波形圖線條屬性;后者用于設(shè)置繪圖屬性和圖形類型,可實現(xiàn)波形連續(xù)繪制。
通過結(jié)合使用GDI繪圖方法和雙緩存繪圖模式,實現(xiàn)波形圖實時繪制及顯示。波形顯示模型主要分為三部分:
① 在ShowZone(unsigned int mode)函數(shù)中通過顯示范圍參數(shù)和采集頻率計算橫坐標像素點數(shù)量。當(dāng)使用等時間采集方式時,橫坐標像素點數(shù)量span的計算式如下:
span=timeSpan×sampleFrequency
(1)
當(dāng)使用等空間采集方式時:
(2)
式中:timeSpan為每屏的顯示時間;sampleFrequency為采集頻率;showSpan為每屏的顯示距離;singleDis為采集間隔。
按檢測儀器的通道數(shù)將屏幕按比例劃分區(qū)間,確定縱坐標軸及各通道區(qū)間的縱向像素范圍。在DrawCoord(bool bRedraw)函數(shù)中根據(jù)計算的橫縱坐標像素值繪制坐標軸Bitmap圖像。
② 在GetDataY(UINT value)函數(shù)中將采集得到的數(shù)據(jù)值按比例轉(zhuǎn)換縱向像素坐標值y,在GetDataX(UINT value)函數(shù)中將序號位按比例轉(zhuǎn)換為橫向像素坐標值x,進而可以確定每個數(shù)據(jù)在屏幕的像素坐標(x,y):
希拉克自以為賣弄“幽默”的一番話,沒想到被法國《解放報》公開刊登,這加重了峰會舉辦地、蘇格蘭愛丁堡人的怒火。在針對峰會舉行的示威活動中,街頭抗議者與警察發(fā)生了激烈沖突,造成20人受傷,90人被捕。緊接著,《泰晤士報》以“希拉克嘲弄英國,街頭沖突爆發(fā)”為題,大做文章;其他英國媒體也評論認為,希拉克的話是對英國的侮辱。
x=(w-1)·(vx-x0)/(x1-x0)+0.5
(3)
y=(h-1)·(vy-y0)/(y1-y0)+0.5
(4)
式中:w為橫坐標軸的像素寬度;vx為當(dāng)前采集點的時刻或距離;x0為橫軸坐標范圍的極小值;x1為橫軸坐標范圍的極大值;h為縱坐標軸的像素高度;vy為當(dāng)前采集點的信號值;y0為縱軸坐標范圍的極小值;y1為縱軸坐標范圍的極大值。
在DrawData(bool bRedraw)函數(shù)中,將每個像素點繪制出來,再進行連接,形成信號波形圖Bitmap圖像。
③在OnPaint()函數(shù)中將坐標軸和信號波形圖Bitmap圖像復(fù)制到臨時的CDC變量中,最后對CPaintDC類型變量使用BitBlt()函數(shù)對指定的源設(shè)備環(huán)境區(qū)域中的像素進行位塊轉(zhuǎn)換,再傳送到屏幕顯示器,實現(xiàn)波形顯示。
在硬件層面,總線由導(dǎo)線組成,作為CPU、內(nèi)存、輸入、輸出設(shè)備傳遞信息的公用通道,是計算機各種功能部件的公共通信干線。
在軟件層面,軟件總線結(jié)構(gòu)用于實現(xiàn)不同模塊的數(shù)據(jù)通信[11-13],是實現(xiàn)檢測軟件模塊化設(shè)計的關(guān)鍵。該總線是虛擬存在的,可假想軟件內(nèi)部有一根數(shù)據(jù)總線,其中檢測參數(shù)、檢測命令和檢測數(shù)據(jù)在總線內(nèi)部傳輸,各功能模塊與總線通過接口進行連接,另外調(diào)度控制器作為總線的控制中心負責(zé)模塊的連接和卸載,其結(jié)構(gòu)如圖5所示。
圖5 基于軟件總線的檢測軟件結(jié)構(gòu)
對于該檢測系統(tǒng),各功能模塊需要按一定順序進行工作,屬于串并行復(fù)合系統(tǒng)。其中串行工作模式采用數(shù)據(jù)流驅(qū)動模型[14],并行工作模式采用消息傳遞的雙線程模型,如圖6所示。首先軟件系統(tǒng)讀取用戶輸入的檢測參數(shù)并與下位機建立連接,進入檢測線程后,向下位機發(fā)送檢測命令并接收檢測數(shù)據(jù);然后通過數(shù)據(jù)流驅(qū)動的方式進入繪圖線程,實現(xiàn)信號波形圖的繪制;最后通過線程循環(huán)和消息傳遞的形式實時顯示信號波形圖,同時進行數(shù)據(jù)采集和處理工作。
圖6 基于軟件總線結(jié)構(gòu)的工作模式
根據(jù)該軟件總線結(jié)構(gòu)和工作模式,調(diào)度控制器需要執(zhí)行的任務(wù)是連接或卸載功能模塊、為各模塊分配空間、切換檢測方式和控制檢測狀態(tài)。首先將軟件總線的接口排序編號,并為每個功能模塊提供連接接口空指針;然后控制器再通過軟件界面輸入?yún)?shù)確定模塊連接順序,將空指針指向軟件總線地址,模塊與總線建立連接;最后控制器根據(jù)軟件界面選擇的檢測方式設(shè)定該模式對應(yīng)的檢測數(shù)據(jù)類型、檢測命令格式和繪圖模式。
根據(jù)上述方法,采用MFC開發(fā)了一套電磁檢測軟件,界面如圖7所示。其中軟件界面包含菜單欄、檢測功能目錄、檢測功能對話框、波形圖顯示區(qū)域和狀態(tài)欄。單擊檢測目錄其中一項,界面左側(cè)將展開檢測功能對話框,其中包括參數(shù)輸入編輯框、參數(shù)選擇下拉框和控制按鈕等基礎(chǔ)功能。
① 單擊軟件界面左側(cè)目錄項,選擇一項檢測功能;
② 等待功能對話框展開后,選擇一種通信連接方式,再編輯采集參數(shù)、激勵參數(shù)和顯示參數(shù)等;
圖7 復(fù)合電磁檢測軟件界面
③ 參數(shù)設(shè)定完成后,單擊“連接設(shè)備”按鈕,等待狀態(tài)欄顯示“采集卡已連接”后,再單擊“開始檢測”按鈕;
④ 檢測完成后,按順序單擊“停止檢測”和“斷開連接”按鈕,以完成整個檢測流程。
為滿足該電磁檢測儀器的多種檢測功能需求,該軟件可以通過USB和TCP通信方式分別實現(xiàn)漏磁、電磁超聲和導(dǎo)波3種不同信號的檢測。選用Q235鋼板作為檢測對象,其尺寸參數(shù)為1530 mm×800 mm×20 mm,待檢測的缺陷孔尺寸分別為Φ180×8 mm、Φ150×8 mm、Φ100×12 mm,如圖8所示;電磁檢測儀器如圖9所示。電磁檢測儀器通過平移運動對鋼板進行掃查,檢測路線如圖8虛線所示。首先對鋼板進行導(dǎo)波檢測,確定缺陷位置后;然后切換成漏磁檢測模式,判斷缺陷的大小;最后切換成電磁超聲檢測模式,對鋼板厚度進行檢測,檢測信號結(jié)果如圖10所示。
圖8 Q235鋼板檢測對象
圖9 檢測裝置
圖10 復(fù)合檢測波形圖繪制結(jié)果
圖10(a)展示了測得的Φ180×8 mm缺陷孔的導(dǎo)波信號,缺陷信號比較明顯。圖10(b)展示了測得的3處缺陷孔的漏磁信號,漏磁信號幅值是通過先標定后取差值的方式計算得到的,根據(jù)幅值變化規(guī)律可進一步判斷缺陷情況。圖10(c)展示了3處缺陷孔的厚度值,厚度值是通過電磁超聲信號的回波時差和傳播速度計算得到的,另外觀察各通道的檢測結(jié)果可以發(fā)現(xiàn),當(dāng)電磁超聲傳感器檢測靠近缺陷孔邊緣時,由于邊緣效應(yīng)的影響,測厚波形會出現(xiàn)一定的波動。
試驗結(jié)果表明,當(dāng)電磁檢測軟件使用不同檢測方法進行檢測時,都能正常工作,說明該電磁檢測軟件具有可行性。
軟件的實時性反映了從數(shù)據(jù)傳輸過程到波形顯示過程的延遲情況。當(dāng)延遲越小時,用戶對缺陷的定位越準確;反之,難以精準定位。
由于電磁超聲和導(dǎo)波檢測的采集頻率遠低于漏磁檢測,因此為驗證該電磁檢測軟件的實時性,統(tǒng)計了1000組漏磁檢測過程中記錄的數(shù)據(jù)包傳輸延時和信號波形圖繪制時間,并對其進行分析,結(jié)果如表2所示。
表2 數(shù)據(jù)包傳輸延時和信號波形圖繪制時間分析 單位:ms
試驗結(jié)果表明,數(shù)據(jù)包傳輸?shù)钠骄訒r小于1 ms,信號波形圖繪制的平均時間在16 ms左右,總延遲時間控制在17 ms以內(nèi),說明該電磁檢測軟件具有較好的實時性。
本文給出了一種適用于漏磁、電磁超聲和導(dǎo)波集成的電磁檢測儀器軟件系統(tǒng)的可復(fù)用結(jié)構(gòu)設(shè)計方法。首先在論述模塊化思路的基礎(chǔ)上,給出各功能模塊的設(shè)計模型;然后采用軟件總線結(jié)構(gòu)實現(xiàn)模塊間的數(shù)據(jù)通信,再使用調(diào)度控制器實現(xiàn)模塊與總線的連接或卸載、切換檢測模式或控制檢測狀態(tài);最后基于MFC開發(fā)了電磁檢測軟件,實現(xiàn)了多種電磁檢測功能。實際測試表明,用戶在檢測過程中可使用3種檢測方式進行檢測并實時觀察信號波形圖。提出的設(shè)計方法對提升電磁檢測儀器軟件系統(tǒng)的便捷性和縮短檢測軟件開發(fā)周期具有一定的意義。