LabVIEWで遅延する VIフロントパネルのパフォーマンスを改善する

更新しました Mar 13, 2026

使用製品

ソフトウェア

  • LabVIEW

問題

フロント パネルの更新が遅いです。パフォーマンスを向上させるにはどうすればよいですか? フロント パネル上のコントロールとインジケータが重なり合うと、アプリケーションの速度が低下しますか?

解決策

フロントパネル アプリケーションの遅延は、通常、無効化によって発生します。これは、フロントパネル オブジェクトが何らかの理由で無効 (古い値が含まれているなど) であるため、LabVIEW UI による再描画が必要な場合に発生します。さらに、デフォルトの背景とは別にフロントパネルに背景画像が設定されている場合は、多くの場合、背景画像、または少なくともその一部も再描画する必要があります。

フロント パネルのパフォーマンスを向上させ、複雑なフロント パネルを持つVI の遅延を減らすために実行できる手順は多数あります。

  • 制御器と表示器の重なりを避けてください。フロントパネルのオブジェクトが重なり合っている場合、オブジェクトの1つが無効になると、重なり合っているすべてのオブジェクトも再描画する必要があります。これにより、再描画に必要な時間が最大100 倍長くなる可能性があるため、可能な限りフロントパネルのオブジェクトの重なりを最小限に抑えるようにしてください。
重複により再描画時間が長くなる可能性があるコントロール/インジケーター レイアウトの例。重なり合うオブジェクトによる遅延の増加を引き起こさないコントロール/インジケーターの配列。
 
  • 透明な要素または背景を持つフロントパネルオブジェクトは避けてください。透明な要素を持つオブジェクトが無効になると、オブジェクトとオブジェクトの背後にあるオブジェクト/背景の両方を再描画する必要があります。特にフロント パネルにデフォルト以外の背景がある場合は、大きな遅延が発生する可能性があります。グレー表示されたオブジェクトは透明とみなされ、他のネイティブに透明なオブジェクトと同様に遅延の問題が発生することに注意してください。フロントパネルの背景を使用している場合は、フロントパネルオブジェクトをグレー表示しないようにしてください。

 

透明な要素により遅延の問題が発生するオブジェクトの例。透明な要素により遅延の問題が発生しないオブジェクトの例。
 
  • フロントパネルオブジェクトのプロパティの読み取りや書き込みを行うフロントパネルオブジェクトのプロパティノードと呼び出しノードを頻繁に呼び出すことは避けてください。これらのプロパティとメソッドの多くは、制御器と表示器を無効にし、再描画が必要になり、フロントパネルの遅延が増加する可能性があります。

 

  • 多数の表示器を持つVIの場合、新しい値を受け取る表示器のみを更新することで、繰り返しコードの反復間でLabVIEWが表示器を再描画するのにかかる時間を短縮できます。これを実装するには、ブロックダイアグラム上の表示器をケース構造で囲みます。ケース構造は、現在保持している値とは異なる値を受け取った場合にのみ表示器に書き込みます。これにより、新しい値を持つ表示器のみが無効になり、コードの反復間で表示器を再描画するのにかかる時間が短縮されます。
新しい値が現在の値と異なる場合のインジケーター ケース構造の動作。新しい値がインジケーターの現在の値と等しい場合の動作。
 
  • ブロックダイアグラムにフロントパネル上のオブジェクトを頻繁に編集するセクションがある場合は、このコードをパネルアップデートを延期プロパティの呼び出しで囲みます。これにより、パネルの更新が再度アクティブになるまでフロントパネルが再描画されなくなり、これらの編集がすべて 1 回の再描画に統合され、コードの効率が向上します。
パネル更新の延期プロパティの使用例。
 
  • フロンパネルの背景に高解像度の画像を使用している場合、背景が無効になったときにLabVIEWが背景を再描画するのにかかる時間が長くなります。解像度の低い画像を使用することを検討してください。また、.bmpなどの非圧縮画像形式を使用している場合は、.jpg または .png に切り替えることを検討してください。

 

  • オブジェクトが無効化されたときに LabVIEW が再描画する必要がある背景領域を減らすには、背景画像を装飾として直接フロントパネルに貼り付け、 フロントパネルの背面に移動して他のフロントパネルオブジェクトをその上に配置します。これにより、オブジェクトが重なり合うことになり、理想的ではありませんが、VI ウィンドウのサイズが変更されたときや VI が起動したときに背景を再描画する必要がなくなります。これらの処理は、while ループなどの反復構造を持たない VI にとって大きな負荷となります。フロントパネルが単純な場合は、フロントパネルオブジェクトの間や周囲に背景の切り抜き部分を貼り付けることで、オブジェクトの重なりによって発生する問題を排除できますが、複雑なフロントパネルを持つ VI やサイズ変更が必要な VI ではこの方法は機能しません。

 

  • フロントパネルのオブジェクトが整理された形で配置されていることを確認してください。LabVIEWが無効化された制御器を再描画する場合、無効化された要素の周囲の長方形領域で再描画が行われます。複数のオブジェクトが無効化されている場合、この長方形領域は無効化されていないオブジェクトを囲み、それらも再描画する可能性があります。これはある程度は避けられませんが、フロントパネルのオブジェクトの編成に気を付けて、オブジェクトが不必要に再描画される可能性を最小限に抑えてください。
不適切なオブジェクト構成の例 - 無効なインジケーターを対角線上に配置することで、有効なグラフも再描画されます。適切な構成の例 - オブジェクトはよりきちんとグループ化されているため、無効化が発生した場合にグラフは含まれません。
 
  • 無効にするフロント パネルの制御器と表示器の同期表示プロパティ。同期表示を無効にすると、制御器と表示器の値が更新されるレートが下がり、VI が他のタスクを優先できるようになります。表示される値に高い更新レートを必要としないオブジェクトがある場合は、同期表示を無効にするとコードの効率が向上し、フロント パネルの遅延が軽減されます。制御器または表示器を右クリックして詳細設定>>同期表示に移動するか、制御器/表示器の同期表示プロパティノードを使用して、これを無効にすることができます。

 

  • 上記の手順を実行してもフロント パネルの実行が十分に改善されない場合は、一度に表示されるオブジェクトの数を減らしてフロント パネルの構造をリファクタリングすることを検討する必要があります。これを行う良い方法の 1 つは、 タブ 制御器を使用することです。タブ 制御器を使用すると、フロント パネル オブジェクトをタブに分類し、特定の時点でユーザーが必要とする情報に基づいて、表示される制御器を制限できます。