当前位置: 主页 > PLC控制

求高手详细解读s7-300程序

L#IN1
LIW0
SRW
SLW
TMW10
L8
L#IN1
-I
LIB1
SRW
TMB12
L20
TMW14
LAR1P#0.0
LAR2P#0.0
L#IN0
M002:TMW40
L#IN1
M001:TMW42
OPNDB[MW14]
AM[AR1,P#10.0]
AM[AR2,P#12.0]
=DBX[AR2,P#0.0]
ADBX[AR2,P#0.0]
JCM003
LP#0.1
+AR2
LMW42
LOOPM001
LAR2P#0.0
LMW14
L1
+I
TMW14
L20
-I
L#IN0
>I
JCM003
LP#0.1
+AR1
LMW40
LOOPM002
M003:BE

最佳答案

L#IN1//装载in1到累加器1,此处数据无用
LIW0//装载in1到累加器2,装载iw0到累加器1
SRW//16位数据右移一个位
SLW//16位左移一个位,两个移位指令合计是把iw0的最低位清零了。
TMW10//累加器1中的结果保存到mw10
L8//装载8到累加器1
L#IN1//装载8到累加器2,装载in1到累加器1
-I//累加器2结果减去累加器1的结果
LIB1//装载ib1到累加器1
SRW//16位数据右移一个位
TMB12//结果保存到累加器1中
L20
TMW14//mw14=20
LAR1P#0.0//从累加器1中读取地址寄存器1,偏移量为0
LAR2P#0.0//从累加器1中读取地址寄存器2,偏移量为0
L#IN0
M002:TMW40//mw40初始值为in0
L#IN1
M001:TMW42//mw42初始值为in1
OPNDB[MW14]//打开mw14保存的db号
AM[AR1,P#10.0]
AM[AR2,P#12.0]
=DBX[AR2,P#0.0]//如果m位的ar1对应的地址偏移10个字节和m位的ar2对应的地址偏移12个字节都为1则db块中ar2对应的地址的位为1,否则为0
ADBX[AR2,P#0.0]//如果db块中ar2对应的地址的位为1则跳转到M003否则执行下面的程序
JCM003
LP#0.1
+AR2
LMW42//mw42保存的地址为ar2增加一个位
LOOPM001//跳转到M001循环
LAR2P#0.0//从累加器1中读取地址寄存器2,偏移量为0
LMW14
L1
+I
TMW14//mw14=mw14+1
L20
-I
L#IN0
>I
JCM003//mw14-20>in0则跳转到M003,否则执行下面的程序
LP#0.1
+AR1
LMW40//mw40=ar1的地址增加一个位
LOOPM002//跳转到M002继续循环
M003:BE程序结束。

提问者对于答案的评价:
谢谢你!
如果IN0:=7IN1:=5,那么MW10中字节0的1-5位是不是为0而IB1是不是右移3位然后送到MB12中,那MB12中是什么数呢,看后面的程序M001循环结束后,应是DB20中M10.0分别和M12.0-M12.4与后结果存在DBX0.0-DBX0.4中。M002循环结束后,分别对应DB20-DB26,这样理解对不对?1540390704我qq,能否经常请教?

  • 关注微信

猜你喜欢

微信公众号