GPIB通信の概要と用語解説、プログラミングに必要なGPIB通信の基礎知識を、分かり易く解説します。
目次
GPIBとは
GPIB(General Purpose Interface Bus)は、コンピュータと計測器とのインターフェイスとして開発され、主にパソコンと計測器を接続するために用いられています。米国Hewlett Packard社の社内規格であった「HP-IB」がIEEE(Institute of Electrical and Electronic Engineers:アメリカ電気電子学会)によって承認され、国際標準規格となったものです。現在の計測器の多くは、このGPIBインターフェイスを標準で搭載しており、パソコンと計測器を使用した計測システムにおいて幅広く活躍しています。
GPIBの規格
GPIBの規格には「IEEE488」と、その上位プロトコルで現在主流の「IEEE488.2」があります。IEEE488.2は、IEEE488で規定された転送方法に対して、文字データや数値表現の文法や各機器が共通して使用できるコマンド(指令)、クエリ(問い合わせ)などの規定を追加したもので、IEEE488.2対応の機器は、IEEE488.2準拠の通信はもちろん、IEEE488で規定された範囲内での通信も可能です。

GPIBの特長
-
バス構造のインターフェイスを採用しており、ピギーバック方式のコネクタで機器間の接続・構成が容易です。また、接続する機器が増えてもパソコンのインターフェイスは一つで済みます。
-
ハンドシェイク通信により、信頼性の高いデータ伝送が可能です。
-
計測器業界の標準バスとして多くの計測器にGPIBインターフェイスが搭載されており、一つの手順を習得することで様々な計測器を制御することが可能になります。
-
通信速度の異なる機器でも接続ができます(ただし、通信速度が一番遅い機器にシステム全体が合わされます)。
ピギーバック構造のコネクタ
GPIB通信機器とパソコンを接続する利点
現在でも多くの計測器にGPIBインターフェイスが搭載され、計測器業界の標準バスの地位を確立したのは、以下のようなパソコンとの接続に多くの利点があるからです。
1台のパソコンに複数の計測器を接続し、プログラムによって各機器が自動計測を行い、その計測したデータをパソコンで収集し、解析や表示処理、データ保存するという使われ方が一般的になっています。
GPIB通信機器とパソコンを使用したシステム例
問題点・改善したい点
GPIB通信の制約上(システム全体の総ケーブル長)、望遠鏡の近くで操作・観測しなければならないので不便であり、研究者間で情報共有をリアルタイムに行いたいという要望が多くありました。
「計測・制御機器開発」「ネットワーク機器開発」の豊富な開発経験を持つコンテックなら、このような問題点も改善できます。
接続台数
1システム内の機器接続台数はコントローラ(パソコン)を含め15台と規格で定められており、これ以上の機器を1システム上に接続することはできません。
接続方式
デイジ・チェーン(いもづる接続)、スター型(放射状)、その組み合わせなど、自由度の高い接続が可能です。ただし、ループ接続は禁止されています。
デイジ・チェーン接続
スター型接続
注意:ループ接続は禁止されています。
ケーブル長
各装置間のケーブル長は4m以下、1システム中で、装置を互いに接続するのに使用できる最大ケーブル長は、「2m×(装置数)」または20mのどちらか短い方とします。
- 例1)全機器2台の場合(コントローラ1台+GPIB通信機器1台)
- 2m×(装置数 = 2台)< 20m よって、1システム全体の最大ケーブル長は4mとなります。
- 例2)全機器3台の場合(コントローラ1台+GPIB通信機器2台)
- 2m×(装置数 = 3台)< 20m よって、1システム全体の最大ケーブル長は6mとなります。
- 例3)全機器15台の場合(コントローラ1台+GPIB通信機器14台)
- 2m×(装置数 = 15台)> 20m よって、1システム全体の最大ケーブル長は20mとなります。
データ転送速度
8本のデータラインを使用して一度に1バイトのデータを最大1MB/秒で転送します。しかし、計測器は通信速度が遅いものが多く、また、同一バス上に接続された機器の通信速度は、最も通信速度が遅い機器に合わされてしまいます。
トーカとリスナ
バス上に接続された機器の中で、データの受信を行う機器をリスナ(聞き手)、データを送信する機器をトーカ(話し手)と表します。トーカとリスナの指定はコントローラで行います。このようにシステム全体の管理を行う装置をコントローラと呼び、通常はコンピュータ(パソコン)が担います。
マスタとスレーブ
マスタはその名のとおり主人(Master)でありGPIBの通信を行う上で決定権(コマンドの送出等)を持ち、それに対してスレーブは召し使い(Slave)であり、マスタの指示(コマンドの受取等)に従う必要があります。システム構成をする上でマスタは1台、スレーブは1台以上必要になり、また計測器を制御する場合はパソコンがコントローラになりますのでマスタになります。
機器アドレス
GPIBのシステムに接続する各装置は、同一システム内でユニーク(固有)なアドレスを持ち、このアドレスにより個々が識別されます(自分自身につけられたアドレスをマイアドレスと呼びます)。機器アドレスは電話で言うと電話番号にあたり、この番号の機器に対してデータを送る、受取る事により通信ができます。機器アドレスは、同じシステム内において「0~30の間」で自由に設定ができますが、他の機器のアドレスと重なってはなりません。
ハンドシェイク通信
ハンドシェイクとは、送信側から受信側に「データを送信中」という信号を送り、受信側はその信号を受け、信号線からデータを読み込みます。そして、送信側へ「データを受信しました」という信号を送り返しながら、互いにデータの送受信を確認しあいつつデータを転送する通信方式です。これにより、GPIBは信頼性の高いデータの受け渡しを実現しています。
コントローラの役割
GPIBのバスライン上の機器は、データの衝突を防ぐため、ある時点でデータを送信できる機器を1台に制限しています。これを実現しているのがコントローラです。コントローラは主に以下の動作を行います。すなわち、これらをプログラムで表現すれば、パソコンをコントローラとしたGPIBシステムが構築できると言えます。
GPIBの信号線
8本のデータライン、3本のハンドシェイクライン、5本の管理バスラインで構成され、コネクタ・信号配置は以下のとおり規格で定められています。とくにGPIBのプログラムを組む上で必要となる管理バスラインに関しては、その役割をよく理解しておく必要があります。
GPIBのコネクタピン配置図
管理バスライン(5本)
バスラインに接続された装置を効率よく制御し、情報の流れを管理するために使用します。GPIBの機器を制御する上で重要な役割を担っています。
- ATN(Attention)
- データラインは、装置間のデータ転送に使用されるデータモードとコントローラから各装置にコマンドを送信するコマンドモードで使用されます。現在のデータラインの状態を示すのがATNラインです。ATNラインの管理はコントローラが行います。ATNラインがローレベルになったら各装置はコントローラからのコマンドを受信しなければなりません。ATNラインがローレベルならば、コマンド・モード、ハイレベルならばデータ・モード(測定データ送受信など)です。
- IFC(Interface Clear)
- コントローラが、すべての機器のインターフェイス機能を初期化するために送信します。各装置はこの信号を受け、インターフェイス機能を初期状態にします。ただし、バッファの内容など、各機器固有の部分(デバイス機能)は初期化されません(デバイス機能部分の初期化は、デバイス・クリアコマンドまたは機器固有のコマンドで行います)。IFC信号は100μsec以上のパルス信号で送信されます。
- SRQ(Service Request)
- 制御を受けている各装置からコントローラに対し、処理の終了や異常の発生を知らせるために使用される信号です。ある装置がサービスを要求する状態になった時、その装置はSRQラインをローレベルにします。コントローラは、SRQラインがローレベルになったことを知ると、ポーリング(世論調査)処理を行い、どの機器がどのようなサービスを要求したかを調査します。
- REN(Remote Enable)
- 機器のリモート/ローカル状態を制御するために使用します。コントローラ機能を持った装置のみ使用可能です。
- EOI(End Of Identify)
- 通信をおこなう上でお互い同時に通信を終了(送信の完了/受信の完了)する必要があります。バイナリデータ通信時にデータの終端を表すために使用するのが「EOI」です。文字データの場合は、「デリミタ・コード」が使用できますが、バイナリデータ通信の場合には、EOIラインによるデータの終端制御が必要となります。
データライン(8本)
マルチラインメッセージの送信、またはデータを転送するために使用されます。
グランドライン(8本)
データライン以外の信号線は、すべてグランドラインとツイストペア構造になっています。GPIBで使用されるケーブルとコネクタはシールド構造になっており、対ノイズ性に優れています。
ハンドシェイクライン(3本)
データラインのハンドシェイクのために使用します。
- DAV(Data Valid)
- データを送信中であることを示す信号線です。
- NDAC(Not Data Accepted)
- 受信が完了していないことを示す信号線です。
- NRFD(Not Ready For Data)
- 受信準備が完了していないことを示す信号線です。
SRQ(サービスリクエスト)とポーリング
GPIBの機器をプログラムで制御して、データを受け取るためには、管理バスラインの操作の他にSRQ(サービスリクエスト)とポーリングの動作を理解しておくと効率の良いプログラムができます。
SRQ(サービスリクエスト)
SRQはコントローラに対して、異常の発生や送信準備完了を通知などの割り込み要求をするために付けられた機能です。SRQ要求が発生するとSRQラインが「真」になり、バスに接続されているいずれかの機器がサービス要求していることがコントローラに伝えられます。しかし、SRQ信号だけでは、どの機器が要求しているのか分からないため、コントローラは、ポーリング(世論調査)処理を行うことにより、サービスを要求している機器の特定と、その内容を確認します。
シリアル・ポール
コントローラがサービスを要求していると思われる機器に対して1台づつ順番にSRQを発信したかを尋ねる方法です。シリアル・ポールされた機器は、「ステータス・バイト」と呼ばれる1バイトのデータをコントローラに送信します。コントローラは、各機器のステータス・バイトを調べ、どの機器がサービス要求を発信し、どのような要求をしているのかを把握します。一般的にはシリアル・ポールが多く使われます。
パラレル・ポール
8本あるデータラインをそれぞれ1つの機器に割り当て、一度にどの機器(最大8機器)がSRQを発信しているのかを調べる方法です。パラレル・ポールを実行すると各機器は割り当てられたラインに、“0”あるいは“1”の情報を発信し、コントローラにサービスを要求したか否かの返事をします。
ステータス・バイト
ステータス・バイト(1バイト)は、送受信データと同様データラインに出力されます。機器がSRQを出している場合にはステータス・バイトの6ビット目が「真(1)」になり、SRQを出していない機器は「偽(0)」になります。ステータス・バイトの残りのビットは、各機器固有の意味を持つことができるようになっています。例えば、SRQを発生した原因(計測完了や異常発生など)をコントローラに通知することができます。コントローラからポーリングされた後、ステータス・バイトの6ビット目は「0」に戻されます。
インターフェイス機能
GPIBの規格では、対象となる機器の機能をインターフェイス機能とデバイス機能に分割し、インターフェイス機能のみを規格として定めています。ただし、GPIBに接続する機器はすべての機能を実装する必要はありません。
- デバイス機能
- 機器固有の部分でGPIBの規格外です。機器固有のコマンドや、機器の操作方法測定レンジの設定方法などです。
- インターフェイス機能
- GPIBの規格で定められた機能です。GPIB通信機器は、各機能の中から必要な機能のみを実装します。
GPIBを装備した装置の構造
メッセージとコマンド
GPIBでは、規格により定められた様々なメッセージやコマンドが用意されています。これらを使用し、GPIB通信機器の制御を行います。
マルチライン・インターフェイス・メッセージ
GPIBで接続された機器を動作させるために用意された規格により定められているメッセージ(コマンド)です。コントローラのみが扱えるメッセージ(コマンド)で、マルチライン・インターフェイス・メッセージは、データライン(8本)を使用して送出されます。アドレス・コマンド、ユニバーサル・コマンドがあります。
デバイス・メッセージ
計測器が測定した電圧値などの測定データや計測器の各種設定など、GPIBのインターフェイス機能に直接関係の無いメッセージです。トーカ機能を持つ機器から送信され、リスナ機能を持つ機器により受信されます。
ユニライン・メッセージ
信号線1本だけで意味を持つメッセージです。ラインが「真」になった時が命令の開始で、「偽」になった時が命令の終わりとなります。
- ATN(Attention)
- IFC(Interface Clear)
- SRQ(Service Request)
- REN(Remort Enable)
- EOI(End Of Identify)
アドレス・コマンド
特定の機器に対してのみ使用する、GPIBで規格されたコマンド(指令)です。
- GTL(Go To Local)
- 相手機器をローカル状態にします。
- SDC(Selected Device Clear)
- 機器を初期状態にリセットします。
- PPC(Parallel Poll Configure)
- パラレルポール機能の応答ビットを設定します。
- GET(Group Execute Trigger)
- 機器にトリガをかけます(計測の開始など)。
- TCT(Take Control)
- 相手機器をアクティブコントローラに指名することができます。
ユニバーサル・コマンド
接続されたすべての機器に対して使用する、GPIBで規格されたコマンド(指令)です。
- LLO(Local Lock-Out)
- 相手機器のローカル機能を禁止します。
- DCL(Device Clear)
- バスライン上の全ての機器を初期状態にします。
- PPU(Parallel Poll Unconfigure)
- パラレルポール機能の応答ビットをキャンセルします。
- SPE(Serial Poll Enable)
- 相手機器をシリアルポールモードにします。
- SPD(Serial Poll Disable)
- 相手機器のシリアルポールモードを解除します。
- UNL(UNLISTEN)
- 現在のリスナ指定を全て解除します。
- UNT(UNTALK)
- 現在のトーカ指定を全て解除します。
IEEE488.2共通コマンド
IEEE488.2準拠の機器で共通使用できるコマンド(指令)です。GPIB通信機器を効率良く制御できます。「*RST」「*CLS」「*TRG」「*IDN」などのコマンドやクエリ(問い合わせ)が用意されています。