複数の並列ループを一度に停止する方法



ハードウェア: PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers

問題:
2つのWhileループを一つの停止ボタンでまとめて停止させるにはどうすればよいですか?一方のWhileループの停止ボタンのローカル変数をもう一方のWhileループの停止条件に渡せば可能かと思いましたが、VIが実行不可能になってしまいます。

解決策:

ローカル変数を使用して並行する複数のループを停止させることは正しい方法です。しかし、ローカル変数を作成する際に注意が必要です。LabVIEWの「トグル&スイッチ」パレットに存在する全ての制御器は「機械的動作」の設定が可能であり、これらのローカル変数を作成する際、必ず「ラッチ動作」「スイッチ動作」に変更する必要があります。「ラッチ動作」に設定した制御器のローカル変数を作成するとVIの実行ボタンが壊れ、実行不可能になる仕様です。逆に「スイッチ動作」にすれば実行可能状態に戻ります。

「ラッチ動作」を「スイッチ動作」に変更するには、フロントパネルではブール制御器上で右クリック→「機械的動作」で「押されたらスイッチ」、「放されたらスイッチ」、「放されるまでスイッチ」のいずれかを選択します。ブロックダイアグラムからはブール制御器のプロパティを開き「操作」タブから行えます。

しかし、スイッチ動作にしてしまうと、ブール制御器の状態がカーソルクリックによって変更された後は変更後の値を保ち続けるようになります。ラッチ動作のようにデフォルトの状態に自動的に戻ることがありません。この問題は、プログラム的に初期化を行うことで回避することができます。

下記の図ではWhileループの初期化を行うため、プログラム終了直前にローカル変数にFalse定数を渡しています。

パラレルループでの初期化



関連リンク:

KnowledgeBase 25NBPADM: LabVIEW Error 91 or Error 1193 with Boolean References and Local Variables
KnowledgeBase 3GGDIMTY:Stopping Parallel While Loops in LabVIEW With One Stop Button
KnowledgeBase 31PA13MV: SubVI Indicator Resets to Default Value when Case Structure State Changes



添付:





報告日時: 09/26/2004
最終更新日: 06/25/2009
ドキュメントID: 3DPCC8F4