NI製品ディスカッション

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

ティックカウントを用いた一定時間の監視

解決済み
解決策を見る

whileループ内でティックカウント関数と次のミリ秒倍数まで待機関数を用いて、一定間隔で動作しているかを監視するプログラムを作成しております。

 

80msで一定動作すると思っているのですが、79ms~81msと変動してしまいます。

LabVIEW_v2011では問題なく80msが出力され続けたのですが、v2016で変わってしまいます。

原因についてわかることがあればご教授お願い致します。

 

添付のプログラムはv2016_32bitで作成しています。

すべてをダウンロード
0 件の賞賛
メッセージ1/4
2,750件の閲覧回数
解決策
トピック作成者sugiuraが受理

sugiuraさん、こんにちは

 

添付されているプログラム、拝見しました。

ループの速度にばらつきがでるのは、windows OSだからある程度仕方ないと思います。

(windowsはLabVIEW以外の、バックグラウンドで動いているアプリケーションも含めて、様々なアプリケーションが実行されているため、CPUのリソース状況によってループ速度にばらつきが出るかと)

NI社のReal Time OSであれば、ループのタイミングのばらつき(ジッタ)はwindows OSよりも少なくなると思います。

 

リアルタイムオペレーティングシステム(RTOS)とは - National Instruments
https://www.ni.com/ja-jp/innovations/white-papers/07/what-is-a-real-time-operating-system--rtos--.ht...

 

また、LV 2011ではばらつかなかった、ということですが、同じPCでLV 2011、LV 2016それぞれで動作させていましたか?あるいは、LV 2011で動作させていても、CPUにわざと負荷をかけた環境で実行すればばらつきがでるんじゃないかなと思うのですがいかがでしょうか?

メッセージ2/4
2,704件の閲覧回数

marble_workerさん、ご回答ありがとうございます。

 

windows OSの依存ということ理解しました。

 

今回windows7のサポート終了に伴いwindows10にしたことでv2011がwindows10に対応していなかったため

v2016にしたという経緯でこのような症状が出てきました。

 

PC自体は、同じものですが確かにOS違いによる更新頻度や割り込み入り方が違いがあると思いますので

別の方法で時間監視を検討しようかと思います。

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

sugiuraさん、

 

win7からwin10に変えたということだったんですね。

割り込み処理の発生は仕方ないと思うのでループのばらつきはある程度は許容するしかないですね・・・。

 

頑張ってください!

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