STL程序分析2(补充)

STL程序如图1,和之前发的帖子“STL程序分析”想要实现的功能是一样的,我再描述一遍:该程序功能是将DB43.DBX2.1(VALUE)的上一时刻值和上上时刻值保存在DB43.DBX6.0和DB43.DBX6.1中,DB43.DBW0计数,为1时将DB43.DBX2.1的值保存在DB43.DBX6.0中,等于2时保存在DB43.DBX6.1中,同时将DB43.DBW0清0,如此反复。
首先感谢我心飞翔大侠的耐心解答,我现在的图1中的程序就是采纳了你的建议。这次我想问各位的是:
1. 在程序段A002执行完BE指令后,是直接结束本次整个程序的执行,还是回到调用A002的程序段上,然后往下扫描?即从JC A002下一句L 3执行?从右边监测值观察,下面这段程序没有执行
L 3
T MW2 (这段程序我只是为了测试用,MW2无特殊含义)
那么就是说BE的功能是结束整个程序执行?但是从STL编程手册中看:
“使用该指令(BE),可以中止当前块中的程序扫描,并跳转到调用当前块的程序块。然后从块调用语句后的第一条指令开始,重新进行程序扫描”,感觉是回到了调用的那一点,类似于C语言里面中断执行完回到断点处的感觉。请指点。
2. 如果BE是结束整个程序的本次执行,那么有什么指令可以让跳转程序执行完毕之后回到调用的那一点?
3. 最后,我想问一下右边监测栏中的“STANDARD”是什么含义。
谢谢!

图片说明:

STL程序分析2(补充)   

最佳答案

1、BE的功能是结束整个程序执行,这一点没问题的。你加的测试用的代码是不会执行的,因为DB43.DBW0只有1或2这两种可能。
假如你的这段程序在FC1中,在OB1的第2段调用了这个FC1,OB1中的第1、3段也有其它程序,那当执行到第2段时进入FC1,当执行BE后跳出FC1(中止当前块中的程序扫描),回到OB1中(跳转到调用当前块的程序块),会继续扫描执行OB1第3段的程序(然后从块调用语句后的第一条指令开始,重新进行程序扫描)。
2、调用的那一点指的是哪里?是OB1的第2段,还是A002处。
3、STANDARD表示的就是累加器ACCU1中的值。
参见:S7-300 和 S7-400 的语句表
http://wenku.baidu.com/view/fafd0c30eefdc8d376ee32d8.html

提问者对于答案的评价:
谢谢我心飞翔,送给你迟到的分数:)我理解了,跳转和调用是不一样的,因此BE的作用也就不一样了,再次感谢!
PS:我那会说的回到调用那一点是指A002~其实不能成为调用点,概念错误了。

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc236640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午3:54
下一篇 2018年12月1日 下午3:54

相关推荐