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 )を使用してアンインストールできます。

メモ (Windows ) Windowsで使用できるNIスキャンエンジンの優先度は、デフォルトの優先度のみです。Windowsオペレーティングシステムは非確定的であるため、Windows上で実行されるNIスキャンエンジンのタイミングは保証されません。

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 スキャンエンジンは、スキャンエンジンページで指定されるスキャン周期の間隔で実行されます。スキャンとアプリケーション論理の実行に十分な長さの周期を選択してください (以下の図を参照 )。

メモ スキャンの長さは、ターゲットにデプロイされたI/O項目の数とタイプによって決まります。スキャンエンジンのパフォーマンスを最大限に高めるには、アプリケーションで使用しないI/O項目をすべてデプロイ解除してください。

スキャン周期をプログラム的に読み取るには、「スキャンエンジン周期を取得」VIを使用します。スキャン周期をプログラム的に設定するには、「スキャンエンジン周期を設定」VIを使用します。

メモ (Real-Timeモジュール )リアルタイムループは、確定性を確立するまでのウォームアップとして1回または2回の反復を必要とします。アプリケーションがタイミング要件を満たしているかどうかは、各タイムクリティカルループのウォームアップ反復後に検証してください。

スキャンエンジンに同期する

(Real-Timeモジュール ) NIスキャンエンジンをタイムクリティカルより低い優先度に設定した場合以外は、アプリケーションの確定性を損なう競合を避けるためにタイムクリティカルコードをスキャン周期に同期する必要があります。

タイミングストラクチャの実行をスキャンエンジンに同期するには、スキャンエンジンに同期タイミングソースを使用します。タイミングストラクチャを使用しない場合は、「スキャンエンジンに同期」VIでスキャンエンジンに同期します。どちらの同期方法でも、前述の図で示すようにスキャン終了のタイミングで実行がトリガされます。I/O変数をコヒーレントなデータセットとして使用するには、次のスキャンが開始される前に同期されたコードの実行を完了してください。ただし、コードがコヒーレントなデータセットに依存しない場合は、スキャンをスキップすることができます。

メモ 同期されたコードが次のスキャン開始前に終了しないと、I/O変数のエラークラスタの情報とI/O値の同期が失われる可能性があります。
メモ NIスキャンエンジンへの同期を行うVIで中断ボタンをクリックした場合、VIは現在のスキャンが完了してから中断します。このため、スキャン周期が長い場合はVIが一時的にハングしたように見える可能性があります。

NIスキャンエンジンのモード

メモ NIスキャンエンジンモードは、特定のターゲットとデバイスでみ使用されます。ローカルI/Oモジュールが取り付けられたCompactRIOターゲットでは、NIスキャンエンジンモードは使用できません。ハードウェア別のモード動作については、I/Oハードウェアのドキュメントを参照してください。

NIスキャンエンジンには4つのモードが存在します。

0 初期化モード 起動時に短時間使用されます。
1 構成モード NIスキャンエンジンモードを使用するハードウェアでのスキャンエンジンの設定時のモード。
2 アクティブモード スキャンエンジンが実行され値が更新されるモード。
3 障害モード 重大または回復不可能な障害が発生したときにトリガされるモード。
メモ 障害モードの動作は、ターゲットによって異なります。ハードウェア別の障害モードの動作については、各ターゲットハードウェアのドキュメントを参照してください。

スキャンエンジンモードを表示または構成するには、NI分散システムマネージャを使用します。NI 分散システムマネージャは、EngineStateステータス項目を使用してスキャンエンジンモードの値を表示します。スキャンエンジンモードをプログラム的に読み取るには、「スキャンエンジンモードを取得」VIを使用します。スキャンエンジンモードをプログラム的に読み取るには、「スキャンエンジンモードを設定」VIを使用します。

データ通信方法」ホーム