使用STL时,发现A与A( 的不同,程序如下:
Network1:
A I0.0
= Q0.0
A I0.1
= Q0.1
这时I0.1能正常赋值给Q0.1,不受前面程序段影响
再看下面的
Network2:
A I0.0
= Q0.0
A(
O I0.1
)
= Q0.1
这时I0.1不能正常赋值给Q0.1,它的RLO会受前面程序段影响,必须I0.0为1才行。
这个看手册没找到说明,现求达人给个正确解释。
PS:我的解决方法是要么A(前一行加SET,要么确保A(不出现在逻辑判断的第一行即可,说的有些绕,希望大家理解
问题补充:
A与A(一个是单个条件,一个是多个条件嵌套,这点没有疑问,手册说的也很详细,大家不用解释这个。
该问题关键是A(受到了之前=指令得出的RLO影响,这是不符合=指令功能的。这个问题就是在调试北京某条生产线中发现的,客户用的是319的CPU,这个大家亲自可以用仿真器验证(我已亲自验证)。
STEP7的编程手册中,我也没有找到合适的解释,非常奇怪。
最佳答案
" A("与")"的用法:
例楼主的例子:
A I0.0
= Q0.0 //若I0.0 为1,则RLO为1,反之为0
A( //将当前RLO拷贝到嵌套堆栈RLO(a),并结束上一逻辑串并开始下一逻辑串的首次检测。
O I0.1 //首次检结果存入RLO(b)。如I0.1为1则RLO(b)为1,反之为0。
) //用拷贝到嵌套堆栈中的RLO(a)与当前RLO中(b)进行“与"运算,产生一个新的RLO(c)。如RLO(a)与RLO中(b)都为1则RLO(c)为1。如其中之一或同为0,则RLO(c)为0。
= Q0.1 //将RLO(c)值送至Q0.1
请见《S7-300/400STL语句表中文手册》,其中5.4嵌套表达式就重点论述这个问题,其中有例子。下载:
http://www.scgdkj.com/manage/download/info/STEP7%20dictatelist.pdf
提问者对于答案的评价:
这个说的最详细,嗯
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc314570.html