複製鏈接
請複製以下鏈接發送給好友

堆棧指令

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

目錄

堆棧指令指令説明

堆棧指令是FX系列中新增的基本指令,用於多重輸出電路,為編程帶來便利、在FX系列PLC中有11個存儲單元,它們專門用來存儲程序運算的中間結果,被稱為棧存儲器。
(1) MPS(進棧指令)。將運算結果送入棧存儲器的第一段,同時將先前送入的數據依次移到棧的下一段。。
(2) MRD(讀棧指令)。將棧存儲器的第一段數據(最後進棧的數據)讀出且該數據繼續保存在棧存儲器的第一段,棧內的數據不發生移動。
(3) MPP(出棧指令)。將棧存儲器的第一段數據(最後進棧的數據)讀出且該數據從棧中消失,同時將棧中其它數據依次上移。
(1)堆棧指令沒有目標元件。
(2) MPS和MPP必須配對使用。
(3)由於棧存儲單元只有11個,因此棧的層次最多11層。 [1] 

堆棧指令分類

堆棧指令屬於輸出指令,分為先進先出(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,直到棧空為止。 [2] 
參考資料
  • 1.    廣東省職業技能鑑定指導中心組織編寫;梁耀光,余文烋主編;王小涓,梁志坤副主編,工業控制新技術教程,華南理工大學出版社,2014.09,第128頁
  • 2.    王建平,朱程輝主編,電氣控制與PLC,機械工業出版社,2012.01,第201頁