尹常艷,段彥鵬
(西安泛華科技開發有限公司,陜西 西安 710075)
當前電子裝備的功能日益強大,對其的維修保障提出了更高要求。裝備維修保障時,測試設備利用測試程序,調用適配器、板卡等資源完成功能檢測,從而得出測試結果。因而測試程序的開發成為了自動測試的核心工作,其重要程度日趨顯著[1-2]。
現階段電子裝備進行維修保障需要通過專業的測控廠商,根據測試需求提供一套內置測試程序集測試系統。當測試程序需要維護升級時,也需借助技術人員實現。測試程序的開發,不但要求技術人員要全面了解測試設備、被測設備、接口等信息,還需要具有相關軟件的開發能力,然后通過編程實現測試功能。
主流開發環境強大的軟件功能、靈活的編程方式毋庸置疑,但也具有開發周期長、入門門檻較高的缺點。另外由于各開發環境所使用的語言、編程方式存在差異,進而導致各開發環境開發的測試程序之間的可互換性差。
由于上述各種因素,本文針對電子裝備測試程序開發的需求,充分考慮了開發環境的易用性及測試程序的通用性,利用虛擬儀器技術,提出一種整合開發過程和資源,快速、便捷地根據測試需求開發測試程序,完成對被測裝備的測試。
虛擬儀器技術是利用高性能的模塊化硬件,結合靈活高效的軟件完成各種測試、測量和自動化的應用。美國國家儀器公司開發LabVIEW圖形開發工具,提供了強大的軟件功能,縮短了產品投放市場時間、提高了產品開發和生成的效率[3]。LabVIEW中提供的VI腳本功能,可編程實現程序的創建、編輯和運行,減少VI的重復編輯。本文即利用VI腳本技術創建LabVIEW程序代碼。
測試程序的開發工具是編寫,編譯,調試測試程序的開發環境,也稱為測試程序軟件開發環境[4]。為減少軟件開發過程對程序生成的影響,本開發方法設計一套圖形化的開發方法,用戶設計出整個測試過程,配置相應的屬性等參數,通過調試后將測試流程自動轉化為LabVIEW程序代碼,實現程序的開發。文中介紹的開發工具主要由工具箱、流程圖繪制、屬性配置、變量管理、調試輸出、流程保存,生成程序這幾大功能塊構成[5]。
工具箱提供測試流程中所需的功能模塊。根據功能劃分為固有模塊和擴展模塊。固有模塊包含開發過程所必須的模塊,如流程控制模塊(While、Switch、Timer等)和基本運算模塊(Add、Subt等);擴展模塊是將第三方提供的用于測試程序流程開發的模塊,如數據采集、信號分析等功能,通過工具將其封裝為具有Plugin方式的DLL,再以Plugin方式加載至擴展模塊中。
流程圖繪制完成圖形化測試流程的編輯。用戶拖拽工具箱上的模塊,將其放置在流程圖繪制窗口,通過連線將各子模塊按邏輯聯系在一起,完成某些特定功能。
屬性配置用于顯示和編輯對象屬性。屬性分為基本屬性和擴展屬性。基本屬性包括對象的基本信息,如名稱、顏色等信息。擴展屬性是對象特有屬性,如針對采集功能,擴展屬性包括采樣率、采樣間隔等信息[6]。
變量管理模塊集中管理程序中所有變量。測試程序中連線只代表程序的執行流程,模塊間的數據交互是依靠變量完成。模塊的輸入可以是一個變量值,也可是多個變量的數學、邏輯、基本函數運算,最終模塊輸入以表達式形式給出,該模塊還會對用戶組合的表達式進行邏輯分析,避免輸入非法表達式。
調試輸出用來動態調試用戶開發的測試流程,降低測試程序自動生成過程中的出錯概率。用戶可針對流程圖上的任一節點來設置斷點、添加探針。在監測窗口可觀察設置的各種變量的變化。調試可采用單步、跳出等方式,在流程圖繪制窗口形象的展示[7]。
調試后無錯誤,將測試流程整體保存為流程配置文件。該文件采用 XML文件形式,文中節點出現的順序即為執行順序,節點的屬性即為配置參數,節點的包含關系即為節點功能單元的嵌套關系。
最后利用VI腳本技術,按照程序中節點的配置參數和執行邏輯自動生成LabVIEW的程序代碼。生成測試程序分為參數解析和程序生成兩部分。參數解析模塊對測試程序的流程文件進行解析,將流程配置信息組織成需要的接口參數。程序生成模塊利用VI腳本技術,通過識別接口參數不同的對象,將其生成并放置在框圖中,然后根據層級關系移動,最終進行連線,從而生成測試程序[82]。
根據測試需求設計測試流程。在工具箱上拖拽所需的功能塊,按照測試邏輯連接各功能塊,通過屬性窗口中設置各功能塊的參數、路徑等信息。完成后通過設置斷點、探針、變量等,在輸出和變量窗口觀察調試信息,對流程進行調試。
開發工具將調試無誤的測試流程信息整理保存,自動生成流程配置文件。該文件用于記錄流程執行順序。文件中節點出現的順序即為執行順序,節點的屬性即為配置參數,節點的包含關系即為節點功能單元的嵌套關系。過程如下:測試流程頂層用節點Root表示測試流程開始,然后記錄測試流程的第一層級的流程控制節點。流程控制節點(WhileLoop、IfStruct、Parallel等)在文件中用容器記錄,每個控制節點分別在下層節點中詳細記錄各自特性信息。例如 WhileLoop,在下層節點中記錄其節點編號、標題、及所在容器的編號。如果其下層還包含容器,則繼續遞歸直至所有流程信息記錄完畢。另外測試流程中還包括變量參數信息,在流程配置文件中用變量節點記錄。變量節點中存儲了程序中定義的所有變量信息,從中可以解析出變量名稱、類型、維數等信息。
解析并整理流程配置文件,將節點的相關配置信息組織成程序生成時所需要接口參數信息。
解析文件調用LabVIEW中的XML文件操作函數實現。從流程配置文件中解析得到的節點類型及相關的信息,例如節點類型為While循環,則從該節點獲取容器號、容器名、循環條件等信息;若節點類型為 Active,則從中獲取調用函數的名稱或者是 Dll函數的路徑、參數名、參數值等信息。若某節點的子節點類型仍是容器節點,則繼續遞歸,直至獲取該節點的所有信息;整個測試流程中所有節點信息會統一放置在接口參數信息中[9]。
利用LabVIEW VI腳本技術,按照接口參數信息將測試流程中所有節點依次添加至 LabVIEW 程序框圖上。例如:節點類型是While循環或者條件結構,則在程序框圖設定位置自動放置While循環或者條件結構。函數節點是根據解析出的類型劃分為內置函數、子函數和外部庫節點。對于內置函數,開發工具根據函數名自動將該函數放置程序框圖上;對于子函數,則從記錄的路徑中將該函數放置在程序框圖上;對于外部庫節點,則將調用庫函數放置在程序框圖上,然后按照 Dll路徑,導出函數調用規范以及參數信息(參數名,參數數據方向,參數類型,參數值等)配置庫節點。至此,測試流程中相關函數,變量、結構信息均以在程序框圖上生成。
接著,遍歷程序框圖中的對象,根據接口函數信息記錄的層級關系,將部分函數、變量等功能塊分別移動到各自的容器中,然后獲取所有需要連線對象,找到連線的源端子和目標端子將兩者連接,實現數據的傳遞。
最后對程序框進行整理,保存在指定路徑下。
至此,測試流程已經轉化為了 LabVIEW 程序代碼。
為了驗證該方法,編寫一個模擬電壓輸出程序。生成的流程配置文件如圖1所示。

圖1 多通道模擬電壓程序流程配置文件Fig.1 Multi-channel analog voltage program flow configuration file

圖2 (左)生成節點 (右)節點移入容器Fig.2 (left) Generating node (right)node immigration container
圖中括號1中Container表示容器,其中包含了While循環(C部分)和4個函數(A和B)。從1中可以看出A中兩個函數在while之前,B中兩個函數在while之后。While循環內部包含3個函數分別用Activity表示。結束條件是由Condition表示,是由while內一個函數的端子控制。括號2中Variable是函數中的變量信息。圖 1(左)是根據流程配置文件生成控件、流程控制節點、函數等信息;圖 2(右)是將相關信息放入流程控制節點;圖3是將控件、函數等根據端子連線信息連接后,整理框圖,保存程序運行。
根據實驗驗證,該方法生成的流程配置文件能夠將測試流程結構描述清楚,根據其記錄的信息,利用VI腳本技術可以正確生成VI程序。

圖3 (左)連線后整理程序(右)運行程序Fig.3 (left) Collate program after connection (right) running program
本文介紹的測試程序圖形化開發方法,所有的功驗證能塊、流程控制結構等均以圖形元素的形式展示,相比傳統的文本編程方式,具有形象直觀、編程門檻低,極大的降低了開發人員的學習成本[10]。同時,采用連線的方式控制節點的執行順序,便于程序調試。
本文提出的測試程序開發方法提出來一種快速生成測試程序的思路。用戶可以采用其它工具生成測試程序的流程配置文件,并通過熟悉的開發環境,編寫腳本程序自動生成測試程序。
[1] 陳希祥, 邱靜, 劉冠軍. 裝備系統測試性方案優化設計技術研究[J]. 中國機械工程, 2010, 21(2): 141-145.
[2] 王俊亞, 陳棣湘, 潘孟春. 基于模型的裝備快速測試方法研究[J]. 計算機測量與控制, 2011, 19(10): 2347-2350.
[3] 林業翔. 基于labVIEW的自動測試系統的研究與實現[D].華南理工大學, 2016.
[4] 齊永龍, 宋斌, 劉道煦. 國外自動測試系統發展綜述[J].國外電子測量技術, 2015, 34(12): 1-4+7.
[5] 梁磊, 劉士儀, 李明. 基于活動圖的OWL-S過程模型的圖形化建模及實現[J]. 軟件, 2012, 33(4): 101-104.
[6] 艾華. 便攜式多功能裝備故障綜合測試儀設計[J]. 中國新通信, 2017, 19(20): 148-149.
[7] 李向東, 高甲子. 艦船裝備系統軟件一體化測試技術與質量控制方法研究[J]. 船舶標準化與質量, 2017(5): 53-59.
[8] 紀亮. 國家物聯網感知裝備產業計量測試中心落戶無錫[J].中國計量, 2017(9): 33.
[9] 李爍, 李明明. 中國醫學裝備協會醫學裝備計量測試專委會學術會議暨首屆青年學組成立大會成功召開[J]. 中國醫學裝備, 2017, 14(8): 140.
[10] 盧超, 黃蔚, 胡國超. 基于圖形數據結構的復雜對象建模設計[J]. 軟件, 2015, 36(12): 220-223.