第1章 コマンド概要

 

1.1 受信・送信プロトコル

 

    GP-IB,RS-232C,10BASE-T LANでは、共通のメッセージでコントロールできます。

    (これらの通信機器を併用して、コマンドを送受信する事は出来ません。)

    10BASE-T LANではTCP/IPプロトコルを使用します。

    ポート番号は、「本体取扱説明書 通信の設定」で設定したポート番号の下1桁に"2"を使用します。

    例えばポート番号を880Xと設定した場合は、8802がポートとして使用されます。

 

メッセージ

 

    通信機器と受信・送信されるデータをメッセージといいます。

    以下にメッセージの種類を示します。

 

 

    メッセージにはコントローラから機器に送信するプログラムメッセージと、

    機器からコントローラに送信する応答メッセージがあります。

    プログラムメッセージはコマンド・プログラムメッセージクエリ・プログラムメッセージに分けることができます。

 

   ■コマンド・プログラムメッセージは機器の設定、リセットなどの機器を制御する命令です。

   ■クエリ・プログラムメッセージは動作結果、測定結果、あるいは機器の設定状態を問い合わせる命令です。

   ■応答メッセージはクエリ・プログラムメッセージに対する応答です。

      応答メッセージはクエリ・プログラムメッセージを受信し、構文をチェックした時点で作成されます。

 

コマンド・シンタックス

 

    これから、コマンドおよびクエリ・プログラムメッセージを総称してコマンドと呼びます。

    (コマンドは、HIOKI固有のSCPI言語です)

    コマンドは大文字・小文字・その混合のいずれの場合も受け付けます。

    コマンド名は、実行しようとする機能にできるだけ近いものが選ばれています。

    そのほとんどのコマンド名は短縮可能です。

    コマンド名そのものを”ロングフォーム”といい,短縮したものを“ショートフォーム”といいます。

    本取扱説明では、ショートフォームの部分を大文字で、小文字まで含めた部分をロングフォームとして記述しています。

    また、本体からの応答メッセージは、大文字のロングフォームで返されます。

 

 

    例) DISPlay は

       DISPがショートフォーム

       DISPLAYがロングフォームとなります。

       DISPLAY、DISP のどちらでも受け付けますが、DISPLA、DISPL、DIS ではエラーとなります。

 

 

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

 

    コマンドには必ずヘッダが必要です。ヘッダは、そのコマンドがどんな機能を持つかを示します。

    ヘッダには、単純コマンド型複合コマンド型共通コマンド型の3種類のヘッダ形式があります。

 

 

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

 

    機器のコマンドに対する動作結果や設定を問い合わせるために使用します。

    プログラム・ヘッダの後に“?”をつけるとクエリとして認識されます。

    ヘッダの構成はコマンド・プログラム・ヘッダと同様であり、“?”が常に最後のコマンドに付きます。

    前記3タイプのコマンド形式のいずれにもクエリは存在します。

 

 

応答メッセージ

 

    クエリに対する応答メッセージは、プログラムメッセージと同様にヘッダ部(なくすこともできます)とデータ部からなり、

    原則としてそのクエリに対応するプログラムメッセージのフォーマットと同様のフォーマットで出力します。

 

 

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

 

  (1)メッセージターミネータ

    1回のメッセージ転送の区切りを表し、ターミネータ自身はメッセージに含まれません。

    メッセージターミネータは、デリミタを設定してください。(本体取扱説明書参照)

 

  (2)メッセージ単位セパレータ

    セミコロン“;”はメッセージ単位セパレータとして使用され、1行に複数のメッセージを記述したい場合に使用します。

 

 

  (3)ヘッダ・セパレータ

    ヘッダとデータを持つメッセージにおいて、ヘッダとデータを分離するヘッダセパレータとして、スペース“_”を使用します。

    スペース“_”は、説明上使用していますが、実際のプログラムは表示しません。

 

 

  (4)データ・セパレータ

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

 

 

コマンド・ツリー

 

    複数の複合コマンド型のメッセージを記述する場合の規則として、

    セミコロン(メッセージ単位セパレータ)の次のヘッダにコロン(:)が

    付いていない場合、そのヘッダは、直前メッセージの最後のコロン

    より前のヘッダに引き続いているものとみなします。

    これはUNIXやMS-DOSのディレクトリ構造におけるカレント・ディレクトリの

    概念に相当し、この直前のヘッダをカレント・パスと呼ぶことにします。

 

    例1

       :CONF:TDIV 1.E-3;:CONF:SHOT 15

    例2

       :CONF:TDIV 1.E-3;SHOT 15

 

    例1と例2は、TIME/DIVを1ms、記録長を15DIVに設定するメッセージです。

    例1では、セミコロンの次にコロンがあるため、カレント・パスはルートになります。

    従って次のコマンド検索はルートからおこないます。

    例2では、":CONF:TDIV 1.E-3"でカレント・パスが":CONF"になっているので、

    "SHOT"の前の":CONF:"を省略できます。

    コマンドの先端にあるコロン(:)は、コマンドの検索をルートから行うことを表します。

 

 

データ形式

 

    データ形式として、文字データ10進数値データ文字列データを使用します。

 

  ■ 文字データ

    (1)先頭文字は、必ず英文字とします。

    (2)先頭以外の文字は、英文字、数字、およびアンダースコア( _ )だけを含みます。

    (3)英文字は、送信側は大文字だけですが、受信側は大文字、小文字の両方を許容します。

 

  ■ 10進数値データ

    10進数の数値データ表現は、次に示すNR形式を使用します。

    NR形式は、NR1からNR3の3種類であり、それぞれ符号つき数値、符号なし数値の両方を受け付けます。

    符号のない数値は、正の数と判断します。また、数値の精度が本器の取扱い範囲を越えた場合は、四捨五入を行います。

 

 

    以上の3種類の形式を全て含む形式をNRf形式と呼びます。

    受信時は数値データをNRf形式で受け付けますが、送信時はNR1〜NR3のいずれかを、

    コマンドごとに指定して、送信します。

 

  ■ 文字列データ
    文字列データは、前後をクォーテーション・マークで囲みます。

    (1)8ビットASCII文字からなるデータです。

    (2)本体で扱えない文字は、スペースに置き換わります。

    (3)クォーテーション・マークとして、送信側はダブル・クォート(")だけですが、

    受信側はダブル・クォートとシングル・クォート(')の両方を受け付けます。

 

 

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

 

ステータス・バイト

 

    ステータスバイトの各ビットは、そのビットに対応するイベント・レジスタのサマリ(論理和)となっています。

    GP-IBでは、ステータスバイトおよび各イベント・レジスタは、それぞれ対応するイネーブル・レジスタを持っており、このイネーブル・レジスタ(電源投入時0)を設定することにより、各イベントによって発生するサービスリクエストをマスクすることができます。

    RS-232Cの場合、ステータスバイト、標準イベント・ステータス・レジスタ、イベント・ステータス・レジスタ0の値の読み出しのみ有効です。イネーブル・レジスタについては設定しても無効です。

 

 

 

ステータスバイトの各ビット

ビット7

未使用:0

ビット6

(RQS, MSS)

サービスリクエストを発信するとセットされます。

(RS-232Cでは未使用:0)

ビット5(ESB)

イベント・サマリビット

標準イベント・ステータス・レジスタのサマリを表します。

ビット4(MAV)

メッセージアベイラブル

出力キューにメッセージがあることを示します。

ビット3

未使用:0

ビット2

未使用:0

ビット1

未使用:0

ビット0(ESB0)

イベント・サマリ・ビット0

イベント・ステータス・レジスタ0のサマリを表します。

 

    ステータスバイトの読み出し、及びサービス・リクエスト・イネーブルレジスタの

    設定と読み出しは以下のコマンドを使用します。

 

    ステータスバイトの読み出し                      *STB?

    サービス・リクエスト・イネーブル・レジスタ(SRER)の設定    *SRE  (GP-IB)

    サービス・リクエスト・イネーブル・レジスタ(SRER)の読み出し  *SRE? (GP-IB)

 

標準イベント・ステータス・レジスタ(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?

    標準イベント・ステータス・イネーブル・レジスタの設定     *ESE  (GP-IB)

    標準イベント・ステータス・イネーブル・レジスタの読み出し   *ESE? (GP-IB)

 

イベント・ステータス・レジスタ0(ESR0)

 

    このレジスタのサマリがステータス・バイトのビット0にセットされます。

 

  ■ イベント・ステータス・レジスタ0がクリアされるのは以下の場合です。

    1.*CLSコマンド受信

    2.:ESR0?クエリで内容が読み出されたとき

    3.電源が再投入されたとき

 

 

 

イベント・ステータス・レジスタ0の各ビット

ビット7

波形判定がNG

ビット6

数値演算判定がNG

ビット5

数値演算終了

ビット4

波形処理演算終了

ビット3

プリンタ動作終了(プリント、コピー出力終了時)

ビット2

トリガ待ち終了(トリガがかかるとセットされる)

ビット1

START処理終了(STOPするとセットされる)

ビット0

通信に関係しないエラー、プリンタのエラーなど

 

    イベント・ステータス・レジスタ0の読み出し、及びイベント・ステータス・イネーブル・レジスタ0の

    設定と読み出しは以下のコマンドを使用します。

 

    イベント・ステータス・レジスタ0の読み出し         :ESR0?

    イベント・ステータス・イネーブルレジスタ0の設定      :ESE0 (GP-IB)

    イベント・ステータス・イネーブルレジスタ0の読み出し   :ESE0? (GP-IB)

 

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

 

 

イベント・ステータス・レジスタ0 データ構造

 

 

1.3入力バッファと出力キュー

 

   (1)入力バッファ

 

    入力バッファとして1024バイト持っています。

    受信したメッセージは、ここに入力され、順次実行されます。

    ただし、:ABORTコマンドは受信した時点で実行されます。

 

   (2)出力キュー

 

    出力キューとして512バイト持っています。

    応答メッセージは、ここにためられ、コントローラから読み出されます。

    応答メッセージが512バイトを超えた場合は、クエリ・エラーとなります。

 

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

 

    1.コントローラが読み出したとき

    2.デバイス・クリア

    3.電源再投入

    4.次のメッセージの受信

 

1.4 LANの設定

 

    まず既存のネットワークへの接続にあたり、設定項目をあらかじめネットワークシステムの管理者(部署)から割り当てて頂く必要があります。必ず他の機器と重ならないようにします。以下の項目について管理者(部署)から設定を割り当てて頂きメモしておきます。

 

     ホスト名(12 文字まで) : __________________

     IP アドレス: ____.____.____.____

     サブネットマスク: ____.____.____.____

     デフォルトゲートウェイ( あり/ なし)

     (ありの場合) : ____.____.____.____

     TCP/IP ポート番号:____X

     (10 進4 桁の上位3 桁を設定、1 桁目の0〜9 は本器で使用・予約される)

 

     なお既存のネットワークへは接続せずに専用にネットワークを組む場合は、やはり管理者からアドレスを頂いても構いませんが、管理者がいない場合および設定を一任される時があります。このような外部に接続せず完全にローカルなネットワークを専用に組む場合は以下のIPアドレスが推奨されています。192.168.0.0〜192.168.255.255

     なお、ここで最後の数の部分で0 と255 は使えません。そこでコントローラ(パソコンなど)を192.168.0.1 として、本体を192.168.0.2 とします。メモハイを複数台接続するときは192.168.0.3 のように最後の数を順次増やします。

     ホスト名は他と重ならない名前を適当に付けます。

     その他は

     サブネットマスク:255.255.255.0

     デフォルトゲートウェイ:OFF

     ポート番号:880X

     等とすると良いでしょう。

 

 

1.5 その他の項目

 

1.4.1 GP-IBついて

 

GP-IBエラー

    受信したコマンドにエラーがあった場合、エラーに対応した標準イベント・ステータス・レジスタの

    ビット(ビット2〜5)がセットされます。

    また、実行エラー以外のエラーが発生したコマンド以降で入力バッファにたまっている

    実行待ちのコマンドは無視されます。

 

1.4.2 RS-232Cについて

 

RS-232Cエラー

 

  (1)パリティ・エラー

    パリティ・ビットの方式は、偶数パリティ、奇数パリティ、パリティなしがあります。

    偶数パリティと奇数パリティは、"1"の個数を偶数または奇数にすることにより通信エラーを検出します。

    受信時にパリティが違っているとパリティ・エラーを起こします。

 

   (2)フレーミング・エラー

    スタート・ビットから数えてストップ・ビットの位置が“L"の場合、フレーミング・エラーとなります。

 

       ■原因1:伝送速度、パリティ、ストップ・ビットなどのパラメータがあっていない。

       ■原因2:ノイズの影響

 

   (3)オーバーラン・エラー

    通信コントローラは、受信に関してダブル・バッファになっています。

    (1ビットずつ受信するシフト・バッファ、CPUが読み出すための受信データ・バッファ)

    受信バッファにデータがある状態で、それをCPUが読み取らないうちに、

    シフト・レジスタの次の1キャラクタの受信が完了した時に起こるエラーです。

    データが受信データ・バッファに上書きされるため、直前のデータは失われます。

 

       ■原因1:伝送速度が速すぎる

       ■原因2:割込み禁止の時間が長すぎる箇所がある。

       ■原因3:上位の割り込みが実行される時間が長すぎるため、

         り込みに割り当てられる時間が少ない。

 

 

フロー制御

 

    RS-232Cそのものは決められた伝送速度でデータをやり取りすることはできますが、

    CPUの処理能力がそれに追いつかない時、前に受信したデータの上に新しい

    受信データが上書きされてしまう場合があります。こうならないためには、

    受信側バッファからデータがあふれる前に、受信側が送信側に対して

    送信を中断させる信号を何らかの手段で伝える必要があります。

    これをフロー制御といい、ハードウェア・ハンドシェークソフトウェア・ハンドシェークがあります。

 

   (1)ハードウェア・ハンドシェーク

 

    信号線のRTS(RS)、CTS(CS)をON、OFFすることによりフロー制御を行う。

    1.受信時

      入力バッファが3/4を超えたとき、RTS=Lowにする

      入力バッファが1/4以下になったとき、RTS=Hiにする

    2.送信時

      CTS=Lowで、データ送信中断

      CTS=Hiで、データ送信

 

   (2)ソフトウェア・ハンドシェーク


    Xon、Xoffコードを送信することによりフロー制御を行う。

    1.受信時

      入力バッファが3/4を超えたとき、D3(13H)を送信する

      入力バッファが1/4を以下になったとき、D1(11H)を送信する

    2.送信時

      D3(13H)受信で、データ送信中断

      D1(11H)受信で、データ送信

      注:バッファサイズ

        a. 入力バッファ:1024byte

        b. 出力キュー:1024byte