LabVIEWでは、シェア変数は変数識別子URLにより識別されます。シェア変数をプログラム的に読み書きするには、シェア変数関数のシェア変数refnum入力を使用して、それらのシェア変数の変数識別子URLを指定できます。

メモ また、シェア変数をプログラム的に検索すると、LabVIEWであまりコードを使用せずに複数のシェア変数を読み書きできます。

シェア変数アーキテクチャ

以下は、シェア変数および変数識別子URLに関するLabVIEWの構成項目の概要です。

  • シェア変数―データを読み書きできるメモリ領域。
  • PSP変数NI Publish-Subscribe Protocol (NI-PSP) を使用するネットワーク上にパブリッシュされるデータ項目。PSP変数の一般的な例としては、ネットワーク共有シェア変数、ネットワーク共有が有効なI/O変数、およびNI-DAQmx I/Oサーバを介してパブリッシュされたDAQチャンネルが挙げられます。
  • I/O変数NIスキャンエンジンを使用してシングルポイントI/Oデータにアクセスするシェア変数。
  • 変数コンテナ―変数コンテナのセット。最も一般的な変数コンテナのタイプはプロジェクトライブラリです。しかし、I/Oモジュール、ワイヤレスセンサネットワークノード (WSN)、およびEtherCATデバイスなどの他の項目は、変数コンテナとしても使用できます。変数オブジェクトを参照ダイアログボックスを使用して、現在ネットワークで実行されている変数コンテナを検索できます。
  • 変数エンジン―変数コンテナおよび変数の階層を管理するランタイムコンポーネント。
  • プロジェクトライブラリ―VI、タイプ定義、シェア変数、パレットファイル、および他のプロジェクトライブラリを含む他のファイルの集合体。シェア変数が含まれたプロジェクトライブラリは変数コンテナですが、すべての変数コンテナがプロジェクトライブラリということではありません。
  • ターゲット名―マイコンピュータまたはRTターゲットなど、LabVIEWプロジェクトでターゲット項目に割り当てられる名前。
    メモ (Real-Timeモジュール) RTターゲットプロパティダイアログボックスの一般プロパティページにある名前フィールドを使用して、RTターゲット名を指定することができます。

変数識別子URL構文

変数識別子のURL構文は以下のとおりです。

[変数エンジン]://[ホスト名]/[コンテナ名]/[変数名]

すべての変数識別子URLで、「コンテナ名」および「変数名」コンポーネントを指定する必要があります。しかし、クラスで示される場合は「変数エンジン」を省略できます。変数がVIが実行されているのと同じコンピュータ上でホストされている場合は、「ホスト名」も省略できます。

たとえば、次のLabVIEWプロジェクトには、Network Variables.lvlibコンテナの下にリストされているネットワーク共有シェア変数、およびI/O Module1コンテナの下にリストされているI/O変数が含まれています。

以下の表は、このプロジェクトのいくつかの変数の完全な変数識別子URLを示しています。

変数名 変数タイプ 変数識別子URL
ネットワーク変数1 ネットワーク共有シェア変数 ni.var.psp://My Computer/Network Variables/Network Variable1
AI0 I/O変数 ni.var.io://RT CompactRIO Target/I%2FO Module1/AI0
ネットワーク変数3 ネットワーク共有シェア変数 ni.var.psp://RT CompactRIO Target/RT Network Variables/Network Variable3

変数識別子URLでは、大文字と小文字が区別されません。しかし、構文解析エラーを回避するために、予約された文字を対応するエスケープコードに置き換える必要があります。たとえば、文字をエスケープコードの%2Fに置き換える必要があります。

URLの変数エンジンコンポーネントは、読み取りまたは書き込みを予定する変数のタイプに依存します。以下の表には、シェア変数関数がサポートするシェア変数の各タイプ用の変数エンジンURLが含まれています。

タイプ 変数エンジンURL
ネットワーク共有シェア変数、I/O変数、またはI/Oエイリアス (リモートアクセス) ni.var.psp
I/O変数またはI/Oエイリアス (ローカルアクセス) ni.var.io

PSP変数エンジンまたはI/O変数エンジンのいずれかを使用して、ネットワーク共有I/O変数またはI/Oエイリアスにアクセスできます。I/O変数エンジン (ni.var.io) を使用して、ネットワーク共有I/O変数またはI/Oエイリアスの読み取りまたは書き込みをローカルで実行します。PSP変数エンジン (ni.var.psp) を使用して、ネットワーク共有I/O変数またはI/Oエイリアスの読み取りまたは書き込みをリモートで実行します。

URLの変数エンジンコンポーネントは黙示的であるため、以下のいずれかのクラスを使用する場合は任意となります。

  • PSP変数エンジン
  • I/O変数エンジン
  • PSP変数コンテナ
  • I/O変数コンテナ
  • PSP変数
  • I/O変数

この場合、URLの変数エンジンコンポーネントは省略可能で、以下のURL構文を使用します。

//[ホスト名]/[コンテナ名]/[変数名]

変数エンジンを黙示しない一般クラスを使用する場合、変数エンジンを指定しないと、LabVIEWは以下の優先順位で変数エンジンを検索することで、変数識別子URLの決定を試みます。

  1. I/O変数エンジン
  2. PSP変数エンジン

この例では、複数のエンジンに一致するURLがある場合、LabVIEWは一致する1つ目のURLを使用します。

変数識別子URLの[ホスト名]コンポーネントはオプションです。ホスト名は、DNS名、ターゲット名、またはIPアドレスとして指定できます。変数識別子URLでホスト名を指定しない場合、LabVIEWはVIが実行されるコンピュータをホストであるとみなします。文字列localhostを使用して、VIを実行するコンピュータを明示的に指定することもできます。名前の競合を回避するには、できる限り固有の名前を使用します。

ホスト名を指定する必要がない場合は、以下のURL構文を使用できます。

/[コンテナ名]/[変数名]

指定したホスト名が、たとえばプロジェクト名とDNS名の両方など、1つ以上の解釈ができる場合、LabVIEWは以下の優先順位で指定されたホスト名の有効な解釈を検索します。

  1. ターゲット名 (LabVIEWプロジェクトで指定された名前)
  2. DNS名
  3. IPアドレス

コンテナ内の各シェア変数の名前は固有である必要があります。しかし、変数識別にはコンテナ名が含まれるため、別のコンテナの変数が同じ変数名を共有しても、固有の変数識別を維持することができます。