李磊 楊峰 何耀
(空軍工程大學(xué)導(dǎo)彈學(xué)院,陜西 三原 713800)
檢測(cè)報(bào)告自動(dòng)生成是自動(dòng)測(cè)試系統(tǒng)(automatic testing system,ATS)所具有的重要功能,也是專業(yè)測(cè)試軟件的重要組成部分。隨著計(jì)算機(jī)和虛擬儀器(virtual instrument,VI)技術(shù)的發(fā)展,傳統(tǒng)儀器的簡(jiǎn)單結(jié)果輸出正在被計(jì)算機(jī)自動(dòng)測(cè)試和自動(dòng)生成檢測(cè)報(bào)告所取代。LabVIEW是美國(guó)NI公司推出的一種基于G語言的虛擬儀器軟件開發(fā)工具,也是目前應(yīng)用廣泛、發(fā)展較快、功能強(qiáng)大的圖形化軟件開發(fā)集成環(huán)境[1]。
基于LabVIEW平臺(tái)研制的某型雷達(dá)接收機(jī)組合檢測(cè)儀由數(shù)字萬用表、示波器、邏輯分析儀、任意波形產(chǎn)生器、數(shù)字波形產(chǎn)生器等模塊組成。各模塊需要完成的檢測(cè)項(xiàng)目種類多、數(shù)量大,其檢測(cè)結(jié)果表現(xiàn)為數(shù)值、序列、波形、圖像和文字結(jié)論等多種數(shù)據(jù)形式。在檢測(cè)完成之后,如何利用LabVIEW提供的測(cè)試結(jié)果和報(bào)告生成功能,快速準(zhǔn)確地將各種檢測(cè)結(jié)果和判別結(jié)論按照一定的模版格式和指定順序自動(dòng)地生成,是一個(gè)值得人們研究的問題。
在LabVIEW平臺(tái)環(huán)境下生成報(bào)告的方法有很多,主要有以下幾種:利用Report Generation類函數(shù)模板生成、利用File I/O類函數(shù)生成、通過動(dòng)態(tài)數(shù)據(jù)交換(dynamic data exchange,DDE)生成、通過 ActiveX 技術(shù)生成、利用LabVIEW報(bào)告生成工具包(Report Generation Toolkit)生成等[2]。這些方法的優(yōu)缺點(diǎn)如下。
①利用LabVIEW提供的Report Generation類函數(shù),可以生成標(biāo)準(zhǔn)或HTML網(wǎng)頁格式的報(bào)告,樣式比較美觀,可以插入圖形,能滿足一般用戶的需要。但程序生成過程不直觀、不易調(diào)試,不適合制作樣式較為復(fù)雜、結(jié)構(gòu)不規(guī)則的報(bào)告。
②利用File I/O類函數(shù)生成的報(bào)告是ASCII格式文本,可以顯示內(nèi)容并將報(bào)告打印出來。這種方法雖然程序簡(jiǎn)潔、速度快,但生成報(bào)告的格式單一,無法繪制表格,只能應(yīng)用在對(duì)報(bào)告要求不高的場(chǎng)合。
③DDE可以將LabVIEW作為客戶端,將Excel或Word作為服務(wù)器,LabVIEW通過向Excel或Word發(fā)送虛擬基礎(chǔ)應(yīng)用(visual basic for applications,VBA)命令,從而生成符合要求的報(bào)告。這種方法雖然功能強(qiáng)大,但程序流程不夠直觀,并且需要對(duì)VBA有一定的了解[3]。
④通過ActiveX生成報(bào)告主要是通過Active Automation訪問某個(gè)Windows應(yīng)用程序中的對(duì)象所集成的屬性和方法。將 Excel或 Word視作 Active Automation的服務(wù)器,把LabVIEW作為客戶端去控制Excel或Word的屬性,從而生成所需要的報(bào)告。這種方法功能比較強(qiáng)大,但編程不直觀、難度較大、調(diào)試也比較繁瑣[4]。
⑤LabVIEW報(bào)告生成工具包(Report Generation Toolkit)是LabVIEW中的一個(gè)專用的功能模塊,通過ActiveX技術(shù)將Microsoft Word、Excel與LabVIEW開發(fā)環(huán)境集成起來,并應(yīng)用于快速生成專業(yè)的報(bào)告,從而高效、清晰地表示出各種測(cè)試數(shù)據(jù)和結(jié)果。用戶可以移植、修改現(xiàn)有的報(bào)告模版,并使用標(biāo)準(zhǔn)的LabVIEW功能,擴(kuò)展該工具包的報(bào)告生成功能[5]。本文正是基于這種方法,實(shí)現(xiàn)了某型雷達(dá)接收機(jī)組合檢測(cè)儀的檢測(cè)報(bào)告自動(dòng)生成功能。
全局變量是LabVIEW中的一種內(nèi)置對(duì)象(常量和變量)。該對(duì)象可以在同時(shí)運(yùn)行的多個(gè)VI之間訪問和傳遞數(shù)據(jù)。將檢測(cè)儀在檢測(cè)過程中的各種檢測(cè)結(jié)果作為一種變量,并通常被保存在檢測(cè)程序的VI中,如“組合名稱”、“第一中頻信號(hào)檢測(cè)結(jié)果”和“第一本振信號(hào)檢測(cè)結(jié)果”等。這些檢測(cè)結(jié)果一般表現(xiàn)為數(shù)值、序列、波形、圖像和文字等數(shù)據(jù)形式。將這些數(shù)據(jù)按照一定的方式集中存放,以便檢測(cè)報(bào)告生成程序進(jìn)行查詢和調(diào)用。全局變量具有在多個(gè)VI之間進(jìn)行數(shù)據(jù)訪問和傳遞的性能,能夠?qū)崿F(xiàn)檢測(cè)結(jié)果的集中存放和快速調(diào)用[6]。
在創(chuàng)建全局變量時(shí),LabVIEW將自動(dòng)創(chuàng)建一個(gè)具有前面板但無程序框圖的特殊全局VI。向該全局VI的前面板添加輸入控件和顯示控件可定義其中所含全局變量的數(shù)據(jù)類型,則該前面板實(shí)際便成為一個(gè)可供多個(gè)VI進(jìn)行數(shù)據(jù)訪問的容器。創(chuàng)建全局變量的基本步驟如下。
①?gòu)暮瘮?shù)選板上選擇一個(gè)全局變量,將其放置在程序框圖上。
②雙擊該全局變量節(jié)點(diǎn),可顯示全局VI的前面板。該前面板與標(biāo)準(zhǔn)前面板一樣,可用來放置輸入控件和顯示控件,檢測(cè)結(jié)果一般用顯示控件表示。在創(chuàng)建全局變量時(shí),通常是將原始VI檢測(cè)結(jié)果的顯示控件直接復(fù)制到全局VI的前面板上,以便使全局變量的數(shù)據(jù)類型與檢測(cè)結(jié)果數(shù)據(jù)類型保持一致。
在LabVIEW平臺(tái)中,可創(chuàng)建多個(gè)僅含有一個(gè)前面板對(duì)象的全局VI,也可創(chuàng)建一個(gè)含有多個(gè)前面板對(duì)象的全局VI,從而將相似的變量歸為一組。值得強(qiáng)調(diào)的是,全局變量是自帶標(biāo)簽的,因此全局VI前面板上的所有全局變量都必須具有一定的描述性。
③所有對(duì)象在全局VI前面板上放置完畢后,保存該全局VI并返回到原始VI的程序框圖;然后選擇全局VI中想要訪問的對(duì)象,右鍵單擊該全局變量節(jié)點(diǎn),并從選擇項(xiàng)快捷菜單中選中一個(gè)前面板對(duì)象。該快捷菜單列出了全局VI中所有自帶標(biāo)簽的前面板對(duì)象。
這樣,原始VI中定義的全局變量在程序執(zhí)行過程中就會(huì)將數(shù)據(jù)實(shí)時(shí)地傳遞到全局VI中相應(yīng)的同名全局變量。
在Microsoft Office Word 2003中,以“文檔模板”類型保存的文檔具有不被改寫的屬性。新形成的“文檔1”、“文檔2”等文件可以進(jìn)行人工改寫或通過“插入標(biāo)簽”的方式自動(dòng)改寫。
LabVIEW編程平臺(tái)正是利用這一屬性,開發(fā)了Report Generation Toolkit工具包,實(shí)現(xiàn)了利用Word文檔生成檢測(cè)報(bào)告的方法。接下來需要進(jìn)行以下兩項(xiàng)工作:①在指定路徑以“檢測(cè)報(bào)告”名稱創(chuàng)建并設(shè)計(jì)一個(gè)“文檔模板(*.Dot)”類型的文件;②在指定路徑以指定名稱創(chuàng)建并設(shè)計(jì)一個(gè)檢測(cè)報(bào)告生成VI程序。在完成以上兩項(xiàng)工作之后,該VI程序就能夠調(diào)用“檢測(cè)報(bào)告”模板,并將全局VI中的“檢測(cè)結(jié)果”按照標(biāo)簽指定位置自動(dòng)生成檢測(cè)報(bào)告[7]。
創(chuàng)建并設(shè)計(jì)“文檔模板”文件的步驟如下。
① 雙擊Microsoft Office Word 2003,打開一個(gè)新的Word文檔。
②根據(jù)組合要求的檢測(cè)項(xiàng)目進(jìn)行文檔內(nèi)容和版面設(shè)置,組合測(cè)試報(bào)告的內(nèi)容一般包括檢測(cè)的基本信息、電源檢測(cè)結(jié)果、機(jī)內(nèi)檢測(cè)結(jié)果和整機(jī)檢測(cè)結(jié)果等幾大類,每一大類又包括幾個(gè)具體的檢測(cè)項(xiàng)目。為了清晰地顯示檢測(cè)結(jié)果和結(jié)論,通常把檢測(cè)報(bào)告Word模版中的具體項(xiàng)目設(shè)計(jì)成表格的形式。
③在各具體的檢測(cè)項(xiàng)目后,依次插入與相應(yīng)的全局變量名稱相同的書簽名稱,以便檢測(cè)報(bào)告生成VI程序,從而能夠?qū)⑷諺I中的“檢測(cè)結(jié)果”按照書簽指定位置生成檢測(cè)報(bào)告。
④對(duì)創(chuàng)建的Word文檔進(jìn)行保存,在選擇保存時(shí),將文件名定義為“檢測(cè)報(bào)告Template”,保存類型選擇“文檔模板”,并保存在指定路徑下。這就在指定路徑以“檢測(cè)報(bào)告Template”名稱創(chuàng)建并設(shè)計(jì)了一個(gè)“文檔模板(*.Dot)”類型的文件。
根據(jù)組合測(cè)試的要求和LabVIEW編程相關(guān)知識(shí),設(shè)計(jì)一個(gè)“檢測(cè)報(bào)告自動(dòng)生成程序VI”,整個(gè)程序可分為設(shè)置路徑及參數(shù)、插入基本信息、插入檢測(cè)結(jié)果、設(shè)置報(bào)告顯示及關(guān)閉四個(gè)部分。
①設(shè)置路徑及參數(shù)。該部分用于對(duì)檢測(cè)報(bào)告的生成樣式、調(diào)用路徑及文字大小等參數(shù)進(jìn)行設(shè)置。程序VI中的路徑及參數(shù)設(shè)置界面如圖1所示。
圖1 路徑及參數(shù)設(shè)置界面Fig.1 Setting paths and parameters interface
圖1中:1號(hào)為“當(dāng)前VI路徑”子VI;2~3號(hào)分別為“拆分路徑”、“創(chuàng)建路徑”子VI,其中3號(hào)設(shè)置報(bào)告來源是之前設(shè)計(jì)保存在指定路徑中的“檢測(cè)報(bào)告”模板;4號(hào)為“新建報(bào)表”子VI,設(shè)置打開的是Word類型的模板;5號(hào)為“設(shè)置報(bào)表字體”子VI,用來設(shè)置向模板中插入文本的字體及大小等參數(shù)[8]。
②插入基本信息。該程序用于向Word文檔組合測(cè)試報(bào)告模板中的指定位置插入檢測(cè)的基本信息。插入基本信息如圖2所示。
圖2 插入基本信息界面Fig.2 Basic information inserted interface
圖2中:6~10號(hào)都為“添加報(bào)表文本”子VI,用來設(shè)定在Word模板中插入的基本信息及插入點(diǎn)的位置;11號(hào)為“獲取日期/時(shí)間字符串”子VI,與6~7號(hào)子VI一起向模板中插入的信息是日期date和時(shí)間time;而8~10號(hào)子VI通過調(diào)用全局變量的方式來依次輸入“組合名稱”、“組合ID”和“測(cè)試人員”等信息,調(diào)用的全局變量有“組合名稱”、“組合ID”和“用戶名”。
③插入檢測(cè)結(jié)果。該部分用于向模板中指定位置插入表現(xiàn)為數(shù)值、序列、波形、圖像和文字結(jié)論等多種數(shù)據(jù)形式的檢測(cè)結(jié)果。其中插入輸出電源檢測(cè)結(jié)果如圖3所示。
圖3 插入輸出電源檢測(cè)結(jié)果Fig.3 Test results of output power inserted
圖3中:12號(hào)子VI為“For循環(huán)結(jié)構(gòu)”;13號(hào)為“捆綁”子VI,用來將獨(dú)立的元素組合成簇[9];14號(hào)為“創(chuàng)建數(shù)組”子VI,將三次檢測(cè)結(jié)果創(chuàng)建為一組數(shù)組,循環(huán)執(zhí)行三次,調(diào)用“二次電源檢測(cè)結(jié)果”全局變量分別向電源為-15 V、5 V、15 V插入檢測(cè)結(jié)果。后一個(gè)循環(huán)利用“二次電源檢測(cè)結(jié)論”全局變量來生成三次電源的檢測(cè)結(jié)論。
④設(shè)置報(bào)告顯示及關(guān)閉程序。該部分用于設(shè)置報(bào)告的顯示樣式和關(guān)閉報(bào)告引用單元、釋放內(nèi)存。報(bào)告顯示設(shè)置及關(guān)閉程序如圖4所示。
圖4 報(bào)告顯示設(shè)置及關(guān)閉程序界面Fig.4 Report display setup and procedures closed interface
圖4中:15號(hào)為“放置報(bào)表在前端”子VI,其功能是設(shè)置生成的檢測(cè)報(bào)告顯示在窗口的最前面,還可以選擇文件顯示在窗口的大小,包括最大化(maximized)、最小化(minimized)和正?;?normal)[10];16 號(hào)子 VI用來關(guān)閉報(bào)告子 VI,表明程序運(yùn)行結(jié)束,釋放內(nèi)存資源;17號(hào)為“通用錯(cuò)誤處理器”子VI,當(dāng)程序發(fā)生錯(cuò)誤時(shí),顯示有錯(cuò)誤發(fā)生,返回錯(cuò)誤描述或打開對(duì)話框。
某型雷達(dá)接收機(jī)組合檢測(cè)儀在檢測(cè)報(bào)告程序運(yùn)行完畢后,將自動(dòng)生成一份測(cè)試報(bào)告,其內(nèi)容包括檢測(cè)的基本信息、電源檢測(cè)結(jié)果、機(jī)內(nèi)檢測(cè)結(jié)果和整機(jī)檢測(cè)等。其中,檢測(cè)的基本信息如下:測(cè)試日期為2010-09-20,測(cè)試時(shí)間為15:25,測(cè)試人員共10086人,組合名稱為8號(hào)組合,組合ID為220031。電源檢測(cè)及機(jī)內(nèi)檢測(cè)結(jié)果如表1和表2所示。其中,表1中額定值允許偏差為±3%。
表1 電源檢測(cè)結(jié)果Tab.1 Power detection result
表2 機(jī)內(nèi)檢測(cè)結(jié)果Tab.2 Machine detection result
當(dāng)各個(gè)組合經(jīng)檢測(cè)儀自動(dòng)測(cè)試系統(tǒng)檢測(cè)完成后,檢測(cè)結(jié)果中的數(shù)據(jù)、波形、圖像和文字信息將自動(dòng)加載到設(shè)定好的指定位置。
利用Report Generation Toolkit工具包開發(fā)的檢測(cè)報(bào)告生成程序具有以下特點(diǎn):①結(jié)構(gòu)簡(jiǎn)單清晰,通過調(diào)用全局變量,大大減少了程序的結(jié)構(gòu)復(fù)雜度;②生成的Word文檔格式的檢測(cè)報(bào)告結(jié)構(gòu)層次分明、內(nèi)容豐富,便于測(cè)試人員快速準(zhǔn)確地讀取檢測(cè)結(jié)果;③各個(gè)組合的測(cè)試報(bào)告模板設(shè)計(jì)和生成程序設(shè)計(jì)差別不大,程序和模板都具有很強(qiáng)的移植性,能夠極大地提高檢測(cè)工作效率。
本文基于LabVIEW平臺(tái),采用全局變量技術(shù)和Word文檔檢測(cè)報(bào)告生成技術(shù),利用Report Generation Toolkit工具包設(shè)計(jì)實(shí)現(xiàn)了某型雷達(dá)接收機(jī)組合檢測(cè)儀的檢測(cè)報(bào)告自動(dòng)生成程序。該程序能夠?qū)崟r(shí)記錄檢測(cè)過程中的各種檢測(cè)結(jié)果和判別結(jié)論,并自動(dòng)生成基于指定Word模板的檢測(cè)報(bào)告。
檢測(cè)報(bào)告的自動(dòng)生成大大減輕了測(cè)試人員的數(shù)據(jù)檢測(cè)工作量和記錄負(fù)擔(dān),加快了接收機(jī)組合的檢測(cè)速度,并極大提高了測(cè)試系統(tǒng)的工作效率。隨著測(cè)試精度和復(fù)雜度的日益提高,LabVIEW和虛擬儀器在自動(dòng)測(cè)試系統(tǒng)中的應(yīng)用范圍將更加廣泛。
[1]陳書旺,胡愛華,盧云,等.虛擬儀器的類型及其發(fā)展情況[J].電腦學(xué)習(xí),2007(4):57-58.
[2]鄒堅(jiān),李世平,魏小飛.基于LabVIEW的自動(dòng)測(cè)試系統(tǒng)中的報(bào)表生成研究[J].自動(dòng)化儀表,2006,27(11):68 -70.
[3]胡紹海,高亞峰,肖坦.基于LabVIEW的的Excel報(bào)表生成技術(shù)研究[J].測(cè)控技術(shù),2007(10):64 -69.
[4]裴鋒,王翠英,李資榮.基于LabVIEW的虛擬儀器算法解決方案[J].自動(dòng)化儀表,2005,26(8):57 -58.
[5]楊樂平,李海濤,趙勇,等.LabVIEW高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2006.
[6]李瑞,周冰,胡仁喜,等.LabVIEW2009中文版虛擬儀器從入門到精通[M].北京:機(jī)械工業(yè)出版社,2010.
[7]侯國(guó)屏,王坤,葉齊鑫,等.LabVIEW7.1編程與虛擬儀器設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.
[8]江建軍,劉繼光.LabVIEW程序設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2008.
[9]Travis J.LabVIEW 大學(xué)實(shí)用教程[M].喬瑞萍,譯.北京:電子工業(yè)出版社,2008.
[10]雷振山.LabVIEW7 Express實(shí)用技術(shù)教程[M].北京:中國(guó)鐵道出版社,2004.