LabVIEWの「次のミリ秒倍数まで待機(Wait Until Next ms Multiple)」関数が、最初のループでは設定した値で待機しないことがある



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

問題: 「次のミリ秒倍数まで待機(Wait Until Next ms Multiple)」関数を使用してWhileループの動作タイミングを指定しています。LabVIEW Real-Time でよく起きるのですが、Windows 環境のLabVIEWでも同様なことが起きます。たとえば、この関数をWhileループの中に配置し、5,000ミリ秒の定数を「ミリ秒」パラメータに配線します。最初の反復での実際の待機時間は0ミリから5,000ミリの間のランダムな値となってしまいます。なぜ、こういった現象が起こるのでしょうか?また、どのように対応したらいいでしょうか?

解決策: 「次のミリ秒倍数まで待機(Wait Until Next ms Multiple)」関数は、タイムスタンプをユーザーのコンピューターの内部クロックから取得し,タイムスタンプの値が指定した値で割りきれる値(余りが0)になるまで待ちます。したがって、この関数が最初に呼び出されたときの待機時間は、使用しているコンピューターの絶対時間に依存してしまいます。

例えば、ループが始めて実行されたときの内部クロックが1072005であった場合、最初の反復は内部クロックが1075000のときに起こります、この場合実際の待機時間は2995ミリ秒ということになります。

ループの反復は一度目で調整されますので、それ以降の反復は設定した時間だけ待機することになります。したがって、はじめのループをダミーループにすることで、それ以降の全てのループのタイミングを同じにすることができます。

関連リンク: 技術データベース 2G27ANEW: "Wait Until Next ms Multiple"関数は一番最初のループの待ち時間を正確に刻むことができません

添付:





報告日時: 12/12/2003
最終更新日: 09/23/2005
ドキュメントID: 34B2NDO0