一段STL编辑的程序,只看懂了大概意思是将状态位M赋值给DB块,但为什么要使用SRW 1(却不直接赋值一个合适的数),及循环多少遍不太确定(自己分析为(1023-400)次),请大家帮忙看看.其中(#INO=200,#IN1=35)
L #IN1
T #TEMP2
OPN DB [#TEMP2]
L P#0.0
LAR1
L #IN0
SRW 1
L 1023
>I
JC M002
TAK
M001: T #TEMP3
L MW [AR1,P#2.0]
T DBW [AR1,P#2.0]
+AR1 P#2.0
L #TEMP3
LOOP M001
M002: NOP 0
问题补充:
按楼上的回答,如果循环100次,循环的结果是不是将M102.0-M201.9状态值放到了数据块DB35中,地址为DB35.DB2.0-DB35.DB101.9中
最佳答案
可以看下下面的解释
L #IN1
T #TEMP2
OPN DB [#TEMP2]
L P#0.0
LAR1
L #IN0 装载 #IN0 即200至地址累加器1
SRW 1 右移位相当于把200乘以2即400
L 1023 装载累加器1的内容至累加器2(即#IN0 ,400)并把1023累加器1
>I
JC M002 累加器2的内容(即#IN0 ,400)大于累加器1(1023)刚跳转到M002
TAK 若 累加器2的内容不大于累加器1则交换累加器1的累加器2的内容
M001: T #TEMP3 把累加器1的内容传送到 #TEMP3(即循环次数)
L MW [AR1,P#2.0]
T DBW [AR1,P#2.0]
+AR1 P#2.0
L #TEMP3
LOOP M001
M002: NOP 0
从这段程序可以看出#IN0 乘以2的结果大于1023时跳过程序,不循环,若不大于即小于等于时,
则按#IN0 乘以2的次数进行循环.本例为400
提问者对于答案的评价:
学习了.很有帮助.谢谢!
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc234500.html