2D、3D数学プロットのグラフ的更新がバッファに溜まり、遅いです
使用ソフトウェア:
使用ソフトウェア・バージョン:
使用ソフトウェア・バージョンに特化:
二次のソフトウェア: N/A
問題: 2D、3Dグラフに高速でデータをプロットする VI を走らせるとグラフへの視覚的な更新が極端に遅いです。VI を停止させるとバッファがクリアされて残りのポイントが全て一気にグラフに更新されます。この動作の考えられる原因は何でしょうか?
解決策: この動作は予期されるもので、VI がシングルスレッドで走り、連続的に XControl へのデータ変更のイベントが発生することが原因です。XControl は生産者/消費者アーキテクチャと同様に、データ変更のイベントに対して別のスレッドで応答します。大量の行列計算とオブジェクトの再描画がシングルループより時間がかかるため、消費者側は生産者側より回るのが遅いです。XControl はデータ変更のイベントをバッファに溜め、順番に応答します。 XControl は異なるスレッドで走っているため、 VI が停止しても全てのイベントに応答するまで走り続けます。
この動作を避けるための回避策と推奨策がいくつかあります。
- 表示器をループ内で使用しないでください。ループが完了してからデータを表示器にプロットするようにしてください。
- 表示器をループ内で使用しなければいけない場合、ループが回るスピードを遅くするため待機関数を使用してください。
- ループ内で、あるいは並行して他のユーザインタフェース操作を避けてください。
- 表示器を大きいデータセットと使用しないでください。
- 大きいデータセットを使用する場合、表示器に送る前にデータを間引きしてください。例えば、隣り合うポイントの平均をとり、その平均値を表示器に送ってください。
- ループ内での LabVIEW メモリマネージャの呼び出しは避けてください。そのような呼び出しは特定の配列関数を使用する際に起きます。詳細は LabVIEW 2009 Help: VI Memory Usage を参照してください。
- 表示器のパフォーマンスはシステムに依存します。プログラミングの際の配置システムに関しては開発環境の性能を考慮してください。
関連リンク: Developer Zone Tutorial: Creating New Front Panel Objects with LabVIEW XControlsLabVIEW 2009 Help: VI Memory Usage
添付:
報告日時: 08/01/2009
最終更新日: 05/27/2010
ドキュメントID: 500FR16C
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.