回复:堆栈到底是什么?可以不用学吗?

四书五经

  • 帖子

    762
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2008-12-25 12:23:45

0楼

关于堆栈,我也来说两句,在LAD或者STL编程中,堆栈的用处可不仅仅用于四则运算,呵呵,四则运算是“数据结构”这门课程中堆栈的典型应用,但在PLC编程中,堆栈的用处可不止这些。S7—200有1个9位的堆栈,栈顶用来存储逻辑运算的结果,第2~9层用来存储中间运算结果。堆栈中的数据一般按“先进后出”的原则存取。我们来分析一下以下梯形逻辑中堆栈的典型应用。
以下LAD图形

以下为相应的STL代码
LD I0.0
LD I0.1
LD I2.0
A I2.1
OLD
ALD
= Q5.0
从以上STL代码中可以看到使用到了堆栈指令,分析这段代码,为什么要用堆栈指令呢?当执行到LD I0.0时,系统自动存入堆栈,当执行LD I0.1时,又把I0.1的值也存入堆栈,执行LD I2.0 时,I2.0的值也存入堆栈。当执行到A I2.1是取出I2.1的值,并且与栈顶值(I2.0的值)相与,结果的值再存入堆栈。执行到OLD指令时,OLD取出堆栈第一级(I2.0和I2.1与的结果,同时出栈)和第二级(I0.1的值,同时出栈),并且做或运算,并把或运算的结果存入堆栈。当执行到ALD时,ALD取出堆栈第一级(OLD或的结果)和第二级(I0.0的值),并且做与运算。从以上过程可以看出,如果没有堆栈,将不可能实现多分支串并联的电路(至少在S7200中,S7300中另当别论).
总之堆栈的作用有二:
1.处理电路块的串联和电路块的并联时,用来储存一个或多个电路块内部的运算结果.
2.处理由触点与线圈(或触点与其他输出类指令)组成的多分支电路时,用堆栈来保存分支点的运算结果。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33290条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。