在网络2中,你的DB1中的每个DBW都赋不同的初值了是吗。
如果是,则因为循环指令是在一个扫描周期内完成的,所以MW50的值在循环期间没有改变。假设第一次执行时MW50为1,进入循环指令后与DBW0(为1)比较相等,则与DBW2(为2)比较,这时不相等则跳出循环了。在第二次扫描周期时MW50为2,进入循环指令后与DBW0比较,不相等则直接跳出循环,此后的每次扫描相当于你的循环都不起作用了。
如果不是,初值都相同(默认为0),则第一次扫描就可能不执行循环,或进入循环后都赋相同的值,并不能起到你想要的结果。
OPN DB1
L MW 50
T DBW [MD60]
L MD60
L P#2.0
+I
T MD60
L MD60
L 80
<I
JC mo1
L 0
T MD60
mo1: NOP 0
程序没有测试,你可以试一试,只是个思路。在OB100中对MD60赋值0。保存到DB块地址最大为DBW10,若扩大则修改80这个数值。
你的程序犯了个错误:你让你的赋值循环5000次都是在PLC的一个扫描周期中完成的,而在这5000次循环中,MW50是始终不变的,执行的结果就是你把MW50放到DB1.DBW0开始的5000个字里面去了,到下一个PLC扫描周期,你同样还是把新的MW50覆盖到DB1中去了。
OPN DB1
L MW 50
T DBW [MD60]
L MD60
L P#2.0
+I
T MD60
L MD60
L 80
<I
JC mo1
L 0
T MD60
mo1: NOP 0
程序没有测试,你可以试一试,只是个思路。在OB100中对MD60赋值0。保存到DB块地址最大为DBW10,若扩大则修改80这个数值。