登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:关于S7中的栈

点击:2033 回复:8

我们公司是做低压成套,最近迷上了PLC,由于没有这方面的经验,找了很多入门的书和资料,对梯形图总算能了解一点,但被:<栈〉这个指令难住了,逻辑入,读,出栈等等都不知其所以然,想请那位老师举个实例帮我分析分析,在此先谢过了
           wuy_hs@163.com
09-02-05 08:16
AND(与)载入(ALD)指令采用逻辑AND(与)操作将堆栈第一级和第二级中的数值组合,并将结果载入堆栈顶部。执行ALD后,堆栈深度减1。OR(或)载入(OLD)指令采用逻辑OR(或)操作将堆栈第一级和第二级中的数值组合,并将结果载入堆栈顶部。执行OLD后,堆栈深度减1。逻辑进栈(LPS)指令复制堆栈中的顶值并使该数值进栈。堆栈底值被推出栈并丢失。逻辑出栈(LPP)指令将堆栈中的一个数值出栈。第二个堆栈数值成为堆栈新顶值。逻辑读取(LRD)指令将第二个堆栈数值复制至堆栈顶部。不执行进栈或出栈,但旧堆栈顶值被复制破坏。载入堆栈(LDS)指令复制堆栈中的堆栈位n,并将该数值置于堆栈顶部。堆栈底值被推出栈并丢失。
09-02-05 12:00
你就想像栈是一个竹筒,一头封死了,一头有开口可以往里面放东西,这样第一个放进去的东西,就只能最后一个倒出来。第二个放进去的,就倒数批二个倒出来。
至于它有什么用:再打个比方,你在洗衣服,洗到一半,你妈叫你去扫地(妈妈的话不能不听),你怕忘了你洗到哪来了(当然现实中不会,这只是假设。),你在纸上写到“洗到第3件了”然后放到哪个竹筒里去。然后你去扫地,扫了一个房间,突然你爸又叫你,说“我下去买盒烟,炉子上的水快开了,开了你帮我把它灌一下”,水烧干了会出事的,当然比扫地重要,于是你又在纸上写到“我扫地扫到了第一个房间”,然后放进竹筒,然后你去处理水,把水的事处理完了,你再从竹筒里倒出第一张纸,看着上面写着“扫到第一间房”,于是你接着扫完后面的房间。再从竹筒里再倒出一张出来,看见上面写到“洗到第3件”于是你接着洗第4件。
当然上面事情比较简单,但是你想想,如果你做事情的时候千头万绪,有1000件事情,而且你又不能知道它们什么时候会发生,你能记得住每件事做到哪来了吗?所以就用上面的竹筒这种方法,遇到事情如果比当前的事情重要,就把它的进度写下来,然后丢进去,处理完了手头的事情,没事做的时候,就倒一个出来接着做。这就是一个栈的应用的模型,当然栈还有其它的非常多的用途,这个你得多看看书
09-02-05 12:02
讲的很形象!很详细!学习了。谢谢
09-02-05 15:34

引用 lwcccf 在 2009-2-5 12:00:10 发言【内容省略】

说的很牛          分析的很好  理解的也不错     菜鸟来顶下他
09-02-05 15:50
3楼比喻的很形象,这样好理解多了。
09-02-05 16:41
3楼对于用处讲的很生动,很好理解,支持了
09-02-05 21:10
heheh  3楼的说的好形象哦
受教育!!!
09-02-08 00:23
讲得好,通俗易懂
09-02-08 09:44

工控新闻

更多新闻资讯