李壯志,李玉現(xiàn),白彥魁
(河北師范大學(xué) a.物理科學(xué)與信息工程學(xué)院;b.物理國(guó)家級(jí)實(shí)驗(yàn)教學(xué)示范中心;c.河北省新型薄膜材料實(shí)驗(yàn)室,河北 石家莊 050024)
現(xiàn)代化科技實(shí)驗(yàn)室在進(jìn)行物理量數(shù)據(jù)采集時(shí)通常需要使用多種型號(hào)的測(cè)量?jī)x表,早期的測(cè)量?jī)x表一般是用手動(dòng)方法進(jìn)行操作,在長(zhǎng)時(shí)間的測(cè)量過(guò)程中,需要操作人員不間斷地操作,勞動(dòng)強(qiáng)度大,容易出現(xiàn)記錄錯(cuò)誤,另外也容易損壞儀表硬件. 在數(shù)字集成電路技術(shù)發(fā)明以后,高級(jí)儀表開(kāi)始配備自動(dòng)化測(cè)量控制接口,其中重要的規(guī)范是惠普(HP)公司聯(lián)合其他儀表生產(chǎn)商推出的IEEE488接口協(xié)議(HP-IB),應(yīng)用此協(xié)議的接口后來(lái)一般改稱為通用接口總線(GeneralPurposeInterfaceBus,GPIB)[1]. 從20世紀(jì)70年代開(kāi)始,大量的高級(jí)儀表都設(shè)計(jì)有GPIB接口. 通常1臺(tái)GPIB接口儀表均具有聽(tīng)(listen)功能,通過(guò)控制機(jī)(一般是通用計(jì)算機(jī))控制,可以用寫(write)命令向儀表發(fā)送指令,實(shí)現(xiàn)儀表前面板的功能,另外通過(guò)讀(read)命令,可以將儀表緩存內(nèi)的數(shù)據(jù)讀入計(jì)算機(jī)進(jìn)行處理.
要實(shí)現(xiàn)計(jì)算機(jī)控制的GPIB接口測(cè)控系統(tǒng),通常需要在計(jì)算機(jī)中插入1張GPIB控制卡,通過(guò)GPIB電纜連接儀表,在配置儀表的GPIB地址后,通過(guò)編寫的控制程序,計(jì)算機(jī)可以訪問(wèn)某臺(tái)特定的儀表,通過(guò)GPIB協(xié)議,通常1臺(tái)計(jì)算機(jī)最多可以同時(shí)控制14臺(tái)儀表.
在科研實(shí)驗(yàn)室中,串行通訊(serialcommunication)是也是常用的方式[2]. 該接口是20世紀(jì)80年代前后,為了方便個(gè)人計(jì)算機(jī)(PC)與低速設(shè)備通訊而發(fā)展起來(lái)的,隨著PC機(jī)的快速普及,串行接口(serialinterface)以其成本低廉、使用方便獲得了廣泛應(yīng)用,PC機(jī)上配置的一般是RS232串口,在工控領(lǐng)域還有RS422/485接口,RS232和RS422/485接口之間可以通過(guò)接口電路進(jìn)行協(xié)議轉(zhuǎn)換.
盡管GPIB和串行通訊提供了同儀器設(shè)備方便的通訊手段,但由于它們數(shù)據(jù)傳輸率較慢,在工控領(lǐng)域新的高速通訊協(xié)議得到了大力發(fā)展,如20世紀(jì)80年代后期,HP和Tekronix等公司成立的VXIbus合作組發(fā)布的VXI總線協(xié)議,HP公司發(fā)布的SICL(StandardInstrumentControlLibrary)協(xié)議,等等. 另外,隨著PC機(jī)對(duì)高速通訊的要求,Ethernet和USB通訊協(xié)議也獲得了快速發(fā)展,并且它們的使用也擴(kuò)展到儀器儀表設(shè)備控制領(lǐng)域.
為了確保不同廠商、不同接口標(biāo)準(zhǔn)的儀器能相互兼容、可靠通訊和數(shù)據(jù)交換,需要研制出新的標(biāo)準(zhǔn),以方便對(duì)各種不同儀器設(shè)備的編程控制,為此NI,HP/Agilent,Tekronix等35家全球最大的儀器儀表公司在1993年成立聯(lián)盟,并于1996年2月推出了VISA協(xié)議,該協(xié)議的目標(biāo)是能夠驅(qū)動(dòng)95%的已有智能儀器儀表[3]. 通過(guò)VISA協(xié)議提供的函數(shù),可以驅(qū)動(dòng)具有GPIB,RS232,VXI,Ethernet和USB等各種接口的儀器設(shè)備.
一直以來(lái),對(duì)儀表控制軟件的編寫一般有2種方式:一種是使用通用高級(jí)編程語(yǔ)言如VisualC++,VisualBasic,Delphi等,設(shè)計(jì)程序界面和處理數(shù)據(jù)的采集、顯示和存儲(chǔ),通過(guò)調(diào)用諸如GPIB接口卡驅(qū)動(dòng)函數(shù)控制儀表,這通常需要較多的編程知識(shí)和對(duì)GPIB和RS232等總線協(xié)議有較多了解,并且編譯完成的程序只是針對(duì)特定的測(cè)控系統(tǒng),操作者無(wú)法改變其配置,如果更換測(cè)試系統(tǒng)中的某臺(tái)儀表或者組建新的系統(tǒng),則需要重新編寫程序,缺乏靈活性. 另一種方式是使用圖形化編程語(yǔ)言如LabVIEW(使用G語(yǔ)言)[4-5],它對(duì)GPIB和RS232等協(xié)議進(jìn)行了封裝,相比傳統(tǒng)編程語(yǔ)言有較好的靈活性,但是在測(cè)控系統(tǒng)中需安裝體積龐大的專用軟件,并且其價(jià)格昂貴,另外它仍需要每個(gè)具體測(cè)控系統(tǒng)搭建者花費(fèi)較長(zhǎng)時(shí)間深入學(xué)習(xí)該編程語(yǔ)言.
LabMeasure軟件中提供了測(cè)量控制軟件的另一種編程方式——腳本(script)編程. 對(duì)不同的測(cè)控要求,控制軟件的編寫不再是傳統(tǒng)的編譯-執(zhí)行方式,而是將具體的控制要求寫成腳本程序,在測(cè)控操作運(yùn)行前完成指令的即時(shí)編譯,既增加了測(cè)控系統(tǒng)的靈活性,又降低了專用程序編寫的難度.
LabMeasure軟件結(jié)構(gòu)如圖1所示,其中心部分是腳本集成開(kāi)發(fā)環(huán)境(script IDE),用戶在該環(huán)境提供的代碼編輯器中編寫自己的腳本程序. LabMeasure使用Object Pascal 腳本語(yǔ)言編程,該語(yǔ)言遵循傳統(tǒng)的Pascal規(guī)則,并做適度的擴(kuò)展和簡(jiǎn)化. Pascal語(yǔ)言是接近自然語(yǔ)言的高級(jí)編程語(yǔ)言,方便學(xué)習(xí)掌握. Object Pascal 腳本語(yǔ)言預(yù)定義數(shù)據(jù)類型包括Boolean,Byte,Cardinal,Double,Int64,Integer,ShortInt,SmallInt,String,Variant,Word;結(jié)構(gòu)類型支持集合、枚舉、靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組、記錄、類等;運(yùn)算符支持算術(shù)運(yùn)算符、布爾運(yùn)算符、位邏輯運(yùn)算符、關(guān)系運(yùn)算符、運(yùn)算符優(yōu)先級(jí);條件語(yǔ)句支持If語(yǔ)句和Case語(yǔ)句;循環(huán)語(yǔ)句支持For語(yǔ)句、While語(yǔ)句、Repeat語(yǔ)句、Break和Continue語(yǔ)句;等等. 為了方便調(diào)試腳本程序,在script IDE窗口中帶有詳細(xì)的調(diào)試方式和調(diào)試信息的顯示,如步入、步出、運(yùn)行到當(dāng)前行,以及在任一行設(shè)置斷點(diǎn)等,并可以通過(guò)觀察窗口查看變量結(jié)果.
圖1 LabMeasure軟件的構(gòu)成
為了顯示獲得的結(jié)果,LabMeasure軟件提供了終端窗口和二維圖形顯示窗口,終端窗口用于顯示得到的結(jié)果,圖形顯示窗口用來(lái)顯示獲得的二維數(shù)據(jù)曲線.
LabMeasure IDE本身支持常用的數(shù)學(xué)函數(shù)和字符串處理等函數(shù)如Cos, Sin, Tan, Abs, Exp, Ln, Copy, Delete等,還提供了用于輸出程序結(jié)果的終端輸出函數(shù)和二維繪圖函數(shù),以及對(duì)所采集的數(shù)據(jù)保存為csv格式文件的存儲(chǔ)函數(shù). 其中的二維繪圖函數(shù)包括:
1)LmSetAxisName(xAxisName: string; yAxisName: string),該函數(shù)設(shè)置Plot窗口的x和y坐標(biāo)軸的內(nèi)容.
2)LmPlot(x: double; y: double),如果沒(méi)有啟動(dòng)Plot窗口,該函數(shù)將動(dòng)態(tài)創(chuàng)建Plot窗口,并向窗口中的直角坐標(biāo)系發(fā)送浮點(diǎn)數(shù)x和y,并同時(shí)進(jìn)行顯示. 該直角坐標(biāo)系的橫軸和縱軸按輸入的數(shù)值自動(dòng)縮放,直角坐標(biāo)系的橫軸和縱軸名稱由LmSetAxisName函數(shù)設(shè)置,如果用戶未設(shè)置,則使用缺省設(shè)置“x-Axis”和“y-Axis”.
(3)LmPlotM(x: double; yArr: array of double),該函數(shù)功能同LmPlot,但可以在1個(gè)Plot窗口中以x為橫坐標(biāo),以y0[, y1][, y2]…[, y4]等為縱坐標(biāo),可以同時(shí)繪制最多5條曲線.
除常用函數(shù)外,LabMeasure還內(nèi)置了幾個(gè)功能擴(kuò)展函數(shù)庫(kù),包括系統(tǒng)應(yīng)用函數(shù)庫(kù),數(shù)學(xué)函數(shù)庫(kù)及變體類型函數(shù)庫(kù)等,對(duì)其功能進(jìn)行擴(kuò)展.
1)系統(tǒng)應(yīng)用函數(shù):這些函數(shù)在LabMeasure的SysUtils庫(kù)中,該庫(kù)提供了文件、字符串、類型轉(zhuǎn)換、時(shí)間以及系統(tǒng)方面的函數(shù)共約220個(gè).
2)數(shù)學(xué)函數(shù)庫(kù):這些函數(shù)在LabMeasure的Math庫(kù)中,該庫(kù)提供算術(shù)、三角、對(duì)數(shù)、統(tǒng)計(jì)和金融方面的計(jì)算函數(shù)共超過(guò)100個(gè).
3)變體(variants)類型函數(shù)庫(kù),LabMeasure script語(yǔ)言支持Object Pascal語(yǔ)言規(guī)范的variants類型,使用該類型時(shí)涉及到的variants類型函數(shù)在variants函數(shù)庫(kù)中.
現(xiàn)在NI(National Instrument)公司的GPIB板卡在實(shí)驗(yàn)室設(shè)備控制方面應(yīng)用最為廣泛,部分其他公司的產(chǎn)品會(huì)和NI板卡保持兼容性,所以在LabMeasure軟件中提供了對(duì)NI GPIB函數(shù)的直接支持,包括絕大部分GPIB 488.1函數(shù)和全部的GPIB 488.2函數(shù).
LabMeasure軟件中提供了對(duì)RS232通訊函數(shù)的直接支持,包括端口控制、數(shù)據(jù)輸入、數(shù)據(jù)輸出、端口狀態(tài)查詢等系列串口操作函數(shù),例如其中的端口控制函數(shù)包括LS_open,LS_close,LS_ioctl,LS_flowctrl,LS_flush,LS_DTR,LS_RTS,LS_lctrl,LS_baud等具體的操作函數(shù),分別完成串口打開(kāi)、關(guān)閉、通訊參量設(shè)置等功能.
為了應(yīng)對(duì)除GPIB和RS232通訊外其他種類的儀器儀表,LabMeasure軟件提供了對(duì)VISA函數(shù)的支持[6-7]. VISA函數(shù)可分6大類,即資源模板函數(shù)和操作函數(shù)、基本I/O操作函數(shù)、格式I/O操作函數(shù)、存儲(chǔ)I/O操作函數(shù)、共享存儲(chǔ)操作函數(shù)和接口特殊操作函數(shù). 由于LabMeasure通過(guò)功能函數(shù)庫(kù)提供了豐富的字符串操作函數(shù)及格式化函數(shù),所以不再提供部分格式I/O操作函數(shù)及存儲(chǔ)I/O操作、共享存儲(chǔ)操作函數(shù),LabMeasure支持除此之外的其他全部VISA函數(shù).
為了方便用戶在連接物理設(shè)備前調(diào)試腳本測(cè)控程序,LabMeasure對(duì)全部支持的GPIB,RS232和VISA函數(shù)都支持模擬(simulation)方式.
LabMeasure支持通過(guò)2種方式對(duì)系統(tǒng)功能進(jìn)行擴(kuò)展:一是將需要用到的功能編制成子程序,儲(chǔ)存成LabMeasure script模塊文件,然后在調(diào)用時(shí)直接引用該模塊,軟件支持在1個(gè)腳本程序中使用最多256個(gè)模塊文件. 另一種方式是通過(guò)使用其他通用編譯器將需要的功能編譯成動(dòng)態(tài)鏈接庫(kù),在LabMeasure的腳本程序中先引用該動(dòng)態(tài)鏈接庫(kù),再調(diào)用其中的函數(shù). 軟件支持對(duì)動(dòng)態(tài)鏈接庫(kù)調(diào)用的各種約定,如Pascal約定、C約定等.
LabMeasure采用標(biāo)準(zhǔn)視窗方式編寫,使用方法同常用Windows程序一致,熟悉微軟視窗操作系統(tǒng)的用戶可以快速熟悉其使用.
軟件啟動(dòng)后,其界面如圖2所示,僅Graph View和Table View功能可用,分別是用圖形方式和圖表方式打開(kāi)LabMeasure存儲(chǔ)的csv格式文件,除此之外的其他快捷方式都不能使用.
圖2 LabMeasure軟件的啟動(dòng)界面
在File菜單欄下,通過(guò)單擊LM Script可以啟動(dòng)LmIDE,此時(shí)窗口狀態(tài)如圖3(a)所示. 當(dāng)啟動(dòng)LmIDE時(shí),LabMeasure會(huì)檢測(cè)計(jì)算機(jī)中是否安裝了GPIB板卡和/或VISA驅(qū)動(dòng),如果發(fā)現(xiàn),則在LmIDE下側(cè)中間的狀態(tài)欄中顯示,如果沒(méi)有發(fā)現(xiàn),則需要用戶檢測(cè)其系統(tǒng)中的GPIB板卡及其驅(qū)動(dòng)程序和/或VISA驅(qū)動(dòng)是否正確安裝.
(a)LmIDE啟動(dòng)窗口 (b)打開(kāi)腳本程序后的窗口圖3 LmIDE界面
啟動(dòng)LmIDE后,LabMeasure的菜單欄也會(huì)做相應(yīng)的變動(dòng),此時(shí)可以通過(guò)菜單欄或者快捷按鈕新建或者打開(kāi)LM程序工程. 1個(gè)LM工程文件中可以包含多個(gè)模塊文件. 圖3(b)中是打開(kāi)示例文件后的窗口圖,此時(shí)將鼠標(biāo)放置在快捷按鈕上會(huì)得到相應(yīng)按鈕的功能提示,這些快捷按鈕僅列舉了一些常用功能,其他更多的功能可以從菜單欄上選擇,單擊相應(yīng)的菜單按鈕即可實(shí)現(xiàn)其標(biāo)題顯示的功能.
圖4是運(yùn)行簡(jiǎn)單的示例程序后的結(jié)果,該程序計(jì)算并顯示了由37個(gè)點(diǎn)組成的正弦曲線,為了模擬數(shù)據(jù)采集過(guò)程,使用delay(延時(shí))函數(shù)每隔20 ms計(jì)算1個(gè)數(shù)據(jù)點(diǎn),并將計(jì)算結(jié)果顯示在最右側(cè)的終端窗口中,將數(shù)據(jù)曲線顯示在中間的繪圖窗口中. 該例子通過(guò)簡(jiǎn)單的數(shù)行程序模擬了數(shù)據(jù)采集的過(guò)程,可見(jiàn)LabMeasure程序編寫簡(jiǎn)單,同時(shí)具有較高的編程效率.
圖4 LabMeasure中的窗口
已經(jīng)在實(shí)驗(yàn)室中使用LabMeasure軟件編程,搭建完成了多種自動(dòng)化測(cè)量系統(tǒng),包括方塊電阻四探針測(cè)試臺(tái)、范德堡法薄膜電阻率測(cè)試系統(tǒng)、真空?qǐng)霭l(fā)射測(cè)試系統(tǒng)、高精度塞貝克系數(shù)和電阻率測(cè)量系統(tǒng)等,并應(yīng)用于教學(xué)和科研工作.
總之,LabMeasure軟件大幅度降低了科研人員在實(shí)驗(yàn)室中搭建自動(dòng)化測(cè)試系統(tǒng)所需要的知識(shí)儲(chǔ)備,學(xué)習(xí)過(guò)高級(jí)編程語(yǔ)言,具有初級(jí)編程經(jīng)驗(yàn)的人員經(jīng)過(guò)短期學(xué)習(xí),就能夠高效率地搭建適合自己工作需要的自動(dòng)化測(cè)試系統(tǒng).
參考文獻(xiàn):
[1] 張宜生,王運(yùn)贛. GPIB通用接口與自動(dòng)測(cè)試系統(tǒng)[M]. 北京:科學(xué)出版社,1989.
[2] 范逸之. Visual Basic與RS-232串行通信控制[M]. 北京:中國(guó)青年出版社,2000.
[3] IVI Foundation. www.ivifoundation.org[EB/OL].
[4] Ertugrul N. Labview: for electric circuits, machines, drives, and laboratories[M]. London: Prentice Hall PTR, 2002.
[5] King R H, Introduction to data acquisition with LabView [M]. New York: McGraw Hill Higher Education, 2012.
[6] Agilent Technologies, Inc. Agilent VISA Online Reference [Z]. 2005-2009.
[7] 趙會(huì)兵. 虛擬儀器技術(shù)規(guī)范與系統(tǒng)集成[M]. 北京:北京交通大學(xué)出版社,2003.