今天编程发现一个非常严重的BUG,具体原因不清.程序在下面,强制I0.6应当看到Q0.5的输出直到i0.5的翻转变化,而实际仅仅输出一个周期.解决的办法竟然是办法删除主程序里面的网络2网络3.如果仅仅删除一个,那么就只能正常工作一个次(就是i0.6触发一次).非常诡异.不知道有没有解决办法,头痛的利害.不能发附件很是麻烦.如果要源程序的可以发邮箱或者加QQ438333565
最后,没有测试过的不要乱说!我测试了224以及224XP都是一样的结果.
主程序
测试专用
网络1
LD 手动正翻斗:I0.6
EU
O 翻斗状态标识位:S0.0
CALL 自动翻斗:SBR9, V800.0
网络2
手动正翻斗.注意,已经被SM0.0的常闭触点所屏蔽
LDN SM0.0
A 手动正翻斗:I0.6
AN 手动逆翻斗:I0.7
AN 启动按钮:I0.2
AN 停止按钮:I0.3
AN 异常标识位:S0.1
AN 收卷运行标志位:S0.2
AN 翻斗状态标识位:S0.0
AN 逆翻斗:Q0.6
= 正翻斗:Q0.5
网络3
手动逆翻斗.注意,已经被SM0.0的常闭触点所屏蔽
LDN SM0.0
A 手动逆翻斗:I0.7
AN 手动正翻斗:I0.6
AN 启动按钮:I0.2
AN 停止按钮:I0.3
AN 异常标识位:S0.1
AN 收卷运行标志位:S0.2
AN 翻斗状态标识位:S0.0
AN 正翻斗:Q0.5
= 逆翻斗:Q0.6
子程序
计时器归零,计数器归零,标识状态位
网络1
LDN 翻斗状态标识位:S0.0
LPS
MOVW 0, 翻斗计时器:T34
AENO
MOVW 0, 自动翻斗时斗位变化次数:VW104
LRD
AN 逆翻斗:Q0.6
S 正翻斗:Q0.5, 1
LPP
S 翻斗状态标识位:S0.0, 1
网络2
斗位发生反转,读出计时器现在值,并与延时时间相加得到延时结束时间点.将翻斗次数累计,跳转到下一状态.
LD 斗位侦测:I0.5
LPS
EU
MOVW 翻斗计时器:T34, VW54
AENO
+I 翻斗延时:VW58, VW54
AENO
+I 1, 自动翻斗时斗位变化次数:VW104
AENO
S S2.0, 1
LPP
ED
MOVW 翻斗计时器:T34, VW54
AENO
+I 翻斗延时:VW58, VW54
AENO
+I 1, 自动翻斗时斗位变化次数:VW104
AENO
S S2.0, 1
网络3
延时时间到,如果是正翻则跳回进行逆翻点动以快速制动,如果是逆翻则停止翻转,更改状态标识位,最后退出本程序,
LD S2.0
AW>= 翻斗计时器:T34, VW5
LPS
A 逆翻斗:Q0.6
AN 正翻斗:Q0.5
R 逆翻斗:Q0.6, 1
R 翻斗状态标识位:S0.0, 1
R S2.0, 1
S #TEN:L0.0, 1
CRET
LPP
A 正翻斗:Q0.5
AN 逆翻斗:Q0.6
R 正翻斗:Q0.5, 1
S 逆翻斗:Q0.6, 1