尹常艷,段彥鵬
(西安泛華科技開發(fā)有限公司,陜西 西安 710075)
當(dāng)前電子裝備的功能日益強(qiáng)大,對(duì)其的維修保障提出了更高要求。裝備維修保障時(shí),測(cè)試設(shè)備利用測(cè)試程序,調(diào)用適配器、板卡等資源完成功能檢測(cè),從而得出測(cè)試結(jié)果。因而測(cè)試程序的開發(fā)成為了自動(dòng)測(cè)試的核心工作,其重要程度日趨顯著[1-2]。
現(xiàn)階段電子裝備進(jìn)行維修保障需要通過(guò)專業(yè)的測(cè)控廠商,根據(jù)測(cè)試需求提供一套內(nèi)置測(cè)試程序集測(cè)試系統(tǒng)。當(dāng)測(cè)試程序需要維護(hù)升級(jí)時(shí),也需借助技術(shù)人員實(shí)現(xiàn)。測(cè)試程序的開發(fā),不但要求技術(shù)人員要全面了解測(cè)試設(shè)備、被測(cè)設(shè)備、接口等信息,還需要具有相關(guān)軟件的開發(fā)能力,然后通過(guò)編程實(shí)現(xiàn)測(cè)試功能。
主流開發(fā)環(huán)境強(qiáng)大的軟件功能、靈活的編程方式毋庸置疑,但也具有開發(fā)周期長(zhǎng)、入門門檻較高的缺點(diǎn)。另外由于各開發(fā)環(huán)境所使用的語(yǔ)言、編程方式存在差異,進(jìn)而導(dǎo)致各開發(fā)環(huán)境開發(fā)的測(cè)試程序之間的可互換性差。
由于上述各種因素,本文針對(duì)電子裝備測(cè)試程序開發(fā)的需求,充分考慮了開發(fā)環(huán)境的易用性及測(cè)試程序的通用性,利用虛擬儀器技術(shù),提出一種整合開發(fā)過(guò)程和資源,快速、便捷地根據(jù)測(cè)試需求開發(fā)測(cè)試程序,完成對(duì)被測(cè)裝備的測(cè)試。
虛擬儀器技術(shù)是利用高性能的模塊化硬件,結(jié)合靈活高效的軟件完成各種測(cè)試、測(cè)量和自動(dòng)化的應(yīng)用。美國(guó)國(guó)家儀器公司開發(fā)LabVIEW圖形開發(fā)工具,提供了強(qiáng)大的軟件功能,縮短了產(chǎn)品投放市場(chǎng)時(shí)間、提高了產(chǎn)品開發(fā)和生成的效率[3]。LabVIEW中提供的VI腳本功能,可編程實(shí)現(xiàn)程序的創(chuàng)建、編輯和運(yùn)行,減少VI的重復(fù)編輯。本文即利用VI腳本技術(shù)創(chuàng)建LabVIEW程序代碼。
測(cè)試程序的開發(fā)工具是編寫,編譯,調(diào)試測(cè)試程序的開發(fā)環(huán)境,也稱為測(cè)試程序軟件開發(fā)環(huán)境[4]。為減少軟件開發(fā)過(guò)程對(duì)程序生成的影響,本開發(fā)方法設(shè)計(jì)一套圖形化的開發(fā)方法,用戶設(shè)計(jì)出整個(gè)測(cè)試過(guò)程,配置相應(yīng)的屬性等參數(shù),通過(guò)調(diào)試后將測(cè)試流程自動(dòng)轉(zhuǎn)化為L(zhǎng)abVIEW程序代碼,實(shí)現(xiàn)程序的開發(fā)。文中介紹的開發(fā)工具主要由工具箱、流程圖繪制、屬性配置、變量管理、調(diào)試輸出、流程保存,生成程序這幾大功能塊構(gòu)成[5]。
工具箱提供測(cè)試流程中所需的功能模塊。根據(jù)功能劃分為固有模塊和擴(kuò)展模塊。固有模塊包含開發(fā)過(guò)程所必須的模塊,如流程控制模塊(While、Switch、Timer等)和基本運(yùn)算模塊(Add、Subt等);擴(kuò)展模塊是將第三方提供的用于測(cè)試程序流程開發(fā)的模塊,如數(shù)據(jù)采集、信號(hào)分析等功能,通過(guò)工具將其封裝為具有Plugin方式的DLL,再以Plugin方式加載至擴(kuò)展模塊中。
流程圖繪制完成圖形化測(cè)試流程的編輯。用戶拖拽工具箱上的模塊,將其放置在流程圖繪制窗口,通過(guò)連線將各子模塊按邏輯聯(lián)系在一起,完成某些特定功能。
屬性配置用于顯示和編輯對(duì)象屬性。屬性分為基本屬性和擴(kuò)展屬性。基本屬性包括對(duì)象的基本信息,如名稱、顏色等信息。擴(kuò)展屬性是對(duì)象特有屬性,如針對(duì)采集功能,擴(kuò)展屬性包括采樣率、采樣間隔等信息[6]。
變量管理模塊集中管理程序中所有變量。測(cè)試程序中連線只代表程序的執(zhí)行流程,模塊間的數(shù)據(jù)交互是依靠變量完成。模塊的輸入可以是一個(gè)變量值,也可是多個(gè)變量的數(shù)學(xué)、邏輯、基本函數(shù)運(yùn)算,最終模塊輸入以表達(dá)式形式給出,該模塊還會(huì)對(duì)用戶組合的表達(dá)式進(jìn)行邏輯分析,避免輸入非法表達(dá)式。
調(diào)試輸出用來(lái)動(dòng)態(tài)調(diào)試用戶開發(fā)的測(cè)試流程,降低測(cè)試程序自動(dòng)生成過(guò)程中的出錯(cuò)概率。用戶可針對(duì)流程圖上的任一節(jié)點(diǎn)來(lái)設(shè)置斷點(diǎn)、添加探針。在監(jiān)測(cè)窗口可觀察設(shè)置的各種變量的變化。調(diào)試可采用單步、跳出等方式,在流程圖繪制窗口形象的展示[7]。
調(diào)試后無(wú)錯(cuò)誤,將測(cè)試流程整體保存為流程配置文件。該文件采用 XML文件形式,文中節(jié)點(diǎn)出現(xiàn)的順序即為執(zhí)行順序,節(jié)點(diǎn)的屬性即為配置參數(shù),節(jié)點(diǎn)的包含關(guān)系即為節(jié)點(diǎn)功能單元的嵌套關(guān)系。
最后利用VI腳本技術(shù),按照程序中節(jié)點(diǎn)的配置參數(shù)和執(zhí)行邏輯自動(dòng)生成LabVIEW的程序代碼。生成測(cè)試程序分為參數(shù)解析和程序生成兩部分。參數(shù)解析模塊對(duì)測(cè)試程序的流程文件進(jìn)行解析,將流程配置信息組織成需要的接口參數(shù)。程序生成模塊利用VI腳本技術(shù),通過(guò)識(shí)別接口參數(shù)不同的對(duì)象,將其生成并放置在框圖中,然后根據(jù)層級(jí)關(guān)系移動(dòng),最終進(jìn)行連線,從而生成測(cè)試程序[82]。
根據(jù)測(cè)試需求設(shè)計(jì)測(cè)試流程。在工具箱上拖拽所需的功能塊,按照測(cè)試邏輯連接各功能塊,通過(guò)屬性窗口中設(shè)置各功能塊的參數(shù)、路徑等信息。完成后通過(guò)設(shè)置斷點(diǎn)、探針、變量等,在輸出和變量窗口觀察調(diào)試信息,對(duì)流程進(jìn)行調(diào)試。
開發(fā)工具將調(diào)試無(wú)誤的測(cè)試流程信息整理保存,自動(dòng)生成流程配置文件。該文件用于記錄流程執(zhí)行順序。文件中節(jié)點(diǎn)出現(xiàn)的順序即為執(zhí)行順序,節(jié)點(diǎn)的屬性即為配置參數(shù),節(jié)點(diǎn)的包含關(guān)系即為節(jié)點(diǎn)功能單元的嵌套關(guān)系。過(guò)程如下:測(cè)試流程頂層用節(jié)點(diǎn)Root表示測(cè)試流程開始,然后記錄測(cè)試流程的第一層級(jí)的流程控制節(jié)點(diǎn)。流程控制節(jié)點(diǎn)(WhileLoop、IfStruct、Parallel等)在文件中用容器記錄,每個(gè)控制節(jié)點(diǎn)分別在下層節(jié)點(diǎn)中詳細(xì)記錄各自特性信息。例如 WhileLoop,在下層節(jié)點(diǎn)中記錄其節(jié)點(diǎn)編號(hào)、標(biāo)題、及所在容器的編號(hào)。如果其下層還包含容器,則繼續(xù)遞歸直至所有流程信息記錄完畢。另外測(cè)試流程中還包括變量參數(shù)信息,在流程配置文件中用變量節(jié)點(diǎn)記錄。變量節(jié)點(diǎn)中存儲(chǔ)了程序中定義的所有變量信息,從中可以解析出變量名稱、類型、維數(shù)等信息。
解析并整理流程配置文件,將節(jié)點(diǎn)的相關(guān)配置信息組織成程序生成時(shí)所需要接口參數(shù)信息。
解析文件調(diào)用LabVIEW中的XML文件操作函數(shù)實(shí)現(xiàn)。從流程配置文件中解析得到的節(jié)點(diǎn)類型及相關(guān)的信息,例如節(jié)點(diǎn)類型為While循環(huán),則從該節(jié)點(diǎn)獲取容器號(hào)、容器名、循環(huán)條件等信息;若節(jié)點(diǎn)類型為 Active,則從中獲取調(diào)用函數(shù)的名稱或者是 Dll函數(shù)的路徑、參數(shù)名、參數(shù)值等信息。若某節(jié)點(diǎn)的子節(jié)點(diǎn)類型仍是容器節(jié)點(diǎn),則繼續(xù)遞歸,直至獲取該節(jié)點(diǎn)的所有信息;整個(gè)測(cè)試流程中所有節(jié)點(diǎn)信息會(huì)統(tǒng)一放置在接口參數(shù)信息中[9]。
利用LabVIEW VI腳本技術(shù),按照接口參數(shù)信息將測(cè)試流程中所有節(jié)點(diǎn)依次添加至 LabVIEW 程序框圖上。例如:節(jié)點(diǎn)類型是While循環(huán)或者條件結(jié)構(gòu),則在程序框圖設(shè)定位置自動(dòng)放置While循環(huán)或者條件結(jié)構(gòu)。函數(shù)節(jié)點(diǎn)是根據(jù)解析出的類型劃分為內(nèi)置函數(shù)、子函數(shù)和外部庫(kù)節(jié)點(diǎn)。對(duì)于內(nèi)置函數(shù),開發(fā)工具根據(jù)函數(shù)名自動(dòng)將該函數(shù)放置程序框圖上;對(duì)于子函數(shù),則從記錄的路徑中將該函數(shù)放置在程序框圖上;對(duì)于外部庫(kù)節(jié)點(diǎn),則將調(diào)用庫(kù)函數(shù)放置在程序框圖上,然后按照 Dll路徑,導(dǎo)出函數(shù)調(diào)用規(guī)范以及參數(shù)信息(參數(shù)名,參數(shù)數(shù)據(jù)方向,參數(shù)類型,參數(shù)值等)配置庫(kù)節(jié)點(diǎn)。至此,測(cè)試流程中相關(guān)函數(shù),變量、結(jié)構(gòu)信息均以在程序框圖上生成。
接著,遍歷程序框圖中的對(duì)象,根據(jù)接口函數(shù)信息記錄的層級(jí)關(guān)系,將部分函數(shù)、變量等功能塊分別移動(dòng)到各自的容器中,然后獲取所有需要連線對(duì)象,找到連線的源端子和目標(biāo)端子將兩者連接,實(shí)現(xiàn)數(shù)據(jù)的傳遞。
最后對(duì)程序框進(jìn)行整理,保存在指定路徑下。
至此,測(cè)試流程已經(jīng)轉(zhuǎn)化為了 LabVIEW 程序代碼。
為了驗(yàn)證該方法,編寫一個(gè)模擬電壓輸出程序。生成的流程配置文件如圖1所示。
圖1 多通道模擬電壓程序流程配置文件Fig.1 Multi-channel analog voltage program flow configuration file
圖2 (左)生成節(jié)點(diǎn) (右)節(jié)點(diǎn)移入容器Fig.2 (left) Generating node (right)node immigration container
圖中括號(hào)1中Container表示容器,其中包含了While循環(huán)(C部分)和4個(gè)函數(shù)(A和B)。從1中可以看出A中兩個(gè)函數(shù)在while之前,B中兩個(gè)函數(shù)在while之后。While循環(huán)內(nèi)部包含3個(gè)函數(shù)分別用Activity表示。結(jié)束條件是由Condition表示,是由while內(nèi)一個(gè)函數(shù)的端子控制。括號(hào)2中Variable是函數(shù)中的變量信息。圖 1(左)是根據(jù)流程配置文件生成控件、流程控制節(jié)點(diǎn)、函數(shù)等信息;圖 2(右)是將相關(guān)信息放入流程控制節(jié)點(diǎn);圖3是將控件、函數(shù)等根據(jù)端子連線信息連接后,整理框圖,保存程序運(yùn)行。
根據(jù)實(shí)驗(yàn)驗(yàn)證,該方法生成的流程配置文件能夠?qū)y(cè)試流程結(jié)構(gòu)描述清楚,根據(jù)其記錄的信息,利用VI腳本技術(shù)可以正確生成VI程序。
圖3 (左)連線后整理程序(右)運(yùn)行程序Fig.3 (left) Collate program after connection (right) running program
本文介紹的測(cè)試程序圖形化開發(fā)方法,所有的功驗(yàn)證能塊、流程控制結(jié)構(gòu)等均以圖形元素的形式展示,相比傳統(tǒng)的文本編程方式,具有形象直觀、編程門檻低,極大的降低了開發(fā)人員的學(xué)習(xí)成本[10]。同時(shí),采用連線的方式控制節(jié)點(diǎn)的執(zhí)行順序,便于程序調(diào)試。
本文提出的測(cè)試程序開發(fā)方法提出來(lái)一種快速生成測(cè)試程序的思路。用戶可以采用其它工具生成測(cè)試程序的流程配置文件,并通過(guò)熟悉的開發(fā)環(huán)境,編寫腳本程序自動(dòng)生成測(cè)試程序。
[1] 陳希祥, 邱靜, 劉冠軍. 裝備系統(tǒng)測(cè)試性方案優(yōu)化設(shè)計(jì)技術(shù)研究[J]. 中國(guó)機(jī)械工程, 2010, 21(2): 141-145.
[2] 王俊亞, 陳棣湘, 潘孟春. 基于模型的裝備快速測(cè)試方法研究[J]. 計(jì)算機(jī)測(cè)量與控制, 2011, 19(10): 2347-2350.
[3] 林業(yè)翔. 基于labVIEW的自動(dòng)測(cè)試系統(tǒng)的研究與實(shí)現(xiàn)[D].華南理工大學(xué), 2016.
[4] 齊永龍, 宋斌, 劉道煦. 國(guó)外自動(dòng)測(cè)試系統(tǒng)發(fā)展綜述[J].國(guó)外電子測(cè)量技術(shù), 2015, 34(12): 1-4+7.
[5] 梁磊, 劉士?jī)x, 李明. 基于活動(dòng)圖的OWL-S過(guò)程模型的圖形化建模及實(shí)現(xiàn)[J]. 軟件, 2012, 33(4): 101-104.
[6] 艾華. 便攜式多功能裝備故障綜合測(cè)試儀設(shè)計(jì)[J]. 中國(guó)新通信, 2017, 19(20): 148-149.
[7] 李向東, 高甲子. 艦船裝備系統(tǒng)軟件一體化測(cè)試技術(shù)與質(zhì)量控制方法研究[J]. 船舶標(biāo)準(zhǔn)化與質(zhì)量, 2017(5): 53-59.
[8] 紀(jì)亮. 國(guó)家物聯(lián)網(wǎng)感知裝備產(chǎn)業(yè)計(jì)量測(cè)試中心落戶無(wú)錫[J].中國(guó)計(jì)量, 2017(9): 33.
[9] 李爍, 李明明. 中國(guó)醫(yī)學(xué)裝備協(xié)會(huì)醫(yī)學(xué)裝備計(jì)量測(cè)試專委會(huì)學(xué)術(shù)會(huì)議暨首屆青年學(xué)組成立大會(huì)成功召開[J]. 中國(guó)醫(yī)學(xué)裝備, 2017, 14(8): 140.
[10] 盧超, 黃蔚, 胡國(guó)超. 基于圖形數(shù)據(jù)結(jié)構(gòu)的復(fù)雜對(duì)象建模設(shè)計(jì)[J]. 軟件, 2015, 36(12): 220-223.