NI製品ディスカッション

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

myrio タイマ

解決済み
解決策を見る

 myRIO及びLabViewに関する質問です。

 

 20秒間続けるwhileループを、10秒経過時点でDIOを使用したスイッチで終了した後、ループを再開すると、10秒経過した状態から再開するプログラムを作成したいと考えています。

 Timingパレットの経過時間関数では、ループ終了後もカウントが続いてしまい、再開時に秒数がずれていました。

 

 ご教授のほど、よろしくお願いします。

 

0 件の賞賛
メッセージ1/9
2,067件の閲覧回数

状況があまり把握できませんが、20秒間の間にDIO操作を含むようですので、待機関数で10秒待機してからDIO操作を行い、その後に2つ目の待機関数で10秒待機するようなシーケンス(順次)処理にするというのは如何でしょうか?

0 件の賞賛
メッセージ2/9
2,044件の閲覧回数

 返信が遅くなってしまい申し訳ありません。

 

 DIOと表記してましたが、AIの間違いでした。申し訳ありません。

 添付したVIのように、AI0の入力でwhileループを開始させ、10秒経過後、AI1の入力で停止させ、whileループを終了させたのち、再度AI0の入力でwhileループを開始させると、10秒経過時点から再開させたいと考えています。

 

 わかりづらい説明で申し訳ありません。よろしくお願いします。

0 件の賞賛
メッセージ3/9
2,001件の閲覧回数

VIが添付されていないようです。

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

 申し訳ありません。添付いたしました。

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

添付いただいたコードでは、配列の指標0の値が3を超えないとケースストラクチャには入りません。

ケースストラクチャのTrueケース内にあるWhileループは、経過時間の設定がありますので、ターゲット時間が経過したら停止する流れになっています。

 

AI0も時間指定をするのでしたら、経過時間でケースストラクチャに入るようにしては如何でしょうか?

 

0 件の賞賛
メッセージ6/9
1,981件の閲覧回数

 早急のご返信ありがとうございます。

 

 例として、ケースストラクチャ内のwhileループが開始されてから5秒後にwhileを終了させたとしたら、再度whileループを開始させたときに、残り15秒間ループしてほしいのです。

 経過時間関数では本体時間の経過しか図れないのは承知しています。

 代替の案をご教授頂けないでしょうか?

 

0 件の賞賛
メッセージ7/9
1,978件の閲覧回数
解決策
受理者 rinen

10秒間処理する予定が5秒で停止した場合、次のループでその差分を追加したいということでしょうか?それでしたら、足りない時間をシフトレジスタで次のループに渡して、加算すればよいかと思います。

プロトタイプを作成してみましたのでご確認ください。

メッセージ8/9
1,961件の閲覧回数

  ありがとうございます。

 参考にしてみます。

0 件の賞賛
メッセージ9/9
1,929件の閲覧回数