楼主最近还看过
回64楼:61楼编写的程序,是用QB0加1指令(INC_B),这样每按一下I0.0或I0.1,其前沿都会使QB0的内容加1,即QB0的8个位变量(Q0.0、Q0.1...Q0.7)都要随之改变,即整个字节都占用了,虽然程序只用了Q0.0与Q0.1,但Q0.2~Q0.7仍受INC指令的影响,如Q0.2~Q0.7在程序中作其它控制输出,由于INC_B (QB0)的存在,必然会引起Q0.2~Q0.7输出错误。
如将61楼程序网络1中的QB0加1改为对MB0进行加1计数,再用M0.0常开点输送给Q0.0位,用Q0.0的常闭点送给Q0.1,程序运行就不会影响QB0的其它位变量。见下面程序图:
Network 1 // 网络标题
LD I0.0
EU
LD I0.1
EU
OLD
INCB MB0
Network 2
LD M0.0
= Q0.0
Network 3
LDN Q0.0
= Q0.1
回65楼:你是用S7-300编写的程序吧,把它译成梯形图应是下图吧:
程序分析:当按一下I0.0或I0.1,其前沿M0.0 使M0.1=1。进入网络2,由于M0.1=1、Q0.0=0,故使Q0.0=1、Q0.1=0. 由于M0.1=1只存在1个扫描周期,故当下一个扫描的到来,M0.1由1变为0,故网络2 中:M0.1=0而Q0.0=1,使Q0.0=1、使Q0.0=0状态保持不变。当再一次按当按一下I0.0或I0.1时,其前沿M0.0 使M0.1=1。进入网络2,由于M0.1=1、而Q0.0=1,能流不能流通,故使Q0.0=0、Q0.1=1,下一个扫描的到来,M0.1由1变为0,故网络2 中的M0.1=0、Q0.0=0,其能流仍不能流通,故使Q0.0=0、Q0.1=1保持。。。
通过以上分析,此程序正确!很好!
提一点建议:I0.0与I0.1最好各用一前沿信号,再并联去输出给M0.1,否则,I0.0与I0.1并联,如有一个处于闭合状态,再按另一个开关,程序将不会动作,仅供参考。
68楼的程序也不错:起始状态为 MW0=0、QW0=0,经网络2 使QW0=0.即 Q0.0=0,经网络3,使Q0.1=1。以后的个扫描周期,如未按扭,MW0总=0,QW0总=2,经网络2、3,其QW0≡2.即Q0.1=1
当I0.0或I0.1=1。其前沿使M0.0=1,即MW0=1。网络2进行异或运算,使QW0=1,即 Q0.0=1.网络3又使Q0.1=0。以后各扫描周期,由于MW0=0,与QW0异或,QW0=1不变,即保持原状态。
当再次使I0.0或I0.1=1。其前沿使M0.0=1,即MW0=1。QW0=1,网络2进行异或运算,使QW0=0,即 Q0.0=0.网络 3又使Q0.1=1。以后各扫描周期,由于MW0=0,与QW0=2,异或结果QW0=2不变,即保持原状态。
当第3次使I0.0或I0.1=1时,其前沿使M0.0=1,即MW0=1。QW0=2,网络2进行异或运算,使QW0=3,即 Q0.0=1、Q0.1=1,网络3又使Q0.1=0。以后各扫描周期,由于MW0=0,与QW0=1,异或结果QW0=1不变,即保持原状态。。。
Network 1:
A I 0.0
FP M 0.0
O
A I 0.1
FP M 0.1
JC W000
JU W001
W000: NOP 0
L 1
L MW 10
+I
T MW 10
BEU
W001: NOP 0
Network 2:
L 1
L MW 10
==I
S Q 0.0
R Q 0.1
Network 3:
L 2
L MW 10
==I
S Q 0.1
R Q 0.0
Network 4:
L 2
L MW 10
<=I
JC X000
JU X001
X000: NOP 0
L 0
T MW 10
BEU
X001: NOP 0
Network 5:
A I 0.0
A I 0.1
R Q 0.0
R Q 0.1