NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

複数のviを同時に開始したい

LabVIEWで別々のviを同時に開始する方法はありますか。

現在シリアル通信で別々の3機器と通信して計測と制御をしているのですが、

1つ1つのプログラムが大きく、フロントパネルをそのまま生かしたいのでなるべくサブviにしたくない状況です。

1つのviにしてしまってもよいのですが(今はそうしているのですが)

別々のままで同時に開始できないでしょうか。

0 件の賞賛
メッセージ1/4
5,860件の閲覧回数

通信を含むということで、3つのviで通信がぶつからない(3つのviを一緒に実行しても大丈夫)という前提ですが、

3つのviを含む「上位のvi」(launcher)を作っておいて実行すれば、3つのviを同時に実行できます。

 

launcher の中に置いた3つのviは、すべて、右クリックで「サブviノード設定」(又はそれに類する設定)で

●呼び出されたらフロントパネルを表示する

●元々閉じていたら閉じる (←終了したとき閉じてよければ)

にチェックしておきます。

(そうしないと、呼ばれたときフロントパネルが開かないまま実行されてしまう)

 

それで、このlauncherのviを実行すれば、そのサブviである元の3つのviが(ほぼ)同時に呼び出され、

フロントパネルが開き、実行が開始されます。3つのviは独立に、並列で実行されます。

 

3つのviすべてが終了したとき、launcherも終了します。

 

なお、添付は古いversionのものなので、最近のversionではプルダウンメニューなどが

違うかも知れませんが、基本的には同等なことができるはず、と思います。

上位vi側で「サブviノード設定」するほかに、元のviを「vi設定」で同じ設定をして保存しておいてもOKです。

 

この方法で所望のことになるでしょうか。

 

0 件の賞賛
メッセージ2/4
5,855件の閲覧回数

M.Shiraishi様

 

ご回答ありがとうございます。

基本的な質問にも関わらずありがとうございます。

それぞれのviで初期値を代入する際にあらかじめviを開いておかないといけないのですが
lancher.viを実行した際二重にviが開くことがないかだけ心配です。

 

基本的にはこの方法で解決できると思います。

0 件の賞賛
メッセージ3/4
5,800件の閲覧回数

>>lancher.viを実行した際二重にviが開くことがないかだけ心配です。

 

それはないのでご安心ください。

LabVIEWは、メモリ内に、「同じ名前のvi」自体が1つしかロードできませんで、

全く同一のviはもちろん、他の場所にある無関係なviであっても、同じ名前のものは

メモリに置いてくれないようになっているようです。

 

従って、既に、実行したいプログラムのviが開いているのであれば、目の前の「それ」が実行されます。

(再入実行でない限り)

 

>>それぞれのviで初期値を代入する際にあらかじめviを開いておかないといけないのですが

 

基本的には、あらかじめviを開いて、初期値を入れておいて、それでlauncherを実行すればOKです。

 

ただし、以下の点に注意してください。

 

それぞれのviの制御器が、別のviから呼び出せるように「入力端子」に設定してある場合は、

そのまんま呼び出すと、デフォルト値にリセットされてしまいます。

この場合は、それぞれのvi上の制御器で値をセットするのではなく、launcherのダイヤグラムで

アイコンに値を配線してやって下さい。

 

それぞれのviの制御器が、特に入力端子に設定してなければ、そのまんま呼び出したときは

その値のまま実行されます。

 

それぞれのviが、もともと「最上位vi」だと思いますので、後者だと思いますが。。

 

0 件の賞賛
メッセージ4/4
5,790件の閲覧回数