-
堆棧指令
鎖定
堆棧指令是FX系列中新增的基本指令,用於多重輸出電路,為編程帶來便利、在FX系列PLC中有11個存儲單元,它們專門用來存儲程序運算的中間結果,被稱為棧存儲器。
堆棧是計算機中一種先進後出的數據結構,由棧區和棧頂指針組成。
- 中文名
- 堆棧指令
- 外文名
- The stack order
- 作 用
- 用於多重輸出電路
- 定 義
- FX系列中新增的基本指令
- 別 名
- 棧存儲器
- 學 科
- 計算機技術
堆棧指令指令説明
堆棧指令是FX系列中新增的基本指令,用於多重輸出電路,為編程帶來便利、在FX系列PLC中有11個存儲單元,它們專門用來存儲程序運算的中間結果,被稱為棧存儲器。
(1) MPS(進棧指令)。將運算結果送入棧存儲器的第一段,同時將先前送入的數據依次移到棧的下一段。。
(2) MRD(讀棧指令)。將棧存儲器的第一段數據(最後進棧的數據)讀出且該數據繼續保存在棧存儲器的第一段,棧內的數據不發生移動。
(3) MPP(出棧指令)。將棧存儲器的第一段數據(最後進棧的數據)讀出且該數據從棧中消失,同時將棧中其它數據依次上移。
(1)堆棧指令沒有目標元件。
(2) MPS和MPP必須配對使用。
堆棧指令分類
堆棧指令屬於輸出指令,分為先進先出(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堆棧卸出。