标签:
PLC的堆栈数据是布尔数据类型,也就是说每层只能是1或者是0。操作方式是先进后出,类似于弹夹,先压入的子弹只能最后射出。堆栈存储的数据都是位运算的中间结果。
西门子的堆栈有九层,第一层存放最近的位运算结,共有8条操作指令。
指令LD和LDN:每执行一次装载指令,结果如图2示,最底端的IV8值被抛弃。
例如执行LD I0.0 栈中的i值可能是1或者0,这与I0.0的状态有关。
指令ALD:指令采用逻辑AND(与)操作将堆栈第一级和第二级中的数值组合,并将结果载入堆栈顶部。执行ALD后,堆栈深度减1。
指令OLD:指令采用逻辑OR(或)操作将堆栈第一级和第二级中的数值组合,并将结果载入堆栈顶部。执行OLD后,堆栈深度减1。
总计对内存的操作就是对堆栈的操作。
如图4-5所示为S7-200使用逻辑堆栈指令来解决控制逻辑问题。图中,“iv0”到“iv7”标识逻辑堆栈的初始值,而“S0”标识存储在逻辑堆栈中的计算后数值。
表4-22是LPS、LRD、LPP指令的例子。其中有3个输出Q0.0,Q0.1,Q0.2都需要用到I0.0的动合触点,则可以用逻辑堆栈指令,以减少输入触点。在母线开始处连接I0.0,然后利用LPS指令将此位置的逻辑状态压入堆栈保存,然后利用I0.1和I0.2的动合触点控制Q0.0的状态。若要控制Q0.1,则用LRD指令将I0.0处逻辑状态从堆栈中读出利用,控制Q0.2时,是程序中最后一个利用I0.0目前的逻辑状态,因此采用LPP,从堆栈中弹出此处的逻辑状态。
标签:
原文地址:http://www.cnblogs.com/C-CHERS/p/5181857.html