1 A #Plant_On
2 A #Sensor_Fill
3 S #Filling_Active
4 A(
5 ON #Plant_On
6 ON #Sensor_Fill
7 )
8 R #Filling_Active
在以上程序代码中,第8行运算结果与第2行的RLO运算结果完全没有关系,也就是说,经过了第3行的S指令之后,接下来的语句计算RLO值就与S指令之前的RLO完全没有关系了。
另外一个例子:
1 A I1.1
2 A I1.2
3 = Q1.0
4 A I1.3
5 A I1.4
6 = Q1.1
这样的例子中,I1.1和I1.2的逻辑状态完全不会影响到Q1.1的结果。
结果一上两个例子可以发现,S,R,=指令运算后,接下来的RLO会与前面的毫无关系。
那么还有其他这样的情况吗,在计算RLO时,逻辑到底是怎样的啊。我是初学者,我还以为会影响到后面的指令运算呢。大师们指教啦。
问题补充:
youhm,阿鸣,你们说的对。但是我需要知道的是,除了S,R,=指令以外,还有那些指令会这样子?它们有什么规律?仅仅知道这3个指令还是不够的,了解其他资料的使用才能灵活使用嘛。
最佳答案
S、R、=指令执行后首次检测位/FC被置0,即标志一个逻辑操作的结束,后续的指令会开始一个新的逻辑操作,新的逻辑操作RLO自然是新的开始不受前面的逻辑影响,另外基于RLO的跳转指令也会复位首次检测位/FC。
学语句表理解状态字很重要,论坛里有不少相关讨论,你可以参考一下。
————————————————————————————————————————————
你说的很对仅仅知道3个指令是不够的,还是那句话状态字很重要,你可以看语句表手册,每条指令后都有影响状态字的表格,“-”表示不影响,“0”表示位置0,“1”表示位置1,“X”表示不一定,可能置0也可能置1,你这个问题涉及首次检测位/FC,如果/FC被置0标志新的逻辑开始,除了R、S、=还有SET、CLR以及基于RLO、BR的跳转指令都会将首次检测位置0,另外还有一些指令“先与后或O”可能将首次检测位置0、嵌套类指令也会将首次检测位置0,但这类指令相当于数学运算里的括号运算,会将之前的RLO在嵌套堆栈保存,要区别一下。
提问者对于答案的评价:
哥们你说的太好了!最佳答案就是你的啦!我再去查查各个状态字是什么意思,呵呵!你知道的话,告诉我下呗。QQ:75142601
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc248121.html