SET
SAVE
= L 4.1
L #STATUS
L W#16#0
<>I
L #STATUS
L W#16#8180
= L 4.2
<>I
A L 4.2
L #STATUS
L W#16#8181
= L 4.2
<>I
A L 4.2
O #ERROR
JCN A7d0
CLR
= #ERGEBNISS
JU A7d1
A7d0: SET
= #ERGEBNISS
A7d1: CLR
A L 4.1
SAVE
BE
以上是第一个程序
尤其是其中的L 4.1 4.2 是什么意思呢
最佳答案
1、楼主的程序是从梯形图转变而来的。如果熟悉梯形图可以转回到梯形图。
2、其中的L 4.1 4.2 是什么意思呢?
L是临时(局部)变量区,L变量只在本程序段中有效。有关局部变量:见
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_id=70354&cid=1029
或
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_id=66166&cid=1029
3、所帖的程序是一个比较程序:
SET // 将RLO 置位(=1)
SAVE //把 RLO 存入 BR 寄存器中
= L 4.1//通过上述指令,将临时(局部)变量L 4.1置位
L #STATUS
L W#16#0
<>I
L #STATUS
L W#16#8180
= L 4.2//如果#STATUS不等于0,则L 4.2置位
<>I
A L 4.2
L #STATUS
L W#16#8181
= L 4.2//如果#STATUS不等于十六进制的8180,则L 4.2置位
<>I
A L 4.2
O #ERROR
JCN A7d0//如果#STATUS不等于十六进制的8181,并L 4.2置位或#ERROR置位,则继续执行下面的指令,否则跳转到A7d0处。
CLR // 将RLO 清零(=0)
= #ERGEBNISS// 通过RLO指令,将 #ERGEBNISS清零(=0)
JU A7d1//无条件跳转到A7d1
A7d0: SET // 将RLO 置位(=1)
= #ERGEBNISS/// 通过SET指令,将 #ERGEBNISS置位(=1)
A7d1: CLR // 将RLO 清零(=0)
A L 4.1//如果L 4.1为1,则RLO 置位;如果L 4.1为0,则RLO 清零。
SAVE ///把 RLO 存入 BR 寄存器中
BE //程序段结束
提问者对于答案的评价:
非常感谢!不过不是梯形图转过来的
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc249829.html