エラー56: ネットワークデバイス間で通信するとタイムアウトエラーが発生する

更新しました Jun 7, 2024

使用製品

ソフトウェア

  • LabVIEW

問題

  • LabVIEWのTCP/IPベースのネットワーキングAPIを使用してネットワークデバイス間で通信しようとしていますが、エラー 56 - LabVIEW: ネットワーク操作がユーザにより指定された時間制限またはシステムの時間制限を超えました。VIタイムアウトが発生します。この問題を解決するにはどうすればよいですか?
  • 自分のコンピュータを使用してエンドネットワークデバイスと通信をしようとしていますが、エラー56が発生します。ただし、別のコンピュータで同じコードを正常に実行できます。 何が発生しているのですか?
 
  • VeriStandプロジェクトをデプロイしようとすると、エラーメッセージが表示されます。
The VeriStand Gateway encountered an error while deploying the System Definition file.
Details:
Error 56 occurred at Project Window.lvlib:Project Window.vi >> Project Window.lvlib:Command Loop.vi >> NI_VS Workspace ExecutionAPI.lvlib:NI VeriStand - Connect to System.vi
Possible reason(s):
LabVIEW:  The network operation exceeded the user-specified or system time limit.

解決策

このタイムアウトエラーは、TCP/IP関数の設定が誤っていることが原因で発生する可能性があり、データが受信されている限り、問題なくクリアされることがよくあります。データが受信されていない場合は、このエラーを軽減するために以下のいくつかのトラブルシューティング手順があります。

 

特定のLabVIEWアプリケーションを使用している場合

  • エラーが発生するVIのタイムアウト設定が、十分余裕のある時間が設定されていることを確認します。
    例: HTTP Client GET VIを使用して低速サーバから大容量の文字列を受信する場合、デフォルトである10秒のタイムアウトでは不十分な場合があります。
  • TCP/IPを使用している再入実行可能なVIを使用している場合は、再入可能オプションをオフにしてみます。競合状態が発生してネットワークがビジー状態になり、書き込みまたは読み取り時にタイムアウトする可能性があります。
  • タイムアウトエラーは、アプリケーションの想定された動作の可能性があります。TCP読み取りからデータを受信すると、TCP関数はタイムアウトの間、指定されたバイト数だけ待機します。関数が完全な数を受け取らない場合、エラー56が発生するとともに受け取ったデータを返します。その場合は、エラーメッセージを処理してクリアする必要があります。エラーをクリアする方法については、Clearing A Specific Error From the Error Clusterを参照してください。
     
  • ネットワークケーブルが各システムに正しく接続されていること、またはワイヤレスネットワーク接続が適切に確立されていることを確認します。
  • 接続を開いてドメインネームサーバー(DNS)に関する問題をチェックするときは、ドメイン名の代わりにIPアドレスを使用します。
    • 例: "http://www.google.com"の代わりに"http://74.125.224.72/"を使用します。
  • ツール>>オプション>>VIサーバに移動し、下部にある追加を選択します。マシン名/アクセスフィールドに*を入力し、アクセスを許可することを選択して*をマシンアクセスリストに追加することもできます。しかし、これにより、すべてのマシンがターゲットマシンにアクセスできるようになります。
  • 問題のネットワークデバイスにpingコマンドを送信して、デバイスが接続され、通信していることを確認します。
  • コンピュータにインストールされているすべてのファイアウォールとウイルス対策ソフトウェアをオフにして、ポートがブロックされていないことを確認します。
  • 両方のデバイスが同じサブネット上にあり、同じサブネットマスクを持っていることを確認します。 NIネットワークデバイスの構成の詳細については、NI MAXでリアルタイムターゲットに接続する際に「一致しないIP設定」と表示されるを参照してください。
  • 過剰なローカルネットワークトラフィックがネットワーク通信を遅らせ、転送に予想以上の時間がかかるかどうかを確認します。
  • FTP VIを使用している場合は、使用されているパスワードに印字できない文字やスペースが含まれていないことを確認します。
  • 情報を送信しているVIが実行中であることを確認します。
  • 通信部分がサブVIに配置されている場合は、サブVIから取り出して、サブVIの外で動作するかどうかを確認します。
  • LabVIEWサンプルファインダにあるサンプルの「Simple TCP.lvproj」を試してみます。
  • ループを利用して繰り返し読み書きする場合は、ループ内に待機(ms)関数(約200ミリ秒くらい)を挿入してみます。

     

VeriStandを使用している場合:

  • Tコントローラ設定のみを指定して、空のシステム定義をデプロイしてみます。
  • システム定義に正しいIPアドレスとコントローラOSが指定されていることを確認します。
  • ネットワークケーブルが各システムに正しく接続されていること、またはワイヤレスネットワーク接続が適切に確立されていることを確認します。
  • 可能であれば、ホストPCとRTターゲット間の直接イーサネット接続を試します。
  • 問題のネットワークデバイスにpingコマンドを送信して、デバイスが接続され、通信していることを確認します。
    • カスタムデバイスのような必要な依存関係をVeriStandが展開するのに十分な時間があることを確認するため、応答時間は最小限に抑えられるべきです。
  • ホストコンピュータにインストールされているすべてのファイアウォールとウイルス対策ソフトウェアパッケージをオフにして、ポートがブロックされていないことを確認します。
  • 両方のデバイスが同じサブネット上にあり、同じサブネットマスクを持っていることを確認します。NIネットワークデバイスの構成の詳細については、NI MAXでリアルタイムターゲットに接続する際に「一致しないIP設定」と表示されるを参照してください。
  • 過度のローカルネットワークトラフィックによってネットワーク通信が遅くなり、転送に予想よりも時間がかかるかどうかを確認します。

     

RT Reboot Controller VIを使用している場合:

  • VIに配線しているMACアドレスが正確で、正しくフォーマットされていることを確認します。文字列制御器または定数IDがそのデータを16進形式で表示していることを確認します(例: 0080 2F0A 14FF)。文字列制御器が16進形式でない場合、それを右クリックして16進表示を選択します。

     

Linux用LabVIEW for OpenSuse 11.1でFile PutまたはTCP Waiting On Listener VIを使用する場合:

  • FTP転送にパッシブモードを使用するには「FTP Put File」VIを構成します。

     

パケットスニッフィングを使用したトラブルシューティング:

上記の手順で問題が解決しない場合は、パケットスニッフィングプログラムを使用して、データがネットワーク経由で送信されているかどうかを確認します。Wiresharkと呼ばれるサードパーティ製のツールは、データが到着しているかどうかを確認するのに役立ちます。データが到着しておらず、このエラーが表示された場合、データを送信するデバイスまたはネットワークに問題があります。データがWiresharkに到着していてもこのエラーが表示される場合は、ファイアウォールの問題や不正な形式のTCP機能が原因と考えられます。Wiresharkは、Wireshark.orgより入手可能です。WiresharkでCaptureFiltersを使用すると、特定のIPアドレスとの間でのみパケットを分離することができます。

さらに、パケットが正常にネットワークに送信されるので、アドレスデバイスが応答しない場合、アドレスデバイスのネットワークアダプタが欠けている可能性があります。

追加情報

エラー56は、LabVIEWコードがユーザー定義の時間制限内でネットワーク応答を受信しないことが原因です。このエラーは一般的なタイムアウトエラーであり、多くの異なる要因の結果である可能性があります。エラー56はしばしばエラー66 - LabVIEW:ネットワーク接続がピアによって閉じられましたの結果である場合があり、VIはサーバがタイムアウト制限に達するまで応答を待たずに、接続を閉じています。