12-21-2016 02:00 AM
どうか知恵をお貸しいただけると幸いです。
最近、LabVIEW を始めたものでして、初歩的な質問になってしまうかと思われますが、ご容赦願います。
行いたいこととしまして以下のとおりです。
遅延時間とブーリアンを組み合わせた動作に関してです。
まず「On going」と「Finished」のランプがあります。
①「START」を押すと、「On going」ランプが点灯(T)になる。(このときFinishedランプは点灯していない)
②規定ミリ秒経過した後「On going」は消灯(F)し、「Finished」ランプが点灯(T)する。
これを実現したいのですが、うまくできず困っております。
自分が作成したファイルとブロック図のスクリーンショットを添付いたします。
みなさまのお知恵を拝借できますと幸いです。
よろしくお願いいたします。
解決済! 解決策の投稿を見る。
12-22-2016 08:46 AM
うまくいかないのは、On goingとFinishedのBOOLへの書き込みが、3コマのフラットシーケンスがすべて終わってしまった後だからですね。
このままでやるのであれば、フラットシーケンスの各コマでOn going, Finishedに書き込む必要があります。
この場合は、On goingとFinishedのローカル変数を作って(ダイヤグラムでそれぞれの端子を右クリック→作成からローカル変数を選択)それを、1コマ目、2コマ目などに配置します。どれか1つは端子そのもので良いです。
なお、提示の方法の場合、所定時間On goingが点灯して消灯するまではフラットシーケンスに入ったままなので、ループの方の処理に他のことが書いてある場合はその処理は待たされてしまいます。
他には、例えば添付のような方法もあります。
これは、ループの処理は待たすことなく、遷移状態を保持することで次に何をすべきか書いています。On goingを点灯して計時中も、ループは回っています。
(さらには、初期状態、Startが押された最初の状態、On going点灯中で計時中、On goingを消灯してFinishedを点灯する状態、などの状態を番号化して、ステートマシンとして記述する方法もあります)
01-23-2017 08:48 PM
Shiraishi さま、
お返事が遅れてしまい誠に申し訳ございません。
また非常にわかりやすいご説明での解決策を教えてくださり、大変ありがたいです。
フラットシーケンスの動作順序の解釈が当方で間違っていたのですね。
またローカル変数というものをLabVIEWでどのように取り扱えばよいか、
わかっていなかったのですが、
教えていただいたやり方でとても簡単に行うことができました。
重ね重ねのお礼になりますが、ご解決策をご教示いただき、このたびは誠にありがとうございました。