フィルタのタイプ

前に読む:データフロープログラミングへの導入

ほとんどのフィルタは機能的であり、つまり出力は入力の値だけに依存します。 ただし、一部のフィルタは連続する反復の間に情報を保存して集計結果を計算したり、外部デバイスと通信したり、プログラム内でループを生成したりすることができます。 引き起こす副作用に応じて、フィルタは次のように分類されます:

  • 純粋関数
    出力値を常に入力値だけから計算するフィルタです。 典型的な例: AddIntegers, SmoothImage_Gauss
  • ループアキュムレータ
    連続する反復の間に情報を保存するフィルタです。出力値は、この反復およびすべての前の反復で表示された入力値から計算できます。 典型的な例: AccumulateElements, AddIntegers_OfLoop
  • I/O 関数
    プログラム外部の要素と情報を交換するフィルタです。 典型的な例: GenICam_SetDigitalOutputs, DAQmx_ConfigureTiming
  • ループジェネレータ
    プログラムに挿入された場合、そのプログラムをループで動作させるフィルタです。 典型的な例: EnumerateIntegers, Loop
  • I/O ループジェネレータ
    プログラムに挿入された場合、そのプログラムをループで動作させ、I/O 関数のように外部要素と情報を交換するフィルタです。 典型的な例: WebCamera_GrabImage, GigEVision_GrabImage

可視化

フィルタのタイプを示すアイコンは、プログラムエディタのフィルタのアイコンの左上隅に表示されます:

プログラムエディタでのフィルタのタイプの可視化。

備考: 実際のところ、ループアキュムレータおよびループジェネレータの状態は、含まれるタスクマクロフィルタに属しています。 フィルタは、実行がタスクに入るときにのみリセットされ、その後すべての反復で更新されます。

制約事項

以下は、一部のフィルタのタイプに関連する制約のリストです:

  • ループジェネレータ、ループアキュムレータ、およびI/O関数は、配列モードで実行できません。
  • プログラムが一時停止されているときには、ループジェネレータ、ループアキュムレータ、およびI/O関数は再実行できません。