04-08-2015 12:12 AM
一画面上にチャート表示を一度に12個並べて表示しています。更新は1秒間に50回です。
以前のバージョン(2012以前)だと、application builderで生成したexeファイルが
WinXP 1GBRAM Core2DuoT7100/1.8Gでも余裕で動いていたのですが、
2014だと上記スペックを上回るマシンでも更新が間に合わずにもたついてしまいます。
何か解決の方法はないでしょうか?
マルチコアの設定など、チャート描画を速くする設定などがありましたらご教示下さい。
64bitのLabVIEWで構築した方が速くなるのでしょうか?
04-08-2015 11:59 PM
こんにちは、
>>2012以前
こちらバージョンは具体的にはどのバージョンですか?
>>上記スペックを上回るマシン
こちらはどのようなスペックのパソコンですか?OSによっては動作速度が変わる事もありますので、同じ環境でのテストを行っていただきたいです。
LabVIEW2014で作られたEXEと2012のEXEは同じviから作成したEXEですか?もし違うviから作成したEXEを使っている場合は単純に比較することは難しいかと思います。
64ビットのLabVIEWは以下の注意点があります。
1.英語版のみです。
2.64ビットのLabVIEWで作られたプログラムは64ビットのOS環境のみで動作します。
LabVIEW 32ビット、64ビットに関した英語の資料ですが参照してください。
http://digital.ni.com/public.nsf/allkb/71E9408E6DEAD76C8625760B006B6F98
04-14-2015 09:38 PM
> OSによっては動作速度が変わる事もありますので、同じ環境でのテストを行っていただきたいです。
dragon1さんのご指摘をもとに、たまたまスペックがほぼ同一でOSのみ異なる2台のマシンを用意し、
検証してみました。
マシン1:
Win8.1 Pro 64bit Core2Duo T7100 1.80GHz 8GBRAM
マシン2:
WinXP Pro 32bit Core2Duo T7100 1.80GHz 2GBRAM
ビルドは上記2台のマシンとは別のマシン上でLabVIEW 2014 SP1 32bitで行い、
exeを走らせて検証しました。
結果
マシン1:
かなりもたつく。データの取りこぼしはないが、バッファに貯まった分がチャートに反映されるのが間に合わず、
チャート表示がどんどん遅れていく。そうかと思えば遅れた分を一気に取り戻すようにチャートが速く流れたりと
チャート表示の速度が非常に不安定である。
マシン2:
チャートの遅れは認められない。データは常にチャートにリアルタイムで反映される。
チャートの表示速度も安定している。データの取りこぼしもない。
というような結果となりました。
以上のことから、LabVIEWのパフォーマンスの問題では無く、OSに依存した問題である可能性が高いという
判断となりました。
お騒がせしてすみませんでした。
04-16-2015 08:00 PM
もう少し本質的な話に踏み込みたいのですが、フロントパネルの描画タイミングを変更するのはいかがでしょう?
VIの実行速度 - LabVIEW 2012ヘルプ - National Instruments
http://zone.ni.com/reference/ja-XX/help/371361J-0112/lvconcepts/vi_execution_speed/
「頻繁にフロントパネルで制御器を更新する操作は、アプリケーションで最も時間がかかる操作のうちの1つとなる場合があります。」
「チャートの描画速度が遅い」というのは、PCが描画処理を処理しきれていないのだと思います。
パネルアップデートを延期プロパティ - LabVIEW 2012ヘルプ - National Instruments
http://zone.ni.com/reference/ja-XX/help/371361J-0112/lvprop/pnl_defer_pnl_updts/
このプロパティを使用すると、フロントパネルのアップデートレートを調整することができます。
これを使って、例えば200msec毎にチャートを更新するようにされると、処理が速くなるかも知れません。
例えば1msec毎に更新したいと言っても、人間の目はそこまでの処理速度に追いつけませんので・・・
04-16-2015 09:10 PM
アドバイスありがとうございます。
恥ずかしながら、Tepig様のアドバイスにある「パネルアップデートを延期プロパティ」の
作成方法が分かりません。
どのような手順で出すことが出来るのでしょうか?
ブロックダイヤグラムのチャートを右クリック→作成→プロパティノードと操作しましたが、
そのような項目は見つかりませんでした。
お手数をおかけしますが、アドバイスお願いいたします。
04-17-2015 12:43 AM - 編集済み 04-17-2015 12:43 AM
このプロパティは、「パネル」オブジェクトで使用できます。VIオブジェクトリファレンスからプロパティノードを使って’パネル’リファレンスを取り出すことができます。
http://forums.ni.com/t5/LabVIEW/Multi-Lingual-Front-Panels-English-Portuguese-Chinese/td-p/922792
04-17-2015 05:07 AM
TailOfGonさん、ありがとうございます。
Hirokiさん、
「labview panel update example」で検索するとサンプルもありますよ
Community: How to Disable/Enable Front Panel Updates - National Instruments
04-19-2015 06:58 PM
Tepig様のアドバイスを元に更新頻度を下げるようviを改造したのですが、
結果は「さらにひどくなった」と、所望の改善は得られませんでした。
現在、更新頻度を毎秒50回としていたものを、5回に1回の更新に変更し、毎秒10回としたのですが、
なぜかさらにもたつきが増加してしまいました。
この改良を行う前は50回のループを1500ms前後で動作していました。
本来は1000msとなるべき所です。
添付のダイヤグラムをループの中に追加したところ、
50回のループ(画面更新頻度は10回/秒)が2500msかかってしまいました。
ちょっとどういう現象が起きているのか分かりません。
04-19-2015 10:01 PM
こんにちは
今回のバージョンの違いによる異なる動作、そしてこのスレッドの流れで気になる点を何点か
・LabVIEW はバージョンを重ねるごとに処理が重くなってるみたいですが、Windowsも似たりよったりです。
マシンの性能があがったとしても、Windows 7 やWindows 8 は裏で色々なソフトが動いてたりするので、Windows XPで動作確認したソフトが
Windows 8 などのマシンで処理速度が異なるのは仕方がないかと。そして市販のノートPCなどはただでさえ色々余計なソフトがインストールされて出荷されるので
なおさら比較対象にするのは難しいかと。
・グラフやチャートに表示させるデータ数や更新頻度は用途によってもちろん変わると思いますが、
一点一点追加する必要がなければ、一度配列にまとめた上でチャートやグラフに追加するほうが描画の処理が少なくてすみます。
・プロパティノードは頻繁に呼ばないほうがいいですよ。
何度も呼び出すと逆に処理が重くなりますので、なんらかの変更を加えたい時以外はケースストラクチャでくくることをお勧めします。