NI スキャンエンジンの警告66030およびエラー-66460発生後、cRIOおよびEtherCATシャーシがデータを取得できない

更新しました Nov 8, 2024

使用製品

ハードウェア

  • NI-9144
  • NI-9145

ソフトウェア

  • LabVIEW
  • LabVIEW Real-Time Module

ドライバ

  • NI-Industrial Communications for EtherCAT

問題

cRIO、EtherCATシャーシ、および複数の取得モジュールで構成されたシステムにLabVIEWプロジェクトを展開しました。起動時に、ブロックダイアグラムで最初に実行されるNIスキャンエンジン変数が、以下の説明とともに警告66030を返します:

This I/O variable is referencing an I/O device or channel that is not active in the current I/O mode. Data read may be stale or invalid and data written may not be sent to the output.

その直後、EtherCATシャーシのERR LEDが2回点滅して一時停止するパターンで点滅し始め、新しいデータを受信できなくなります。EtherCATシャーシのマニュアル( NI-9144の機能: ERR LEDインジケータNI-9145の機能: ERR LEDインジケータ)によると、このLEDパターンは次の意味を持ちます:

There is an application watchdog timeout. The slave did not receive a scheduled EtherCAT telegram.

問題が発生した後にGet Fault List関数を実行すると、次の定義でエラー-66460が返されました:

The I/O scan time exceeded the NI Scan Engine period you specified on the Scan Engine page of the target properties dialog box. 

解決策

上記の症状を解決するために、以下の推奨事項を試してください:

 

  1. 起動時にすべてのI/O変数にアクセスする前に、コードに30〜60秒の待機を含めて、NIスキャンエンジンがすべてのチャネルを適切に初期化できるようにします。
  2. アプリケーションが複数のI/Oチャネルを展開する必要がある場合は、以下の手順と画像に示すようにスキャン期間を延長することを検討してください。
    1. LabVIEWプロジェクトでcRIOターゲットを特定し、右クリックしてメニューを開きます。
    2. Properties オプションを押します。
    3. 新しく開いたリアルタイムCompactRIOプロパティダイアログでScan Engine を開きます。
    4. Scan Period を延長して、スキャンプロセスとアプリケーションロジックが1回の反復内で実行するのに十分な時間を確保します。
    5. OKボタンを押して変更を保存します。
画像.png
  1. 最後に、NIスキャンエンジンのパフォーマンスを最大化し、スキャン期間を短縮するために、アプリケーションで使用する予定のないI/O項目の展開を解除することを検討してください。

追加情報

RTターゲットで実行する場合、NIスキャンエンジンはターゲットの起動時に自動的に開始され、ターゲットをシャットダウンするまで継続的に実行されます。

デフォルトでは、NIスキャンエンジンはRTターゲット上でタイムクリティカルな優先度よりも高いスレッドで実行されるため、スキャンスレッドがアプリケーションの確定性に影響を与えないように、アプリケーションの主要な処理部分をスキャン期間と同期させる必要があります。

設定されたスキャン期間がスキャンとアプリケーションロジックの実行に必要な時間よりも短い場合、またはNIスキャンエンジンが初期化を完了する前にI/O変数にアクセスすると、アプリケーションは警告またはエラーを返します。