2015/08/19

CONTEC API-PAC(W32)RM/GPIB


EXCEL VBA と GP-IB 経由の測定器
で遊んでいる今日この頃。
先日購入した、
Hewlett-Packard 5316B Universal Counter
で送信はできるが受信がうまくできない。

CONTEC社製GP-IB(PCI)FLを使用。
CONTEC社製の診断プログラムでは、送受信とも可能である。

EXCEL VBA とGP-IBで接続されている測定機器と通信するのに
EasyGPIB (木下清美氏) のコマンド群を利用する。

eg.CardOpen
eg.CardCLose
eg.ActiveAddress
eg.AsciiLine (送信時と受信時)
eg.WAITmS

の5つのコマンド(6種類の使い方)で良い。

eg.AsciiLine で受信すると、

HP 3478A は通るのに、
HP 5316B は、エラー13000タイムアウト発生

となる。

EasyGPIB (木下清美氏) の説明書を読むと
EOIは常に有効です。EOIがアクティブにならない通信はサポートしていません。
の記述あり。

この辺がポイントだろうと予測する。

 ドライバライブラリ API-PAC(W32)

http://www2.contec.co.jp/dl_data/LZF832/LZF832_031023.PDF

http://seyo.info/pdf/LZF832_031023_ALL.pdf
http://seyo.info/pdf/LZF832_031023_P33.pdf
http://seyo.info/pdf/LZF832_031023_P34.pdf
http://seyo.info/pdf/LZF832_031023_P44.pdf

 GpListenBinary と GpDelim の2つに絞る。

VBAをトレースしてGpListenBinaryの戻り値を見ると、

HP 3478A は通る。 ==> 戻り値 2 EOI受信終了
HP 5316B は、エラー13000タイムアウト発生。 ==> 戻り値 254 タイムアウト

HP 5316B の受信バッファの内容を調べると、
「計測数値CR+LF」を3回受信している。
EasyGPIB での GpDelim の設定を見ると、

Delim(0&,1&)と記述を見つける。

Delim
0 : 未使用
1 : CR+LF
2 : CR
3 : LF
Eoi : EOI
0 : 未使用
1 : 使用

Delimは、使用していない。つまりEOIを受信して、受信終了するしかない。

受信時にCR+LFが来ているので、Delim(1&,1&)と記述の変更を試みる。

HP 3478A は通る。 ==> 戻り値 1 デリミタ及びEOI受信終了
HP 5316B は通る。 ==> 戻り値 0 デリミタ受信終了

HP 5316B でも受信できるようになった。

設定を変更したので、どこかで悪い影響が出ているかも知れない。
また受信時は、生のデータを直接セルに入れるのではなく、
NULLや制御文字など、テキストで現れないコードを
除去する関数を通している。
(除去する関数は、自前です。)

EasyGPIBで木下清美氏は、なぜEOIに、こだわったのか
それはきっと理由があるのだろう。



2 件のコメント:

  1. こんにちは

    私も同じインターフェース基板手に入れましたが
    パソコンに取り付けするプレートを作らないと取りつかないので
    完成が遠いです

    動かせるように成ったら教えてください
    色々な古いマシンがコントロールするのが夢です

    返信削除
    返信
    1. コメントありがとうございます。
      GP-IBは、まだ7ヶ月の初心者です。
      試行錯誤を重ねています。

      EXCEL VBA+GP-IBは、アイディアがあれば
      複数台の測定器をほぼ同時に動かすなど
      いろんな事ができるTOOLだと思います。
      きっと楽しめますヨ!

      削除