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

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

ファンクションブロック(以下FB)はインスタンスを生成して使います
作られたインスタンスはPLCがRUNすると常に実行して、入力変数の起動指示をトリガーとして一連の処理を実行します
通常は複数スキャンにまたがる処理をFBで行うので出力側に実行中か正常終了もしくは異常終了が出力されます
FBは内部変数を保持できるため、前回スキャンの情報を次回スキャンでも利用できます。
インスタンスとは
FBはインスタンスを生成して使いますがインスタンスとは・・・
解説書っぽく言うと、FBが設計図でインスタンスが実体です
TONの場合
例えば、オンディレイタイマーのTONだと
インスタンスを作って、ひとつめをTON000、ふたつめをTON001という名前にします

このTON000とTON001がTONのインスタンスになります
TON000 → 経過時間を保持
TON001 → 別の経過時間を保持
同じTONでも内部データは別々に管理されます
一般的な感じだと
洗濯機という設計図をFBとすると
洗濯機FBのインスタンスを2つ作り、ひとつめを「洗濯1号」という名前にして、ふたつめを「洗濯2号」という名前にします
同じ機能を持った洗濯機が2つ用意できました
それぞれに別のものを入れて洗濯ができるので、洗濯1号には衣類を入れて洗濯2号には毛布を入れて、それぞれのパラメータをセットして洗濯します
処理が完了すると、奇麗になった服と毛布が出力されます

