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