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].

參見

參考資料

  1. ^ History of GPIB. National Instruments. [2010-02-06]. (原始內容存檔於2012-04-17). In 1990, the IEEE 488.2 specification included the Standard Commands for Programmable Instrumentation (SCPI) document. 
  2. ^ 2.0 2.1 SCPI. IVI Foundation. [2010-06-02]. (原始內容存檔於2011-02-06). 

外部連結