GPIBについて

 VSTでは機器制御にGPIBを用いている。ここでは、VST制御用ソフトである ASTROSの改造に際して知っておくべきGPIB一般についての 基礎知識を簡単に述べる。

What is GPIB?

 GPIBとはGeneral Purpose Interface Busの略で、IEEE488で 規定されている電気・ケーブル仕様の汎用通信回線です。 開発したHP社に敬意を評してHPIBと呼ぶこともあります。 電線は32本ほどの電線を束ねてあり、特殊な形状のコネクタでつなぎます。 汎用通信回線なので、PCと様々な電子制御機器を接続して、独自の計測装置 に組み上げることが出来ます。

What type bus?

 GPIBは通常、1台のコントローラに7台までの機器を接続できます。 SCSIのように数珠つなぎにすることもできます。また、コネクタが コネクタの背面に、さらにコネクタがさせるという構造になっているので 枝別れしたり、中心から八方に広がる星型にも自在につなげます。 ほとんどの場合、コントローラはPCになります。
 電線は、うち16本がデータ線で、これで一度に8bitすなわち1byteの 情報を伝送できます。残りの電線はアース線(GND)や、通信状態を示す ための1bitの線です。一度に1bitより多くのデータを伝送できるので パラレル回線の一種といえます。

What is sending text?

 1度に伝送できるデータは1byteなので、これでASCII文字1文字を 送ることが出来ます。また、8bit整数も送れます。この2つはモードで 切り替えていて、どちらのモードになっているかを送信・受信の両方で 正しく認識している必要があります。
 このモードによって電文の区切りを識別する方法にも2種類あり、 電文終了告知用専用線1bitで判断する場合(主にbinaryモードで使用) と、CRなどの特殊なASCII文字が送られることで判断する場合 (ASCIIモードでのみ使用)とがあります。

How to make communication?

 1つの回線に複数の機器が取り付けられているので、通信は 送信元と受信先とが指定されています。指定はGPIBアドレスで 行ないます。SCSIと同じく0から7がアドレスになります。
 通信している際には、送信元と受信先で確認を取りながら回線を 確保します。この作業はhandshakeと呼んでいます。 通信がうまくいっているかどうかはハードが自動的に判断していると 考えてよいです。
 GPIBでは送信元をトーカー、受信先をリスナーと呼びます。 最初に通信を開始するときに、コントローラが両者を指定します。

What is SRQ and poling?

 上記の機能だけだと、コントローラに突然、何かしてもらいたいときに 困るので、GPIB機器にはサービスリクエスト(SRQ)という機能があります。 これは、コントローラーに「何かして欲しいことがあるのでちょっと 調べてくれ」という機能です。任意の機器からSRQ専用線(1bit)に 信号が来ると、コントローラは、SRQが発生した(「SRQが立った」と いう)ことだけを知ることが出来ます。
 SRQは、誰がSRQを立てたかを通信してくれないので、通常は、SRQが立つと コントローラーは順番に、「SRQを出したのは誰だ?」と聞き返します。 これを「polingをかける」と呼んでいます。ポーリングをかけると SRQを立てた機器のアドレスのほかに、1byteだけデータを入手することが 出来ます。これをステータスバイトと呼びます。次の動作をこれによって 変えることも可能です。

Where GPIB controll is used in ASTROS, for example?

 ASTROSの場合、例えば、AOSが積分データを集め終わったときにSRQを 出します(これはAOSのハードウェア内で組まれている)。そこで、 PCはpolingをかけ、AOSだと(そのアドレスで)わかると、リスナーを自分、 トーカーをAOSに設定し、データを伝送しろという指令を出すように なっています。
 ASTROSではGPIBインターフェースにアクセスする関数はすべて ASTROS/gpib/にある関数を呼びだしているので、ここにある関数の 内容をdos用からLinux用にすればよいのです。(最後の部分は GPIBボードを売った会社から買ったものですが。)