ファンクションとファンクションブロックの違い

ファンクションとファンクションブロックの比較
項目FunctionFunction Block
内部変数保持しないする
インスタンス不要必要
用途演算状態保持処理
MOVE、ADDTON、TOF、通信FB

ファンクション

ファンクションの例
ファンクションは呼び出されるたびに処理を実行します。内部状態は保持しません。
例:MOVE, INCなど

ファンクションブロック (FB)

ファンクションブロックの例
ファンクションブロック(以下FB)はインスタンスを生成して使います
作られたインスタンスはPLCがRUNすると常に実行して、入力変数の起動指示をトリガーとして一連の処理を実行します
通常は複数スキャンにまたがる処理をFBで行うので出力側に実行中か正常終了もしくは異常終了が出力されます
FBは内部変数を保持できるため、前回スキャンの情報を次回スキャンでも利用できます。

インスタンスとは

FBはインスタンスを生成して使いますがインスタンスとは・・・
解説書っぽく言うと、FBが設計図でインスタンスが実体です

TONの場合

例えば、オンディレイタイマーのTONだと
インスタンスを作って、ひとつめをTON000、ふたつめをTON001という名前にします
TONインスタンスの例
このTON000とTON001がTONのインスタンスになります

TON000 → 経過時間を保持
TON001 → 別の経過時間を保持
同じTONでも内部データは別々に管理されます

一般的な感じだと

洗濯機という設計図をFBとすると
洗濯機FBのインスタンスを2つ作り、ひとつめを「洗濯1号」という名前にして、ふたつめを「洗濯2号」という名前にします
同じ機能を持った洗濯機が2つ用意できました
それぞれに別のものを入れて洗濯ができるので、洗濯1号には衣類を入れて洗濯2号には毛布を入れて、それぞれのパラメータをセットして洗濯します
処理が完了すると、奇麗になった服と毛布が出力されます
インスタンスの概念図

この記事へのコメント