スキャンI/Oデータにアクセスする (Real-Time、Windows )
- 更新日2025-08-27
- 8分で読める
NIスキャンエンジンを使用して、スキャンされたI/Oデータにシングルポイントアクセスします。
NIスキャンエンジンを使用する
NI スキャンエンジンは、1度のスキャンでグローバルメモリマップにデータを格納してすべての値を単一レート (スキャン周期 )でアップデートすることにより、データチャンネルのセット (I/Oチャンネルなど )への効率的なシングルポイントアクセスを可能とします。NIスキャンエンジンは、WindowsシステムではデフォルトでLabVIEWにインストールされます。また、RTシリーズPXIやCompactRIOターゲットなど、サポートされるLabVIEWターゲットにもインストールできます。NIスキャンエンジンサポートの詳細については、各ハードウェアのデバイスドキュメントを参照してください。
(Real-Timeモジュール ) NIスキャンエンジンは、デフォルトではRTターゲットで優先度がタイムクリティカルより高いスレッドで実行されますが、スキャンスレッドはCPU使用率の統計のレポートではタイムクリティカルカテゴリに入ります。NIスキャンエンジンをタイムクリティカルを超える優先度で実行するには、スキャンスレッドがアプリケーションの確定性に影響しないようにアプリケーション内の確定的セクションをスキャン周期と同期する必要があります。I/Oが最高優先度タスクではないアプリケーションでは、スキャンエンジンの優先度をタイムクリティカルとタイミングストラクチャ優先度の間に設定することも可能です。ターゲットでI/O変数を使用しない場合は、NIスキャンエンジンをターゲットにインストールしないでください。NIスキャンエンジンがターゲットにインストール済みの場合は、NI Measurement & Automation Explorer (MAX )を使用してアンインストールできます。
NIスキャンエンジンの設定を構成する
スキャンエンジンページでは、スキャン周期、ネットワーク共有レート、NIスキャンエンジンの優先度を設定できます。
スキャンエンジンの障害やモードの監視と管理は、NI分散システムマネージャで行います。ツール→分散システムマネージャを選択し、NI 分散システムマネージャを表示します。また、NIスキャンエンジンVIでスキャンエンジンの設定をプログラム的に表示、設定することもできます。
NIスキャンエンジンをデプロイして実行する
プロジェクトエクスプローラウィンドウでのNIスキャンエンジンの設定が完了したら、その設定を有効にするためにNIスキャンエンジンを使用するプロジェクト項目 (マイコンピュータ、RTターゲットなど )をデプロイする必要があります。
(Windows ) NIスキャンエンジンは、ターゲットを初めてデプロイすると実行を開始し、プロジェクトを閉じると停止します。ビルドしたアプリケーションの実行時にNIスキャンエンジンとI/O変数を自動的にデプロイするには、アプリケーションプロパティダイアログボックスの上級ページでターゲットのハードウェア構成を含むチェックボックスをオンにする必要があります。
(Real-Timeモジュール ) RTターゲットのNIスキャンエンジンは、ターゲットを起動すると自動的に開始され、ターゲットがシャットダウンされるまで継続して実行されます。
1つのコンピュータは一度にNIスキャンエンジンの1つのインスタンスしか実行できない場合があります。たとえば、NIスキャンエンジンを使用するアプリケーションをWindowsでビルドした場合、そのアプリケーションを同じコンピュータで実行するためには、アプリケーションを作成したプロジェクトを閉じる必要があります。NIスキャンエンジンの複数のインスタンスを複数のプロジェクトで構成することは可能ですが、NIスキャンエンジンのインスタンスが既に実行されている時にNIスキャンエンジンを使用する別のプロジェクトをデプロイすることはできません。2つ目のNIスキャンエンジンのインスタンスを実行するためには、最初のインスタンスを停止する必要があります。
スキャンエンジンのタイミング
NI スキャンエンジンは、スキャンエンジンページで指定されるスキャン周期の間隔で実行されます。スキャンとアプリケーション論理の実行に十分な長さの周期を選択してください (以下の図を参照 )。
スキャン周期をプログラム的に読み取るには、「スキャンエンジン周期を取得」VIを使用します。スキャン周期をプログラム的に設定するには、「スキャンエンジン周期を設定」VIを使用します。
スキャンエンジンに同期する
(Real-Timeモジュール ) NIスキャンエンジンをタイムクリティカルより低い優先度に設定した場合以外は、アプリケーションの確定性を損なう競合を避けるためにタイムクリティカルコードをスキャン周期に同期する必要があります。
タイミングストラクチャの実行をスキャンエンジンに同期するには、スキャンエンジンに同期タイミングソースを使用します。タイミングストラクチャを使用しない場合は、「スキャンエンジンに同期」VIでスキャンエンジンに同期します。どちらの同期方法でも、前述の図で示すようにスキャン終了のタイミングで実行がトリガされます。I/O変数をコヒーレントなデータセットとして使用するには、次のスキャンが開始される前に同期されたコードの実行を完了してください。ただし、コードがコヒーレントなデータセットに依存しない場合は、スキャンをスキップすることができます。
NIスキャンエンジンのモード
NIスキャンエンジンには4つのモードが存在します。
| 0 | 初期化モード | 起動時に短時間使用されます。 |
| 1 | 構成モード | NIスキャンエンジンモードを使用するハードウェアでのスキャンエンジンの設定時のモード。 |
| 2 | アクティブモード | スキャンエンジンが実行され値が更新されるモード。 |
| 3 | 障害モード | 重大または回復不可能な障害が発生したときにトリガされるモード。 |
スキャンエンジンモードを表示または構成するには、NI分散システムマネージャを使用します。NI 分散システムマネージャは、EngineStateステータス項目を使用してスキャンエンジンモードの値を表示します。スキャンエンジンモードをプログラム的に読み取るには、「スキャンエンジンモードを取得」VIを使用します。スキャンエンジンモードをプログラム的に読み取るには、「スキャンエンジンモードを設定」VIを使用します。