![]()
変数一覧の設定ガイドについては以下を参照してください。
30.15.4 ファンクションブロック[変数一覧]の設定ガイド
ファンクションブロック(FB)の編集画面では、FB専用の変数またはシステム変数を使ってプログラムを作成します。
FB専用の変数は3種類あり、1つはFB内でのみ使える変数、残りの2つはファンクションブロック命令のオペランドとしてロジックプログラムとFBとのデータを受け渡しする変数です。変数はファンクションブロック画面の変数一覧で作成し、作成したFB内でのみ使うことができます。
![]()
同一のFBをロジックプログラムに複数個配置することができますが、すべて同じ変数を参照しています。また、FB専用の変数はFBが導通していなくても初期化されません。プログラムの内容に合わせて初期化の処理をしてください。
ローカル変数
ローカル変数はFB内でのみ使う変数です。FBを挿入したロジック画面から直接ローカル変数に値を書き込むことはできません。
FBごとの最大登録個数は512個です。
入力変数/出力変数
入力変数、出力変数はFBとそれを使っているロジックプログラムとのデータの受け渡しをする変数です。FBをロジック画面に挿入すると、FB内で作成した入力変数がSオペランドとして、出力変数がDオペランドとして表示されます。
入力変数、出力変数の最大登録個数はFBごとにそれぞれ63個です。

オペランドには入力変数や出力変数の変数タイプと一致するアドレスまたは変数を設定します。Sオペランドに設定されたアドレスや変数に格納された値が入力変数に渡りFB内で使用されます。FB内の出力変数の値がDオペランドに設定されたアドレスや変数に格納されます。
![]()
入力変数をロジック命令のDオペランド(出力)に設定することはできません。
出力変数をロジック命令のSオペランド(入力)に設定することはできません。
注意事項
FBを作成、使用するときは次の動作に注意してロジックプログラムを作成してください。
FBは初期化されません
表示器の電源がONしている間は、FBは導通状態が終了しても初期化されずFB内の変数は前回の値を保っています。必要に応じて初期化処理を行ってください。
同じFBは1つの変数を共有します
1つのFBを複数個配置することができますが、全て同じメモリ空間を使用しています。そのため、複数の同一FBが動作すると同じ変数に対して書き込みや読み込みをするため、期待する結果が得られないことがあります。複数個使用する場合は、同時に導通しないようにするか、1回の導通で処理が完了するようなFBを使用してください。
例えば、命令が導通するたびに1ずつカウントアップするファンクションブロック(FB_0000)を用意し、ロジック画面でFB_0000を2回配置している場合を考えます。1回目のスキャンでは、1つ目のFB_0000と2つ目のFB_0000の両方とも「Count」(ローカル変数)を初期化してから加算するためにS1オペランド、S2オペランドの両方をONします。2回目以降のスキャンでは加算だけを行うためS2オペランドのみをONにします。

D100、D200の出力結果は、それぞれが1ずつ加算されたものではなく、D100とD200が交互に加算された値が出力されます。

これは、2つ配置されているFB_0000が両方とも同じメモリ空間にある変数を使っているためです。1つ目のFB_0000と2つ目のFB_0000が交互に同じ変数「Count」に1ずつ加算していくため、D100、D200には2ずつ加算された値が書き込まれます。

D100、D200の両方で1ずつ加算された値を出力するためには、加算元となる値をSオペランドとして入力し、そこへ加算するようにします。
例)
FB_0000に整数型の入力変数「Input」を追加します。
ADD命令の前にMOV命令を挿入し、「Clear」がONの場合は「Count」を初期化し、「Clear」がOFFの場合は「Input」の値を「Count」へ入力します。

FB_0000命令のS3オペランドにはD1オペランドと同じアドレスを指定します。
