• 検索結果がありません。

FIFO および LIFO 命令の使用

ドキュメント内 JA (ページ 143-147)

第 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アンロードによ り、スタックからデー タが削除される。

ドキュメント内 JA (ページ 143-147)