From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



設定した値よりも長い時間遅延が生じます



使用ソフトウェア:
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題: While/Forループ内で様々なタスクを行うようなプログラムを実行しています。ループ内に遅延を置くことにより同期を取ろうとしています。次のミリ秒まで待機関数を使用して遅延させているのですが、ループの遅延が設定通りに実行されているように見えません。2秒間の遅延をおくため次のミリ秒まで待機の入力端子に2000を入力させているのですが、ループの遅延は4秒生じています。何故正常に動作しないのでしょうか。

解決策: 次のミリ秒まで待機関数はOSのミリ秒タイマの値が指定した値の倍数になるまで待機します。しかしながら、遅延時間を2秒に設定したとしても、ループ内で行っているタスクが2秒以上かかる場合にはタスク終了まで次のループは実行されません。遅延時間以内でタスクが終了した場合は、OSのタイマが指定したミリ秒の倍数になった時に次のループを実行します。

ループ実行の同期を取りたい場合は、ループ内で行われるタスクが全て終了する時間よりも遅延時間を長く設定する必要があります。

メモ:次のミリ秒まで待機関数を使用した場合に最初のループは指定した待機時間で実行されません。これについての詳細な情報に関しましては下記のリンクを参照して下さい。


関連リンク:
KnowledgeBase 2G27ANEW: "Wait Until Next ms Multiple"関数は一番最初のループの待ち時間を正確に刻むことができません。
KnowledgeBase 0EF854SG: "Wait (ms)"と "Wait Until Next ms Multiple"の違いはなんですか?

添付:





報告日時: 05/17/2002
最終更新日: 12/27/2004
ドキュメントID: 2LGDRADJ