SCPI
可程式儀器標準命令(英語:Standard Commands for Programmable Instruments,縮寫:SCPI)定義了一套用於控制可程式測試測量儀器的標準語法和命令。
概述
SCPI於1990與IEEE 488.2協議一起面世。這套標準定義了可用於控制一切儀器的語法,命令結構以及數據格式。比如,通用的命令,如配置儀器參數的命令CONFigure
,測量命令MEASure
等。這些命令可用於任一儀器,並且同一類的命令屬於同一子系統裡。SCPI同時也定義了若干儀器的種類。比如,任何可控制的電源都會實現DCPSUPPLY
基本功能類型。儀器的類別規定了它們會去實現什麼樣的子系統,當然也包括針對儀器的特定功能。
需要注意的是,SCPI並未定義物理層的傳輸信道的實現方法。雖然上文指出它最開始是和IEEE 488.2(即GPIB)面世的,但SCPI控制命令也可用於串口(RS-232)、乙太網、USB接口、VXIbus等若干硬體匯流排。
SCPI命令是ASCII字符串,通過物理傳輸層傳入儀器。命令由一連串的關鍵字構成,有的還需要包括參數。在協議中,命令規定為如下形式:CONFigure
。在使用中,即可以寫全名,也可以僅寫僅包含大寫字母的縮寫。通常儀器對於查詢命令的反饋也為ASCII代碼。在傳輸大量數據時,二進制數據也是可以使用的。
語法
SCPI命令大致分為兩種功能,
改變儀器運行狀態的set操作(打開/關閉電源輸出),或者查詢儀器狀態的query操作(例如讀取輸出電壓值)。查詢命令一般以問號(?)結尾。有些命令即可以用來設置,也可以用來查詢儀器。
相似的命令可以被歸類成一種層狀或樹狀結構。例如,任何讀取儀器測量結果的命令均可以MEASure
開頭。特定的子命令以冒號同上級命令分隔開。例如,測量直流電壓會是這樣的形式:MEASure:VOLTage:DC?
,或者測量交流電流會是這樣的形式:MEASure:CURRent:AC?
。
參數
有些命令需要額外的參數。參數一般跟在命令的後面,以空格隔開。例如,將某個儀器的觸發模式設為normal的命令可寫為:TRIGer:MODe NORMal
。上述命令里NORMal
即為參數。
串聯命令
多個命令可用一條語句發送至儀器,只需在每條命令後使用分號;
隔開即可。同時,除了第一條命令,隨後的每條命令前必須加一個分號的前綴(除非其以星號開頭)。例如,測量直流電壓和交流電流可以寫成一條語句:MEASure:VOLTage:DC?;:MEASure:CURRent:AC?
。
縮略命令
可以只發送命令名中的大寫字母部分。例如,命令SYSTem:COMMunicate:SERial:BAUD 2400
將會設置RS-232通訊埠的比特率為2400。這個命令可以簡寫為SYST:COMM:SER:BAUD 2400
。
歷史
首次發布於1990年[1],SCPI的起源是IEEE-488的另外一個層。 IEEE-488.1指定了物理和電氣匯流排,IEEE488.2指定了協議和數據格式,但是都沒有指定儀器的指令。不同的製造商,甚至不同的型號、相同類型的儀器都需要使用不同的命令集。 SCPI創建了一個標準,可以在所有的製造商和所有型號中通用。它需要使用的IEEE488.2數據格式,但不必非得是-488.1匯流排[2] 在2002-2003年,SCPI協會投票成為IVI基金會的一部分(可互換虛擬儀器)[2].