见附图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是什么意思?
图片说明:
最佳答案
1.的确没执行,被跳转过去了,A002程序段右侧有显示值很正常,因为A001程序段执行结束后接着执行A002程序段
2.A001程序段结束,没有执行块结束或跳转指令,A002及其后的指令每个周期都会执行
3.还是上面的原因,程序段每个周期都会执行
提问者对于答案的评价:
非常感谢!我想请教一下,执行BE指令后是回到调用块(比如A001)的程序段了,还是直接结束本次程序了?
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc236694.html