Archived: GPIBを介したコンピュータ間通信について
This document has been archived and is no longer updated by National Instruments
使用ソフトウェア: Driver Software>>NI-488.2
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A
問題: GPIBを用いてコンピュータ間で通信を行うには、どのように設定を行えばよいですか?
解決策:
以下の手順は、GPIBを用いてコンピュータ間通信を行うガイドラインです。基本的な操作ステップを下記に示します。
1. 両方のコンピュータにあるGPIBはデフォルト設定にします(必要な設定はプログラム上で行っていきます)。
2. 片方のコンピュータを”コントローラ”、もう片方を”非コントローラ”とします(何も設定を変える必要はありません)。
3. このステップではコマンドをテストする為に、対話式制御ユーティリティ(IBIC)を使用します。後にプログラム内に、これらのコマンドを使用することも可能です。
”非コントローラ”側のコンピュータでの操作:
a. ”ibfind gpib0”を用いてGPIBボードへのセッションを開始をします。
b. ”ibrsc”を用いてシステムコントローラを解除します(この操作で”非コントローラ”に設定します)。
c. ”ibpad 1”にて非コントローラのGPIB一次アドレスを0から1に変更します。
d. ATNがアサートされていないか確認して下さい。コンピュータはリスナーとしてアドレスされます(LACSはステータスワード内で正になります)。--これを定期的に確認するループも作成可能です。
e. ”ibrd #”を使用して(#は受領されるバイト数)、コントローラからの送信されたコマンドを読み込みます。
非コントローラがリスナーになるまで(コントローラがデータを送信)、ループ内でこのステップを実行できます。その後、メッセージを読み込むステップを実行できます。同じように書き込みにもこの手順を使用できますが、リスナーへ通信したか確認する為に待ち状態でいるよりも、トーカーへ通信したかを待ち状態で確認した方がよいでしょう(TACSはステータスワードで正になります)。
以下は、これらの操作を行うC言語で作成されたサンプルソースコードです。
static int noncontroller;
static char buffer[100];
static int panelHandle;
int main () {
noncontroller = ibfind ("gpib0"); // Open a session to the GPIB board
ibrsc (noncontroller, 0); // Release system control
ibpad (noncontroller, 1); // Change primary address from 0 to 1
while (1) {
ibwait (noncontroller, 0); // Update Status variable
if ((ibsta&LACS)&&(!(ibsta&ATN))) // Wait until non-controller is listener and ATN line is dropped.
{
ibrd (noncontroller, buffer, 100); // Read data bytes
buffer[ibcnt] = '\n'; // Add linefeed and 0 to string.
buffer[ibcnt + 1] = 0;
printf ("%s",buffer); //print buffer
return 0;
}// if
if ((ibsta&TACS)&&(!(ibsta&ATN))) // If addressed to talk, send the response "I am a talker"
{
ibwrt (noncontroller, "I am a talker", strlen("I am a talker")); // Send data across the bus.
return 0;
} // if
} // while
return 0;
} // main
コントローラ側のコンピュータで、プライマリ(一次)アドレス1の計測器と通信を行うための設定を行います(上記の ibpad コマンドで、非コントローラのアドレスが1と設定されています)。例えば、対話式制御(IBIC)上で、下記のようにコマンドを入力していきます。
1. ”ibfind gpib0”を用いてGPIBボードへのセッションを開始をします。
2. ”ibsic” を用いてバスへインターフェースクリアメッセージを送信します。
3. ”ibsre 1”を用いて接続されている計測器をリモートモードにする。
4. ”ibdev 0 1 0 13 1 0”を用いて非コントローラへセッションを開始します。
5. ”ibwrt "HELLO"”を用いて文字列データ(この場合、HELLOという言葉)を非コントローラへ送信します。
より詳しいGPIB関数やステータスワードについての情報は、下記の関連リンク先をご参照下さい。
関連リンク: NI-488.2 User Manual for Windows NI-488.2 Function Reference Manual for Windows
添付:
報告日時: 06/09/2000
最終更新日: 09/02/2006
ドキュメントID: 1Y88LTEE
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.