Part I:什么是腳本?
多年來,可編程儀器表現(xiàn)為一種形式或另一種形式。雖然具體功能有所不同,但可編程儀器允許用戶在儀器中創(chuàng)建和保存一組指令(或程序),并且按需運行指令。通常,早期可編程儀器的能力和容量都非常有限,這使可編程性的使用局限于相對小而簡單的應(yīng)用。較大或較復(fù)雜的應(yīng)用需要使用單獨計算機或控制器通過通信接口(常常是GPIB)控制可編程儀器。
計算技術(shù)和編程語言的進步以及嵌入式計算容量成本的穩(wěn)定下降帶來了新一代可編程儀器。新型儀器突破了舊的限制,極大提高了性能和靈活性。這些儀器的一個關(guān)鍵進步是采用腳本語言提供可編程性。本文詳細介紹了腳本以及如何利用腳本簡化測試與測量并且提高速度。
那什么是腳本呢?測試儀器的腳本與我們說的PC腳本又有什么區(qū)別呢?
簡單地說,腳本是用腳本語言編寫的程序以便管理一系列的動作。
腳本遠優(yōu)于常規(guī)使用的宏或記錄序列。腳本能充分利用腳本語言,其中包括循環(huán)、轉(zhuǎn)移和數(shù)據(jù)處理。雖然宏可以通過基本循環(huán)控制方法實現(xiàn)重復(fù),但是腳本能提供完全執(zhí)行環(huán)境,其中數(shù)值可以保存在變量中。然后,這些變量可用于控制循環(huán)和轉(zhuǎn)移判定。
腳本語言與其它編程語言的主要區(qū)別在于在運行腳本程序之前無需預(yù)編譯。如果需要,腳本環(huán)境可以直接中斷程序或自動編譯程序。此外,腳本語言還具有編程語言的全部能力,包括存儲變量值和創(chuàng)建存儲的程序(函數(shù))以便代碼重用。
由于腳本無需單獨進行編譯,所以腳本語言非常適合于測試與測量設(shè)備的嵌入式應(yīng)用。腳本可以下載到儀器上,無需額外的準(zhǔn)備工作就能為用戶提供更多便利。
PC上運行的腳本語言和嵌到儀器中的腳本語言之間的關(guān)鍵不同在于環(huán)境。當(dāng)腳本語言運行在PC上時,它通常能訪問文件系統(tǒng)、幾乎無限制的存儲器、圖形顯示以及鍵盤和鼠標(biāo)。當(dāng)腳本語言運行在儀器上時,它不必訪問任一種設(shè)備,但這些設(shè)備通常也不需要。
明天我們會對測量儀器中的腳本進行細化介紹,敬請期待吧!
PartII: 測量儀器中運用的腳本
流行的腳本語言包括Perl、Python、VBScript和JavaScript。Lua腳本語言特別適于嵌入式應(yīng)用,因為它比多數(shù)其它腳本語言運行速度更快并采用占代碼空間非常小的庫實現(xiàn)。吉時利選擇Lua用于支持測試腳本處理器(TSP)的儀器系列。
當(dāng)測試測量儀器增加了腳本支持時,最困難的選擇是什么呢?對拉,是如何向用戶介紹腳本!
這種困難包括需要回答的一些難題,例如:“如何集成儀器指令集和腳本環(huán)境?”“用戶如何將腳本載入儀器中?”吉時利選擇將腳本環(huán)境和指令集完全集成,這意味著所有儀器指令都是完全合法的Lua語句?;旧?,送到儀器上的每條指令消息都作為Lua程序執(zhí)行。
這種選擇使用戶很容易地從使用單條指令控制儀器過渡到使用腳本控制儀器,因為不需要學(xué)習(xí)整個新指令集。與腳本中使用的命令相同,指令可以通過GPIB或LXI接口發(fā)送到儀器。這極大地簡化了從基于指令的簡單控制到基于腳本的控制的過渡過程。用戶能簡單地發(fā)送較大的腳本而不是單獨的指令到儀器。
下面我們用代碼來舉例說明一下:
案例分析
這種選擇的缺點是儀器指令可能對于第一次使用的用戶有點陌生。舉一些例子有助于說明這一缺點。這些例子比較了吉時利2400型源表(基于SCPI的單元)和吉時利2602型雙通道數(shù)字源表(基于TSP的單元)。
讓2400的源輸出電流的指令是:
::SOUR:FUNC CURR
2602對應(yīng)的指令是:
smua.source.func = smua.DC_AMPS
smua前綴指定雙通道儀器2602的通道A。除了等號外,其余的指令類似于SCPI指令。這是Lua的賦值運算,將mua.source.func屬性設(shè)為smua.DC_AMPS的值。
查詢指令有一些陌生。因為指令是有效的Lua語句,所以使用print函數(shù)產(chǎn)生輸出。SCPI查詢返回到2400的源函數(shù)是:
:SOUR:FUNC?
2602對應(yīng)的指令是:
print(smua.source.func)
正如SCPI儀器通過分號分隔單獨指令以支持復(fù)合指令,基于腳本的儀器也能通過語句分隔符分隔指令以支持復(fù)合指令。在Lua中,語句分隔符是空白字符。
假設(shè)我們的儀器已經(jīng)配置為電壓源。對于2400,以下指令消息將設(shè)置輸出電平,然后打開輸出:
:SOUR:VOLT 1.0; :OUTP 1
對于2602,相應(yīng)指令消息是:
smua.source.levelv = 1.0 smua.source.output = 1
上述例子說明腳本儀器可以表現(xiàn)得與傳統(tǒng)設(shè)備非常類似。僅指令語法稍;有改變。為了利用腳本引擎的全部能力,用戶只用發(fā)送消息來使用腳本語言功能。
PartIII 儀器測試中腳本案例分析以及LXI
今天我們會介紹實際操作時的一些案例和經(jīng)驗,并且介紹一下LXI和腳本。
通過發(fā)送以下腳本,用戶能讓儀器執(zhí)行二分查找法搜索能輸出1mA電流的電壓源:
<代碼略>
這種腳本的好處是避免了讀取每個結(jié)果和發(fā)送指令輸出新電平所需的通信時間。雖然有理由詢問發(fā)送較長消息需要多長時間,但是通常發(fā)送一條較長的消息比來回通信許多條較短消息快得多。然而,腳本環(huán)境的一個優(yōu)點是前述代碼可以封裝為函數(shù)定義,然后重用,用的時候就能完全避免發(fā)送長消息。例如:
<代碼略>
前面的指令不會讓儀器立刻執(zhí)行,但是它創(chuàng)建了一個命名為“Search(搜索)”的存儲程序,之后可以用搜索指令調(diào)用:
Search(2.5, 0.001)
儀器有一些特點能補充腳本引擎。如果腳本環(huán)境提供儀器前面板的編程訪問,那么用戶就能創(chuàng)建交互式腳本提示用戶在前面板輸入?yún)?shù)或顯示結(jié)果。儀器還能提供非易失的板上腳本存儲,因此當(dāng)儀器上電時,這些存儲的腳本就能自動執(zhí)行。這允許執(zhí)行預(yù)先載入的應(yīng)用,無需任何用戶動作,只需要打開儀器的電源。
嵌入式腳本為測試和測量儀器用戶提供顯著的優(yōu)點。雖然嵌入式腳本具有一些次要的缺點,例如前面介紹的對查詢陌生,但是大多數(shù)用戶都能很容易使用或者適應(yīng)。
腳本語言通常能自動管理內(nèi)存,所以用戶無需分配和釋放用于字符串或矩陣的存儲區(qū)。雖然這對用戶很方便,但是腳本引擎需要周期性地重新聲明不再使用的內(nèi)存,這個過程被稱為“垃圾收集”。雖然垃圾收集能自動進行,但是這得花費時間,而且如果在測試序列的關(guān)鍵時間段上發(fā)生垃圾收集就會出現(xiàn)問題。這些問題是可以預(yù)防的,但是首先用戶必須理解垃圾收集器的影響并且知道如何在測試序列的關(guān)鍵時間段上避免垃圾收集。
下面介紹一下LXI和腳本
現(xiàn)行的測試儀器LXI標(biāo)準(zhǔn)不要求儀器可編程或?qū)崿F(xiàn)腳本。然而,LXI標(biāo)準(zhǔn)中的許多特點預(yù)先考慮了可編程儀器,并提供有用的功能性以增強LXI標(biāo)準(zhǔn)儀器的腳本性能。
LXI標(biāo)準(zhǔn)要求Class A和Class B儀器通過LAN消息支持對等消息傳送,并允許Class C儀器支持這種消息傳送。LAN消息能用于通知其它LXI儀器事件或者觸發(fā)另一臺儀器執(zhí)行某些功能。在接收到LAN消息時,用戶必須能指明采取什么動作。為了實現(xiàn)這個,最靈活的方法以及LXI標(biāo)準(zhǔn)推薦的方法是允許用戶下載可執(zhí)行代碼(即腳本或程序)到儀器中,然后在接收到適合的LAN消息時執(zhí)行該代碼。這提供了極大靈活性,因為用戶不被局限于一組預(yù)定動作集。
此外,LXI定義的LAN消息格式包含一個小空間,用于包括任意數(shù)據(jù)作為消息的一部分??梢詡魉涂蓤?zhí)行代碼(例如一個短腳本)作為LAN消息的一部分。這允許一臺儀器通過LAN消息控制另一臺儀器,無需預(yù)先設(shè)置回應(yīng)。例如,假定一臺儀器能對被測器件(DUT)進行測量?;跍y量的結(jié)果,第一臺儀器必須能改變由另一臺儀器施加到DUT上的激勵?;诘谝淮螠y量計算新的激勵值,所以在之前第一臺儀器并不知道。在這種情況下,第一臺儀器可以發(fā)送包含一個短腳本的LAN消息至第二臺儀器以調(diào)整激勵值。
Part IV測試和測量中應(yīng)用腳本的優(yōu)點
下面介紹基于腳本的儀器的優(yōu)點。當(dāng)儀器也符合LXI標(biāo)準(zhǔn)時,許多優(yōu)點被加強。
對于許多測試和測量應(yīng)用,非常適合采用PC作為控制器用于與單獨儀器通信或使用帶有積分型控制器的基于時隙的系統(tǒng)。但對于其它情況,那些方法或者由于大材小用而過于昂貴,或者不能勝任此任務(wù)。這些應(yīng)用可以受益于基于腳本的儀器提供的額外能力和靈活性。這部分描述了在測試和測量應(yīng)用中腳本的優(yōu)點。
1.結(jié)構(gòu)的靈活性
構(gòu)建帶少量儀器的小型測試系統(tǒng)可以不帶單獨控制器;其中一臺儀器用作控制器,管理其它儀器的工作。大系統(tǒng)能被劃分為各含少量儀器的子系統(tǒng),其中每個子系統(tǒng)被基于腳本的儀器管理。這簡化了系統(tǒng)設(shè)計并且有助于提高性能。例如在裝配線、科學(xué)應(yīng)用或射頻測試應(yīng)用中,這類子系統(tǒng)使用基于LXI腳本的儀器就能很大程度地在物理上分開。
2.提高性能
由基于腳本的儀器管理將大系統(tǒng)劃分為子系統(tǒng),這擴展了跨多處理器的控制和數(shù)據(jù)處理功能,從而提升了系統(tǒng)可用的總處理能力并且常常提升整體速度和吞吐量。此外,這種工作劃分支持并行測試:當(dāng)中心控制器忙于其它任務(wù)時,儀器或子系統(tǒng)不必保持空閑狀態(tài)。
因為當(dāng)傳輸命令或數(shù)據(jù)時,由于與控制器通信造成的延時更少,所以儀器上運行的腳本能以最大速度運行。當(dāng)儀器執(zhí)行重復(fù)測試序列時,這尤其重要。如果用單獨的控制器,即使同樣的序列被運行了幾百次或者幾千次,每次通過時都要傳送一次指令序列到儀器。對比使用腳本的方法,僅需傳輸一次腳本,然后使用短指令可以運行任意多的次數(shù)。
條件處理(例如當(dāng)一個測量的結(jié)果確定下一個要執(zhí)行的函數(shù)時)提供了另一種提高性能的手段。在腳本中,本地進行條件檢查能去除由發(fā)送第一結(jié)果至控制器,等待控制器處理,然后發(fā)送下一個指令給儀器這個過程產(chǎn)生的延時。
在包含高數(shù)據(jù)率和/或大數(shù)據(jù)集的系統(tǒng)中,通信延遲、帶寬限制和控制器吞吐量都可能是嚴重的瓶頸?;谀_本的儀器能壓縮數(shù)據(jù)以降低帶寬要求和/或緩沖數(shù)據(jù),當(dāng)帶寬可用時再通過后臺傳輸。基于腳本的儀器還能過濾數(shù)據(jù),例如通過僅傳送超出正常限度的數(shù)據(jù)。如前面所提到的,腳本還降低了消耗的通信帶寬,從控制器發(fā)送命令至儀器,從而提高帶寬受限應(yīng)用的性能并且最小化由于通信延遲引起的時延。
3.降低成本
使用基于腳本的儀器構(gòu)建較小或較低復(fù)雜度的測試系統(tǒng)不需要單獨的控制器,從而節(jié)省了控制器的成本并節(jié)省了用于控制儀器的任意單獨測試運行軟件的成本。當(dāng)從基于腳本的儀器構(gòu)建子系統(tǒng)時,構(gòu)建大的測試系統(tǒng)同樣可以實現(xiàn)節(jié)約成本。