ファンクションブロックは、ユーザプログラムのアルゴリズムとデータの両方を定義します。この定義によって、クラスを考慮することができます。ファンクションブロック自身が処理を実行するのではなく、いくつかのファンクションブロックのインスタンスが作成され、このインスタンスが個々に使用されます。個々のインスタンスは、ファンクションブロックの機能を実行するために必要な、データを格納するためのメモリを個別に保有しています。
インスタンスが個別に持っているファンクションブロックのメモリの内容は、このインスタンスが次に実行されるまで保持されます。この内部メモリは、ファンクションブロックの使い方によって、追加される機能の実行に効果があります。
結果として、ファンクションブロックインスタンスが同じ入力変数値で実行された場合も、必ずしも同じ結果を得ることができません。
ファンクションと違い、ファンクションブロックは複数の出力を定義することができます。
ファンクションブロックのインスタンスは、一つのPOU内で使用するためにローカル変数として宣言できます。POU内でファンクションブロックインスタンスを宣言することは、このインスタンスの使用範囲を同時に定義することになります。