在測(cè)試和測(cè)量中融合LXI和腳本的優(yōu)點(diǎn)
計(jì)算技術(shù)和編程語(yǔ)言的進(jìn)步以及嵌入式計(jì)算容量成本的穩(wěn)定下降帶來(lái)了新一代可編程儀器。新型儀器突破了舊的限制,極大提高了性能和靈活性。這些儀器的一個(gè)關(guān)鍵進(jìn)步是采用腳本語(yǔ)言提供可編程性。本文詳細(xì)介紹了腳本以及如何利用腳本簡(jiǎn)化測(cè)試與測(cè)量并且提高速度。
那什么是腳本呢?測(cè)試儀器的腳本與我們說(shuō)的PC腳本又有什么區(qū)別呢?
簡(jiǎn)單地說(shuō),腳本是用腳本語(yǔ)言編寫的程序以便管理一系列的動(dòng)作。
腳本遠(yuǎn)優(yōu)于常規(guī)使用的宏或記錄序列。腳本能充分利用腳本語(yǔ)言,其中包括循環(huán)、轉(zhuǎn)移和數(shù)據(jù)處理。雖然宏可以通過基本循環(huán)控制方法實(shí)現(xiàn)重復(fù),但是腳本能提供完全執(zhí)行環(huán)境,其中數(shù)值可以保存在變量中。然后,這些變量可用于控制循環(huán)和轉(zhuǎn)移判定。
腳本語(yǔ)言與其它編程語(yǔ)言的主要區(qū)別在于在運(yùn)行腳本程序之前無(wú)需預(yù)編譯。如果需要,腳本環(huán)境可以直接中斷程序或自動(dòng)編譯程序。此外,腳本語(yǔ)言還具有編程語(yǔ)言的全部能力,包括存儲(chǔ)變量值和創(chuàng)建存儲(chǔ)的程序(函數(shù))以便代碼重用。
由于腳本無(wú)需單獨(dú)進(jìn)行編譯,所以腳本語(yǔ)言非常適合于測(cè)試與測(cè)量設(shè)備的嵌入式應(yīng)用。腳本可以下載到儀器上,無(wú)需額外的準(zhǔn)備工作就能為用戶提供更多便利。
PC上運(yùn)行的腳本語(yǔ)言和嵌到儀器中的腳本語(yǔ)言之間的關(guān)鍵不同在于環(huán)境。當(dāng)腳本語(yǔ)言運(yùn)行在PC上時(shí),它通常能訪問文件系統(tǒng)、幾乎無(wú)限制的存儲(chǔ)器、圖形顯示以及鍵盤和鼠標(biāo)。當(dāng)腳本語(yǔ)言運(yùn)行在儀器上時(shí),它不必訪問任一種設(shè)備,但這些設(shè)備通常也不需要。
明天我們會(huì)對(duì)測(cè)量?jī)x器中的腳本進(jìn)行細(xì)化介紹,敬請(qǐng)期待吧!
PartII: 測(cè)量?jī)x器中運(yùn)用的腳本
流行的腳本語(yǔ)言包括Perl、Python、VBScript和JavaScript。Lua腳本語(yǔ)言特別適于嵌入式應(yīng)用,因?yàn)樗榷鄶?shù)其它腳本語(yǔ)言運(yùn)行速度更快并采用占代碼空間非常小的庫(kù)實(shí)現(xiàn)。吉時(shí)利選擇Lua用于支持測(cè)試腳本處理器(TSP)的儀器系列。
當(dāng)測(cè)試測(cè)量?jī)x器增加了腳本支持時(shí),最困難的選擇是什么呢?對(duì)拉,是如何向用戶介紹腳本!
這種困難包括需要回答的一些難題,例如:“如何集成儀器指令集和腳本環(huán)境?”“用戶如何將腳本載入儀器中?”吉時(shí)利選擇將腳本環(huán)境和指令集完全集成,這意味著所有儀器指令都是完全合法的Lua語(yǔ)句?;旧?,送到儀器上的每條指令消息都作為L(zhǎng)ua程序執(zhí)行。
這種選擇使用戶很容易地從使用單條指令控制儀器過渡到使用腳本控制儀器,因?yàn)椴恍枰獙W(xué)習(xí)整個(gè)新指令集。與腳本中使用的命令相同,指令可以通過GPIB或LXI接口發(fā)送到儀器。這極大地簡(jiǎn)化了從基于指令的簡(jiǎn)單控制到基于腳本的控制的過渡過程。用戶能簡(jiǎn)單地發(fā)送較大的腳本而不是單獨(dú)的指令到儀器。
下面我們用代碼來(lái)舉例說(shuō)明一下:
案例分析
這種選擇的缺點(diǎn)是儀器指令可能對(duì)于第一次使用的用戶有點(diǎn)陌生。舉一些例子有助于說(shuō)明這一缺點(diǎn)。這些例子比較了吉時(shí)利2400型源表(基于SCPI的單元)和吉時(shí)利2602型雙通道數(shù)字源表(基于TSP的單元)。
讓2400的源輸出電流的指令是:
::SOUR:FUNC CURR
2602對(duì)應(yīng)的指令是:
smua.source.func = smua.DC_AMPS
smua前綴指定雙通道儀器2602的通道A。除了等號(hào)外,其余的指令類似于SCPI指令。這是Lua的賦值運(yùn)算,將mua.source.func屬性設(shè)為smua.DC_AMPS的值。
查詢指令有一些陌生。因?yàn)橹噶钍怯行У腖ua語(yǔ)句,所以使用print函數(shù)產(chǎn)生輸出。SCPI查詢返回到2400的源函數(shù)是:
:SOUR:FUNC?
2602對(duì)應(yīng)的指令是:
print(smua.source.func)
正如SCPI儀器通過分號(hào)分隔單獨(dú)指令以支持復(fù)合指令,基于腳本的儀器也能通過語(yǔ)句分隔符分隔指令以支持復(fù)合指令。在Lua中,語(yǔ)句分隔符是空白字符。
假設(shè)我們的儀器已經(jīng)配置為電壓源。對(duì)于2400,以下指令消息將設(shè)置輸出電平,然后打開輸出:
:SOUR:VOLT 1.0; :OUTP 1
對(duì)于2602,相應(yīng)指令消息是:
smua.source.levelv = 1.0 smua.source.output = 1
上述例子說(shuō)明腳本儀器可以表現(xiàn)得與傳統(tǒng)設(shè)備非常類似。僅指令語(yǔ)法稍;有改變。為了利用腳本引擎的全部能力,用戶只用發(fā)送消息來(lái)使用腳本語(yǔ)言功能。
PartIII 儀器測(cè)試中腳本案例分析以及LXI
今天我們會(huì)介紹實(shí)際操作時(shí)的一些案例和經(jīng)驗(yàn),并且介紹一下LXI和腳本。
通過發(fā)送以下腳本,用戶能讓儀器執(zhí)行二分查找法搜索能輸出1mA電流的電壓源:
代碼略>
這種腳本的好處是避免了讀取每個(gè)結(jié)果和發(fā)送指令輸出新電平所需的通信時(shí)間。雖然有理由詢問發(fā)送較長(zhǎng)消息需要多長(zhǎng)時(shí)間,但是通常發(fā)送一條較長(zhǎng)的消息比來(lái)回通信許多條較短消息快得多。然而,腳本環(huán)境的一個(gè)優(yōu)點(diǎn)是前述代碼可以封裝為函數(shù)定義,然后重用,用的時(shí)候就能完全避免發(fā)送長(zhǎng)消息。例如:
代碼略>
前面的指令不會(huì)讓儀器立刻執(zhí)行,但是它創(chuàng)建了一個(gè)命名為“Search(搜索)”的存儲(chǔ)程序,之后可以用搜索指令調(diào)用:
Search(2.5, 0.001)
儀器有一些特點(diǎn)能補(bǔ)充腳本引擎。如果腳本環(huán)境提供儀器前面板的編程訪問,那么用戶就能創(chuàng)建交互式腳本提示用戶在前面板輸入?yún)?shù)或顯示結(jié)果。儀器還能提供非易失的板上腳本存儲(chǔ),因此當(dāng)儀器上電時(shí),這些存儲(chǔ)的腳本就能自動(dòng)執(zhí)行。這允許執(zhí)行預(yù)先載入的應(yīng)用,無(wú)需任何用戶動(dòng)作,只需要打開儀器的電源。
評(píng)論