プロジェクトまたはネットワークにあるVI間でデータを読み書きするには、シェア変数を使用します。プロジェクトエクスプローラウィンドウでRTターゲットを右クリックし、ショートカットメニューから新規→変数を選択して、シェア変数プロパティダイアログボックスを開きます。このダイアログボックスでシェア変数を作成し、オプションを設定します。シェア変数は、ブロックダイアグラム内のワイヤで接続できない2点間、1つのRTターゲット上で実行される2つのVI間、異なるターゲットで実行されるVI間でデータを共有するために構成されたソフトウェア項目です。データを1つのRTターゲット上でローカルに共有するには単一プロセスシェア変数、異なるマシン上のVI間でデータロギングを目的としてデータを共有するにはネットワークで共有されたシェア変数を使用します。

Real-Timeモジュールは、シェア変数にReal-Time FIFO機能を追加します。シェア変数のReal-Time FIFOを有効にすることにより、VIの確定性を損なうことなくデータ共有を行うことができます。ただしRT FIFOは、クラスタ、文字列、およびバリアントなどの可変サイズのデータタイプをサポートしていません。

メモ シェア変数のパフォーマンスベンチマークと高度なプログラミング概念については、NI Webサイトを参照してください。

シェア変数を作成する

RTターゲットでシェア変数を作成するには、シェア変数プロパティダイアログボックスを使用します。このダイアログボックスにアクセスするには、プロジェクトエクスプローラウィンドウでターゲットの下のライブラリまたはターゲットを右クリックして、ショートカットメニューから新規→変数を選択します。ターゲット上で新規→変数を選択した場合は、ターゲットに新しいライブラリが作成され、そのライブラリの下に変数が追加されます。既存のライブラリ上で新規→変数を選択した場合は、そのライブラリの下に新しい変数が作成されます。ターゲットに変数をデプロイするには、ライブラリを右クリックしてショートカットメニューからデプロイを選択します。

メモ 変数は、それを呼び出すVIが実行されると自動的にデプロイされます。この自動デプロイメント機能は、RTターゲットの設定で無効にできます。

シェア変数エンジン

ネットワークで共有されるシェア変数をターゲットに作成すると、ターゲットのシェア変数エンジンがそのシェア変数をホストします。シェア変数エンジンは、ネットワーク上の他のターゲットにデータを送信します。シェア変数のホストは、プロジェクトエクスプローラウィンドウでシェア変数を作成したターゲットです。

RTターゲットでネットワーク共有シェア変数をホストする場合、データはターゲットによって制御され、他のターゲットはそのシェア変数の使用に関与しません。シェア変数が使用可か不可かを考慮する必要がない場合は、シェア変数をホストコンピュータでホストすることをお勧めします。これにより、ターゲットのプロセッサの負荷が軽減され、シェア変数エンジンをサポートしないターゲットもシェア変数にアクセスでき、LabVIEW DSCモジュールのセキュリティ機能の使用が可能となります。

以下の図は、単一プロセスとネットワーク共有シェア変数を使用して、データをローカルまたはネットワーク上のVI間で共有するReal-Timeモジュールアプリケーションを示しています。

RTターゲットで実行中の確定的VIは、単一プロセスシェア変数 (変数B) を使用して同じターゲット上の他のVIとデータを共有します。また、ホストコンピュータのVIとは、RT FIFOが有効にされたネットワーク共有シェア変数 (変数A) を使用してデータを共有します。RTターゲットのネットワーク共有シェア変数は、同じターゲットで実行されているシェア変数エンジンにデータを送信し、そのデータがホストコンピュータと共有されます。

メモ ネットワーク共有シェア変数をRTターゲットでホストするには、そのターゲットにネットワーク変数エンジンと変数クライアントサポートソフトウェアをインストールする必要があります。RTターゲットでシェア変数エンジンを実行するには、32 MB以上のRAMが必要です。ただし、別のマシンでホストされているネットワーク共有シェア変数を参照するだけであれば、変数クライアントサポートソフトウェアをインストールするだけで済みます。この場合必要なRAMは32 MB未満です。

既存のシェア変数の構成は、シェア変数プロパティダイアログボックスで変更できます。このダイアログボックスを開くには、プロジェクトエクスプローラウィンドウでシェア変数を右クリックし、ショートカットメニューからプロパティを選択します。シェア変数のプロパティの変更内容は、変数をデプロイするまで有効になりません。

Real-Time FIFOを有効にする

シェア変数のReal-Time FIFOを有効にするには、シェア変数プロパティダイアログボックスのRT FIFOページを開きます。RT FIFOを有効チェックボックスをオンにすると、単一要素またはマルチ要素FIFOを使用してデータを確定的に共有できます。

単一要素FIFO

単一要素FIFOでは、最新のデータ値を共有します。新しいデータ値を受け取ると、シェア変数の古いデータ値は上書きされます。最新値のみが必要な場合は、このオプションを使用します。配列データタイプまたは波形データタイプを選択した場合は、FIFOバッファの配列要素のサイズまたは波形のサイズを設定します。

マルチ要素FIFO

マルチ要素FIFOは、シェア変数で共有する値をバッファします。FIFOバッファのサイズと要素は、ネットワークページのバッファを使用セクションでの設定に一致するよう設定できます。または、FIFOおよびFIFO要素のカスタムサイズを設定できます。

メモ 変数に配列データまたは波形データが含まれる場合、単一要素FIFOとマルチ要素FIFOのサイズは共有するデータのサイズと同じに設定する必要があります。ネットワークバッファとRT FIFOの両方が有効な場合、ネットワークバッファは少なくともFIFO要素の1つと同じ大きさでなければなりません。指定された大きさとはサイズが異なるデータを共有すると、メモリの割り当てが発生し確定性が損なわれます。
メモ 波形には、Real-Time FIFOと互換性がない可変サイズのバリアント要素が含まれます。そのため、波形データを含むシェア変数のReal-Time FIFOを有効にすると、波形データのバリアント要素は転送されません。