第 1 章 コマンド概要

1.1 受信・送信プロトコル

    USB, LANでは、共通のメッセージでコントロールできます。

    USBでは、USBドライバをインストールする必要があります。
    ロガーユーティリティ取扱説明書の、「ソフトウエアのインストール」、
    「USBドライバをインストールする」を参照し、USBドライバをインストールしてください。

    LANではTCP/IPプロトコルを使用します。
    IPアドレスは、本体取扱説明書 「LANの設定と接続」のIPアドレスで設定した番号が使用されます。
    ポート番号は、本体取扱説明書 「LANの設定と接続」のポート番号で設定した
    ポート番号の下1桁に"2"を使用します。例えばポート番号を880Xと設定
    した場合は、8802がポートとして使用されます。

メッセージ
    USB, LANで受信・送信されるデータをメッセージといいます。
    以下にメッセージの種類を示します。


    メッセージにはコントローラから機器に送信するプログラムメッセージ
    と、機器からコントローラに送信する応答メッセージがあります。
    プログラムメッセージはコマンド・プログラムメッセージと
    クエリ・プログラムメッセージに分けることができます。

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

コマンド・シンタックス
    これから、コマンドおよびクエリ・プログラムメッセージを総称して
    コマンドと呼びます。(コマンドは、HIOKI固有のSCPI言語です)
    コマンドは大文字・小文字・その混合のいずれの場合も受け付けます。

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

    例 CONFigure は
       CONFがショートフォーム
       CONFIGUREがロングフォームとなります。
      CONFIGURE、CONF のどちらでも受け付けますが、
      CONFIG、CONFIGU、CON ではエラーとなります。

コマンド・プログラム・ヘッダ
    コマンドには必ずヘッダが必要です。ヘッダは、そのコマンドがどんな
    機能を持つかを示します。
    ヘッダには、単純コマンド型、複合コマンド型、共通コマンド型の3種類
    のヘッダ形式があります。

クエリ・プログラム・ヘッダ
    機器のコマンドに対する動作結果や設定を問い合わせるために使用します。
    プログラム・ヘッダの後に“?”をつけるとクエリとして認識されます。
    ヘッダの構成はコマンド・プログラム・ヘッダと同様であり、“?”が
    常に最後のコマンドに付きます。前記の3タイプのコマンド形式のいずれ
    にもクエリは存在します。

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

ターミネータとセパレータ
   (1)メッセージターミネータ
    1回のメッセージ転送の区切りを表し、ターミネータ自身はメッセージに
    含まれません。
    メッセージターミネータは、デリミタを設定してください。
    デリミタは、CR+LFです。
   (2)メッセージ単位セパレータ
    セミコロン“;”はメッセージ単位セパレータとして使用され、1行に複数
    のメッセージを記述したい場合に使用します。

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

   (4)データ・セパレータ
    コンマ","は複数のデータ間を区切るデータセパレータとして使用します。

コマンド・ツリー
    複数の複合コマンド型のメッセージを記述する場合の規則として、
    セミコロン(メッセージ単位セパレータ)の次のヘッダにコロン(:)が
    付いていない場合、そのヘッダは直前のメッセージの中の最後のコロン
    より前のヘッダに引き続いているものとみなします。
    これはUNIXやMS-DOSのディレクトリ構造におけるカレント・ディレクトリ
    の概念に相当し、この直前のヘッダをカレント・パスと呼ぶことにします。
    例1
       :CONF:SAMP 1.E+0;:CONF:RECTIME 0,0,0,10
    例2
       :CONF:SAMP 1.E+0;RECTIME 0,0,0,10

    例1と例2は、記録間隔を1s、記録時間を10秒に設定するメッセージです。
    例1では、セミコロンの次にコロンがあるため、カレント・パスはルートに
    なります。従って次のコマンド検索はルートからおこないます。
    例2では、":CONF:SAMP 1.E+0"でカレント・パスが":CONF"になっているの
    で、"RECTIME"の前の":CONF:"を省略できます。
    コマンドの先端にあるコロン(:)は、コマンドの検索をルートから行う
    ことを表します。

データ形式
    データ形式として、文字データ、10進数値データ、文字列データを使用
    します。
   ○ 文字データ
    (1)先頭文字は、必ず英文字とします。
    (2)先頭以外の文字は、英文字、数字、およびアンダースコア(_)だけを
      含みます。
    (3)英文字は、送信側は大文字だけですが、受信側は大文字、小文字の両方
      を許容します。
     
   ○ 10進数値データ
    10進数の数値データ表現は、次に示すNR形式を使用します。
    NR形式は、NR1からNR3の3種類であり、それぞれ符号つき数値、符号なし
    数値の両方を受け付けます。
    符号のない数値は、正の数と判断します。
    また、数値の精度がLR8400の取扱い範囲を越えた場合は、
    四捨五入を行います。

    以上の3種類の形式を全て含む形式をNRf形式と呼びます。
    受信時は数値データをNRf形式で受け付けますが、送信時はNR1〜NR3の
    いずれかを、コマンドごとに指定して、送信します。
   ○ 文字列データ
    文字列データは、前後をクォーテーション・マークで囲みます。
    (1)8ビットASCII文字からなるデータです。
    (2)本体で扱えない文字は、スペースに置き換わります。
    (3)クォーテーションマークとして、送信側はダブル・クォート(")だけ
      ですが、受信側はダブル・クォートとシングル・クォート(')の両方
      を受け付けます。

1.2 ステータスバイトとイベントレジスタ

ステータス・バイト
    ステータスバイト各ビットは、そのビットに対応するイベント・レジスタ
    のサマリ(論理和)となっています。
    ステータスバイト、標準イベント・ステータス・レジスタ、イベント・
    ステータス・レジスタ0の値の読み出しが可能です。

ステータスバイトの各ビット
ビット7 未使用:0
ビット6 未使用:0
ビット5(ESB) イベント・サマリビット
標準イベント・ステータス・レジスタのサマリを表します。
ビット4(MAV) メッセージアベイラブル
出力キューにメッセージがあることを示します。
ビット3 未使用:0
ビット2 未使用:0
ビット1 未使用:0
ビット0(ESB0) イベント・サマリ・ビット0
イベント・ステータス・レジスタ0のサマリを表します。

    ステータスバイトの読み出しは以下のコマンドを使用します。

    ステータスバイトの読み出し             *STB?
       
標準イベント・ステータス・レジスタ(SESR)
    このレジスタのサマリがステータス・バイトのビット5にセットされます。
   ○ 標準イベント・ステータス・レジスタの内容がクリアされるのは、以下の
    場合です。
    1.*CLSコマンドを受信
    2.*ESR?クエリで内容が読み出されたとき
    3.電源が再投入されたとき

標準イベント・ステータス・レジスタの各ビット
ビット7(PON) 電源再投入
最後にこのレジスタが読み出されてから、電源が切断されたことがある。
ビット6(URQ) ユーザ・リクエスト:未使用
ビット5(CME) コマンドエラー
受信したコマンドに誤りがある。文法上の誤り、意味上の誤り
ビット4(EXE) 実行エラー
機器が実行中のコマンドに誤りがある。
レンジ・エラー、モード・エラー
ビット3(DDE) 機器に依存したエラー
コマンドエラー、クエリエラー、実行エラー以外の
原因でコマンドが実行できなかった。
ビット2(QYE) クエリエラー
キューが空、データ喪失(キューのオーバーフロー)
ビット1 コントローラ権の要求(使用しない)未使用:0
ビット0(OPC) 動作の完了
*OPCコマンドに対してのみセットされる。

    標準イベント・ステータス・レジスタの読み出しは、以下のコマンドを
    使用します。
    標準イベント・ステータス・レジスタの読み出し    *ESR?

イベント・ステータス・レジスタ0(ESR0)
    このレジスタのサマリがステータス・バイトのビット0にセットされます。
   ○ イベント・ステータス・レジスタ0がクリアされるのは以下の場合です。
    1.*CLSコマンド受信
    2.:ESR0?クエリで内容が読み出されたとき
    3.電源が再投入されたとき

イベント・ステータス・レジスタ0の各ビット
ビット7 未使用:0
ビット6 未使用:0
ビット5 未使用:0
ビット4 未使用:0
ビット3 未使用:0
ビット2 トリガ待ち終了(トリガがかかるとセットされる)
ビット1 START処理終了(STOPするとセットされる)
ビット0 USB,LANに関係しないエラーなど

    イベント・ステータス・レジスタ0の読み出しは以下のコマンドを
    使用します。
    イベント・ステータス・レジスタ0の読み出し     :ESR0?

ステータス・バイトデータ構造


1.3入力バッファと出力キュー
   (1)入力バッファ
    入力バッファとして2048バイト持っています。
    受信したメッセージは、ここに入力され、順次実行されます。
    ただし、:ABORTコマンドは受信した時点で実行されます。
   (2)出力キュー
    出力キューとして2048バイト持っています。
    応答メッセージは、ここにためられ、コントローラから読み出されます。
    応答メッセージが2048バイトを超えた場合は、クエリ・エラーとなります。

    出力キューがクリアされるのは、以下の場合です。

    1.コントローラが読み出したとき
    2.電源再投入
    3.次のメッセージの受信