• No : 178
  • 公開日時 : 2007/03/01 03:00
  • 更新日時 : 2024/10/30 14:34
  • 印刷

戻り値252のGPIBエラーが発生してしまいます。

戻り値252のGPIBエラーが発生してしまいます。
自己診断の内容には特に問題は無いようです。

カテゴリー : 

回答

対象製品型式: API-GPIB(98/PC)、GP-IB通信デバイス
 
関連情報:
 お問合せのGPIB通信における252エラーにつきまして、以下をご参考に対応をご検討ください。
 マスタ、スレーブいずれの設定の際も同様です。
 ただし、「2-4」「3-3」「3-5 1)」はマスタ設定時のみの内容となります。
 
 1.発生するメカニズム
 GPIB通信では、GPTalkを含むGpComand/GpTalkBinary/GpPoll等のデータを回線に流す関数で
 252エラーが発生する可能性があります。
 これは、発信したGPIB通信が受け取られずに(ハンドシェークされず)に1バイト以上のデータが
 損失した場合、デバイス搭載のGPIB通信Chip内でエラービットが立ち、これをドライバ(API-GPIB)
 が関数の戻り値としてアプリケーションに通知する様になっているからです。
 
 2.発生原因
 発生メカニズムより考えられる原因としては、以下があります。
 
 2-1.ケーブルが外れた
 可能性は低いと考えます。
 
 2-2.前回の通信での最後のバイトが受信されなかった。
 可能性があります。
 事例として多くあるのが、相手機器の応答が遅い場合に、相手機器が最後のデータを受け取る前に、
 次の送信動作を行ってしまい、そこでコマンドを送出した結果、前回送出した最終データが失われる
 事があります。
 パソコンの処理速度やアプリケーション/相手機器のタイミング、アプリケーションの処理シーケンスに
 より発生します。
 
 2-3.前回の通信でタイムアウトが発生した
 可能性があります。
 本来アプリケーションの処理として行うべきポーリング動作やトリガコマンドを行わない場合など、
 相手機器の状態遷移が整っていない時に送信した場合に起こりやすいです。
 このケースも、パソコンの処理速度やアプリケーション/相手機器のタイミング、アプリケーションの
 処理シーケンスにより発生します。
 
 2-4.相手機器アドレスが間違っている 【マスタ設定時のみ】
 何らかのアプリケーションミスにより、相手機器の機器指定を誤った場合に、次に送信動作で発生します。
 
 
 3.対策と処置
 252エラーへの対策として、以下の確認と処置をご検討ください。
 「3-1」から順に確認していただければ良いと考えます。
 
 3-1.接続確認
 ケーブルが外れかけていないかを確認。
 また、IEEE488規格に準拠しているかケーブル長は総延長は、機器数x2m(パソコンと相手機器の1対1
 であれば最大2x2=4m)複数台があっても4m以上のケーブルは不可ケーブルの端と端がループする様な
 接続は不可。
 
 3-2.デリミタコードの確認
 相手機器アドレスとパソコンのデリミタコードが正しいか?
 機器によっては送信と受信のデリミタコードが異なる場合があります。
 また、送受信データが1バイト以上あり、デリミタコードを変更できるのであれば一度変更して
 ください。
 
 例) CR+LF(EOI)->(EOIのみ)、CR(EOI),LF(EOI)等
 
 
 3-3.機器アドレスの確認 【マスタ設定時のみ】
 最初にエラーが発生した時の機器アドレスが正しいか?
 またその直前の送受信関数で機器アドレスが正しいか?
 
 3-4.送受信シーケンスの見直し
 送受信する前にトリガ後ポーリングで相手機器の状態遷移待ちをする必要が無いか、可能かを相手機器の
 取り扱い説明書の確認、または機器メーカに問い合わせてください。
 多くの計測器では、ポーリングを行う事によりレディ状態かどうかを確認ができ、このステータスを確認
 することで適切なタイミングでの送受信が可能となります。
 
 3-5.上記で対応できない場合,以下を一度実施してください。
 1)送受信関数の後にGpComand関数でUNL/UNTを送出してGPIB回線をクリアしてください。
 【マスタ設定時のみ】
   具体的例としては以下のようになります。
   DWORD Ret, Cmd[31];
   Cmd[0] = 2;      /* コマンド数 */
   Cmd[1] = 0x3f;    /* UNL(UN LISTEN) */
   Cmd[2] = 0x5f;    /* UNT(UN TALK) */
   Ret = GpComand(Cmd);
 
 2)送受信関数の後にソフトウェアWaitを入れてください。
 時間は相手機器の状態遷移に依存する為、最初は長めにしてエラー発生頻度が変るかを確認してください。
 
 3)使用しているパソコンを変更してエラー発生頻度が変るかを確認してください。
 
 3-6.最後に
 上記で対処できない場合、GPIBボード/相手機器/ケーブルを含めて、何らかのハードウェア故障が考えられます。
 お手数ですが、上記で対処した結果の詳細および下記の内容、その他お気づきの点などご連絡ください。
  ・発生するエラーコード
  ・発生頻度(エラー発生回数/実施回数)
  ・各関数パラメータ(入力と戻り値)
  ・相手機器情報(シーケンス/ハード設定/ソフト設定)