サブVIに関するよくある質問(FAQ)



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ
LabVIEW 2020ヘルプ

サブVIに関する複数のよくある質問を以下に示します。

再入可能VIとは

LabVIEWでVIの各インスタンスの異なるデータ空間を作成する場合、VIは再入可能として表されます。これにより、並行して実行するサブVIに複数の独立した呼び出しを行うことができます。これは、VIの各インスタンスをそれぞれ個々の状態の確認を続ける場合に役立ちます。VIの複数インスタンスのすべてが状態を1つの場所に保存するというこれとは反対の目的を達成するには、機能的グローバルを使用します。機能的グローバルを再入可能VIにすることはできません。デフォルトでは、VIは再入可能ではありません。また、実行システムは複数の呼び出しを同じサブVIに同時に実行しません。複数の場所から再入可能ではないサブVIを呼び出そうとする場合には、一方の呼び出しが実行し、他方の呼び出しは最初の呼び出しが終了するまで待機してから実行します。

実行システム設定がVIの実行に影響する内容について

サブVIの実行システムを使用すると、サブVIを異なるスレッドで実行できます。ナショナルインスツルメンツではほとんどのVIに発呼者と同じデフォルト実行システムを使用することをお勧めします。頻繁に実行するサブVIにデフォルトの実行システムを使用しない場合、増加したスレッドのスワップ数によりパフォーマンスが落ちることがあります。

サブVIに渡される新規のデータコピーが作成されるかどうか

データを複数の場所に渡した場合、すべてデータは修正されずに読み取られます。LabVIEWはデータのコピーを作成しません。代わりに、単純に発呼者へ既存データのリファレンスが渡されます。データのコピーを生成するには、「常にコピー」関数を使用します。

サブルーチン優先度とは

サブルーチン優先度を設定したVIは、他のVIと実行時間を共有しません。簡単な演算を行うサブVIでオーバーヘッドを最小限に抑えるためには、優先度をサブルーチンに指定してください。ただし、この操作による悪影響もあります。サブルーチンは、フロントパネルのデータの表示、タイミングまたはダイアログボックス関数の呼び出し、デバッグまたは自動エラー処理、または他のVIとのマルチタスクを行うことができません。通常、サブルーチンは、ユーザとの操作を必要としない、短く頻繁に実行されるタスクのVIに最も適しています。

サブVIで優先度を継承する方法

高い優先度のVIがそれより優先度の低いサブVIを呼び出す場合、呼び出しているVIが実行中でなくても、そのサブVIは呼び出しているVIの最も高い優先度を継承します。

サブVIの使用に関する重要ポイントとは

大きなブロックダイアグラムは読みにくく、管理も困難です。コードの繰り返し再利用できるセグメントを特定して、それらのセグメントをサブVIに置換すると、各インスタンスを個々に編集するのではなく、そのサブVIを1度だけ編集すればよいため、メモリ領域の節約ができ、将来的なコードの更新も簡単になります。また、VIをサブVIに分割する場合、トップレベルVIのコードのサイズが縮小され、サブVIのコードとデータはメモリ内に常駐します。場合によっては、ランタイム時のメモリの使用量が減少します。



この記事は役に立ちましたか。

役に立たなかった