強制ドット
- 更新日2025-08-27
- 9分で読める
強制ドットは、ノードに渡された値が異なる表記法に変換されたことを示すためにブロックダイアグラムノードに表示されます。LabVIEWでは変換が行われた端子の枠に強制ドットが表示されます。VIおよび関数は多くの端子を持つことができるため、ある端子と別の端子を配線した場合、強制ドットがアイコンの内部に表示されることがあります。
赤い強制ドット
LabVIEWは、数値タイプのワイヤを異なる数値タイプの端子に接続した場合、または、非バリアントワイヤをバリアント端子に接続した場合に、そのブロックダイアグラムノードに赤い強制ドットを配置します。
たとえば、LabVIEWは下の図にあるように「追加」関数上に赤い強制ドットを配置します。これは、関数が一致するデータタイプの2つの入力を要求したのに倍整数の浮動小数点数と整数を受け取ったためです。データタイプはLabVIEWが整数を強制変換できるくらい類似してるので、追加操作を実行できます。
青い強制ドット
LabVIEWは、手動で関数の固定小数点の出力設定を構成すると、数値関数の出力端子に青い強制ドットを配置します。このドットは、オーバーフローや丸め込みによる誤差を回避するために、LabVIEWが出力データタイプを自動的に調節しないことを示します。
以下のブロックダイアグラムには、青い強制ドットが表示されています。
確度を保持してメモリ使用を最適化するために強制ドットを除去する
強制ドットは次の方法でメモリ使用または全体的性能に影響を与えます。
- タイプ定義の強制―タイプ定義のインスタンスを同じタイプ定義にリンクしないオブジェクトに配線すると、VIが不正確な結果を生成する可能性があります。
- スカラ数値の強制―複数の異なる数値タイプを操作すると、データタイプが一致するよう強制されます。この強制変換が発生すると、VIの生成する結果が不正確になる場合があります。
- サイズの大きい配列の強制―サイズが顕著に大きいデータタイプを強制変換する場合、VIが大量のメモリを使用するため実行に要する時間が長くなります。
データタイプを一致させれば、不要な強制変換を回避することができます。
タイプ定義の強制
タイプ定義のインスタンスを同じタイプ定義にリンクしないオブジェクトに配線すると、LabVIEWはデータを受け取っている端子上に強制ドットを配置してタイプ定義を編集するとVIが壊れて不正確なデータが生成される可能性があることを警告します。
クラスタまたは列挙体に配線されたオブジェクトのタイプ定義を編集すると、クラスタまたは列挙体に接続しているワイヤが壊れます。
次のブロックダイアグラムは、編集を行うと実行結果の確度に影響が出る、またはワイヤが壊れる可能性のあるタイプ定義の強制を表してします。この例では、サブVI上の入力がフィルタタイプを定義するタイプ定義にリンクされています。
LabVIEWはサブVIの配線済み端子に強制ドットを配置して、列挙定数が同じタイプ定義にリンクしないことを示します。
次のブロックダイアグラムは、編集しても結果の確度を保持してワイヤが壊れないタイプ定義の使用方法を示しています。
サブVIの入力のタイプ定義は、タイプ定義にリンクするオブジェクトをコピーする、またはタイプ定義にリンクするオブジェクトをタイプ定義のインスタンスと置換することで一致させることができます。サブVIの入力のタイプ定義は入力端子を右クリックしてショートカットメニューから作成»定数を選ぶことでも一致させることができます。定数はタイプ定義に自動的にリンクされます。
スカラ数値の強制
単純なスカラ数値データタイプを操作すると、結果のデータ損失が小数点の値でないデータタイプに強制変換されます。両方のデータタイプが整数の場合、データタイプの最大値が低い方のデータタイプを最大値が大きい方に強制変換します。
次のブロックダイアグラムは、結果の確度に影響を与えない強制変換を示しています。
この例では、倍精度浮動小数点数を倍長整数に追加した場合に、倍長整数が浮動小数点数に強制変換されて2つの値が加算されています。「追加」関数上に配置された強制ドットは操作の結果に影響を与えません。これはLabVIEWが最大値が低い方の値をより精密なデータタイプに強制変換するためです。しかし、できる限りデータタイプは一致させるべきです。
データが希望のタイプに強制変換されたことを確定したい場合は、オブジェクトを右クリックしてショートカットメニューから表記法を選択し、制御器、定数、または整数のデータタイプを変更します。
次のブロックダイアグラムは不正確な結果の原因になる強制変換を示しています。
この例では、LabVIEWが符号付き整数を符号なし整数に強制変換します。負の値がサポートされていないデータタイプに負の値が強制変換されているため、「-5」ではなく、「65531」という値が生成されています。不正確なデータの生成を防ぐために、ブロックダイアグラムオブジェクトの表記法が一致するデータタイプに変更されます。
| ヒント 出力表示器上のソースに適応プロパティを有効にして、自動的に表示器のデータタイプを数値入力値のデータタイプに変更します。ソースに適応プロパティを有効にするには、表示器を右クリックしてショートカットメニューからソースに適応を選択します。 |
サイズの大きい配列の強制
サイズが顕著に大きい配列に保管されているデータを強制変換する場合、VIが大量のメモリを使用するため実行に要する時間が長くなります。次のブロックダイアグラムはサイズの大きなデータタイプをサブVIの入力のデータタイプに変換する場合に大量のメモリを使用するVIを示しています。
この例では、サイズの大きな配列を拡張精度浮動小数点に強制変換してサブVIのデータタイプを一致させています。メモリ使用量を最小限に抑えるには、ブロックダイアグラム上の制御器、定数、または表示器を右クリックしてショートカットから表記法を選択します。前記のブロックダイアグラムでは、サブVIのブロックダイアグラム上の定数と表示器のデータタイプを変更することでデータの強制変換の必要がなくなりました。
次のブロックダイアグラムでは、メモリ量を効率よく使用するVIを示しています。
| ヒント VIがどれくらいのメモリを使用するか監視および追跡するには、VIの実行時間とメモリ使用量に関するデータを集録および表示するパフォーマンスおよびメモリをプロファイルウィンドウを使用します。 |
変換関数
変換関数を使用して強制ドットを除去できます。通常、変換関数は強制ドットと同じような影響を与えますが、ブロックダイアグラム上で広いスペースを必要とします。しかし、配列を生成するループ内で変換関数を使用すると、大きなデータバッファの変換を回避することができます。これは次のブロックダイアグラムが示すようにLabVIEWが配列を作成する前に変換がおこなわれるためです。
強制ドットの色を変更する
赤い強制ドットの色を変更するには、オプションダイアログボックスの環境ページを使用します。色セクションでデフォルトの色を使用チェックボックスをオフにし、強制ドットの色ボックスをクリックして異なる色を選択します。
青い強制ドットの色は変更できません。