ファンクションブロックをユーザ定義ファンクションに変換してプログラムステップを節約します。
これらのファンクションの主な目的は、ファンクションブロック(FB)をファンクション(FUN)に簡単に置換できるようにすることです。別々のサブルーチンにある複数のFBインスタンスが、1つのファンクションで1つのサブルーチンに置換されます。
ファンクションブロック |
変換後のファンクション |
当社の命令がすべて1つの共通ファンクションで使用できるわけではありません。1つの共通ファンクション内で使用できない命令を次に例示します。
F166_HighSpeedCounter_Set、F165_HighSpeedCounter_Camなどの高速カウンタ命令
F166_PulseOutput_Set、F171_PulseOutput_Trapezoidalなどの位置決め命令
これについては、詳しく確認してください。
必要なプログラムコードが大幅に減少する
必要なリレー(R)が大幅に減少する
メモリDUTの配列を使用することでループでの使用ができる
追加的な開発およびメンテナンス作業が必要
変換後のファンクションのテストに注意が必要
ユーザ側の労力が必要
モニタできるインスタンスがなく最後の呼出のみがモニタされるため、モニタが困難
多くのデータレジスタ(DT)が必要になる場合がある
PLCパフォーマンスの低下、スキャン時間の増加
タイマファンクションの動作はタイマFBと若干異なります。
新しいファンクションが複数回呼び出される場合は特に、新しいファンクションの動作がFBの動作と対応しているか、よく注意してテストしてください。
ファンクションブロックをファンクションで代用することは、どうしても必要な場合のみにしてください。
ファンクションブロックをファンクションで代用することは、必要な部分のみにしてください。
最小限の作業で最大限の利益が得るにはどのファンクションブロックを変換すべきか、注意して分析を行ってください。
ファンクションブロックの変換が必要かどうかの主な判断基準は以下のとおりです。ファンクションブロックを呼び出す頻度、ファンクションブロックで必要なステップ数
プログラムコードのステップがどの程度節約できるかを計算する方法です。
現在の状況は以下のとおりです。
特定のファンクションブロック1つ
呼び出し回数はX回
Y個のステップを使用 => ステップ数合計: X * Y ステップ
TON、SR、パルス出力完了フラグを使用
このFBは、下記を必要とするファンクションに置換されます。
X回呼び出しを行いメモリDUTを2回コピーする追加ステップ。およそ、X * 2 * 7 ステップ(例: 2つのFP10_BKMV)
1回の共通ファンクションの呼び出しにY * 1.5 ステップ (さらにステップが必要な場合もあります)
以下の共通呼び出し1回:
TON_FUN、xxxステップ使用
SR_FUN、xxxステップ使用
R_TRIG_FUN、xxxステップ使用
この計算例は概算のみです。
特定のファンクションブロック1つ
呼び出し回数は30回
750個のステップを使用 => ステップ数合計: 30 * 750 ステップ = 22500 ステップ
TON、SR、パルス出力完了フラグを使用
このFBは、下記を必要とするファンクションに置換されます。
30回呼び出しを行いメモリDUTを2回コピーする追加ステップ。30 * 2 * 7 ステップ = 420 ステップ(例: 2つのFP10_BKMV)
1回の共通ファンクションの呼び出しに750 * 2 ステップ = 1500ステップ(さらにステップが必要な場合もあります)
以下の共通呼び出し1回:
TON_FUN、200ステップ使用
SR_FUN、35ステップ使用
R_TRIG_FUN、35ステップ使用
ステップ数合計: 420ステップ + 1500ステップ + 200ステップ + 35ステップ + 35ステップ = 2190ステップ
結果: このファンクションの使用で削減できるステップは、およそ 22500ステップ - 2190ステップ = 20310ステップ です。
ユーザファンクションブロックXXXからファンクションXXX_FUNへの変換の手順
命名規則はそのままにすることをおすすめします。
前提: すべての例では、データ型XXX_FUN_INSTANCE_DUTのVAR_IN_OUTdutXXXを使用するファンクションXXXが使用されています。
処理 |
元のプログラミング例 |
変換後のプログラミング例 |
---|---|---|
呼び出し |
||
FB POUヘッダ |
FUN POUヘッダ |
|
DUT XXX_FUN_INSTANCE_DUT |
||
セット リセット |
||
KEEP |
||
条件付きの計算 |
||
増減する変数値 |
||
パルス出力完了フラグ |
||
ファンクション終了時: 必要に応じて、対応する出力変数にメモリ変数を割り当てます。: |
||
SR |
||
RS |
||
TON |
||
TM_100ms |
前提: すべての例では、データ型XXX_FUN_INSTANCE_DUTのVAR_IN_OUTdutXXXを使用するファンクションXXXが使用されています。
処理 |
元のプログラミング例 |
変換後のプログラミング例 |
---|---|---|
セット リセット |
|
|
KEEP |
|
|
条件付きの計算 |
|
|
増減する変数値 |
|
|
パルス出力完了フラグ |
|
|
ファンクション終了時: 必要に応じて、対応する出力変数にメモリ変数を割り当てます。: |
|
|
SR |
|
|
RS |
|
|
TON |
|
|
TM_100ms |
|
|