コマンドとは

コマンド / メッセージ

通信機器と受信・送信されるデータをメッセージといいます。メッセージは以下の図のように分類されます。

プログラムメッセージ | コントローラから機器に送信するメッセージです。
応答メッセージ | 機器からコントローラに送信するメッセージです。このメッセージは、クエリ・プログラム・メッセージを受信し、構文をチェックした時点で作成されます。
コマンド・プログラム・メッセージ | 機器の設定、リセットなどの機器を制御する命令です。
クエリ・プログラム・メッセージ | 機器の動作結果、測定結果、あるいは設定状態を問合せる命令です。

コマンド・プログラム・メッセージ、およびクエリ・プログラム・メッセージを総称してコマンドと呼びます。
(コマンドはHIOKI固有のSCPI言語です。)

コマンド・シンタックス

コマンドは大文字・小文字・その混合のいずれの場合も受け付けます。
コマンド名は、実行しようとする機能にできるだけ近いものが選ばれており、そのほとんどは短縮可能です。
コマンド名そのものを「ロングフォーム」といい、短縮したものを「ショートフォーム」といいます。
本取扱説明では、ショートフォームの部分を大文字で、小文字まで含めた部分をロングフォームとして記述しています。
本体からの応答メッセージは、大文字のロングフォームで返されます。
【例】

本取扱説明の表記 (コマンド名) | ショートフォーム | ロングフォーム
DISPlay | DISP | DISPLAY

DiSpLayのように大文字と小文字が混ざっていても受け付けますが、DISPLA 、DISPL 、DIS はエラーとなります。

コマンド・プログラム・ヘッダ

ヘッダは、そのコマンドがどんな機能を持つかを示します。
コマンドは必ずヘッダが必要で、「単純コマンド型」、 「複合コマンド型」、および「共通コマンド型」の3種類の形式があります。

コマンドの種類 | 説明
単純コマンド型 | 1語で構成されたヘッダ 【例】
複合コマンド型 | コロン「:」で区切られた複数の単純コマンド型ヘッダ 【例】
共通コマンド型 | 先頭の文字がアスタリスク「*」で始まり、IEEE488.2で規定されたコマンド 【例】 *RST

クエリ・プログラム・ヘッダ

機器のコマンドに対する動作結果や設定を問合せるために使用し、プログラム・ヘッダの後に「?」をつけるとクエリとして認識されます。

コマンドの種類 | 説明
単純コマンド型 | 1語で構成されたヘッダ 【例】
複合コマンド型 | コロン「 : 」で区切られた複数の単純コマンド型ヘッダ 【例】
共通コマンド型 | 先頭の文字がアスタリスク「*」で始まり、IEEE488.2で規定されたコマンド 【例】 *IDN?

応答メッセージ

クエリに対する応答メッセージは、プログラムメッセージと同様にヘッダ部とデータ部からなり、原則としてそのクエリに対応するプログラムメッセージのフォーマットと同様のフォーマットで出力します。なお、ヘッダ部をなくすこともできます。
【例】

クエリ・プログラム・メッセージ | :SYSTem:TIME? |
応答メッセージ | :SYSTEM:TIME 12,34,56 12,34,56 | (ヘッダの設定がONの場合) (ヘッダの設定がOFFの場合)

ターミネータとセパレータ

(1) メッセージターミネータ
メッセージターミネータとは、1 回のメッセージ転送の区切りを意味します。
ただしターミネータ自身はメッセージに含まれません。

本体 / 通信 ソフトの設定 | ANSI文字コード (16進数) | 意味 | 英語名称 | デリミタの設定
LF | 0Ah | 改行 | Line Feed | デリミタを LF に設定します
CR+LF | 0Dh 0Ah |  |  | デリミタを CR+LF に設定します

(2) メッセージ単位セパレータ
セミコロン「;」はメッセージ単位セパレータとして使用され、1行に複数のメッセージを記述する場合に使用します。

(3) ヘッダ・セパレータ
ヘッダとデータを持つメッセージにおいて、ヘッダとデータを分離するもの（ヘッダ・セパレータ）として、スペース「 」を使用します。
スペース「 」は実際のプログラムは表示しません。

(4) データ・セパレータ
カンマ「,」は、複数のデータ間を区切るもの（データ・セパレータ）として使用します。

コマンド・ツリー

複数の複合コマンド型のメッセージを記述する場合、セミコロン（メッセージ単位セパレータ）「;」の次のヘッダにコロン「:」がないときは、
原則としてヘッダが直前メッセージの最後のコロンより前のヘッダに引き続いているものとみなします。
この直前のヘッダをカレント・パスと呼ぶことにします。
【例1】

:SYSTem:DATE 2017,1,1;:SYSTem:TIME 12,34,56

【例2】

:SYSTem:DATE 2017,1,1;TIME 12,34,56

【例3】

:SYSTem:DATE 2017,1,1
…（上記データを送信後、下記データを送信）…
TIME 12,34,56

【例1】【例2】、および【例3】は、時刻を設定するメッセージです。
【例1】は、セミコロンの次にコロンがあるため、カレント・パスはルートになります。従って次のコマンド検索はルートから行います。
【例2】は、「:SYSTem:DATE 2017,1,1」でカレント･パスが「:SYSTEM」になっているので、「TIME」の前の「:SYSTem:」を省略できます。
【例3】は、一度「 :SYSTem:DATE 2017,1,1」を送信していますが、【例2】と同様にカレント･パスが「:SYSTEM」になっているので、「TIME」の前の「:SYSTem:」を省略できます。
コマンドの先端にあるコロン「:」は、コマンドの検索をルートから行うことを表します。

データ形式

コマンドのデータは、文字データ、10 進数値データ、および文字列データを使用します。

■文字データ

(1) 先頭文字は、必ず英文字とします。
(2) 先頭以外の文字は、英文字、数字、およびアンダースコア「_」だけを含みます。
(3) 英文字は、送信側は大文字だけですが、受信側は大文字、小文字の両方を許容します。

【例】

:HEADER ON

■10進数値データ

(1) 10進数の数値データ表現は、次に示す NR形式を使用します。
(2) NR 形式は、NR1、NR2、およびNR3の3種類で、これら 3種類を全て含む形式をNRf形式と呼びます。

NRf 形式 | 意味 | 例
NR1 | 整数 | +15,-20, 25
NR2 | 固定小数点 | +1.23,-4.57, 7.89
NR3 | 浮動小数点 | +10.0E-3,-2.3E+3, 5E3

(3) NR 形式は、符号つき数値、符号なし数値の両方を受け付けます。符号のない数値は、正の数と判断します。
(4) 数値の精度が本器の取扱い範囲を越えた場合は、四捨五入を行います。
(5) 本器で数値データを受信する場合、NRf形式で受け付けますが、送信は NR1～NR3 のいずれかを、コマンドに応じて送信します。

【例1】NR1形式

:SYSTem:THINOut 10

【例2】NR2形式

:CONFigure:SAMPle 0.1

【例3】NR3形式

:ALARm:ANALog:LEVEl ALM1,CH1_1,+1.0E-3

■文字列データ

(1) 文字列データは、前後をクォーテーション・マークで囲みます。
(2) 8ビット ASCII 文字からなるデータです。ただし、コメント設定等の一部コマンドでは、送受信共にShift_JISとなります。
(3) 本体で扱えない文字は、アンダーバー(‗)に置き換わります。
(4) クォーテーション・マークとして、送信側はダブル・クォート「"」だけですが、受信側はダブル・クォートとシングル・クォート「'」の両方を受け付けます。

【例】

:COMMent:TITLe 'HIOKI'
:COMMent:TITLe "HIOKI"