変数一覧の設定ガイドについては以下を参照してください。
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内の変数は前回の値を保っています。必要に応じて初期化処理を行ってください。
ファンクションブロックのローカル変数の共有の設定による違い
1つのFBをロジックプログラムで命令として複数配置する場合は、[システム設定]-[ロジックプログラム設定]-[ファンクションブロックのローカル変数の共有]の設定によってロジック変数の使用量やFB内部のローカル変数の動作が異なります。ローカル変数の動作が異なることで、ロジックプログラムの処理結果にも違いがでます。
[ファンクションブロックのローカル変数の共有]の設定で「共有しない」を選択した場合、各ファンクションブロック命令が個別にローカル変数を持つため、命令として挿入するたびにロジック変数の使用量が増えます。共有するから共有しない への変更時には、ロジックの変数容量にご注意ください。
30.14.2.1 メモリ使用率の確認方法
次の例で設定による動作の違いを説明します。
例)
命令が導通するたびに1ずつ加算するFB(FB_0000)を用意します。FBはローカル変数(Count)に1を加算した値を出力変数(Output)に渡します。
ロジックプログラム上にFB_0000を2個配置し、それぞれのD1オペランドにD100とD200を設定します。
共有するを選択した場合
ロジックプログラムの作成時、FB(FB_0000)をロジックプログラム上に複数配置してもロジック変数の使用量は増えません。
ロジックプログラムを実行すると、X100がONになるたびにD100=1, 3, 5, 7、D200=2, 4, 6, 8のようにD100とD200が交互に加算された値が出力されます。これは、ロジックプログラム上に配置された2つのファンクションブロック命令(FB_0000)が同じローカル変数(Count)に対して書き込みや読み込みをするためです。このように、1つのFBをロジックプログラムで命令として複数配置すると期待する結果が得られないことがあります。複数配置する場合は、同時に導通しないようにするか1回の導通で処理が完了するようなFBを使用してください。
共有しないを選択した場合
ロジックプログラムの作成時、FB(FB_0000)をロジックプログラム上に配置するたびにロジック変数の使用量が増えます。
ロジックプログラムを実行すると、X100がONになるたびにD100=1, 2, 3, 4、D200=1, 2, 3, 4のように1ずつ加算された値が出力されます。これは、ロジックプログラム上に配置された2つのファンクションブロック命令(FB_0000)が個別にローカル変数(Count)を持つためです。そのため、同じFBであってもお互いに干渉することはありません。