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