楊 林,程 濤,宋小春
(1湖北工業大學機械工程學院,湖北 武漢430068;2湖北省現代制造質量工程重點實驗室,湖北 武漢430068)
漏磁無損檢測方法具有檢測靈敏度高、檢測速度快以及對鐵磁性材料內外表面缺陷均有較好檢測能力等優點,在鋼管、鋼板等鐵磁性構件的快速自動化檢測方面表現出顯著優勢[1-3].其中,磁化是漏磁檢測的前提,如果構件沒有被磁化到合適的程度,缺陷就很難在其表面形成可被檢出的漏磁場,或者因形成的漏磁場很弱而被噪聲淹沒,影響到漏磁檢測系統的檢測精度和靈敏度.因此,進行漏磁檢測系統設計前,一般需根據檢測對象的結構尺寸,仿真計算并分析外加勵磁場對檢測對象磁化飽和程度的影響,以優化勵磁裝置磁路結構并確定其參數.由于ANSYS軟件具有計算精度高、結果顯示方式靈活多樣等優點,因此,其磁場分析模塊在漏磁檢測有限元分析方面得到廣泛應用[4-5],特別是其提供的參數化設計語言(ANSYS Para metric Design Language,APDL)功能為模型參數修改和重復計算提供了極大的方便.然而,由于漏磁檢測對象多樣,其建模和網格劃分方法各異,對勵磁裝置進行優化時需反復更改結構參數,計算并分析結果,因此,提高有限元軟件的操作友好性和計算效率,是有限元軟件用戶關注的主要問題.為此,本文根據漏磁檢測有限元分析實際需要,分析了基于ANSYS參數化設計語言、數據庫技術和VC++程序設計方法的有限元軟件二次開發技術,設計并實現了一套仿真計算過程對用戶透明的漏磁檢測有限元計算軟件.
軟件的基本架構主要包括對用戶透明的運算系統、文件系統以及可視化用戶界面等(圖1).其中,軟件的運算系統由大量抽象的APDL模版文件組成,每個APDL模版文件主要包括數值計算以及ANSYS命令封裝.根據檢測對象(管、桿、板材等)、磁化方式(周向和軸向)等不同,每個APDL模版文件對應著一種具體的漏磁檢測有限元分析模型;用戶界面包括用戶參數輸入界面和有限元計算結果顯示界面.通過VC++與ANSYS軟件之間的通訊,實現模版文件選擇、參數設置與傳遞、有限元計算和結果顯示等.

圖1 軟件基本架構
軟件運行時,首先對用戶設置的參數進行后臺處理,生成APDL計算模版文件,即漏磁檢測有限元分析的參數化設計代碼;然后,通過VC++程序設計的界面,輸入相關參數,并更新模版文件中的特定參數,從而獲得ANSYS可執行的命令流批處理文件.程序運行流程如圖2所示.

圖2 程序運行流程
APDL是一種解釋性的高級程序語言,提供一般程序語言的功能,如數值運算、邏輯運算、重復執行命令和用戶程序以及訪問ANSYS有限元數據庫等.抽象模版文件通過APDL完成參數化建模、材料定義、網格劃分、載荷和邊界條件定義、分析控制和求解以及參數化后處理結果的顯示等,從而實現參數化有限元分析的全過程.ANSYS自動生成的日志文件(文件格式為*.log)是模版文件設計的基礎.抽象模版文件由于缺乏具體的參數數值,沒有指定求解方式等具體內容,因此只有通過用戶界面交互操作,輸入具體的參數,才能在VC++程序中組合形成分析流程完整的模版文件.
將漏磁檢測有限元分析輸出的日志文件進行修改和簡化,并對待定參數進行特殊標記,即可得到用于漏磁檢測有限元分析的APDL模版文件.該模版文件主要包括8個部分:定義單元類型;定義檢測對象、磁體、銜鐵及空氣材料屬性;建立漏磁檢測有限元分析幾何模型;規劃模型的網格劃分;劃分網格;確定邊界條件;選擇求解類型;后處理定義(結果顯示以及輸出).在使用過程中,VC編寫程序通過逆向原理,將用戶輸入的具體數值自動替換待定參數,即可生成具體可運行的APDL命令流.
本系統采用參數化設計方法,使用APDL語言編寫漏磁檢測有限元分析程序,基于Visual Studio2005編寫自主軟件平臺,實現參數的傳遞和結果的顯示.因此,VC++與ANSYS軟件之間的通訊需完成以下任務:使用VC++編寫的自主化軟件調用ANSYS、自主化軟件讀取APDL文件、存儲及調用用戶每次計算輸入的參數組.有關VC++調用ANSYS軟件的方法在ANSYS幫助文件[6]中都有所表述,其程序設計邏輯流程見圖3.首先是確定程序運行的工作目錄,并獲取ANSYS的安裝目錄,以便調用ANSYS程序及其附屬參數,為后續運行做準備.需要說明的是:
1)應該正確選用產品特征碼,因為不同的分析類型選用不同的產品特征碼,漏磁檢測屬于電磁場分析,因此其選擇的特征碼應為emag;
2)因為ANSYS軟件讀取命令流的字符要求為ASCII,因此模版代碼或者生成的具體APDL運行文件須保存為ASCII格式;
3)參數化設計語言中的部分命令在安裝目錄下才有效,若程序預處理時將其定義其他目錄,則該命令會失效,如命令流中/show語句只能在程序目錄中生成圖形文件,否則,鋼管及銜鐵中的磁力線分布、漏磁場的磁通密度等將均無法顯示;
4)在調用ANSYS前,需配置資源目錄,如模版文件的存放地址、現有分析方案的參數數據庫等,如果不進行配置,則程序后續運行毫無意義.

圖3 VC++調用ANSYS軟件流程
相比傳統的可視化界面,Flash界面美觀且開發周期短.相同效果的軟件界面,Flash還可以節約代碼編寫量.為此,本文主要分析VC++與Flash之間的數據交換、Flash在VC++程序中的右鍵屏蔽以及Flash窗口控制命令向VC++程序傳遞等問題.
1.4.1 VC++與Flash軟件之間的數據交換VC++編譯器通常會給Active X控件提供相應的封裝包,該包提供當前控件的所有功能.針對Flash,VC++提供了CWnd封裝包——CShockwaveFlash.在Flash腳本語言2.0版本中,Flash與VC++程序之間的命令傳遞只有FSCo mmand,這種方式無法傳遞參數及數據.而在本系統中,因為軟件要選擇分析類型,調用有限元分析參數庫,并且還要返回數據組成APDL文件,所以使用該版本無法滿足其界面交互要求.
而As3.0提供了外部應用程序接口,能異步調用且返回調用參數值,其Exter nal Interf ace方式給程序設計帶來了極大的便利.這樣,Flash程序通過Exter nal Interf ace即能與CShock waveFlash進行通訊,其過程如圖4所示.

圖4 Flash與VC++通訊過程
VC++軟件編譯器通過CShock waveFlash控件,為Exter nal Interface提供了一個事件接收器Flash Call.Flash Call事件的響應參數為request,其在External Interface的調用過程中,讀取的數據以XML方式進行封裝.Flash為了獲取調用Exter nal Interface的方法名和參數,需先解析request封裝的XML包.本系統處理Flash Call事件采用void方法,返回數據使用Set Ret ur n Val ue方法.其中,返回的數據也必須是符合Flash規范的XML格式.例如,要返回X ML數據組,把XML添加到〈string〉〈/string〉中,最后Flash平臺通過new XML(str)的方法動態生成數據項.
1.4.2 屏蔽軟件界面的右鍵信息 自主開發的軟件在使用過程中,往往不希望用戶在軟件界面中右鍵彈出Flash屬性菜單.雖然VC++控件提供的Set Menu方法能屏蔽絕大部分菜單,但Flash版權信息無法消除.為此,可以截獲組件的 WM_RBUTTONDOWN消息實現對Flash右鍵菜單的屏蔽.這樣,軟件操作時可以監聽并截獲用戶的右鍵消息,并將消息傳遞到其他類,而不傳遞到Flash控件中去.
在VC++8.0平臺中實現方法如下:CShockwaveFlash派生新的類dull,然后監聽WM_RBUTTONDOWN消息,直接在消息處理函數中注釋掉父類,最后將Flash對象的類修改為新的派生類Dull即可.
1.4.3 Flash控制命令的傳遞 Flash通過使用fsco mmand命令可以實現退出等功能.但是,由于VC++設計的軟件平臺將Flash嵌入軟件內部,因此Flash的退出命令不能直接控制軟件窗體的整體退出.為此,可以在工程項目的對話框CUIShow Dlg類聲明中添加DECLARE_EVENTSINK MAP()和消息映射
af x_msg void On FSCo mmand Flash(LCTSTR co mmand.LCTSTR ar gs);
這樣,當用戶進行窗口最大化、最小化操作時,工程文件中CUIShow Dlg的 WM_SIZE響應通常會把Flash控件布滿整個窗口.不過,這種實現方式可能會造成Flash界面頻繁閃爍.為此,系統采用先重載控件和對話框擦除背景事件,再用代碼防止控件重繪自身的方式來實現窗口控制.
基于上述方法設計的漏磁檢測有限元分析軟件界面如圖5所示.

圖5 軟件系統操作界面
首先,用戶可以根據實際的漏磁檢測物理模型選擇磁化方式和檢測方案;然后,系統根據用戶的選項,從后臺讀取相關APDL模版文件,并提示用戶輸入模版文件中的待定參數;接著,軟件開始進行有限元計算,并可根據用戶需要以多種形式顯示計算結果,圖6所示即為鋼管周向磁化漏磁檢測有限元計算結果的兩種顯示方式.


圖6 計算結果顯示
由于軟件的核心計算功能是通過ANSYS完成的,因此其計算結果具有一定的準確性和可靠性.同時,通過全中文化的界面,用戶只需進行簡單的方案選擇和參數設置即可完成從有限元建模到數值計算、結果顯示等全過程,其不僅極大地簡化了有限元計算過程,還提高了計算效率,使初學者或一般工程技術人員都能有效進行漏磁檢測有限元分析.
根據漏磁檢測有限元計算原理,基于ANSYS參數化設計語言、數據庫技術和VC++程序設計方法,開發了一套漏磁檢測有限元專用分析軟件.運行結果表明,該軟件不僅簡化了漏磁檢測有限元分析過程,提高有限元計算效率,而且計算結果準確可靠,為漏磁檢測系統勵磁裝置和傳感器優化設計提供了一種有效的仿真分析工具.
[1]康宜華,石曉鵬.基于單一軸向磁化的鋼管高速漏磁檢測方法[J].機械工程學報,2010,46(10):8-13.
[2]宋小春,黃松嶺,趙 偉,等.高清晰度儲罐底板漏磁檢測器的研制[J].化工自動化及儀表,2007,34(1):77-80.
[3]宋小春,黃松嶺,趙 偉.天然氣長輸管道裂紋的無損檢測方法[J].天然氣工業,2006,26(7):103-106.
[4]李路明,張家駿,李振星,等.用有限元方法優化漏磁檢測[J].無損檢測,1997,19(6):154-158.
[5]李鶯鶯,靳世久,魏茂安.管道漏磁法檢測的ANSYS仿真研究[J].無損檢測,2005,27(2):72-76.
[6]博嘉科技.有限元分析軟件——ANSYS融會與貫通[M],北京:中國水利水電出版社,2002.