サブVIからメインVIの制御器/表示器の値を読み書きする

更新しました Aug 7, 2023

環境

ソフトウェア

  • LabVIEW

プログラミング言語

  • LabVIEW G

  • サブVIの実行中に、最上位のVIにある制御器および表示器をサブVIにある現在の制御器ステータスおよび表示器の値で更新したいです。これを行うにはどうすればよいですか?
  • メインVIにいくつかの制御器と表示器があり、サブVIでそれらの値にアクセスしたいです。サブVIからメインVIの制御器または表示器の値を読み書きするにはどうすればよいですか?

LabVIEWでは、フロントパネルの各制御器または表示器は、プロジェクトの任意の部分に渡すことができ、値を含む任意のプロパティにアクセスするために使用できる固有のリファレンスを持っています。以下の手順では、制御器または表示器のリファレンスノードを作成してそれをサブVIに渡し、サブVI内で制御器または表示器を読み書きする方法を説明します。



 

メインVI側

  1. ブロックダイアグラムを開き、サブVIでアクセスしたい制御器/表示器を右クリックします。
  2. 作成>>リファレンスを選択してこの制御器/表示器のリファレンスノードを作成し、それをブロックダイアグラムに配置します。

 

 

サブVI側

  1. フロントパネルを開き、制御器Refnumを追加します。これにはいくつかの方法があります。
    1. この制御タイプの定数をメインVIからコピーして、サブVIのフロントパネルに貼り付ける:
      1. メインVIで作成したリファレンスノードを右クリックして、作成>>定数を選択します。
      2. 定数ノードを選択して、<Ctrl + X>を押して切り取ります。
      3. サブVIのフロントパネルを開き、<Ctrl+V>を押します。定数ノードが貼り付けられ、自動的に同じタイプの制御器に変更されます。
    2. サブVIのフロントパネルに直接制御器Refnumを作成する:
      1. サブVIのフロントパネルを右クリックして、制御器パレット>>モダン>>Refnum >>制御器Refnumを選択します。
      2. メインVIの制御器の種類に基づいて適切なVIサーバクラスを選択します。制御Refnumを右クリックして、VIサーバクラスを選択>>一般>> GObject >>制御>>[適切な制御タイプを選択]を選択します。

         
  2. 下図のようにサブVIのブロックダイアグラムで、Refnumに対して暗示的なプロパティノードを作成します。プロパティノードは、関数パレット>>プログラミング>>アプリケーション制御>>プロパティノードにあります。
  3. 制御器Refnumを暗黙的なプロパティノードのリファレンス入力に配線します。
  4. プロパティノードのドロップダウンリストをクリックして、入力パラメータとしてを選択します。
  5. パラメータを右クリックして書き込みに変更を選択し、パラメータへの入力をできるようにします。
  6. 変更したいデータを暗黙的なプロパティノード入力に配線します。


     
  1. 制御RefnumをサブVIのコネクタペーン端子にリンクすると、リファレンスをメインVIからサブVIに渡すことができます。

 

 

メインVI側

  1. ブロックダイアグラムを開き、リファレンスノードを新しく作成したサブVIの端子に配線します。

Additional Information

メインVIを実行すると、サブVI内の制御器に加えられた変更は、メインVI内でも更新されます。これは、それらが制御器リファレンスを通じてリンクされているためです。
 

プロパティノードは、値だけでなく他のさまざまな制御器/表示器プロパティにアクセスするためにも利用できます。