張?jiān)浦蓿瑓?峻,李中秀,鄭瑤佳,晁 闖
(1.國防科技大學(xué) 智能科學(xué)學(xué)院,長沙 410073; 2.北京軌道交通技術(shù)裝備集團(tuán)有限公司,長沙 410073)
高速磁浮軌道作為一種特殊的直線同步電機(jī)的長定子,其幾何線形與電氣特性嚴(yán)重影響著磁浮交通系統(tǒng)的安全運(yùn)營。對此,高速磁浮軌道檢測系統(tǒng)采用了“搭載在線測量-離線數(shù)據(jù)分析”的方式實(shí)現(xiàn)對磁浮軌道狀態(tài)的快速、有效檢測,主要分為軌道不平順檢測、磁場檢測及圖像檢測。不平順檢測的對象為軌道的幾何線形,具體指軌道垂向與導(dǎo)向長波不平順、定子錯(cuò)牙;磁場檢測的對象為磁浮軌道定子面的電氣特性,具體指定子硅鋼片間短路與繞組相間短路造成的行波磁場異常情況;圖像檢測的對象為軌道定子面環(huán)氧層損傷、繞組線纜下掛及緊固螺栓缺失。1公里的軌道不平順數(shù)據(jù)量為951 kB,磁場數(shù)據(jù)量為2 558 kB,圖片約2 906張,長距離的軌道線路導(dǎo)致單次測量數(shù)據(jù)量巨大,利用Matlab現(xiàn)有程序進(jìn)行處理耗時(shí)費(fèi)力,且不利于非專業(yè)人員進(jìn)行操作,因此需設(shè)計(jì)相應(yīng)的地面處理軟件,實(shí)現(xiàn)“一鍵式數(shù)據(jù)處理”,并生成相應(yīng)的檢測報(bào)表,大大提高軌道檢測的效率[1]。
傳統(tǒng)的文本編程語言如C++、java等基本滿足各種數(shù)據(jù)處理系統(tǒng)的要求,但對非軟件專業(yè)的工程人員而言,這種方式編寫難度大,開發(fā)周期長,后期維護(hù)程序繁瑣[2-3]。LabVIEW圖形化開發(fā)軟件將常見的人機(jī)交互按鈕、通訊接口、文件I/O、數(shù)組操作、信號處理、Word/Excel文件操作工具進(jìn)行了封裝,編寫簡單、操作方便,可大大縮短工程軟件的開發(fā)周期[4-5]。同時(shí),LabVIEW中可調(diào)用Matlab Script節(jié)點(diǎn),對于數(shù)據(jù)處理類軟件的編寫帶來了極大的便利[6];Python在基于深度學(xué)習(xí)的圖像處理方面具有強(qiáng)大的優(yōu)勢,同時(shí)可以對程序進(jìn)行打包,通過LabVIEW直接調(diào)用,互不影響,適合聯(lián)合開發(fā)[7-9]。
本文主要介紹基于LabVIEW、Matlab和Python混合編程的高速磁浮軌道檢測系統(tǒng)地面處理軟件的基本架構(gòu)和各部分的主要功能與技術(shù)要點(diǎn),提供一種簡單的混合編程方法。
按照檢測對象的不同,高速磁浮軌道檢測系統(tǒng)地面處理軟件主要分為3個(gè)模塊:不平順處理模塊、磁場處理模塊和圖像處理模塊,3個(gè)模塊的功能相似但互不干擾,各自可獨(dú)立運(yùn)行與維護(hù)。除此之外,該軟件需具備以下優(yōu)點(diǎn):1)可對軌道檢測設(shè)備導(dǎo)出的數(shù)據(jù)文件直接處理,無需進(jìn)行文件格式轉(zhuǎn)化等繁瑣操作;2)軟件的操作方式需簡單,方便一線工人使用,例如一鍵處理、一鍵打印檢測報(bào)表等;3)處理算法參數(shù)調(diào)整部分需設(shè)置相應(yīng)的幫助文檔,方便技術(shù)人員進(jìn)行遠(yuǎn)程指導(dǎo)調(diào)參;4)軌道檢測數(shù)量大,處理時(shí)間長,處理過程中需設(shè)計(jì)對應(yīng)的進(jìn)程提示窗口或錯(cuò)誤提示,以免出現(xiàn)死機(jī)卻盲目等待的狀況;5)報(bào)表需清晰明了地體現(xiàn)檢測結(jié)果,對于軌道異常情況需提供具體的故障種類和位置。
設(shè)計(jì)的高速磁浮軌道檢測系統(tǒng)地面處理軟件的系統(tǒng)分層結(jié)果如圖1所示。數(shù)據(jù)層是數(shù)據(jù)處理的核心,涉及到軟件的運(yùn)行效率,其主要負(fù)責(zé)對輸入數(shù)據(jù)的解析、各傳感器數(shù)據(jù)的融合、對用戶操作狀態(tài)的監(jiān)控、處理子系統(tǒng)間的數(shù)據(jù)傳遞及數(shù)據(jù)的查詢與管理[10];表示層涉及到人機(jī)交互,其主要包括用戶的操作界面、曲線顯示面板、參數(shù)設(shè)置、操作提示及檢測結(jié)果報(bào)表[11-12]。
圖1 地面處理系統(tǒng)分層體系結(jié)構(gòu)圖
此外,為方便一線工作管理,增加了用戶注冊與登錄功能。地面處理軟件整體的工作流程如圖2所示。
圖2 軟件工作流程圖
如圖3所示,高速磁浮軌道檢測地面處理軟件不平順處理模塊需完成的功能包括:多傳感器采集信號的顯示、里程信號與傳感器采樣點(diǎn)的位置匹配、空間濾波、軌道設(shè)計(jì)線形干擾(彎道、坡度)的剔除、列車振動(dòng)干擾剔除、垂向、導(dǎo)向長波不平順特征識別、定子錯(cuò)牙特征識別、檢測結(jié)果顯示及報(bào)表生成。軌道不平順檢測算法由Matlab腳本完成,具體可在Matlab處理軟件中完成程序編寫與調(diào)試,實(shí)現(xiàn)對應(yīng)功能后直接遷移至LabVIEW運(yùn)行。
圖3 不平順處理模塊結(jié)構(gòu)示意圖
如圖4所示,高速磁浮軌道檢測地面處理軟件磁場處理模塊需完成的功能包括:各磁敏傳感器三軸磁場的顯示、里程信息與磁場信息的匹配、檢測距離波動(dòng)對磁場檢測結(jié)果干擾的剔除、定子片間短路故障特征識別、檢測結(jié)果顯示及報(bào)表生成。軌道長定子磁異常檢測算法同樣由Matlab腳本完成,具體方法同軌道不平順檢測模塊。
圖4 行波磁場處理模塊結(jié)構(gòu)示意圖
如圖5所示,高速磁浮軌道檢測系統(tǒng)地面處理軟件圖像處理模塊需完成的功能包括:軌道定子面圖像、線纜圖像及螺栓圖像的顯示、圖像與位置信息的匹配、圖像處理結(jié)果的標(biāo)注、報(bào)表生成。軌道定子面圖像檢測算法由Python編寫,封裝后通過LabVIEW調(diào)用Windows命令實(shí)現(xiàn)LabVIEW與Python的切換。
圖5 圖像處理模塊結(jié)構(gòu)示意圖
高速磁浮軌道檢測系統(tǒng)地面處理軟件的界面如圖6(a)~(f)所示,各處理模塊的界面元素可分為三大類:原始數(shù)據(jù)(圖像)顯示區(qū)域、用戶操作區(qū)域及處理結(jié)果顯示區(qū)域。登陸界面、注冊界面與一般網(wǎng)站功能及使用方法均相同,不再贅述。
圖6 地面處理系統(tǒng)界面設(shè)計(jì)
1)原始數(shù)據(jù)顯示區(qū)域主要用到LabVIEW中的波形顯示控件,可進(jìn)行多通道顯示,同時(shí)其自帶的圖例與圖形工具選板可完成對信號波形的隱藏/顯示、放大/縮小、移動(dòng)及游標(biāo)顯示,使用方便,避免了java/C++編程中對鼠標(biāo)動(dòng)作的監(jiān)控,大大降低了編程難度。
2)用戶操作區(qū)域主要用到文件路徑輸入控件、按鈕、枚舉、文本輸入、文本顯示及進(jìn)度條顯示控件。手動(dòng)導(dǎo)入需處理的原始數(shù)據(jù)、輸入對應(yīng)名稱、設(shè)置相應(yīng)參數(shù),最后點(diǎn)擊開始處理,等待處理完成即可,處理過程無需工人參與,操作簡單不易出錯(cuò)。圖像處理模塊也只包括路徑選擇與開始處理兩個(gè)部分,使用簡單方便。
3)處理結(jié)果顯示區(qū)域主要用到表格控件,其行列自適應(yīng)設(shè)置,顯示格式為字符串類型,可顯示內(nèi)容豐富。不平順處理模塊可顯示左高低、右高低、左導(dǎo)向及右導(dǎo)向不平順異常值即對應(yīng)里程;磁場處理模塊可顯示3種處理算法各自處理結(jié)果,包括磁異常位置信息和磁場異常程度;圖像模塊可直接在圖中標(biāo)明異常位置,同時(shí)完成對故障的分類,及具體顯示定子面擦傷、裂紋、脫落、破損、線纜下掛及螺栓缺失。
為滿足實(shí)際工程需要,結(jié)合LabVIEW、Matlab和Python進(jìn)行混合編程,下面主要介紹以上3種編程語言的具體結(jié)合方法。
2.2.1 Matlab script實(shí)現(xiàn)處理算法
除LabVIEW自帶的信號處理及數(shù)學(xué)分析工具外,可采用靈活度更高的Matlab script腳本,通過添加相應(yīng)的輸入輸出、設(shè)置數(shù)據(jù)類型,可將調(diào)試正常的Matlab腳本直接遷移至LabVIEW中運(yùn)行,如圖7所示。這種運(yùn)行調(diào)用方式雖然要求軟件運(yùn)行平臺配置對應(yīng)的Matlab環(huán)境,但是給算法的編寫和后期修改完善帶來了極大的便利。
圖7 Matlab script調(diào)用示意圖
2.2.2 LabVIEW與Python結(jié)合實(shí)現(xiàn)子模塊切換
為避免調(diào)用子Vi時(shí)的內(nèi)存沖突和前/后面板隱藏切換問題,將各處理子模塊(不平順、磁場、圖像)封裝成可執(zhí)行“.exe”文件,在選擇界面通過執(zhí)行系統(tǒng)命令“Exec.Vi”進(jìn)行調(diào)用[13],這種調(diào)用方式不受調(diào)用對象類型、文件路徑、文件命名方式(中英文均可)的影響,各模塊間互不干擾,獨(dú)立運(yùn)行。該系統(tǒng)中,不平順模塊和磁場模塊利用LabVIEW進(jìn)行編寫,圖像模塊通過Python實(shí)現(xiàn)。同時(shí),該命令可從Vi內(nèi)部執(zhí)行或啟動(dòng)其他基于Windows的應(yīng)用程序、命令行應(yīng)用程序、(Windows)批處理文件或(macOS和Linux)腳本文件,方便后期采用各種編程工具對該系統(tǒng)的功能進(jìn)行擴(kuò)展。
本文采用的調(diào)用方法如圖8所示,其中用戶動(dòng)作由事件結(jié)構(gòu)對界面按鈕值的監(jiān)測實(shí)現(xiàn),當(dāng)某處理模塊執(zhí)行結(jié)束后,可在“select界面”重新進(jìn)行選擇。
圖8 Exec.Vi調(diào)用方法
利用LabVIEW方便快捷的交互設(shè)計(jì)功能,實(shí)現(xiàn)用戶登錄與注冊、原始數(shù)解析和檢測報(bào)表生成。
2.3.1 用戶信息錄入與確認(rèn)
該功能對應(yīng)登陸及注冊界面,判斷邏輯如圖9所示。
圖9 用戶信息確認(rèn)邏輯
利用事件結(jié)構(gòu),根據(jù)用戶動(dòng)作進(jìn)入相應(yīng)的環(huán)節(jié);注冊信息(姓名-工號-密碼)以字符串格式“%s”存儲(chǔ)于本地“registerFile.txt”文件。過程中采用“單按鈕對話框.Vi”進(jìn)行登陸成功/注冊成功/密碼錯(cuò)誤/工號錯(cuò)誤等提示。
2.3.2 原始數(shù)據(jù)的解析
不平順單元和磁場單元采用統(tǒng)一的“.txt”數(shù)據(jù)存儲(chǔ)格式,為了適應(yīng)不同類型數(shù)據(jù)長度不一致的問題,采用可變數(shù)據(jù)幀長結(jié)構(gòu),加入幀類型及數(shù)據(jù)長度的內(nèi)容,格式如下表1所示。圖像模塊直接顯示灰度圖像,不存在原始數(shù)據(jù)解析。數(shù)據(jù)幀類型定義如圖10所示。
表1 數(shù)據(jù)幀格式
圖10 數(shù)據(jù)幀類型定義
根據(jù)該幀格式對原始數(shù)據(jù)進(jìn)行解析,封裝成如圖11的子Vi,方便調(diào)用。其中,左側(cè)/右側(cè)數(shù)據(jù)為3維數(shù)組格式,分別包括不平順數(shù)據(jù)和磁場數(shù)據(jù)。
圖11 原始數(shù)據(jù)解析Vi
2.3.3 檢測報(bào)表的生成
LabVIEW自帶的報(bào)表生成模塊包含簡單word/excel Vi,本文使用“Word Easy Text Vi”可實(shí)現(xiàn)word中的基本操作-表格,標(biāo)題,插圖,基本符號等[14]。本系統(tǒng)設(shè)計(jì)的報(bào)表格式如圖12所示,以不平順模塊為例,文件名格式為“時(shí)間(2020.01.01)+高速磁浮軌道不平順(磁場、圖像)檢測結(jié)果”。
圖12 不平順檢測模塊報(bào)表格式
利用搭載式高速磁浮軌道檢測系統(tǒng)的數(shù)據(jù)進(jìn)行測試,基本功能正常。主要從軟件運(yùn)行所占內(nèi)存、處理速度及Vi節(jié)點(diǎn)來評估軟件的性能。
測試設(shè)備:Intel(R) Core(TM) i5-6300U @2.40 GHz,內(nèi)存8.00 GB,Windows 10,64位操作系統(tǒng)。
表2為登陸模塊(user.Vi)、注冊模塊(register.Vi)、功能選擇模塊(select.Vi),不平順處理模塊(bps.Vi)和磁場處理模塊(mag.Vi)的內(nèi)存使用情況,對照標(biāo)準(zhǔn)為LabVIEW 2020簡單動(dòng)態(tài)信號分析儀(dsAnalyzer.Vi)范例程序。測試結(jié)果表明,所設(shè)計(jì)的高速磁浮軌道檢測系統(tǒng)地面處理軟件內(nèi)存占用情況正常,可在一般的辦公平臺運(yùn)行。
表2 各模塊內(nèi)存使用情況 kB
表3為關(guān)閉其他軟件的前提下不平順模塊、磁場模塊及圖像模塊離線處理速度的測試結(jié)果,并折算為1 km檢測數(shù)據(jù)的處理時(shí)長。測試結(jié)果表明,不平順模塊與磁場模塊處理速度滿足要求,圖像處理模塊受計(jì)算機(jī)配置影響,處理速度較慢,除從算法層面提升處理速度外,也應(yīng)針對該模塊選擇更高性能的計(jì)算平臺。
表3 各模塊處理速度
文本類編程語言的代碼評估指標(biāo)包括代碼長度、復(fù)用代碼占比,而LabVIEW圖形化編程語言一般通過Vi的節(jié)點(diǎn)來評估代碼規(guī)模[15]。測試結(jié)果表明,由于各模塊功能化差異較大,本軟件的代碼復(fù)用性較低。由表4可以看出,只有不平順模塊及磁場模塊存在少量代碼復(fù)用情況,復(fù)用部分為原始數(shù)據(jù)解析、報(bào)表打印、處理結(jié)果顯示。
表4 主子Vi代碼量估算及其占比
提出的基于LabVIEW、Matlab和Python混合編程的高速磁浮軌道檢測系統(tǒng)地面處理軟件可滿足實(shí)際工程中大量數(shù)據(jù)離線處理的需求,同時(shí)具有如下優(yōu)點(diǎn):
1)混合編程方式在保證數(shù)據(jù)處理基本功能的前提下大大降低了軟件開發(fā)難度,有效縮短了開發(fā)周期;
2)不平順模塊、磁場模塊及圖像模塊封裝成.exe文件進(jìn)行調(diào)用的方式避免了各模塊間的內(nèi)存沖突,方便調(diào)試,且易于進(jìn)行功能擴(kuò)展;
3)經(jīng)測試,該軟件運(yùn)行穩(wěn)定,滿足高速磁浮軌道檢測數(shù)據(jù)的處理要求,其內(nèi)存使用與代碼量合理,但算法仍需進(jìn)一步改進(jìn),提高圖像模塊的處理速度,提高檢測效率。