更新时间:2023-03-23 19:54
堆栈指令是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,直到栈空为止。