第 11 章
11.3 FIFO および LIFO 命令の使用
シフトレジスタ命令(BSL, BSR, FFL, FFU, LFL, LFU) 11-5
• Position (ポジション)は、命令がスタックにデータをロードするために、
次に使用できる位置を示します。ポジションの値はニーモニック.POSで アドレス指定してください。
電源投入の際にオフセットから命令を開始する場合のみ、位置の値を指 定してください。それ以外の場合には、0を指定します。必要であれば、
ラダープログラムで位置を変更することができます。
11.3.2 ステータスビットの使用
FIFOおよびLIFO命令を正しく使用するためには、制御構造のステータス ビットを評価する必要があります。ニーモニックによって、これらのビット をアドレス指定します。
!
注意: スタック命令を組合わせて使用する場合を除き、その他
の命令に対しては同じコントロールアドレスを使用しないでく ださい。機械に予期しない動作が発生し、機器の損傷または人 身事故を招くことがあります。
ビット セットの条件
有効ロード.EN (ビット15)
ラングがTrue (1)にセットされるとセットされ、その命令が有
効でになったことを示す(FFLとLFL命令で使用する)。 注:プリスキャン中、プログラムスキャンが開始するときに、
誤ってロードすることを防ぐためにこのビットがセットさ れる。
有効アンロード.EU (ビット14)
ラングがTrue (1)にセットされるとセットされ、その命令が有
効になったことを示す(FFUとLFU命令で使用する)。
注:プリスキャン中、プログラムスキャンが開始するときに、
誤ってロードすることを防ぐためにこのビットがセットさ れる。
完了.DN (ビット13)
スタックが一杯であることを示すために、セットされる。.DN ビットは、ロードするための場所があくまでロードを禁止す る。
空.EM ビット12)
スタックが空であることを示すために、セットされる。
.EMビットがセットされているときは、FIFOまたはLIFOア ンロード指令は無効になる。
シフトレジスタ命令(BSL, BSR, FFL, FFU, LFL, LFU) 11-7
FIFO ロード (FFL) およ び FIFO アンロード (FFU) の例:
FIFO ロード説明:
FFL命令が指定されたラングがFalse (0)からTrue (1)にセットされると、プ ロセッサは.ENビットをセットして、制御構造の位置によって指示された ように、ソースエレメント(N60:1)を、スタック内の次に使用可能なエレメ ントにロードします。プロセッサは、スタックが一杯になるまで、ラングがTrue (1)にセットされるたびに1つのエレメントをロードします。スタック
が一杯になると、プロセッサは.DNビットをセットします。ラダープログ ラムによりスタックが一杯であることを検出して、ソースからこれ以上デー タをロードすることを禁止する必要があります。
事前にスタックをロードするか、またはスタックに必要なデータが入るまで スタックのアンロード命令をOFFにしながらデータのロード命令をONに することができます。
FIFO アンロード説明:
FFU命令が指定されたラングがFalse (0)からTrue (1)にセットされると、プ ロセッサは.EUビットをセットして、FIFOスタック内に格納されている最 初のエレメントから宛先ワードN60:2にデータをアンロードします。スタッ ク内のすべてのデータを最初のエレメントの方向に1ずつシフトさせます。プロセッサは、FIFOスタックが空になるまで、ラングがTrue (1)にセット されるたびに1ワードをアンロードします。
スタックが空になると、プロセッサは.EMビットをセットします。これ以 降、プロセッサは、FFL命令が新しい値をロードするまで、ラングがTrue (1)にセットさるたびに0の値を転送していきます。ラダープログラムによ りスタックが空であることを検出して、宛先に格納された0の値が他の命令 によって使用されることを禁止する必要があります。
FFU命令を使用する場合、FIFOアドレスを必要なワードのアドレスに変更 し、それに従って長さに変更することによって、スタックの最初のワード以 外のワードからデータをアンロードできます。
オペランド 説明
Source (N60:1) ロードするソースワードの位置
FIFO (#N60:3) スタック(FIFOファイル)の位置
Destination (N60:2) 宛先ワードの位置
Control (R6:51) 命令のアドレスおよび制御構造
Length (64) ロード可能な最大ワード数
Position (0) FIFOファイルアドレスの先頭から開始する。
ファイル#N60:3
FIFOロードにより、ス タックの次の位置に データが入力される。
#N60:3の位置で、
FIFOスタックに 64ワードを割当 てる。
FIFOアンロードにより、スタック からデータが削除される。
ソース (EN) 宛先
(DN) FFL
FIFO LOAD
Source N60:1
FIFO #N60:3
Control R6:51
Length 64
Position 0 (EM)
ワード 3 4 5 6 7 8 9 10 11
66 N60:2
N60:1 (EN)
(DN) FFU
FIFO UNLOAD
FIFO #N60:3
Destination N60:2
Control R6:51
Length 64
Position 0 (EM)
LIFO ロード (LFL) およ び LIFO アンロード (LFU) 例:
(エンハンストPLC-5プロセッサのみ)
重要:FIFOとLIFOのスタック処理では、LFU命令ではデータをロードし た順序とは逆の順序(後入れ、先出し)でデータを削除する点で異な ります。それ以外はLIFO命令はFIFO命令と同じように処理します。
LIFO ロード説明:
LFL命令が指定されたラングがFalse (0)からTrue (1)にセットされると、プ ロセッサは.ENビットをセットして、制御構造の位置によって指示された ように、ソースワード(N70:1)をスタック内の次に使用可能なワードにロー ドします。プロセッサは、スタックが一杯になるまで、ラングがTrue (1)に セットされるたびにエレメントをロードします。スタックが一杯になると、プロセッサは.DNビットをセットします。ラダープログラムによりスタッ クが一杯であることを検出して、ソースからこれ以上データをロードするこ とを禁止する必要があります。
事前にスタックをロードするか、またはスタックに必要なデータが入るまで アンロード命令をOFFにし、ロード命令をONにすることができます。
LIFO アンロード説明:
LFU命令が指定されたラングがFalse (0)からTrue (1)にセットされると、プ ロセッサは、.EUビットをセットして、LIFOスタックに格納されている最 後のワードから開始して、宛先ワードN70:2にデータをアンロードします。プロセッサは、LIFOスタックが空になるまで、ラングがTrue (1)にセット されるたびに1ワードをアンロードします。
スタックが空になると、プロセッサは.EMビットをセットします。その後、
プロセッサは、ロード命令が新しい値をロードするまで、ラングがTrue (1) にセットされるたびに0の値を転送します。ラダープログラムによって、ス
オペランド 説明
Source (N70:1) ロードするソースワードの位置
LIFO (#N70:3) スタック(FIFOファイル)の位置
Destination (N70:2) 宛先ワードの位置
Control (R6:61) 命令の制御構造
Length (64) ロード可能な最大ワード数
Position (0) LIFOファイルアドレスの先頭から開始する。
ファイル#N70:3
LIFOロードにより、
スタックの次の位置に データが入力される。
#N70:3の位置で、LIFO スタックに64ワードを 割当てる。
ソースN70:1 (EN)
(DN) LFL
LIFO LOAD
Source N70:1
LIFO #N70:3
Control R6:61
Length 64
Position 0 (EM)
ワード 3 4 5 6 7 8 9 10 11
66 (EN)
(DN) LFU
LIFO UNLOAD
LIFO #N70:3
Destination N70:2
Control R6:61
Length 64
Position 0 (EM)
宛先N70:2 LIFOアンロードによ り、スタックからデー タが削除される。