PCとPCのGPIB接続について
- 1 名前: たかはし 投稿日:2004/12/06(月) 20:25 ID:BQRGWB1U
- AGILENTの82350BのGPIBカードを2つ使用していますが、
 パソコン同士の文字列等の送受信は可能でしょうか?
 又、VB.NET2003で制御部分を作成しようとしていますが
 VB版のモジュール(sicl32.bas)を変換して使用する事は可能でしょうか?
 知ってる方いましたら教えて下さい。
 
 
- 2 名前: 匿名488 投稿日:2004/12/07(火) 14:56 ID:???
- >AGILENTの82350BのGPIBカードを2つ使用していますが、
 >パソコン同士の文字列等の送受信は可能でしょうか?
 
 ハードウェア的には可能じゃないでしょうか。
 ただし、ライブラリが端末モードをサポートしていないと
 (トーカ、リスナに指定されたことが分かる割り込み処理が必要)
 難しいでしょうね。
 
 .NET からアンマネージ DLL を呼ぶ方法はご存知ですか?
 
 sicl32.bas はおそらく内部で DLL を呼んでいるはずなので、
 sicl32.bas を .NET 形式に変換した上で、
 DLL 呼び出し部分をアンマネージ DLL 呼び出しに
 書き換えてやれば動く「はず」です。
 
 sicl ではないですが、他スレで似たような話題がありますね。
 こちらはどうもすんなりいっていないようですが。
 ご参考まで。
 http://www.miolab.com/board/read.cgi?bbs=GPIB&key=1069753442&ls=100
 
 
- 3 名前: たかはし 投稿日:2004/12/07(火) 18:40 ID:wPzJqsxM
- 匿名488さん書き込みありがとうございます。
 
 >ただし、ライブラリが端末モードをサポートしていないと
 >トーカ、リスナに指定されたことが分かる割り込み処理が必要)
 割り込み処理ですか。かなり難しそうな感じがしています。
 今回GPIB制御のPGが初めてなものでして情報が少なくて困っています。
 両方のマシンに割り込み処理を入れるようなPGが必要という事でしょうか?
 
 sicl32.bas はおそらく内部で DLL を呼んでいるはずなので、
 >sicl32.bas を .NET 形式に変換した上で、
 >DLL 呼び出し部分をアンマネージ DLL 呼び出しに
 >書き換えてやれば動く「はず」です。
 .NET 形式に変換し、アンマネージ DLLとなっているかどうか
 分からないですが、そのままCallしています。
 オープン、クローズは、上手く出来てそう(エラーが出ないだけかも?)
 なのですが、ivprintやiwrite等の処理で「追加情報 : Interface not active」
 と表示されます。当方相手側のGPIB機器がない為
 出ているエラーかと思われるのですが
 GPIB機器無しで試験が出来ないものかと質問したところです。
 やはりGPIB機器を接続しないと試験が出来ないのでしょうか?
 
 
- 4 名前: 匿名488 投稿日:2004/12/07(火) 22:28 ID:???
- >両方のマシンに割り込み処理を入れるようなPGが必要という事でしょうか?
 
 コントローラはバスのマスターなので、
 好き勝手にトーカ、リスナを指定できます
 (=自分でバスコマンドを出してる=SRQ 以外はタイミングが自分でわかる)
 が、端末はバスを常に監視してハンドシェイクに参加せねばなりません。
 応答が遅いのは許されますが、常に監視する必要があるため、
 実用的なレベルではポーリングではなく割り込みを使うのが普通でしょう。
 
 I/F カードのライブラリの中には、自分がコントローラであることを
 前提に記述されている(トーカ、リスナの両方を自分とは別に設定できないし、
 コントロールチップを端末モードで初期化できない)ものがあります。
 
 >ivprintやiwrite等の処理で「追加情報 : Interface not active」
 >と表示されます。当方相手側のGPIB機器がない為
 >出ているエラーかと思われるのですが
 
 そうですね。ハンドシェイクに応答する機器がない場合、
 このようなエラーになると思います。
 
 >やはりGPIB機器を接続しないと試験が出来ないのでしょうか?
 
 バスラインを手やマイコンで?引っ張って(NDAC,NRFD)、
 ハンドシェイクの真似事はできるでしょうが、
 最終目的が PC どうしで通信することでなければ、
 早めにターゲットを調達したほうがいいと思います。
 
 業種にもよるでしょうが、カウンタとか、マルチメータとか、
 そのへんにころがっていませんか?(笑)
 
 
- 5 名前: 匿名488 投稿日:2004/12/23(木) 09:13 ID:YB1iXhZ.
- 匿名488さん書き込みありがとうございます。
 おっしゃる通りだと思い、
 早速スペクトラムアナライザを調達してきました。
 そこで試したところ、上手くいくケースと
 いかないケースが在りました。
 1.リソース名を GPIB0::INTFC で接続すると
 IFC,IRENの設定は出来るのですがコマンドの送信しても
 スペクトラムアナライザが反応しません。
 2.リソース名を GPIB0::18::INSTR で接続すると
 コマンド送信はスペクトラムアナライザが反応しますが
 IFC,IRENの設定が出来ません。
 (エラーメッセージ)
 「与えられたセッションはこの動作をサポートしません」
 今回、N88BASICで作成されたものをWindows用に変換しないと
 いけないのですが、そのような分岐がないように思われます。
 以下N88BASICのソースです。
 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
 CALL GPIB.INIT
 ISET IFC : ISET REN :CMD DELIM=0
 CMD TIMEOUT=3
 WBYTE &H3F,&H5E,&H32,&H11;
 PRINT@ 18;"IP"
 PRINT@ 18;"CF9410MZ"
 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
 分かる方がおられましたらご教授願います。
 
 
- 6 名前: たかはし 投稿日:2004/12/23(木) 09:33 ID:6PCwnKQk
- ↑4.の名前を入れるのを忘れていました。
 すいません。よろしくお願いします。
 
 
- 7 名前: 匿名488 投稿日:2004/12/24(金) 09:25 ID:???
- INSTR や INTFC という単語?からすると、VISA を使われているようですね。
 
 KIKUSUI さんの VISA ライブラリの簡単な解説から引用させていただくと、
 
 「INSTR」は計測器自身を、「INTFC」はコントロールボードを指すのだそうです。
 
 N88 のほうでは、ISET IFC で IFC を発行するとともに、
 自身をコントローラにする機能があったと思います。
 
 REN,IFC や、そのあとの WBYTE の ; 以前のコマンド列
 
 &H3F : UNLISTEN (リスナ解除)
 &H5E : MTA (トーカアドレス指定 = 31)
 &H32 : MLA (リスナアドレス指定 = 18)
 &H11 : LLO(ローカルロックアウト:計測器のローカルパネル操作禁止 など)
 
 はコントローラが発行するコマンドですので、
 「INTFC」 から操作するのが妥当ということではないでしょうか。
 
 N88 では上記の操作を特にデバイスリソースの指定を切り替えずに
 (ISET IFC で自身がコントローラになった場合)
 行うことができます。
 
 VISA で両方をわけて書くのが正しいのかどうかは、
 私は VISA 使いではないので、VISA に詳しい方にお譲りします。
 
 
- 8 名前: にしやま 投稿日:2004/12/24(金) 09:41 ID:???
- >>6
 この掲示板は、名前を入れなくても OK です。
 その場合、名前が「匿名488」になるようになってます。
 
 
- 9 名前: マニク◆Jy2pR/5Y 投稿日:2004/12/24(金) 10:48 ID:???
- >>7
 INSTRでVISAをオープンした場合、viWrite()或いはviPrintf()
 関数はアドレス指定まで自動で行います。それに対して、
 INTFCでVISAをオープンした場合、アドレス指定の部分は自動化
 されないので、viWrite()の前にviGpibCommand()関数でATN-TRUE
 な区間のコマンドを明示的に送っておく必要があります。
 
 VISAではINSTRとINTFCのセッションを両方同時にオープンして
 おくことができるので、場面に応じてセッションを使い分ければ
 良いと思います。
 
 
- 10 名前: たかはし 投稿日:2004/12/24(金) 16:13 ID:qVK4JuLA
- たくさんの書き込みありがとうございます。
 やはりINSTRとINTFCを使い分けないといけないみたいですね。
 勉強になりました。
 皆さんの意見を参考にもう少し進めてみます。
 
 
- 11 名前: ぢょお 投稿日:2004/12/25(土) 12:49 ID:bl35mRLw
- もう解決してるかもしれませんが、
 GPIB0::INTFC
 のリソース名はGPIB-I/Fカード(というよりコントローラ)を宣言。
 (昔からの慣例的に0番を使用する例が多い)
 GPIB0::18::INSTR
 は0番のI/Fにつながれた18番(測定器)を宣言していると思います
 N88の”ISET IFC : ISET REN :CMD DELIM=0”
 はGPIB-I/Fカードに対するコマンドだから、
 スペアナに対して送信してもコマンドは受け取らないはずです。
 発信するコマンドごとに”だれ宛なのか”切り替えてコマンドを
 書けばいいと思います。
 .netじゃなくて(VB6まであるいはVBA)、
 PC同士のやり取りをしないのであれば
 easyGPIBというツールソフトを間に介したほうが
 N88からの移植はスムーズに行きそうに思います。
 (アジレントの82350bなら動くはず)
 
 
新着レスの表示