10-28-2019 12:47 AM
myRIO及びLabViewに関する質問です。
20秒間続けるwhileループを、10秒経過時点でDIOを使用したスイッチで終了した後、ループを再開すると、10秒経過した状態から再開するプログラムを作成したいと考えています。
Timingパレットの経過時間関数では、ループ終了後もカウントが続いてしまい、再開時に秒数がずれていました。
ご教授のほど、よろしくお願いします。
解決済! 解決策の投稿を見る。
10-28-2019 02:43 AM
状況があまり把握できませんが、20秒間の間にDIO操作を含むようですので、待機関数で10秒待機してからDIO操作を行い、その後に2つ目の待機関数で10秒待機するようなシーケンス(順次)処理にするというのは如何でしょうか?
10-31-2019 08:24 PM
返信が遅くなってしまい申し訳ありません。
DIOと表記してましたが、AIの間違いでした。申し訳ありません。
添付したVIのように、AI0の入力でwhileループを開始させ、10秒経過後、AI1の入力で停止させ、whileループを終了させたのち、再度AI0の入力でwhileループを開始させると、10秒経過時点から再開させたいと考えています。
わかりづらい説明で申し訳ありません。よろしくお願いします。
10-31-2019 09:00 PM
VIが添付されていないようです。
10-31-2019 09:08 PM
申し訳ありません。添付いたしました。
10-31-2019 09:34 PM
添付いただいたコードでは、配列の指標0の値が3を超えないとケースストラクチャには入りません。
ケースストラクチャのTrueケース内にあるWhileループは、経過時間の設定がありますので、ターゲット時間が経過したら停止する流れになっています。
AI0も時間指定をするのでしたら、経過時間でケースストラクチャに入るようにしては如何でしょうか?
10-31-2019 09:44 PM
早急のご返信ありがとうございます。
例として、ケースストラクチャ内のwhileループが開始されてから5秒後にwhileを終了させたとしたら、再度whileループを開始させたときに、残り15秒間ループしてほしいのです。
経過時間関数では本体時間の経過しか図れないのは承知しています。
代替の案をご教授頂けないでしょうか?
10-31-2019 11:38 PM
10秒間処理する予定が5秒で停止した場合、次のループでその差分を追加したいということでしょうか?それでしたら、足りない時間をシフトレジスタで次のループに渡して、加算すればよいかと思います。
プロトタイプを作成してみましたのでご確認ください。
11-13-2019 10:13 PM
ありがとうございます。
参考にしてみます。