Q. 送受信でタイムアウトエラーが発生する

A:
 送受信関数のタイムアウトエラーは、相手機器が送受信に対して一定時間応答しない場合に発生します。

 GPIBケーブルが接続されていない場合、もしくは相手機器の電源が投入されていない場合には、GPIBエラーとなります。
 GPIBケーブルは接続し、相手機器の電源が入っている状態であることを確認してください。

 一般的にタイムアウトエラーが発生する主な要因としては、以下の6つが考えられます。

1)[マスタ/スレーブ] GPIB機器アドレスの設定が異なっている。
  GPIB機器アドレスは各機器側で設定を行いますが、これと送受信関数で指定しているGPIB機器アドレスが異なっている場合です。
  GPIB機器アドレスの確認をお願いします。

2)[マスタ/スレーブ] デリミタコードの設定が異なっている。
  デリミタコードは各機器側で設定を行いますが、これとボード側のデリミタコードの設定が異なっている場合です。
  診断プログラムの送受信で、デリミタを変更して試してみてください。

3)[マスタ] 機器に対するコマンドが異なっている。
  通信すべきコマンドが異なっている場合です。
  送信は成功するが、受信で失敗する場合、この可能性が高いと考えられます。
  機器に対するコマンドは、機器毎に異なっておりますので、各機器の解説書を参照願います。
  (トリガ(GETコマンド)をかけることでデータを用意する機器が多いようですので、診断プログラムでトリガを実行してから受信を試してみることもお勧めします)

4)[スレーブ] トーカ・リスナ指定待ちを行っていない。
  スレーブは、マスタからトーカリスナ指定された後に送受信が可能になります。
  マスタと通信タイミングを一致させるために、マスタからのトーカリスナ指定を確認してから送受信動作を実施することを推奨します。

  詳細は、[チュートリアル]-[スレーブモード(非コントローラ)での通信]-[送受信処理]トピックの応用例を参照してください。

5)[マスタ] SRQを活用していない。
  スレーブ機器が測定中などのタイミングでマスタ側から送受信しようするとスレーブ機器が正常に応答しない可能性があります。
  一般的にスレーブ機器では、時間のかかる処理が終了した場合にマスタに対してSRQを実施する機能が実装されているため、マスタ側は、SRQを待ってから送受信することを推奨します。

  なお、スレーブ機器におけるSRQ機能の有無や通信シーケンスは、機器の解説書を参照してください。

6)[マスタ] スレーブ機器の通信処理が遅い。
  スレーブ機器によっては、通信処理が追いつかない場合があり、GPIBコマンドと送受信データの間にウェイトを入れることで解消する可能性があります。
  どの程度のウェイトが必要であるかは、機器に依存するため長めのウェイトから試してください。

  詳細は、[チュートリアル] - [プロパティ設定]トピック内の「GPIBコマンド・データ間のウェイト時間」項目を参照してください。

 

補足:

 タイムアウトの時間設定の初期値は10秒となっております。

 タイムアウトの時間設定は、GpibSetTimeOut()関数で変更することができますのでこれを変更してみるのも一つの対策になります。
 設定範囲は指定した値(0~FFFFFFFFH)×1[msec] (0msecから4294967295msec)

 0を指定した場合には、タイマチェックを行いません。つまりタイムアウトが発生しません。
 相手機器との通信状態などにより、処理が完了しなくなる可能性があります。