02-06-2020 06:38 AM
whileループ内でティックカウント関数と次のミリ秒倍数まで待機関数を用いて、一定間隔で動作しているかを監視するプログラムを作成しております。
80msで一定動作すると思っているのですが、79ms~81msと変動してしまいます。
LabVIEW_v2011では問題なく80msが出力され続けたのですが、v2016で変わってしまいます。
原因についてわかることがあればご教授お願い致します。
添付のプログラムはv2016_32bitで作成しています。
解決済! 解決策の投稿を見る。
02-06-2020 11:05 PM
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にわざと負荷をかけた環境で実行すればばらつきがでるんじゃないかなと思うのですがいかがでしょうか?
02-07-2020 01:03 AM
marble_workerさん、ご回答ありがとうございます。
windows OSの依存ということ理解しました。
今回windows7のサポート終了に伴いwindows10にしたことでv2011がwindows10に対応していなかったため
v2016にしたという経緯でこのような症状が出てきました。
PC自体は、同じものですが確かにOS違いによる更新頻度や割り込み入り方が違いがあると思いますので
別の方法で時間監視を検討しようかと思います。
02-07-2020 03:14 AM
sugiuraさん、
win7からwin10に変えたということだったんですね。
割り込み処理の発生は仕方ないと思うのでループのばらつきはある程度は許容するしかないですね・・・。
頑張ってください!