堆疊指令

堆疊指令

堆疊指令是FX系列中新增的基本指令,用於多重輸出電路,為編程帶來便利、在FX系列PLC中有11個存儲單元,它們專門用來存儲程式運算的中間結果,被稱為棧存儲器。 堆疊是計算機中一種先進後出的數據結構,由棧區和棧頂指針組成。 堆疊有兩種操作,壓棧(進棧)和彈棧(出棧),他們均只能在棧頂進行。

概述

指令說明

堆疊指令是FX系列中新增的基本指令,用於多重輸出電路,為編程帶來便利、在FX系列PLC中有11個存儲單元,它們專門用來存儲程式運算的中間結果,被稱為棧存儲器。

(1) MPS(進棧指令)。將運算結果送入棧存儲器的第一段,同時將先前送入的數據依次移到棧的下一段。。

(2) MRD(讀棧指令)。將棧存儲器的第一段數據(最後進棧的數據)讀出且該數據繼續保存在棧存儲器的第一段,棧內的數據不發生移動。

(3) MPP(出棧指令)。將棧存儲器的第一段數據(最後進棧的數據)讀出且該數據從棧中消失,同時將棧中其它數據依次上移。

指令說明

(1)堆疊指令沒有目標元件。

(2) MPS和MPP必須配對使用。

(3)由於棧存儲單元只有11個,因此棧的層次最多11層。

分類

堆疊指令屬於輸出指令,分為先進先出(FIFO)和後進後出(LIFO)兩種指令。

FIFO裝載和卸載指令

FFL/FFU指令是成對使用的,FFL指令把數據字裝入FIFO堆疊內,FFU指令把數據字按與它們進人時相同的順序從FIFO堆疊卸出。對堆疊指令編程時需輸入下列參數:

①源——存儲下一個將要進入FIFO堆疊的值,可以是數據字地址或常數(一32768~32767)。

②目的——存儲從堆疊出來的數據字地址。

③FIFO——堆疊地址,它必須是輸入、輸出、位或整數檔案的變址字地址。成對使用的FFL和FFU指令要使用相同的FIFO地址。

④控制(contml)——控制檔案地址,存儲指令執行的狀態位、堆疊長度、位置值等信息。成對使用的FFL和FFU指令使用相同的控制檔案,但是不要把一個指令已使用的控制檔案地址用於程式的其他指令中。

⑤長度(Length)——指定堆疊中數據的最大長度。

⑥位置(Position)——指定堆疊中下一個可用的位置。

1)每次FFL指令梯級條件由假到真轉換時,都向堆疊裝載一個數據。例如,在FFL指令梯級條件由假到真轉換時,PLC置位裝載使能位(EN),並把源地址N7:10內的數值裝入由位置參數指定的當前堆疊位置9(N7:21)內,然後使位置值加1,直到棧滿(34個字)後置位完成位(DN),並禁止源值再裝入堆疊內。

2)每次FFU指令梯級條件由假到真轉換時,都從堆疊中卸出一個數據。例如,在FFU指令梯級條件由假到真轉換時,PLC置位卸載使能位,並把在堆疊位置0(N7:12)內的數據卸載到目的數據地址N7:11內,在堆疊內的全部數據向位置零的方向移動一個元素,然後位置值減1,直到棧空後置位堆疊空位(EM)。

堆疊指令會影響變址暫存器(S:24)的值,當堆疊指令的梯級條件由假到真轉換時,S:24內的當前值被堆疊指令的位置值覆蓋,即它存儲的是堆疊地址變址值。當完成位被置位時,FFL/LFL指令梯級條件由假到真的轉換不改變位置值或變址暫存器值。當棧空位被置位時,FFU/LFU指令梯級條件由假到真的轉換也不改變位置值或變址暫存器值。

LIFO裝載和卸載指令

LFL和LFU指令也是成對使用。LFL指令把數據字裝入LIFO堆疊內。LFU指令把數據字按與它們進入時相反的順序從LIFO堆疊卸出。

每次LFL指令梯級條件由假到真轉換時,LFL指令與FFL指令一樣都裝載一個數據,直到棧滿為止。而當LFU梯級條件由假到真轉換時,置位指令的卸載使能位,並把裝入堆疊的最後一個數據卸出到目的地址(N7:11)內,最後一個數據存儲在當前位置值減1的位置於8(N7:20)內,然後位置值減1,直到棧空為止。

相關詞條

熱門詞條

聯絡我們