エラー -1073807339: VISA読み取り/書き込みでタイムアウトエラーが発生する

更新しました Feb 20, 2024

使用製品

ソフトウェア

  • LabVIEW
  • LabWindows/CVI

ドライバ

  • NI-VISA
  • NI-Serial
  • NI-488.2

問題

  • VISA書き込みまたはVISA読み取り操作を実行する際、下記のダイアログに示すエラー -1073807339が発生します。

エラー -1073807339: VISA書き込みまたは読み取りで発生しました。

考えられる理由:
VISA:(Hex 0xBFFF0015) 操作が完了する前にタイムアウトで時間切れとなりました。 


 

  • VISAテストパネルでは計測器と通信できましたが、LabVIEWでVISA書き込みやVISA読み取りを使用すると、タイムアウトエラー-1073807339が発生します。

解決策

このエラーメッセージが表示される理由はいくつかあります。最も一般的な理由は以下のとおりです。
 

  • 正しいドライバがインストールされていない可能性があります。ハードウェアに適したドライバがインストールされている必要があります。いくつかの一般的なドライバは以下のとおりです。


    また、互換性の最新ドライババージョンがインストールされていることを確認してください。 互換性情報は、ドライバのreadmeファイルにあります。

     
    • NI-VISA (シリアルまたはGPIB通信を使用する計測器用)
    • NI-Serial (RS232、RS422、RS485などのシリアル通信を使用する計測器用)
    • NI-488.2 (GPIB通信を使用する計測器用)

      メモ: 新しいNI GPIBハードウェアデバイスをインストールしてからWindowsが検出できるようにするには、NI-488.2ドライバソフトウェアを事前にインストールする必要があります。
  • ポートが接続されていない、誤ったポートが選択されている、またはポートがデータを送受信できません。機器が使用しているポートに正しく差し込まれていることを確認します。

     
  • 同じドライバで別のシステムを試してみます。COMポートが破損しているか、元のマシンで動作していない可能性があります。

     
  • タイムアウトエラーは、ドライバに書き込まれた間違ったコマンド文字列によっても発生する可能性があります。VISA読み取りおよびVISA書き込み呼び出しに送られたコマンド文字列をチェックして、それらが機器に対して正しい構文で書かれていることを確認します。

    メモ: 多くの場合、コマンドの最後に改行または復帰文字が必要です。LabVIEWでお勧めするテスト方法は、コマンド文字列入力としてフロントパネルにある文字列制御器またはダイアグラムの文字列定数を右クリックして'¥'コード表示モードにします。このモードでは、復帰文字(CR: Carriage Return)は¥r、改行(LF: Line Feed)は¥n、そして復帰改行(EOL: End Of Line)は¥r¥nです。どの終端文字が適切かを知るには、製品マニュアルを参照して適切なオプションを使用してください。

    ポートの通信設定が正しく設定されていないかもしれません。ボーレート、データビット、パリティ、ストップビット、およびフロー制御がハードウェア要件と一致しているかどうかを確認します。

    メモ: これらの設定は、VISA VIを使用して実行時に変更するか、またはNI-MAXで以下の例のように変更できます。




     
  • このエラーは、シリアルポートで使用可能なビット数よりも多くのビットを読み取ろうとすると発生する可能性があります。

     
  • シリアルポートバイトVISAプロパティノードを使用して読み取るデータ量を確認し、正確な利用可能なデータ量に制限させる必要があります。

    さらに、1度に1バイトのみを読み取ることで多くのバイトを読み取らないようにすることを確認できます。これでエラーが発生しない場合、再度タイムアウトエラーが発生するまで読み取るバイト数を増やしてみます。そうすることで、コマンドを送信後にどのくらいのバイト数が返せるのかが分かります。

    メモ: 1バイトずつ読み取るようにしてもまだエラーが発生する場合、コマンド文字列と終端文字をチェックして正しく書き込まれているかどうかを確認します(Cの解決策と同様)。

    古い計測器は、ポートにコマンドを書き込んでもすぐには応答できない可能性があり、VISA書き込みVISA読み取りの間に大きな遅延が必要となります。このタイプの計測器がインタフェースとなるように設計されたアプリケーションは、この遅延を予期してVISA書き込みとVISA読み取りの間に待機関数を追加し、潜在的なタイムアウトエラーを効果的に回避する必要があります。



     
  • 大量のデータセットは、シリアルポート経由で転送するためにデフォルトのタイムアウト値である2000ミリ秒よりも長くかかることが多いため、大量のデータを読み書きするときにタイムアウトが発生することがあります。開発システムに応じて、さまざまな方法でVISAセッションタイムアウトを手動で指定することができます。VISAタイムアウトの設定方法については、下記を参照してください。

    LabVIEW: 関数パレットの計測器I/O>>VISA>>VISA上級の中にあるVISAタイムアウト設定を使用することができます。詳しくは、VISAセッションのタイムアウトを構成するを参照してください。

    LabWindows™/CVI™Attribute_Nameパラメータを持つviSetAttribute関数でVI_ATTR_TMO_VALUEを設定することができます。

    メモ: VISAセッションに対してタイムアウト値を変更することは、セッションにあるすべてのVISA書き込みおよび読み取りに影響します。しかし、セッション中のどの場所でもこのプロパティ/属性を設定し、必要に応じて構成することができます。
 
  • VISAタイムアウトエラーが NI-MAX VISA テストパネルのVISA書き込み関数で発生した場合VISA関数を使用するタイミングでコンピューターがフリーズしてしまっている可能性があります。その場合、Windowsの電源設定にてご使用のデバイスの電源設定を以下の方法で行う必要があります。
コントロールパネル>>ハードウェアとサウンド>>電源オプション>>プラン設定の変更>>詳細な電源設定の変更>>(ご使用デバイス)>>リンク状態の電源管理にて設定を”オフ”にしてください。

追加情報

必要なソフトウェア、およびシステムで稼働中の計測器に対して一般的なエラーや障害をトラブルシューティングするためのテクニックの詳細については、計測器ドライバのトラブルシューティングを参照してください。