STL位指令A与A(的不同

使用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

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

相关推荐