Standard Commands for Programmable Instruments


Standard Commands for Programmable Instruments (SCPI,「スキッピー」と発音される) は、半導体試験装置や電気計器など、プログラマブルな試験機・測定機の制御に用いる文法の標準を定めたものである。[1]
概要
SCPIは、IEEE 488.2-1987 規格 "Standard Codes, Formats, Protocols, and Common Commands(標準コード、フォーマット、プロトコル、共通コマンド)" [2] の上部に置かれる追加レイヤとして定義された。この規格は、あらゆる機器で用いられる共通文法、コマンド構造、データ型、を規定する。CONFigure
や MEASure
など、どの測定器でも使用できる汎用コマンドを含んでいる。これらのコマンドはサブシステムにグループ化されている。SCPI は、計測器のクラスの定義も行っている。例えば、プログラマブル電源であれば、いずれも DCPSUPPLY
基本機能クラスを実装することになる。計測器クラスは、どのサブシステムを実装するか、および計測器に固有の機能を指定する。
物理的なハードウェア通信リンク (物理層)は SCPI では定義されない。SCPI はもともと IEEE-488.1 (GPIB) バス向けに開発されたが、RS-232, RS-422, RS-485, USB, Ethernet, VXIbus, HiSLIP, などでも利用できる。[3]
SCPI コマンドは ASCII テキストの文字列で、物理層を介して測定器に送信される[1]。コマンドは、ひとつ以上のキーワードと、それらがとるパラメータからなる。仕様では、キーワードは CONFigure:
のように表記される。キーワード全体を使用することも、省略して大文字部分だけにすることもできる。問い合わせるコマンドに対する応答は、通常ASCII文字列である。しかし、データが大きい場合は、バイナリ形式を用いることもできる[3]。
SCPI 規格は、Volume 1: "Syntax and Style(文法とスタイル)", Volume 2: "Command Reference(コマンドリファレンス)", Volume 3: "Data Interchange Format(データ交換フォーマット)", Volume 4: "Instrument Classes(計測器クラス)" の4つからなる。この規格は当初は有料の印刷物としてリリースされたが、のちにすべての部分を含む無料の PDF ファイルとしてリリースされるようになった。
SCPI の歴史
最初にリリースされた 1990 年の時点[4] では、SCPI は IEEE-488 の追加レイヤであった。IEEE-488.1 はバスの物理・電気特性を規定し、IEEE-488.2 はプロトコルとデータ型を規定した。しかしいずれも計測器コマンドは規定していなかった。同じような計測器でも、製造メーカーが異なれば、あるいはモデルが異なれば、違うコマンドセットを用いていることがあった。SCPI は製造メーカーやモデルが異なっても、共通となる標準を作ったのである。SCPI は IEEE-488.2 のデータ型を用いることを要求するが、IEEE-488.1 バスには依存していない。[5]
2002-2003 年の投票の結果、SCPI コンソーシアム (SCPI Consortium) は IVI Foundation (Interchangeable Virtual Instruments) に属することになった。[5]
IEEE 488.2 の歴史
1987年に IEEE は IEEE 488.2-1987 規格 "Standard Codes, Formats, Protocols, and Common Commands" を公開し、これは後に 1992 年に改訂されて IEEE 488.2-1992 となった。[6]
IEEE 488.2 はデバイスに依存しない文法を定めているが、機器ごとに固有のコマンドについては標準は存在しなかった。同じクラスの機器(例えばマルチメータ)を制御するためのコマンドは、製造メーカーやモデルによって異なることがあった。アメリカ空軍が、のちにヒューレット・パッカード (HP) が、この問題に気付いた。1989年に、lHPand later Hewlett-Packard, recognized this problem. In 1989, HP は TML 言語を開発し[7] 、これが SCPI の前身となった。
IEC も独自の標準を IEEE とは別に開発し、IEC 60625-2-1993 (IEC 625) となった。2004 年に IEEE と IEC はそれぞれの標準を合流させて「ふたつの顔」を持つ IEEE/IEC 標準 IEC 60488-2-2004, Part 2: Codes, Formats, Protocols and Common Commands とし[8]、これをもって IEEE 488.2-1992 および IEC 60625-2-1993 を置き換えることとした。[9]
コマンド文法
機器に対する SCPI コマンドは、「設定 (set)」操作(例えば電源をオンにするなど)と「問い合わせ (query)」操作(例えば電圧を読むなど)のふたつに分類される。機器への問い合わせは、コマンドの末尾に疑問符 (?) を付加することによって発行される。いくつかのコマンドは、設定にも問い合わせにも用いられる。例えば、機器をデータ取得モードに設定するには ACQuire:MODe
コマンドを用い、現在のモードを問い合わせるには ACQuire:MODe?
コマンドを用いる。設定と問い合わせを同時に行うコマンドもある。例えば *CAL?
コマンドは、機器によっては自己校正を行ったのち、校正の結果を返す。
似たコマンドは、「木」構造のヒエラルキーにグループ化される。例えば、機器から測定結果を読み込む命令は "MEASure
" から始まることが多い。ヒエラルキー下部の特定のサブコマンドは、コロン文字 (:) によってネストされる。例えば「DC 電圧を測定する」コマンドは MEASure:VOLTage:DC?
という形式になり、「AC 電流を測定する」コマンドは MEASure:CURRent:AC?
という形式になる。
:MEASure :VOLTage :DC? :AC? :CURRent :DC? :AC? ...
大文字小文字
ここまでに示してきたコマンドでは大文字小文字が混ざっていたが、SCPI はケース・センシティブではない。
- 例えば
VOLTage
については、VOLTAGE
,voltage
,Voltage
,VoLtAgE
のいずれも有効である。
コマンドの短縮
コマンドの説明において、大文字と小文字が混ざって表示されることがある。このとき、コマンドを短縮して大文字部分だけを送信することは、大文字・小文字の全体を送信することと同じ意味を持つ。
- 例えば “
SYSTem:COMMunicate:SERial:BAUD 2400
” は RS-232 シリアル通信インターフェースを 2400 bits/s に設定するが、これは短縮して “SYST:COMM:SER:BAUD 2400
” とできる。問い合わせコマンド “SYSTem:COMMunicate:SERial:BAUD?
” または “SYST:COMM:SER:BAUD?
” は、機器に現在のボーレートを報告する命令である。
有効なのは大文字部分のみ、ないし全体のいずれかに限られ、それ以外の部分文字列は不正となる。
- 例えば
COMM
(大文字部分のみ)とCOMMUNICATE
(全体)は有効だが、COM
,COMMUN
,COMMUNIC
subsets などは不正なコマンドである。文字が追加されたCOMMUNICATED
のような文字列もコマンドとして不正である。
コマンドの結合
機器に対して、1 行で複数の命令を発行することもできる。これには各々のコマンドをセミコロン文字 (;) で区切ればよい。
- 例えば、「DC 電圧を測定してから AC 電流を測定する」には、以下のコマンドを発行すればよい。
MEASure:VOLTage:DC?
;:MEASure:CURRent:AC?
コロン (:) で始まる単体のコマンドは、コマンドツリーの根に対するものと解釈される。そうでない単体コマンドは、直前のコマンドの最終ノードに対するものと解釈される(ただしアスタリスク (*) で始まるものは除く)。例えば、
:SOURce:FREQuency:STARt 100;STOP 200
は以下のメッセージの短縮版である。
:SOURce:FREQuency:STARt 100;:SOURce:FREQuency:STOP 200
引数
コマンドによっては、ひとつ以上の引数 (argument) を受け付ける、ないし要求することがある。引数を指定する場合はコマンドの後ろにスペースを置き、その後ろに引数を書く。[8] 例えば、機器のトリガモードを "normal" に設定するには、"TRIGger:MODe NORMal
" のようなコマンドを送る。ここで "NORMal
" はコマンド "TRIGger:MODe
" の引数である。複数の引数を与える場合は、引数をコンマ (,) 区切り文字列リストで与える。例えば、デジタルマルチメータに AC 電圧を測定させる問い合わせコマンドで、機器の 10 VRMS 測定レンジを用い、測定値を 4-1/2 桁で返すよう指示する場合には、 "MEASure:VOLTage:AC? 10,4
" のようなコマンドを送る。
整数の引数
整数を指定するコマンドでは、数値に複数の整数表現を利用できる。すなわち10進、16進、8進、2進である。10進以外の3つはIEEE 488.2 で定義されており[8]、SCPI もこれに準拠している。 10進数は前置文字を指定しない。16進数は #H
または #h
を前置する。8進数は #Q
または #q
を前置する。2進数は #B
または #b
を前置する。16進数の桁には、大文字 (ABCDEF) 小文字 (abcdef) のいずれも用いてよく、混在 (aBcDeF) させても構わない。8 進数に対して "O" ではなく "Q" が得らばれたのは、0 (zero) との見掛け上の混乱を避けるためである。[8]
以下に例を示す引数は、いずれも同じ数値を表している:
- 10進:
26
- 16進:
#H1A
または#h1a
- 8進:
#Q32
または#q32
- 2進:
#B11010
または#b11010
488.2 コマンド
SCPI は IEEE 488.2 規格の追加レイヤとして定義されたため、SCPI に準拠する機器は 488.2 のコマンドたちも認識しなければならない。 これらのコマンドは、アスタリスク文字 (*) で始まるため、(非公式ではあるが)アスタリスクコマンドとかスターコマンドなどと呼ばれる。
SCPI Volume 1 の 4.1.1 節によれば、すべての SCPI コマンドは以下に示す 488.2 コマンドを実装していなければならない。 実際には、ローエンドの機器では、488。2 コマンドの一部のみをサポートしている、あるいはコマンドを受け付けるがなにもしない、場合がある。これらの 488.2 コマンドを利用できるかどうかは、各々の機器に付属の公式プログラミングマニュアルを参照して確認するとよい。
*CLS
*ESE
*ESE?
*ESR?
*IDN?
*OPC
*OPC?
*RST
*SRE
*SRE?
*STB?
*TST?
*WAI
SCPI Volume 1 の 4.1.2 節によれば、上にリストしたもの以外の 488.2 コマンドは必須ではなく、SCPI はこれらを要求しない。
*AAD
*CAL?
*DDT
*DDT?
*DLF
*DMC
*EMC
*EMC?
*GMC?
*IST?
*LMC?
*LRN?
*OPT?
*PCB
*PMC
*PRE
*PRE?
*PSC
*PSC?
*PUD
*PUD?
*RCL
*RDT
*RDT?
*SAV
*TRG
*RMC
*SDS
参考文献
- IEEE-488 (GPIB)
- Virtual Instrument Software Architecture (VISA)
- Instrument driver
- List of TCP and UDP port numbers - scpi-raw は TCP ポート 5025 と UDP ポート 5025
脚注
- ^ “SCPI-1999 Specification; SCPI Consortium.”. 2025年1月25日閲覧。
- ^ “IEEE Standard Codes, Formats, Protocols, and Common Commands For Use with ANSI/IEEE Std 488.1-1987 IEEE Standard Digital Interface for Programmable Instrumentation”. 2025年1月25日閲覧。
- ^ “The SCPI Standard (overview)”. IVI Foundation. 2024年9月21日時点のオリジナルよりアーカイブ。2025年1月25日閲覧。
- ^ “History of GPIB”. National Instruments. 2010年2月6日閲覧。 “In 1990, the IEEE 488.2 specification included the Standard Commands for Programmable Instrumentation (SCPI) document.”
- ^ a b “SCPI”. IVI Foundation. 2010年6月2日閲覧。
- ^ IEEE Standard Codes, Formats, Protocols, and Common Commands for Use With IEEE Std 488.1-1987, IEEE Standard Digital Interface for Programmable Instrumentation, Institute of Electrical and Electronics Engineers, (1992), ISBN 1-55937-238-9, IEEE Std 488.2-1992
- ^ “GPIB 101, A Tutorial of the GPIB Bus”. ICS Electronics. p. 5, paragraph=SCPI Commands. 2025年1月25日閲覧。
- ^ a b c d Standard Digital Interface for Programmable Instrumentation- Part 2: Codes, Formats, Protocols and Common Commands (Adoption of (IEEE Std 488.2-1992). IEEE. doi:10.1109/IEEESTD.2004.95390. hdl:11059/14380. ISBN 978-0-7381-4100-8 引用エラー: 無効な
<ref>
タグ; name "488.2-1992-spec"が異なる内容で複数回定義されています - ^ “Replaced or Withdrawn Publications”. IEC. 2012年4月17日時点のオリジナルよりアーカイブ。2010年2月6日閲覧。
外部リンク
- SCPI Organization, 公式ウェブサイト
- 規格
- SCPI-1999, Volume 1-4, 819 page PDF file, フリーでダウンロード可(アスタリスク (*) コマンドは IEEE 488.2 & IEC 60488-2 で規定されているため含まれていない)
- IEEE 488.2-1992, 254 page PDF file, 2024 年時点で USD$52 かかる(IEEE/IEC 60488-2-2004 で置き換えられた)
- IEEE/IEC 60488-2-2004, 264 page PDF file, 2024 年時点で USD$373 かかる
プログラミングマニュアルの例
- マルチメータ
- Tektronix DMM6500, 1202 page PDF file.
- オシロスコープ
- Keysight InfiniiVision Families, 1896 page PDF file.
- Rohde-Schwarz MXO 4 Series, 848 page PDF file.
- Tektronix MSO 4/5/6 Families, 2050 page PDF file.
[[Category:電気・電子計測機器]] [[Category:入出力]] [[Category:電子工学]] [[Category:未査読の翻訳があるページ]]