杜智濤 王 洋 魏洪峰 姜明波
(1.北京應(yīng)用氣象研究所,北京 100029; 2.解放軍理工大學(xué)氣象學(xué)院,南京 211101)
濕度測量在氣象分析和預(yù)報(bào)、氣候研究,飛行保障以及環(huán)境研究中都有著特定的作用,是重要的氣象觀測要素之一。濕度傳感器性能的好壞直接關(guān)系到濕度測量的準(zhǔn)確度。因此,需要對濕度傳感器的示值誤差、溫度系數(shù)、濕滯等性能參數(shù)進(jìn)行測試,以便及時(shí)發(fā)現(xiàn)濕度傳感器存在的問題,減小測量誤差。
目前,受濕度傳感器測試設(shè)備的工作原理、操作方式以及接口等方面的限制,濕度傳感器的測試基本還是采用傳統(tǒng)的測試人員讀取儀表示值、手工記錄和處理數(shù)據(jù)的方法,具有測試時(shí)間長、分析處理數(shù)據(jù)工作繁雜等缺點(diǎn),因此,需要基于現(xiàn)有檢測設(shè)備設(shè)計(jì)一套能夠?qū)崿F(xiàn)濕度傳感器自動(dòng)測試的系統(tǒng),這樣將大大提高測試的效率,降低測試人員的工作強(qiáng)度。
本文以雙壓法濕度發(fā)生器、數(shù)字式精密露點(diǎn)儀、計(jì)算機(jī)、多串口數(shù)據(jù)采集卡、打印機(jī)為主要設(shè)備來組建濕度自動(dòng)測試系統(tǒng)。其中雙壓法濕度發(fā)生器主要用于提供穩(wěn)定的濕度場;露點(diǎn)儀用于監(jiān)測測試室內(nèi)的溫、濕度值;多串口數(shù)據(jù)采集卡用于采集測試數(shù)據(jù)集和發(fā)送控制指令;打印機(jī)用于證書的自動(dòng)打印。系統(tǒng)組成如圖1所示。
圖1 濕度傳感器自動(dòng)測試系統(tǒng)組成框圖
進(jìn)行濕度傳感器測試時(shí),將被測的濕度傳感器探頭、精密數(shù)字露點(diǎn)儀的吸氣管(探頭)和測溫鉑電阻一同放置在測試室,測控計(jì)算機(jī)通過多串口數(shù)據(jù)采集卡分別向雙壓法濕度發(fā)生器的溫度控制單元發(fā)送控溫指令和控壓指令,同時(shí)根據(jù)設(shè)置的測試點(diǎn)和數(shù)據(jù)錄取方式,通過多串口數(shù)據(jù)采集卡采集雙壓法濕度發(fā)生器的溫度、壓力,精密露點(diǎn)儀的溫度、露點(diǎn)、相對濕度,以及被測濕度傳感器的溫度、露點(diǎn)以及相對濕度。測試結(jié)束后,將測試數(shù)據(jù)保存至數(shù)據(jù)庫,并能夠自動(dòng)生成測試報(bào)告和打印。
通過對系統(tǒng)硬件組成、工作原理以及濕度傳感器自動(dòng)測試過程的分析,可知系統(tǒng)軟件應(yīng)具有以下基本功能:
1)信息錄入、保存功能:能夠?qū)Ρ粶y濕度傳感器以及測試設(shè)備的基本信息進(jìn)行錄入、保存;
2)自動(dòng)測試功能:能夠依據(jù)測試規(guī)范或者用戶的測試要求設(shè)定測試點(diǎn)以及測試參數(shù),自動(dòng)控制濕度發(fā)生器產(chǎn)生設(shè)定的濕度場,完成濕度傳感器的自動(dòng)測試,并實(shí)現(xiàn)測試數(shù)據(jù)的自動(dòng)采集與顯示;
3)數(shù)據(jù)存儲功能:能夠?qū)y試數(shù)據(jù)及其相關(guān)信息存儲到指定的數(shù)據(jù)庫中;
4)報(bào)表生成功能:能夠按照相關(guān)報(bào)表模板自動(dòng)生成測試符合要求的報(bào)表。
系統(tǒng)的軟件功能模塊如圖2所示。
圖2 系統(tǒng)的軟件功能模塊圖
自動(dòng)測試系統(tǒng)軟件選擇美國國家儀器公司(NI)的LabVIEW圖形化編程語言作為開發(fā)平臺[1-2]。除了具備其他語言所提供的常規(guī)函數(shù)功能外,LabVIEW 中還集成了大量的生成圖形界面的模板,豐富實(shí)用的數(shù)值分析、數(shù)字信號處理功能,以及多種硬件設(shè)備驅(qū)動(dòng)功能(包括RS-232、GPIB、VXI、數(shù)據(jù)采集板卡、網(wǎng)絡(luò)等)。另外LabVIEW可調(diào)用Windows動(dòng)態(tài)鏈接庫和用戶自定義的動(dòng)態(tài)鏈接庫中的函數(shù)。LabVIEW的CIN節(jié)點(diǎn)使用戶可以使用由其它語言例如ANSI C編譯的程序模塊,使LabVIEW成為一個(gè)開放的開發(fā)平臺。
在89例患者中,全部患者均符合手術(shù)病理標(biāo)準(zhǔn),患者經(jīng)過在腹彩超多普勒超聲的檢查發(fā)現(xiàn),其診斷率為95.5%(85/89),漏診率4.9%(4/89)。
LabVIEW還直接支持動(dòng)態(tài)數(shù)據(jù)交換(DDE)、結(jié)構(gòu)化查詢語言(SQL)、TCP和UDP網(wǎng)絡(luò)協(xié)議等。此外,LabVIEW還提供了專門用于程序開發(fā)的工具箱,使用戶能夠設(shè)置斷點(diǎn),動(dòng)態(tài)執(zhí)行程序來觀察數(shù)據(jù)的傳輸過程,以及進(jìn)行方便的調(diào)試。
圖3 自動(dòng)測試模塊狀態(tài)關(guān)系圖
Alan Turing 于1936年最早提出了“狀態(tài)機(jī)”的概念,狀態(tài)機(jī)是一種具有制定數(shù)目狀態(tài)的概念機(jī),它在某個(gè)指定的時(shí)刻僅處于一種狀態(tài),狀態(tài)的改變是由輸入事件的狀態(tài)變化而引起的[3-5]。作為對輸入事件的響應(yīng),系統(tǒng)可能轉(zhuǎn)變到相同或不同的狀態(tài),而輸出事件是任意產(chǎn)生的。狀態(tài)機(jī)包含三要素:狀態(tài)(State)、事件(Event)和動(dòng)作(Action)。
圖4 自動(dòng)測試模塊程序架構(gòu)
在NI開發(fā)者套件(NI Developer Suite)中提供了一個(gè)很實(shí)用的工具包——狀態(tài)機(jī)工具包(State Machine Toolkit),可以用來實(shí)現(xiàn)設(shè)計(jì)、編輯程序的狀態(tài)圖(狀態(tài)圖是根據(jù)程序的要求抽象出來的,稱“程序流程圖”可能更好理解些),完成狀態(tài)圖的編輯后,關(guān)閉狀態(tài)圖編輯器,便會(huì)在程序框圖上自動(dòng)地生成圖形化語言的狀態(tài)機(jī)構(gòu)架(或者說是圖形化的狀態(tài)機(jī)代碼)。
在本系統(tǒng)中濕度傳感器的自動(dòng)測試涉及到多種狀態(tài)的轉(zhuǎn)換,因此采用狀態(tài)圖的設(shè)計(jì)思想可以很方便地進(jìn)行程序框圖的設(shè)計(jì),如圖3和圖4所示分別為自動(dòng)測試模塊的狀態(tài)關(guān)系圖以及對應(yīng)的程序架構(gòu)。
系統(tǒng)軟件中數(shù)據(jù)的采集以及控制指令的發(fā)送主要是通過串口通信來實(shí)現(xiàn)的,因此串口通信模塊的設(shè)計(jì)直接關(guān)系到系統(tǒng)軟件的質(zhì)量。在LabVIEW中提供了VISA(Virtual Instrument Software Architecture)接口模塊來進(jìn)行編程,VISA是應(yīng)用于儀器編程的標(biāo)準(zhǔn)I/O應(yīng)用程序接口,是工業(yè)界通用的儀器驅(qū)動(dòng)器標(biāo)準(zhǔn)API(應(yīng)用程序接口),具有很好的兼容性、擴(kuò)展性和獨(dú)立性[6-7]。串口通信模塊軟件流程如圖5所示。
圖5 串口通信模塊軟件流程圖
串口通信模塊程序框圖中使用了VISA Configure Serial Port.vi、VISA Write.vi、VISA Read.vi等LabVIEW中自帶的函數(shù)庫,該程序框圖如圖6所示。
圖6 串口通信模塊程序框圖
系統(tǒng)軟件中數(shù)據(jù)庫管理模塊主要是實(shí)現(xiàn)數(shù)據(jù)的保存、修改、刪除和查詢等功能,利用數(shù)據(jù)庫訪問的工具包LabSQL可以很方便地實(shí)現(xiàn)這些功能[8]。LabSQL中的VI子程序按照功能可分為四類:Command Vis、Connection Vis、Recordset Vis以及Top Level VIs。其中Command VIs的功能是完成一系列的基本ADO操作,例如,創(chuàng)建或刪除一個(gè)Command,對數(shù)據(jù)庫中的某一個(gè)參數(shù)進(jìn)行讀或?qū)懙龋籆onnection VIs的功能是管理LabVIEW與數(shù)據(jù)庫之間的連接;Recordset VIs用于對數(shù)據(jù)庫中的記錄進(jìn)行各種操作,例如,創(chuàng)建或刪除一條記錄,對記錄中的某一條目進(jìn)行讀或?qū)懙?;Top Level VIs屬于頂層的LabSQL應(yīng)用,對前三類LabSQL VIs某些功能的封裝,例如,SQL Execute.VIs可用于直接執(zhí)行SQL命令。圖7即為對數(shù)據(jù)庫進(jìn)行簡單操作的程序框圖。
圖7 利用LabSQL訪問數(shù)據(jù)庫的框圖
首先通過ADO Create.vi創(chuàng)建一個(gè)Connection對象,利用ADO Connection Open.vi建立與數(shù)據(jù)庫的連接,然后利用ADO Recordset Create.vi創(chuàng)建一個(gè)Recordset對象,并利用ADO Recordset Open.vi打開Recordset對象,同時(shí)利用SQL查詢命令獲得數(shù)據(jù)庫表中的全部或部分記錄,這樣就通過功能選擇按鈕來選擇控制對數(shù)據(jù)庫的操作(查詢、添加、刪除、修改),最后利用ADO Recordset Close.vi和ADO Connection Close.vi關(guān)閉與數(shù)據(jù)庫之間的連接。
濕度傳感器自動(dòng)測試過程完成后,通常需要將測試數(shù)據(jù)進(jìn)行分析和保存,并生成報(bào)表,利用LabVIEW 報(bào)告生成工具包(Report Generation Toolkit)通過ActiveX技術(shù)可以將Microsoft Word和Excel與LabVIEW 集成開發(fā)環(huán)境結(jié)合起來,快速生成專業(yè)的報(bào)表[9]。
Report Generation Toolkit中包含了3類vi調(diào)用子函數(shù):
1)高級報(bào)告生成Vis,用于新建報(bào)表以及進(jìn)行常規(guī)操作;
2)專門用于生成Word報(bào)表格式的Vis,其中包括了文檔管理、查找、替換、編輯和格式化Word中的圖表、圖片,通過編寫VBA代碼自定義各種復(fù)雜的操作。
3)專門用于生成Excel報(bào)表格式的Vis,除了能進(jìn)行常規(guī)的Excel操作外,還可以操作Excel中的宏。
自動(dòng)測試系統(tǒng)中報(bào)表生成模塊主要實(shí)現(xiàn)步驟如下:
1)首先按照所要生成報(bào)表的要求訂制測試記錄表或測試報(bào)告的模板(Test.doc或Test.xls),將模板中需要填充的占位符事先定義到一個(gè)數(shù)組中;
2)對Excel或者Word進(jìn)行調(diào)用,一般采用New Report.vi接收預(yù)先訂制的Excel或Word模板所在的路徑,并在Report Type中選擇響應(yīng)的報(bào)表形式,這時(shí)就獲得了對報(bào)表模板的調(diào)用;
3)數(shù)據(jù)填充過程,將數(shù)據(jù)庫中的測試數(shù)據(jù)填充到報(bào)表模板響應(yīng)的占位符中,一般可采用Append Report Text.vi子函數(shù)填充數(shù)據(jù)。
4)完成數(shù)據(jù)填充后,使用Dispose Report.vi關(guān)閉對Excel或Word的調(diào)用。
本文設(shè)計(jì)的濕度傳感器自動(dòng)測試系統(tǒng)充分利用了LabVIEW對硬件編程的高效便捷性,將雙壓法濕度發(fā)生器、數(shù)字式精密露點(diǎn)儀以及被測傳感器通過多串口卡數(shù)據(jù)采集卡有效地集成;同時(shí)利用了LabVIEW中狀態(tài)機(jī)程序設(shè)計(jì)思想,豐富的接口函數(shù)以及數(shù)據(jù)庫和報(bào)表生成工具包,大大提高了程序設(shè)計(jì)的靈活性和高效性。實(shí)際使用結(jié)果表明,該系統(tǒng)有效地提高了濕度傳感器測試工作的效率,減小了重復(fù)工作量,并在一定程度上降低了測試人員操作記錄的錯(cuò)誤發(fā)生。
[1]陳錫輝,張銀鴻,等.Labview 8.20 程序設(shè)計(jì)從入門到精通[M].北京:清華大學(xué)出版社,2007
[2]楊樂平,李海濤,趙勇,等.LabVIEW高級程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003
[3]Anthony Lukindo.Labview Queued State machine Architecture
[4]葉楓樺,周新聰,白秀琴,等.基于LabVIEW隊(duì)列狀態(tài)機(jī)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010(4)
[5]Jon Conway,SteveWatts.A Software Engineering Approach to labview[M].New Jersey:Prentice Hall PTR,2003
[6]馬草原,郭雙強(qiáng),李國欣.基于labview的串口調(diào)試與數(shù)據(jù)分析[J],工礦自動(dòng)化,2005,8(4)
[7]暢國忠.基于VISA的事件處理方法與實(shí)現(xiàn)[J].測控技術(shù),2000(9)
[8]羅文輝.Labview中的數(shù)據(jù)庫訪問[J].武漢理工大學(xué)學(xué)報(bào),2006,28(3)
[9]鄭默思,周曉軍.基于ActiveX的虛擬儀器報(bào)表打印方法[J].機(jī)電工程,2006,23(12)