ユーザ定義ファンクションブロック

プロジェクトまたはライブラリ中のユーザ定義ファンクションブロックは、コンパイルされるとサブルーチンプログラムに変換されます。これらを読み出すたびに、クラスVAR_INPUTVAR_IN_OUTの入力パラメータが転送されます。それから対応するサブルーチンプログラムにジャンプします。最後に、クラスVAR_OUTPUTVAR_IN_OUTの出力パラメータが読み出されます。使用できるサブルーチン数やファンクションブロック数は、PLC機種により異なります。

ファンクションブロックはメモリを持っています。したがって、ファンクションブロックが読み出すとき、データエリアとサブルーチンプログラムを割り当てます。登録されたファンクションブロックは、同じサブルーチンプログラムを使用します。インデックスレジスタの内容に従って、それぞれのファンクションブロックからアクセスされます。

この機能を使用することにより、プログラムメモリを効率的に使用することができます。特に、同じユーザー定義ファンクションブロックを頻繁に利用する場合に便利です。ただし、インデックスレジスタを使用し、データエリアにアクセスするため、相対的にスキャンタイムが長くなります。

インデックス付きFB

いくつかのコントローラでは、「ファンクションブロックをインデックス修飾する」のオプションを次のようにして有効化できます。「拡張機能」 > 「オプション」 > 「コンパイルオプション」 > 「コード生成」

注記

インデックス付きFBで、1スキャンの間に何度も呼び出される場合、正常に動作しないものがあります。以下の命令の場合、エラーメッセージが表示されます。

  • カウンタ命令: F118_UDCF166_HighSpeedCounter_SetF167_HighSpeedCounter_ResetF168_PulseOutput_Home

  • シフト命令: F119_LRSR

関連トピック

最終修正日: 2021-05-13このページに関するフィードバックお問い合わせ窓口