SCPI言語の概要

SCPI(Standard Commands for Programmable Instruments)とは、テストと測定機器のためのASCIIベースのプログラミング言語です。 SCPIコマンドでは、階層構造(木システム)が使用されます。 関連するコマンドが共通のノード(ルート)配下にまとめられ、サブシステムを構成します。 次に、SENSeサブシステムの一部を例にして、この構造を示します。

SENSe:
         VOLTage:
                  DC:RANGe {<range>|MIN|MAX|DEF}
                  DC:RANGe? [MINimum | MAXimum | DEFault]

SENSeはコマンドのルート・キーワード、VOLTageは第2レベルのキーワード、DCは第3レベルのキーワードです。 コロン(:)により、連続するキーワードが区切られます。

構文の規約

コマンドの構文の形式を下に示します。

VOLTage:DC:RANGe {<range>|MIN|MAX|DEF}

コマンドの多く(と一部のパラメータ)は、大文字と小文字が混合しています。 大文字はコマンドの省略形を示します。これにより、プログラム行を短縮できます。 プログラムの可読性を向上させるには、完全形を使用します。

例えば、上記のキーワードVOLTageの場合を考えます。 VOLTまたはVOLTageを、任意の大文字と小文字の組み合わせで入力できます。 このため、VolTaGe、volt、およびVoltもすべて受け付け可能です。 その他の形式(VOL、VOLTAGなど)ではエラーが発生します。

コマンドの区切り文字

コロン(:)により、連続するキーワードが区切られます。 パラメータをコマンド・キーワードから区切るため、空白を挿入する必要があります。 コマンドに複数のパラメータが必要な場合、隣同士のパラメータはカンマを使用して区切ります。

CONF:VOLT:DC 10,0.003

セミコロン(;)は、同じサブシステム内のコマンドを区切り、さらに入力を省略することもできます。 以下に例を示します。

TRIG:SOUR EXT;COUNT 10

この文字列は、次の2コマンドと等価です。

TRIG:SOUR EXT
TRIG:COUNT 10

コロンとセミコロンを使用して、異なるサブシステムのコマンドを接続します。 例えば、次の例では、コロンとセミコロンの両方を使用しない場合、エラーが発生します。

TRIG:COUN MIN;:SAMP:COUN MIN

MIN、MAX、およびDEFパラメータの使用

多くのコマンドで、パラメータの位置に"MIN"または"MAX"を代入できます。 さらに一部のケースでは、"DEF"も代入できます。 例えば、次の例を考えます。

VOLTage:DC:RANGe {<range>|MIN|MAX|DEF}

<range>パラメータに特定の値を選択する代わりに、MINを代入すればレンジをその最小値に、MAXを代入すればレンジをその最大値に、DEFを代入すればレンジをそのデフォルト値に設定できます。>

パラメータ設定の問合せ

疑問符(?)をコマンドに追加することにより、多くのパラメータの現在の値を問い合わせることができます。 例えば、次の例では、トリガ・カウントを10測定に設定します。

TRIG:COUN 10

次のコマンドを送信することにより、カウント値を問い合わせられます。

TRIG:COUN?

次のようにすれば、最小カウントまたは最大カウントも問い合わせられます。

TRIG:COUN? MIN
TRIG:COUN? MAX

SCPIコマンドのターミネータ

測定器に送信されるコマンド文字列は、<新規ライン>(<NL)文字(ASCII10進10)で終了する必要があります。> IEEE-488 EOI(End-Or-Identify)メッセージは、<NL>文字として解釈されるため、コマンド文字列を終了するのに<NL>文字の位置に使用することができます。 <キャリッジ・リターン>の後に続く<NL>も受け付けられます。 コマンド文字列が終了すると、常に現在のSCPIコマンド・パスがルート・レベルにリセットされます。

注記

問合せを含み、測定器に送信される各SCPIメッセージに対して返される応答は、<NL>またはライン・フィード文字(EOI)で終了します。 例えば、R?が送信されると、返されるデータ・ブロックに続く<NL>で応答が終了します。 SCPIメッセージに、セミコロンで区切られた複数の問合せが含まれる場合("ROUTe:TERMinals?;R?"など)、応答は、最後の問合せに対する応答の後にもう一度<NL>が来てから終了します。 いずれの場合も、プログラムは、測定器に別のコマンドが送信される前に応答内のこの<NL>を読み取る必要があります。これに失敗するとエラーが発生します。

IEEE -488.2 Common Commands

IEEE-488.2標準では、リセット、セルフテスト、およびステータス動作などの機能を実行するための共通コマンド・セットが定義されています。 共通コマンドは常にアスタリスク(*)で開始し、3文字長で、1つまたは複数のパラメータを含むことができます。 コマンド・キーワードは、第1パラメータと空白で区切られます。 次のように、セミコロン(;)を使用して複数のコマンドを区切ります。

*RST; *CLS; *ESE 32; *OPC?

SCPIパラメータのタイプ

SCPI言語では、プログラム・メッセージと応答メッセージで使用されるいくつかのデータ形式が定義されています。

数値パラメータ

数値パラメータを必要とするコマンドは、一般的に使用される10進数表現(省略可能な符号、小数点、科学的記数法など)すべてを受け付けます。 数値パラメータの特殊な値(MIN、MAX、DEFなど)も受け付けられます。 数値パラメータには、工学単位のサフィックス(M、k、m、uなど)も付けて送信できます。 コマンドが特定の値のみを受け付ける場合、測定器は入力数値パラメータが受け付け可能な値になるように自動的に丸め処理します。 次のコマンドは、レンジ値の数値パラメータを必要とします。

VOLTage:DC:RANGe {<range>|MIN|MAX|DEF}

注記

SCPIパーサは大文字小文字を区別するため、文字"M"("m")には注意が必要です。 簡素化のために、測定器は"mV"("MV")をミリボルトとして、"MHZ"("mhz")をメガヘルツとして解釈します。 同様に、"MΩ"("mΩ")はメガΩとして解釈されます。 プレフィックス"MA"をメガの意味として使用できます。 例えば、"MAV"はメガボルトとして解釈されます。


離散パラメータ

離散パラメータは、値の個数が限定されているプログラム設定に使用されます(IMMediate、EXTernal、BUSなど)。 離散パラメータには、コマンド・キーワードと同様、短縮形と完全形があります。 大文字と小文字を混合できます。 問合せは、常にすべてが大文字から成る短縮形を戻します。 次の例では、温度単位に離散パラメータが必要です。

UNIT:TEMPerature {C|F|K}

論理パラメータ

論理パラメータは、真または偽のいずれかである、単一の2値状態を表します。 偽条件の場合、測定器は"オフ"または"0"を受け付けます。 真条件の場合、測定器は"オン"または"1"を受け付けます。 論理設定を問い合わせると、測定器は常に"0"または"1"を返します。 次の例では、論理パラメータが必要です。

DISPlay:STATe {ON|1|OFF|0}

ASCII文字列パラメータ

文字列パラメータには、ASCII文字列のほぼ任意の組み合わせを含めることができます。 文字列は、揃った引用符(一重引用符または二重引用符のいずれか)で開始し、終了する必要があります。 引用符を2つ連続して入力することにより、引用符区切り文字を文字列の一部として含めることができます。 次のコマンドでは、文字列パラメータが使用されます。

DISPlay:TEXT <引用される文字列>

例えば、次の例では、測定器のフロント・パネルにメッセージ"WAITING..."が表示されます(引用符は表示されません)。

DISP:TEXT "WAITING..."

次の例にあるように、一重引用符を使用しても同じメッセージを表示することができます。

DISP:TEXT 'WAITING...'

デバイス・クリアの使用

デバイス・クリアは、使用することで、測定器を応答状態に戻すことができるIEEE-488ローレベル・バス・メッセージです。 さまざまなプログラミング言語とIEEE-488インタフェース・カードで、それぞれの独自のコマンドを介してこの機能にアクセスできます。 デバイス・クリア・メッセージを受信しても、ステータス・レジスタ、エラー問合せ、およびすべての設定状態は変更されません。

デバイス・クリアでは、次の操作が実行されます。

注記

測定を終了するための方法としては、ABORtコマンドを推奨します。