メッセージの概要
コントローラ(パソコン)と装置(KPM1000)との間でやりとりする情報を「メッセージ」と呼びます。
本製品は、このメッセージにSCPI言語を使用しています。
メッセージには、コンピュータから本製品へ送信されるコマンド(命令)と本製品からコンピュータに送信されるレスポンス(応答)があります。
SCPIは、試験・計測装置向けに考案されたASCIIベースのコマンドです。コマンド構造は、SCPIサブシステムの構築ブロックである共通ルートまたはノードを中心に編成されています。コマンドはプログラムヘッダ、パラメータ、欧文句読点を組み合わせて構成されています。
SOURceサブシステムを例に、階層の説明をします。
プログラムヘッダ | パラメータ | ノードの階層 | ||||
SENS | ルートノード | |||||
:CURR |
第2レベル | |||||
:RANG | <numeric> | 第3レベル | ||||
:AUTO | <bool> | 第4レベル | ||||
VOLT | 第2レベル | |||||
:RANGE | <numeric> | 第3レベル | ||||
:AUTO | <bool> | 第4レベル |
上位ノードと下位ノードはコロン(:)で区切られます。
本書では、以下のフォーマットでSCPIコマンドを示します。
MEASure[:SCALar]:CURRent:AC? {<numeric>|MINimum|MAXimum}
SCPIコマンドは省略表記が用意されています。省略表記はSCPIコマンドの小文字で記述されている文字を省いたものです。
SCPIコマンドは、完全表記(long form)でも省略表記(short form)でも送信できます。SCPIコマンドは大文字小文字の区別をしないため、CURR、Curr、currはすべてCURRentの省略表記として受け付けられます。完全表記の場合には、CURRENT、Current、currentすべて受け付けられます。
・プログラムヘッダ部とパラメータ部の間にはスペースが必要です。
・パラメータが複数ある場合には“,”で連結します。
・コマンドとコマンドは“;”で連結します(複合コマンド)。
SENSe:CURRent:SCALing:STATe ON;CTRatio 1000
2つ目のコマンドではSENSe:CURRent:SCALingが省略されています。これは、1つ目のコマンドのSENSe:CURRent:SCALing:STATe ONでパスがSENSe:CURRent:SCALingに指定されているからです。
この複合コマンドは、以下のコマンドを入力するのと同じです。
SENSe:CURRent:SCALing:STATe ON
SENSe:CURRent:SCALing:CTRatio 1000
カレントパスに定義されていないノードを指定すると、エラーになります。
コロンとセミコロンを一緒に使用して、異なったサブシステムのコマンドを連結できます。
SENSe:CURRent:RANGe:AUTo ON;:MEASure:CURRent:AC?
この複合コマンドにはSENSeとMEASureの2つのルートノードが存在します。
2つ目以降のコマンドがコロンから始まる場合は、前回のコマンドで指定したパスはクリアされます。
・1行に送信できる文字数は最大128バイトです。
特別な記号
SCPIコマンドの記述のために本書で使用している特別な記号について以下のように定義します。
·{}に囲まれて“|”で区切られた文字や数字はその中の1つを選ぶことを表します。
実際のプログラムでは{}を記述しないでください。
·<>は、プログラムデータを表します。
<>は実際のプログラムでは記述しないでください。
·[]は、オプションデータを表します。
プログラムと一緒に送信されない場合には、デフォルト値が適用されます。
[]は実際のプログラムでは記述しないでください。
クエリ
装置の設定やステータスを問い合わせることができます。
プログラムヘッダ部の末尾に疑問符「?」を付けます。
クエリがパラメータを持つ場合には、疑問符の後にスペースを入れて、その後にパラメータを記述します。
CURRent? MIN
レスポンス
クエリに対するレスポンスです。常に装置からホストコンピュータへ送られるメッセージです。装置のステータスや測定値を、コンピュータに伝えます。
NOTE
2つのクエリを別々の行で送信する場合には、最初の応答を読み取ってから、2行目のクエリを送信してください。一度に2行のクエリを送信すると、最初に不完全な応答を受信し、続いて2番目で完全な応答を受信する場合があります。 |
すべてのコマンドは、有効なターミネータで終了しなければなりません。
ターミネータには<new line>(ASCII 0x0A)とEOI(end-or-identify)があります。どちらか一方が指定されていれば、ターミネータとして機能します。
RS232CにはEOIが存在しないため、必ず<new line>を使用してください。
コマンドストリングを終了すると、パスは必ずルートレベルにリセットされます。
NOTE
CR(ASCII 0x0D)はターミネータではありません。 |
IEEE-488.2およびSCPI規格には、リセットや自己診断などの機能用に一連の共通コマンドがあります。これらの共通コマンドは必ず*(アスタリスク)で始まります。1つ、または、複数のパラメータを持っている場合があります。