STL程序分析

见附图1,该程序功能是将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. L "CTRL".CNT1
    L 2
    ==I
   JC A002
   BE
这段程序好像没有执行,因为右边监视框中没有显示值,但是A002程序段右侧有显示值,不是很明白;

2. 当我将DB43.DBX2.1的值变为1时,清0部分的程序值也跟着变化,即
L 0
T DB43.DBW0
这段程序对应右边的监测值跟着DB43.DBX2.1的值的变化而变化(见图2)。我认为清0的条件是DB43.DBW0值等于2的时候跳转到A002程序后才执行,为什么会跟着DB43.DBX2.1的值来变化?

3. DB43.DBW0的值看上去怎么一直为0,应该是0→1→2→0这样循环变化啊。

谢谢各位大侠!

问题补充:
如果:
L 2
==I
JC A002
BE
这段中最后的BE去掉,是不是就继续往下执行A001程序,也就是说跳转A001其实没有作用了?
然后右侧监视栏中的STANDARD是什么意思?

图片说明:

STL程序分析    STL程序分析   

最佳答案

1.的确没执行,被跳转过去了,A002程序段右侧有显示值很正常,因为A001程序段执行结束后接着执行A002程序段
2.A001程序段结束,没有执行块结束或跳转指令,A002及其后的指令每个周期都会执行
3.还是上面的原因,程序段每个周期都会执行

提问者对于答案的评价:
非常感谢!我想请教一下,执行BE指令后是回到调用块(比如A001)的程序段了,还是直接结束本次程序了?

专家置评

已阅,最佳答案正确。

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

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

相关推荐