概述
指令說明
堆疊指令是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,直到棧空為止。