萬莉 舒順強(qiáng) 萬勇 楊勇 劉超 戴永壽
文章編號:2096-1472(2022)-02-46-04
DOI:10.19644/j.cnki.issn2096-1472.2022.002.011
摘? 要:為了充分發(fā)揮金屬磁記憶技術(shù)在管道缺陷檢測中的優(yōu)勢,解決磁記憶信號本身不能判斷缺陷類型的問題,建立了一種管道缺陷識別分類方法,設(shè)計(jì)并開發(fā)了一套基于C#和MATLAB混合編程的長輸油氣管線缺陷識別軟件系統(tǒng)。該軟件利用MATLAB對長輸管線金屬磁記憶數(shù)據(jù)進(jìn)行數(shù)據(jù)處理、特征量計(jì)算及方法建模等工作,利用C#搭建面向用戶的操作界面,使用戶能夠快速準(zhǔn)確地對長輸油氣管道中的腐蝕缺陷、焊縫應(yīng)力集中區(qū)域、彎管應(yīng)力集中區(qū)域進(jìn)行識別定位并加以區(qū)分。
關(guān)鍵詞:金屬磁記憶技術(shù);混合編程;管道缺陷識別;軟件系統(tǒng)
中圖分類號:TP271? ? ?文獻(xiàn)標(biāo)識碼:A
Design and Implementation of Defect Recognition Software?System for Long-distance Oil and Gas Pipeline
WAN Li1, SHU Shunqiang2, WAN Yong3, YANG Yong4, LIU Chao4, DAI Yongshou3
(1.Logistics Management Office, China University of Petroleum, Qingdao 266580, China;
2.College of Control Science and Engineering, China University of Petroleum, Qingdao 266580, China;
3.College of Oceanography and Space Informatics, China University of Petroleum, Qingdao 266580, China;
4.Special Equipment Inspection Institute, Technical Detection Center, Shengli Oil Field of SINOPEC, Dongying 257000, China)
wanli@upc.edu.cn; Z20050038@s.upc.edu.cn; upcwanyong@163.com; yangyong056.slyt@sinopec.com;
liuchao131.slyt@sinopec.com; daiys@upc.edu.cn
Abstract: In order to exert the advantages of metal magnetic memory technology in pipeline defect recognition, and solve the problem that magnetic memory signal itself cannot determine the defect types, this paper proposes to design a pipeline defect recognition and classification method, and develop a defect type recognition software system for long-distance oil and gas pipeline. The development is based on mixed programming of C# and MATLAB (Matrix & Laboratory). MATLAB is used in the software for data processing, feature quantity calculating and method modeling on the metal magnetic memory data of long-distance pipelines. C# is adopted to build a user-oriented operation interface. Thus, users are able to quickly and accurately recognize, position, and distinguish the corrosion defects, weld stress concentration regions and elbow stress concentration regions in long-distance oil and gas pipelines.
Keywords: metal magnetic memory technology; mixed programming; pipeline defect recognition; software system
1? ?引言(Introduction)
油氣輸送管道在運(yùn)行過程中,由于油氣管道內(nèi)部存在著一定的安全質(zhì)量問題以及會(huì)受到外界環(huán)境的干擾,從而會(huì)使其產(chǎn)生各種各樣的缺陷。管道上的缺陷對管道的危害性極高,容易直接造成管道的斷裂和泄漏等安全事故,特別是長輸油氣管道,會(huì)帶來嚴(yán)重的社會(huì)經(jīng)濟(jì)損失和造成環(huán)境的破壞。管道的缺陷主要包括腐蝕性缺陷、應(yīng)力集中缺陷。金屬磁應(yīng)力檢測技術(shù)是一種新型的無損檢測技術(shù),它能夠?qū)崿F(xiàn)管道缺陷的預(yù)警,可以在管道不停運(yùn)的情況下對管道運(yùn)行隱患進(jìn)行檢測。其基本工作原理如下:鐵磁性材料設(shè)備在內(nèi)部的應(yīng)力形變和地磁場的相互作用下,金屬內(nèi)部的磁結(jié)構(gòu)會(huì)產(chǎn)生改變,這種變化一般是不可逆的,會(huì)因?yàn)榫哂幸欢☉?yīng)力形變的位置而使其產(chǎn)生漏磁場。這種漏磁場帶來的只是磁場強(qiáng)度的變化,僅僅依靠檢測的磁記憶信號只能初步判別管道是否存在缺陷,無法區(qū)分管道缺陷的類型。為了解決磁記憶信號本身不能判斷缺陷類型的問題,充分結(jié)合C#與MATLAB的特點(diǎn),我們開展了管道缺陷識別分類的研究,利用混合編程技術(shù)開發(fā)出了長輸管道缺陷類型識別軟件系統(tǒng)。根據(jù)實(shí)驗(yàn)所采集的金屬磁記憶數(shù)據(jù),用戶能夠利用該軟件快速準(zhǔn)確地實(shí)現(xiàn)對長輸油氣管線缺陷類型的判別等操作,為后續(xù)進(jìn)行管道缺陷檢測研究提供了參考。
2? C#與MATLAB混合編程技術(shù)(C# and MATLAB mixed programming)
2.1? ?C#與MATLAB簡介
C#運(yùn)行在.NET Framework和.NET Core之上,并且還集成了VB簡單的可視化操作和C++的高性能,在基于人機(jī)交互界面的軟件開發(fā)過程中更加方便、快捷。
MATLAB是一種強(qiáng)大的計(jì)算和仿真軟件,使用者可以利用較短的程序代碼實(shí)現(xiàn)大規(guī)模的計(jì)算問題。但是,其人機(jī)交互界面的開發(fā)較為困難且所開發(fā)的界面并不美觀,難以滿足實(shí)際工程需要。
2.2? ?C#與MATLAB混合編程的應(yīng)用
黃敬濤研究了一種基于C#和MATLAB混合編程的肝儲(chǔ)備功能分析系統(tǒng)。王子香在現(xiàn)有廣泛研究方法的基礎(chǔ)上,通過C#與MATLAB混合進(jìn)行編程的計(jì)算方法,大大提高了電腦圖像檢索的計(jì)算準(zhǔn)確性和工作效率。劉亞運(yùn)用C#和MATLAB混合編程開發(fā)了一種電纜優(yōu)化分盤管理系統(tǒng)來有效提高電纜資源的利用率,減少了電纜資源的大量浪費(fèi)??卤氲壤肅#與MATLAB混合編程技術(shù)開發(fā)和設(shè)計(jì)出了內(nèi)彈道設(shè)計(jì)模型計(jì)算軟件。李誠剛等開發(fā)出了地磁場可視化繪圖軟件。劉亞等利用C#和MATLAB混合編程技術(shù)設(shè)計(jì)開發(fā)了軸承故障診斷系統(tǒng)。許茂增等設(shè)計(jì)開發(fā)了物流需求預(yù)測系統(tǒng)。陳愛梅等將C#和MATLAB混合編程應(yīng)用于數(shù)字圖像處理。李潔等把C#和MATLAB混合編程應(yīng)用在了SAR圖像的船只檢測中。王永濤等利用C#和MATLAB混合編程的方法設(shè)計(jì)開發(fā)了一套灌區(qū)模糊灌溉控制系統(tǒng)。以上研究均為本文所設(shè)計(jì)的軟件提供了參考。
本文開發(fā)了一套基于C#與MATLAB混合編程的長輸油氣管道缺陷類型識別軟件。根據(jù)實(shí)驗(yàn)所采集的管道金屬磁記憶數(shù)據(jù),可以快速準(zhǔn)確地實(shí)現(xiàn)對長輸油氣管線缺陷類型的判別。
2.3? ?C#與MATLAB混合編程的實(shí)現(xiàn)
本文實(shí)現(xiàn)C#與MATLAB混合編程的方式是將相關(guān)的MATLAB計(jì)算及分析函數(shù)封裝成DLL文件,然后用C#編程時(shí),在相應(yīng)的模塊下調(diào)用相應(yīng)的DLL文件,并添加引用。動(dòng)態(tài)鏈接庫DLL是一個(gè)獨(dú)立的文件,不可以直接執(zhí)行,并且程序可以實(shí)現(xiàn)模塊化。
本文以MATLAB R2020b和Microsoft Visual Studio 2019版本的軟件為例,介紹實(shí)現(xiàn)C#與MATLAB混合編程的過程。混合編程實(shí)現(xiàn)的步驟如下:
(1)編寫MATLAB計(jì)算函數(shù)。
(2)配置MATLAB編譯環(huán)境并編譯生成動(dòng)態(tài)鏈接庫DLL文件。
(3)新建C#項(xiàng)目,創(chuàng)建Windows窗體應(yīng)用,編寫C#程序并引用DLL文件。
2.3.1? ?MATLAB函數(shù)的編譯
首先,利用MATLAB軟件對金屬磁記憶數(shù)據(jù)進(jìn)行數(shù)據(jù)處理、特征量計(jì)算及方法建模等工作,編寫完成MATLAB數(shù)據(jù)分析函數(shù)。
其次,配置MATLAB編譯環(huán)境,需要通過配置MATLAB Compiler SDK(圖1)中的庫編譯器(Library Compiler),將所有的函數(shù)進(jìn)行編譯后生成動(dòng)態(tài)鏈接庫(DLL)文件,通過轉(zhuǎn)換為.Net組件進(jìn)行匯編后,才能被其他C#程序調(diào)用。
在MATLAB R2020b中,可通過deploytool工具實(shí)現(xiàn)編譯功能。在MATLAB命令窗口輸入deploytool命令之后,打開一個(gè)創(chuàng)建DLL文件的程序創(chuàng)建窗口,彈出編譯器類型對話框,如圖2所示。選擇Library Compiler,彈出DLL文件編譯窗口,如圖3所示。在“TYPE”框中選擇.NET Assembly,在“EXPORTED FUNCTIONS”框中添加需要打包的函數(shù)文件,在“PACKAGING OPTIONS”框中默認(rèn)選擇Runtime downloaded from web(此項(xiàng)占據(jù)空間?。?,點(diǎn)擊右側(cè)Package打包后,會(huì)顯示一個(gè)對話框,此時(shí)M函數(shù)文件已經(jīng)被編譯成DLL文件,打包成功后生成四個(gè)文件,如圖4所示。
2.3.2? ?C#編程及調(diào)用動(dòng)態(tài)鏈接庫
打開Microsoft Visual Studio 2019軟件(VS),創(chuàng)建新的應(yīng)用項(xiàng)目,選擇Windows窗體應(yīng)用(.NET Framework),建立C#新項(xiàng)目(圖5)。按照需求,在窗體上添加所需控件及編寫相關(guān)執(zhí)行程序,圖6為添加控件后的軟件操作主界面。為了在C#中調(diào)用MATLAB打包生成的DLL文件,需要在主窗口程序設(shè)計(jì)界面添加using,代碼如下:
using MathWorks.MATLAB.NET.Arrays;
using testmain(文件名);
為了使引用創(chuàng)建的DLL的類庫應(yīng)用于命名空間,需要在其中添加兩個(gè)引用,一個(gè)是for_redistribution_files_only文件夾下的DLL文件,如圖7所示;另一個(gè)是MATLAB R2020b安裝路徑下的toolbox\dotnetbuilder\bin\win64\v4.0中的MWArray.dll文件,如圖8所示。最后為對應(yīng)電腦的64位處理器,在Microsoft Visual Studio 2019軟件界面的配置管理器中,將活動(dòng)解決方案平臺設(shè)為x64,如圖9所示,這樣就完成了添加引用和工程配置。
3? ?軟件設(shè)計(jì)(Design of software)
長輸油氣管線缺陷識別軟件系統(tǒng)應(yīng)用管道缺陷識別分類技術(shù)對油田現(xiàn)場的長距離埋地管道進(jìn)行現(xiàn)場檢測,可以對油氣管道上的腐蝕缺陷、焊縫應(yīng)力集中區(qū)域、彎管應(yīng)力集中區(qū)域進(jìn)行識別定位并加以區(qū)分。該軟件基于金屬磁記憶技術(shù),采用C#與MATLAB混合編程的方法,在導(dǎo)入實(shí)驗(yàn)采集的金屬磁記憶原始數(shù)據(jù)后,經(jīng)過數(shù)據(jù)處理、特征量計(jì)算、模型分析后,可以實(shí)現(xiàn)對長輸油氣管線缺陷類型的判別。
本軟件使用的分類方法是應(yīng)用建立的管道磁應(yīng)力缺陷識別技術(shù),對埋地長輸油氣管道中的腐蝕缺陷、焊縫應(yīng)力集中區(qū)域、彎管應(yīng)力集中區(qū)域進(jìn)行識別定位并加以區(qū)分。為了將建立的管道缺陷識別分類方法應(yīng)用到現(xiàn)場長距離埋地管道缺陷類型的識別分類檢測中,首先需要使用磁通門磁力計(jì)對現(xiàn)場油氣管道進(jìn)行磁記憶數(shù)據(jù)采集測試,獲取管道的磁記憶測試數(shù)據(jù),為后續(xù)的缺陷位置和類型測試分析提供基礎(chǔ)測試數(shù)據(jù)。其次,在獲取金屬磁記憶原始測試數(shù)據(jù)后,需要進(jìn)一步獲取缺陷段特征量測試數(shù)據(jù),然后利用缺陷段測試數(shù)據(jù)測試建立的缺陷類型識別分類方法,得到埋地管道缺陷定位和類型識別測試結(jié)果。實(shí)驗(yàn)流程圖如圖10所示。
3.1? ?開發(fā)環(huán)境
該軟件是基于Microsoft Visual Studio 2019和MATLAB R2020b開發(fā)的,在使用該軟件前需要安裝Visual Studio 2019與MATLAB。軟件的.Net Framework框架版本采用的是.Net 4.7.2。
3.2? ?界面設(shè)計(jì)
長輸油氣管線缺陷識別軟件系統(tǒng)由歡迎界面(圖11)和主界面(圖6)組成,主界面以管道原始金屬磁記憶數(shù)據(jù)錄入、缺陷類型識別和缺陷識別分類結(jié)果表格顯示部分為主體,通過各功能按鈕完成對各功能分析程序的調(diào)用。
3.3? ?功能設(shè)計(jì)
該軟件有一個(gè)功能區(qū),即“缺陷識別”,適用于對特定長距離埋地管道進(jìn)行缺陷類型識別。該部分包含兩個(gè)界面,上方是“選擇金屬磁記憶原始文件”,可以選擇采用磁通門磁力計(jì)測取的不同的金屬磁記憶原始數(shù)據(jù),點(diǎn)擊“選擇文件”按鈕,可以導(dǎo)入磁通門磁力計(jì)采集得到的金屬磁記憶原始數(shù)據(jù),如圖12所示。下方界面是“缺陷識別結(jié)果”,在選擇金屬磁記憶原始文件后,點(diǎn)擊“開始識別”按鈕,可以對已選擇的目標(biāo)管道區(qū)域進(jìn)行缺陷識別,并將結(jié)果對應(yīng)展示在管道序號下方。以某采油廠的特定長輸油氣管道為例展示軟件的識別結(jié)果,管道每50 m為一個(gè)測試長度,通過數(shù)據(jù)處理,將其分成25 個(gè)缺陷段,即每2 m管道對應(yīng)一個(gè)缺陷識別區(qū)域,根據(jù)建立的模型分別對管道上的連續(xù)區(qū)域進(jìn)行缺陷識別。每一缺陷區(qū)域可能有腐蝕、焊縫和彎管三種不同的缺陷,某管道缺陷識別結(jié)果圖如圖13所示,若管道缺陷區(qū)域顯示為“1”,對應(yīng)缺陷區(qū)域存在缺陷;若管道缺陷區(qū)域全部顯示為“0”,則三種缺陷都不存在,即為正常直管段。
4? ?結(jié)論(Conclusion)
本文設(shè)計(jì)開發(fā)了基于C#與MATLAB混合編程的長輸管線缺陷識別軟件系統(tǒng),應(yīng)用建立的管道缺陷識別分類方法,利用MATLAB強(qiáng)大的分析計(jì)算及函數(shù)編譯功能,以及C#良好的操作界面,充分結(jié)合MATLAB和C#各自的優(yōu)勢,用戶能夠快速有效地實(shí)現(xiàn)對長距離管道缺陷類型的判別,為后續(xù)進(jìn)行管道缺陷檢測研究提供了參考,具有較高的應(yīng)用價(jià)值。
參考文獻(xiàn)(References)
[1] DOUBOV A A. Screening of weld quality using the magnetic metal memory effect[J]. Welding in the World, 1998, 41(3):196-199.
[2] DOUBOV A A. A study of metal properties using the method of magnetic memory[J]. Metal Science and Heat Treatment, 1997, 39(9):401-405.
[3] JILES D C. Theory of the magnetomechanical effect[J]. Journal of Physics D Applied Physics, 1995, 28(8):1537-1546.
[4] 任吉林,鄔冠華,宋凱,等.金屬磁記憶檢測機(jī)理的探討[J].無損檢測,2002,24(01):29-31.
[5] DOUBOV A A. Diagnostics of equipment and constructions strength with usage of magnetic memory[J]. Inspection Diagnostics, 2001(6):19-29.
[6] 任吉林,王東升,宋凱,等.應(yīng)力狀態(tài)對磁記憶信號的影響[J].航空學(xué)報(bào),2007,28(03):724-728.
[7] 萬勇,萬莉,戴永壽.基于C#與MATLAB混合編程的管道缺陷類型識別實(shí)驗(yàn)系統(tǒng)軟件開發(fā)[J].實(shí)驗(yàn)技術(shù)與管理,2020,37(05):52-57.
[8] 黃敬濤.基于C#與MATLAB混合編程的肝儲(chǔ)備功能分析系統(tǒng)研究[D].長春:吉林大學(xué),2013.
[9] 王子香.基于MATLAB與C#混合編程的圖像檢索系統(tǒng)[D].西安:西安工業(yè)大學(xué),2015.
[10] 劉亞.基于Matlab與C#混合編程的電纜優(yōu)化分盤系統(tǒng)研究[D].北京:華北電力大學(xué),2017.
[11] 柯彪,高躍飛,羅炳華,等.C#與MATLAB混合編程在內(nèi)彈道設(shè)計(jì)中的應(yīng)用[J].彈箭與制導(dǎo)學(xué)報(bào),2013,33(05):129-132.
[12] 李誠剛,趙佳寶,陳兆榮.Visual C#與Matlab混合編程在可視化軟件中的應(yīng)用[J].軟件,2012,33(02):78-79,83.
[13] 劉亞,王靜,田新誠.基于C#和Matlab混合編程的軸承故障診斷系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2018,38(S2):236-238,242.
[14] 許茂增,余國印.基于C#與MATLAB混合編程的物流需求預(yù)測系統(tǒng)的實(shí)現(xiàn)[J].重慶交通大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,34(04):128-132.
[15] 陳愛梅,李慧東.MATLAB與C#混合編程在數(shù)字圖像處理中的應(yīng)用[J].電腦開發(fā)與應(yīng)用,2014,27(11):67-69.
[16] 李潔,王瑞富.Matlab和C#混合編程在SAR圖像船只檢測中的應(yīng)用[J].測繪與空間地理信息,2017,40(02):75-78.
[17] 王永濤,楊璐瑤,胡玥,等.基于C#和Matlab的灌區(qū)模糊灌溉控制系統(tǒng)研究[J].中國農(nóng)村水利水電,2016(06):23-25,33.
[18] 陳柳松,楊利,張宇,等.基于.NET程序集的C#與Matlab混合編程技術(shù)及應(yīng)用[J].控制與信息技術(shù),2018(02):44-46,64.
作者簡介:
萬? ?莉(1981-),女,碩士,高級工程師.研究領(lǐng)域:自動(dòng)化和計(jì)算機(jī)測控.
舒順強(qiáng)(1997-),男,碩士生.研究領(lǐng)域:計(jì)算機(jī)測控和電子信息工程.
萬? ?勇(1979-),男,博士,副教授.研究領(lǐng)域:計(jì)算機(jī)測控和電子信息工程.本文通訊作者.
楊? ?勇(1971-),男,博士,高級工程師.研究領(lǐng)域:腐蝕防護(hù).
劉? ?超(1982-),男,碩士,高級工程師.研究領(lǐng)域:腐蝕防護(hù).
戴永壽(1963-),男,博士,教授.研究領(lǐng)域:計(jì)算機(jī)測控和電子信息工程.
基金項(xiàng)目:國家重點(diǎn)研發(fā)計(jì)劃項(xiàng)目“臨海油氣管道檢測、監(jiān)控技術(shù)研究與儀器裝備研制”(2016YFC0802302).
2863500520254