[三菱] 三菱PLC的堆栈令:你知道它们的秘密吗?

[复制链接]
查看359 | 回复0 | 2024-6-27 17:05:21 | 显示全部楼层 |阅读模式
本节重点  :三菱PLC的堆栈令
前言

2023 SUMMARY


三菱PLC是一种广泛应用的可编程逻辑控制器,它可以实现各种复杂的控制功能。在三菱PLC中,有一类特殊的指令,叫做堆栈令。它们可以帮助你在编程时保存和读取中间结果,从而简化程序的结构和逻辑。但是,你真的了解堆栈令的工作原理和使用方法吗?本文将为你揭开堆栈令的秘密






什么是堆栈令




堆栈令是三菱PLC中的一种基本指令,它们主要用于多重输出电路,为编程带来便利。堆栈令的作用是将程序运算的中间结果存储在一个特殊的存储区域,叫做栈存储器。栈存储器是一种后进先出(LIFO)的数据结构,也就是说,最后存入的数据最先被取出,最先存入的数据最后被取出。在三菱PLC中,栈存储器有11个存储单元,每个存储单元可以存储一个16位的二进制数。


堆栈令有三种类型,分别是MPS、MRD和MPP。下面我们来分别介绍它们的功能和用法。




详细介绍
MPS:进栈指令
MPS是进栈指令,它的作用是将运算结果送入栈存储器的第一段,同时将先前送入的数据依次移到栈的下一段。也就是说,MPS指令会将当前的结果压入栈顶,而不会覆盖原来的数据。
MPS指令没有目标元件,它不需要指定存储位置。MPS指令只能在程序的最后一列使用,不能与其他指令并列。
MPS指令的作用是将当前的结果保存起来,以便在后面的运算或输出中再次使用。如果不使用MPS指令,那么当前的结果就会被下一步的运算或输出覆盖,从而导致数据的丢失。


MRD:读栈指令
MRD是读栈指令,它的作用是将栈存储器的第一段数据(最后进栈的数据)读出且该数据继续保存在栈存储器的第一段,栈内的数据不发生移动。也就是说,MRD指令会将栈顶的数据复制一份,而不会改变栈的状态。
MRD指令有一个目标元件,它需要指定一个存储位置,用来保存读出的数据。MRD指令可以在程序的任意一列使用,可以与其他指令并列。
MRD指令的作用是将栈顶的数据读出,以便在后面的运算或输出中使用。如果不使用MRD指令,那么栈顶的数据就只能被一次使用,而不能重复使用。


MPP:出栈指令
MPP是出栈指令,它的作用是将栈存储器的第一段数据(最后进栈的数据)读出且该数据从栈中消失,同时将栈中其他数据依次上移。也就是说,MPP指令会将栈顶的数据弹出,同时将栈的空位补齐。
MPP指令有一个目标元件,它需要指定一个存储位置,用来保存读出的数据。MPP指令可以在程序的任意一列使用,可以与其他指令并列。
MPP指令的作用是将栈顶的数据读出,同时释放栈的空间,以便存储新的数据。如果不使用MPP指令,那么栈顶的数据就会一直占用栈的空间,而不能为新的数据腾出位置。


应用案例

从图中可以看出,MPS指令用于分支的起点,MRD指令用于分支的中间段,MPP指令用于分支的结束处。每一个分支都相对应于一个梯级的输出。堆栈指令MPS和MPP必须成对出现,也就是有进栈,就必须有出栈,最后堆栈中是空空也。当支路中又出现支路时,可以反复使用堆栈指令MPS,MPP,这就出现了多层堆栈。


注意事项
堆栈令是三菱PLC中的一种非常有用的指令,它们可以帮助你在编程时保存和读取中间结果,从而简化程序的结构和逻辑。但是,在使用堆栈令时,也要注意以下几点:


-堆栈令只能在程序的最后一列使用,不能与其他指令并列。
-堆栈令不能嵌套使用,也就是说,不能在一个MPS指令后面再使用另一个MPS指令,或者在一个MPP指令后面再使用另一个MPP指令。
-堆栈令不能跨程序段使用,也就是说,不能在一个程序段中使用MPS指令,然后在另一个程序段中使用MRD或MPP指令。
-堆栈令不能在子程序中使用,也就是说,不能在一个子程序中使用MPS、MRD或MPP指令,然后在主程序中使用MRD或MPP指令,或者反之。
-堆栈令不能在中断程序中使用,也就是说,不能在一个中断程序中使用MPS、MRD或MPP指令,然后在非中断程序中使用MRD或MPP指令,或者反之。
-堆栈令不能在循环程序中使用,也就是说,不能在一个循环程序中使用MPS、MRD或MPP指令,然后在循环外使用MRD或MPP指令,或者反之。
-堆栈令不能在条件分支程序中使用,也就是说,不能在一个条件分支程序中使用MPS、MRD或MPP指令,然后在分支外使用MRD或MPP指令,或者反之。
-堆栈令不能在计时器或计数器的输出接点上使用,也就是说,不能在一个计时器或计数器的输出接点上使用MPS、MRD或MPP指令,然后在其他地方使用MRD或MPP指令,或者反之。
-堆栈令不能在复位指令的输出接点上使用,也就是说,不能在一个复位指令的输出接点上使用MPS、MRD或MPP指令,然后在其他地方使用MRD或MPP指令,或者反之。
-堆栈令不能在移位寄存器或数据寄存器的输出接点上使用,也就是说,不能在一个移位寄存器或数据寄存器的输出接点上使用MPS、MRD或MPP指令,然后在其他地方使用MRD或MPP指令,或者反之。
如果违反了以上的使用规则,那么程序可能会出现错误或异常,导致控制功能失效或数据丢失。因此,在使用堆栈令时,一定要注意遵守使用规则,避免出现错误或异常。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则