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