LabVIEW編程實(shí)時(shí)控制KEITHLEY 6517A靜電計(jì)
LabVIEW編程實(shí)時(shí)控制KEITHLEY 6517A靜電計(jì)
基于GPIB接口總線,采用6517A中最簡(jiǎn)單的按鈕命令,在LabVIEW5.1平臺(tái)上實(shí)現(xiàn)了對(duì)6517A面板操作的實(shí)時(shí)控制和信息的同步顯示。
關(guān)鍵詞:LabVIEW編程;計(jì)算機(jī)模擬;6517A靜電計(jì)
Hefei 230029, China)
LabVIEW提供了任意一個(gè)程序調(diào)用另一個(gè)LabVIEW程序的辦法,即將后者作為一個(gè)子程序(即subVI)。因此在實(shí)驗(yàn)站的數(shù)據(jù)采集主程序中,將模擬的6517A作為主程序調(diào)用的subVI嵌入其中(當(dāng)然這個(gè)子程序完全可以不依賴于主程序而能夠獨(dú)立運(yùn)行)。根據(jù)主程序的要求,6517A的subVI具備以下特點(diǎn):
代碼簡(jiǎn)潔,執(zhí)行效率高;完全能實(shí)現(xiàn)真實(shí)面板上各個(gè)按鍵的功能,并可以基本同步顯示6517A顯示的各種信息;獨(dú)立的窗口,不在視覺(jué)上干擾主程序窗口,以方便用戶的使用。
對(duì)于復(fù)雜的未編譯的LabVIEW程序,要求代碼盡可能簡(jiǎn)潔,這有益于提高運(yùn)行速度。而且考慮到6517A參數(shù)的調(diào)整僅僅是實(shí)驗(yàn)站數(shù)據(jù)采集與控制的一小部分,我們未使用KEITHLEY公司隨儀器提供的LabVIEW子程序。對(duì)于6517A,有三個(gè)途徑可以實(shí)現(xiàn)面板按鍵的功能:一是用它的SCPI命令中有關(guān)功能選擇的命令,如使用SENSe命令組里的各種命令選擇測(cè)量?jī)?nèi)容(電壓、電流、電阻和電荷)以及與測(cè)量這些量有關(guān)的各類參數(shù)[1]。這種方式功能全面,可用一條足夠長(zhǎng)的命令直接實(shí)現(xiàn)某個(gè)功能,而這個(gè)功能可能需要按多次按鍵才能實(shí)現(xiàn),而且用戶勿需知道6517A前面板的顯示信息(KEITHLEY公司提供的LabVIEW子程序即是這樣編寫的)。缺點(diǎn)是代碼命令長(zhǎng)、書寫復(fù)雜,而且要對(duì)所有的SCPI命令非常熟悉。另一種是使用SYSTem命令組里的SYSTem:KEY〈NRf〉命令。6517A功能面板上每一個(gè)功能鍵均對(duì)應(yīng)了一個(gè)數(shù)字,如執(zhí)行:SYSTem:KEY 15相當(dāng)于人工按一次按鍵V(電壓)。使用這種方式基本就是在計(jì)算機(jī)顯示器上“復(fù)制”了前面板的按鍵,雖然設(shè)置某個(gè)參數(shù)需要多次按鍵且需要在計(jì)算機(jī)上同步顯示選擇菜單,但其代碼簡(jiǎn)潔,且可以利用LabVIEW提供的界面功能,在外型上完全模擬6517A的前面板,不失為一種好方法。第3種方法是用DDC語(yǔ)言,該語(yǔ)言的語(yǔ)法簡(jiǎn)潔,但不易記憶,難以維護(hù),功能也不強(qiáng)。我們?cè)诰帉憰r(shí)未予考慮。?
代碼簡(jiǎn)潔,執(zhí)行效率高;完全能實(shí)現(xiàn)真實(shí)面板上各個(gè)按鍵的功能,并可以基本同步顯示6517A顯示的各種信息;獨(dú)立的窗口,不在視覺(jué)上干擾主程序窗口,以方便用戶的使用。
對(duì)于復(fù)雜的未編譯的LabVIEW程序,要求代碼盡可能簡(jiǎn)潔,這有益于提高運(yùn)行速度。而且考慮到6517A參數(shù)的調(diào)整僅僅是實(shí)驗(yàn)站數(shù)據(jù)采集與控制的一小部分,我們未使用KEITHLEY公司隨儀器提供的LabVIEW子程序。對(duì)于6517A,有三個(gè)途徑可以實(shí)現(xiàn)面板按鍵的功能:一是用它的SCPI命令中有關(guān)功能選擇的命令,如使用SENSe命令組里的各種命令選擇測(cè)量?jī)?nèi)容(電壓、電流、電阻和電荷)以及與測(cè)量這些量有關(guān)的各類參數(shù)[1]。這種方式功能全面,可用一條足夠長(zhǎng)的命令直接實(shí)現(xiàn)某個(gè)功能,而這個(gè)功能可能需要按多次按鍵才能實(shí)現(xiàn),而且用戶勿需知道6517A前面板的顯示信息(KEITHLEY公司提供的LabVIEW子程序即是這樣編寫的)。缺點(diǎn)是代碼命令長(zhǎng)、書寫復(fù)雜,而且要對(duì)所有的SCPI命令非常熟悉。另一種是使用SYSTem命令組里的SYSTem:KEY〈NRf〉命令。6517A功能面板上每一個(gè)功能鍵均對(duì)應(yīng)了一個(gè)數(shù)字,如執(zhí)行:SYSTem:KEY 15相當(dāng)于人工按一次按鍵V(電壓)。使用這種方式基本就是在計(jì)算機(jī)顯示器上“復(fù)制”了前面板的按鍵,雖然設(shè)置某個(gè)參數(shù)需要多次按鍵且需要在計(jì)算機(jī)上同步顯示選擇菜單,但其代碼簡(jiǎn)潔,且可以利用LabVIEW提供的界面功能,在外型上完全模擬6517A的前面板,不失為一種好方法。第3種方法是用DDC語(yǔ)言,該語(yǔ)言的語(yǔ)法簡(jiǎn)潔,但不易記憶,難以維護(hù),功能也不強(qiáng)。我們?cè)诰帉憰r(shí)未予考慮。?
整個(gè)6517A子程序是一個(gè)大的whileloop循環(huán)。在循環(huán)內(nèi)是前面板上所有按鍵對(duì)應(yīng)的命令和顯示子程序,循環(huán)結(jié)束的條件是Boolean按鈕“RETURN”=false。這種結(jié)構(gòu)有兩個(gè)作用,由于LabVIEW程序的執(zhí)行是并行的,因此可以隨時(shí)接受任意一個(gè)虛擬按鍵的命令,另一是計(jì)算機(jī)屏幕的顯示與靜電計(jì)的顯示基本同步。子程序被設(shè)置為“調(diào)用時(shí)打開、結(jié)束后關(guān)閉”,在視覺(jué)上不影響主程序的使用,即在按下RETURN后,子程序窗口即被關(guān)閉。
2.2按鈕
圖1是6517A subVI的界面,圖中字符“Ω”已被替換為“Ohm”。它盡量模仿了實(shí)際儀器的前面板,只不過(guò)是用RETURN按鈕取代了6517A的POWER開關(guān)。每個(gè)按鈕的機(jī)械動(dòng)作置為“Latch when Released”,這樣每按一次圖中的按鈕,程序通過(guò)GPIB接口給6517A發(fā)送一個(gè)相應(yīng)的命令,完成手工按鍵的動(dòng)作。隨即按鈕浮起,不會(huì)導(dǎo)致誤動(dòng)作。按鈕對(duì)應(yīng)的程序是一個(gè)“true?false” case structure。在True CASE中寫入命令:SYSTem:KEY 〈NRf〉(圖2),F(xiàn)alse CASE中為空。當(dāng)用鼠標(biāo)點(diǎn)擊按鍵時(shí),6517A將根據(jù)命令完成相應(yīng)的按鍵動(dòng)作。如圖中的命令,GPIB write控件將:SYST:KEY 15發(fā)送給6517A,完成一次按“V”鍵。
2.2按鈕
圖1是6517A subVI的界面,圖中字符“Ω”已被替換為“Ohm”。它盡量模仿了實(shí)際儀器的前面板,只不過(guò)是用RETURN按鈕取代了6517A的POWER開關(guān)。每個(gè)按鈕的機(jī)械動(dòng)作置為“Latch when Released”,這樣每按一次圖中的按鈕,程序通過(guò)GPIB接口給6517A發(fā)送一個(gè)相應(yīng)的命令,完成手工按鍵的動(dòng)作。隨即按鈕浮起,不會(huì)導(dǎo)致誤動(dòng)作。按鈕對(duì)應(yīng)的程序是一個(gè)“true?false” case structure。在True CASE中寫入命令:SYSTem:KEY 〈NRf〉(圖2),F(xiàn)alse CASE中為空。當(dāng)用鼠標(biāo)點(diǎn)擊按鍵時(shí),6517A將根據(jù)命令完成相應(yīng)的按鍵動(dòng)作。如圖中的命令,GPIB write控件將:SYST:KEY 15發(fā)送給6517A,完成一次按“V”鍵。
?
為了更好的顯示測(cè)量值的單位,6517A顯示行存在一些特殊符號(hào),如次顯示行的溫度符號(hào)℃,主顯示行的電阻單位Ω(歐姆),量級(jí)單位μ(即表示10-6)等。但實(shí)際測(cè)試表明計(jì)算機(jī)接收到的6517A的信號(hào),只能正確顯示出標(biāo)準(zhǔn)ASCII碼中的數(shù)字0~9、字母A~B和a~b,因此僅使用上述命令將顯示亂碼,無(wú)法正確反映6517A的全部顯示信息。作者經(jīng)過(guò)分析,得到了非ASCII碼經(jīng)過(guò)GPIB接口后對(duì)應(yīng)的編碼如下(表1)。
?
RETURN鍵是控制整個(gè)子程序的邏輯量。但由此也帶來(lái)一個(gè)問(wèn)題,程序運(yùn)行時(shí)發(fā)現(xiàn)當(dāng)?shù)谝淮螀?shù)設(shè)置完畢,退出子程序后,RETURN有可能仍保持在false狀態(tài),那么緊接著第二次調(diào)用子程序時(shí),將因?yàn)镽ETURN=false而無(wú)法進(jìn)入循環(huán)(或僅循環(huán)1次便結(jié)束)。為此利用了LabVIEW的并行處理特性,在RETURN置false時(shí)將完成2個(gè)動(dòng)作,首先是將邏輯常數(shù)True賦值給RETURN(利用了local variable,不會(huì)干擾其中斷循環(huán)的作用),然后再退出循環(huán),這樣保證了下一次的調(diào)用。
評(píng)論