このトピックでは、LabVIEW Real-Timeモジュールアプリケーションでシェア変数を効果的に使用するためのガイドラインを説明します。

適切な数のシェア変数を使用する

CPU使用率を最小に抑えるためには、ネットワーク共有シェア変数の過度の使用を避ける必要があります。多チャンネルアプリケーションの場合、チャンネルを単一の配列にまとめ、1つのネットワーク共有シェア変数としてその配列を転送することを検討してください。

RT FIFOが有効なシェア変数を使用して確定的通信をする

LabVIEWでは、異なるループで実行されるタスク間のデータを、いくつかの方法で受け渡すことができます。ただし、これらの方法の多くは確定性に影響する可能性があります。LabVIEW Real-Timeモジュールでは、確定的ループと非確定的ループの間の通信にRT FIFOが有効なシェア変数を使用できます。

RT FIFOが有効化されたシェア変数を使用する例については、labview\examples\Real-Time Module\RT Communication\RT FIFO VariablesRT FIFO Variables - local.lvprojを参照してください。

不要なバッファを避ける

バッファ処理は、CPUとメモリリソースを大きく消費します。ネットワーク共有シェア変数に書き込まれたすべての値を読み取る必要がある時のみに、シェア変数プロパティダイアログボックスのネットワークページにあるバッファを使用チェックボックスをオンにします。バッファは、一時的なネットワークの遅延によるデータ損失を防ぐために役立ちますが、無損失のデータ転送を保証するわけではありません。バッファのオーバーフローによって、古いデータが上書きされ、警告が発生する場合もあります。

多チャンネルアプリケーションでプログラム的アクセスを使用する

多チャンネルアプリケーションで簡潔で拡張性のあるブロックダイアグラムを作成するには、シェア変数パレットのプログラム的アクセス関数を使用します。

シェア変数の実行を直列化する

シェア変数アクセサを直列的に実行することで、パフォーマンスを向上し、競合状態を回避することができます。直列的実行には、シェア変数ノードまたはシェア変数プログラム的アクセス関数のエラー入力端子とエラー出力端子を使用します。明示的に実行を直列化すればスケジューリングのオーバーヘッドが最小化され、パフォーマンスを向上させることができます。

たとえば、以下のブロックダイアグラムは、3つのシェア変数からの値を並列で読み取ります。

以下のブロックダイアグラムは、実行を直列化するために、シェア変数のエラー入力およびエラー出力端子を使用します。

古いシェア変数データの読み取りを回避する

ループで同じデータが繰り返し読み取られないようにするためには、シェア変数ノードまたは「タイムアウト付きで変数を読み取る」関数のミリ秒タイムアウト入力を使用します。シェア変数ノードにミリ秒タイムアウト入力を追加するには、シェア変数ノードを右クリックして、ショートカットメニューからタイムスタンプを表示を選択します。データ読み取り用に構成されたシェア変数ノードのタイムアウト期間だけを有効にできます。ローカルでI/O変数にアクセスするノードのタイムアウト期間は有効にできません。

前回のアプリケーション実行時からくる古いデータの読み取りを回避するためには、シェア変数ライブラリをデプロイ解除してから再度デプロイして、すべてのシェア変数の値をクリアします。アプリケーション実行前にシェア変数をデプロイし、アプリケーション終了時にシェア変数ライブラリをデプロイ解除するようスタンドアロンRTアプリケーションを構成するためには、アプリケーションプロパティダイアログボックスのシェア変数のデプロイページを使用します。

シェア変数を初期化する

アプリケーションが古いシェア変数データを使用しないようにするため、アプリケーションの継続的タスクループを実行する前にすべてのシェア変数を初期化します。別のコンピュータでホストされるバッファされていないネットワーク共有シェア変数を初期化するには、デフォルト値をシェア変数に書き込み、ネットワークを介してホストコンピュータで実行されているシェア変数エンジンに初期化した値が反映され、それがRTターゲットに反映されるまで待機します。以下のブロックダイアグラムは、バッファされていないネットワーク共有シェア変数の初期化例を示します。

メモ バッファされたネットワーク共有シェア変数を初期化するには、シェア変数ライブラリをデプロイ解除してから再度デプロイします。

シェア変数のホストに適切なデバイスを選択する

特定の状況では、シェア変数をRTターゲットでホストすることが合理的です。ただし、シェア変数はホストPCでホストする方が適切な場合もあります。アプリケーションを仕上げる前に、シェア変数が最も適切なデバイスでホストされていることを確認してください。以下の表は、RTターゲットでシェア変数をホストする場合の利点と欠点をまとめたものです。

利点 欠点
1つのRTターゲットでホストされたシェア変数に複数のコンピュータからアクセスできる RTターゲットのCPUオーバーヘッドが増加する
RTターゲットが安定することで稼働時間が延びる RTターゲットのメモリオーバーヘッドが増加する